{"version":3,"sources":["src/app/reports/reports-type/reports-type.component.ts","src/app/reports/reports-type/reports-type.component.html","src/app/reports/reports-home/reports-home.component.ts","src/app/reports/reports-home/reports-home.component.html","src/app/reports/reports-bloodlead-screening/reports-bloodlead-screening.component.ts","src/app/reports/reports-bloodlead-screening/reports-bloodlead-screening.component.html","src/app/reports/reports-member-eligibility-roster/reports-member-eligibility-roster.component.ts","src/app/reports/reports-member-eligibility-roster/reports-member-eligibility-roster.component.html","src/app/reports/reports-pay-for-value/reports-pay-for-value.component.ts","src/app/reports/reports-pay-for-value/reports-pay-for-value.component.html","src/app/reports/reports-pcp-member-roster/reports-pcp-member-roster.component.ts","src/app/reports/reports-pcp-member-roster/reports-pcp-member-roster.component.html","src/app/reports/reports-pcp-attestation/pcp-attestation-member/pcp-attestation-member.component.ts","src/app/reports/reports-pcp-attestation/pcp-attestation-member/pcp-attestation-member.component.html","src/app/app-components/reports-member-search/reports-member-search.component.ts","src/app/app-components/reports-member-search/reports-member-search.component.html","src/app/reports/reports-pcp-attestation/pcp-attestation-provider/pcp-attestation-provider.component.ts","src/app/reports/reports-pcp-attestation/pcp-attestation-provider/pcp-attestation-provider.component.html","src/app/reports/reports-pcp-attestation/reports-pcp-attestation.component.ts","src/app/reports/reports-pcp-attestation/reports-pcp-attestation.component.html","src/app/reports/reports-dhcs-bloodlead-screening/reports-dhcs-bloodlead-screening.component.ts","src/app/reports/reports-dhcs-bloodlead-screening/reports-dhcs-bloodlead-screening.component.html","src/app/reports/reports-pay-for-value-manual/reports-pay-for-value-manual.component.ts","src/app/reports/reports-pay-for-value-manual/reports-pay-for-value-manual.component.html","src/app/reports/attestation/attestation-type/attestation-type.component.ts","src/app/reports/attestation/attestation-type/attestation-type.component.html","src/app/reports/attestation/attestation-home/attestation-home.component.ts","src/app/reports/attestation/attestation-home/attestation-home.component.html","src/app/services/models/attestationstatus.ts","src/app/reports/attestation/attestation-bloodlead-screening/attestation-dialog/attestation-dialog.component.ts","src/app/reports/attestation/attestation-bloodlead-screening/attestation-dialog/attestation-dialog.component.html","src/app/reports/attestation/attestation-bloodlead-screening/attestation-bloodlead-screening.component.ts","src/app/reports/attestation/attestation-bloodlead-screening/attestation-bloodlead-screening.component.html","src/app/reports/reports-BH-pay-for-value/reports-bh-pay-for-value.component.ts","src/app/reports/reports-BH-pay-for-value/reports-bh-pay-for-value.component.html","src/app/app-components/reports-tin-search/reports-tin-search.component.ts","src/app/app-components/reports-tin-search/reports-tin-search.component.html","src/app/reports/reports-awp/awp-member/awp-member.component.ts","src/app/reports/reports-awp/awp-member/awp-member.component.html","src/app/services/models/wellness-details.ts","src/app/reports/reports-awp/awp-dialogs/report-wellness-details-dialog/report-wellness-details-dialog.component.ts","src/app/reports/reports-awp/awp-dialogs/report-wellness-details-dialog/report-wellness-details-dialog.component.html","src/app/reports/reports-awp/awp-components/report-wellness-details/report-wellness-details.component.ts","src/app/reports/reports-awp/awp-components/report-wellness-details/report-wellness-details.component.html","src/app/reports/reports-awp/awp-components/report-wellness-attachments/report-wellness-attachments.component.ts","src/app/reports/reports-awp/awp-components/report-wellness-attachments/report-wellness-attachments.component.html","src/app/reports/reports-awp/awp-components/report-wellness-survey/report-wellness-survey.component.ts","src/app/reports/reports-awp/awp-components/report-wellness-survey/report-wellness-survey.component.html","src/app/reports/reports-awp/awp-dialogs/report-wellness-attachment-dialog/report-wellness-attachment-dialog.component.ts","src/app/reports/reports-awp/awp-dialogs/report-wellness-attachment-dialog/report-wellness-attachment-dialog.component.html","src/app/reports/reports-awp/awp-provider/awp-provider.component.ts","src/app/reports/reports-awp/awp-provider/awp-provider.component.html","src/app/reports/reports-awp/reports-awp.component.ts","src/app/reports/reports-awp/reports-awp.component.html","src/app/reports/reports-hif/hif-provider/hif-provider.component.ts","src/app/reports/reports-hif/hif-provider/hif-provider.component.html","src/app/reports/reports-hif/hif-member/hif-member.component.ts","src/app/reports/reports-hif/hif-member/hif-member.component.html","src/app/reports/reports-hif/reports-hif.component.ts","src/app/reports/reports-hif/reports-hif.component.html","src/app/reports/reports-pcp-member-iha/reports-pcp-member-iha.component.ts","src/app/reports/reports-pcp-member-iha/reports-pcp-member-iha.component.html","src/app/reports/reports-bhi/reports-bhi.component.ts","src/app/reports/reports-bhi/reports-bhi.component.html","src/app/reports/attestation/attestation-bhi/attestationbhi-dialog.component.ts","src/app/reports/attestation/attestation-bhi/attestationbhi-dialog.component.html","src/app/reports/reports-bhaba-referrals/reports-bhaba-referrals.component.ts","src/app/reports/reports-bhaba-referrals/reports-bhaba-referrals.component.html","node_modules/@angular/cdk/fesm2022/clipboard.mjs","src/app/reports/attestation/attestation-provider-training/attestation-provider-training-dialog/attestation-provider-training-dialog.component.ts","src/app/reports/attestation/attestation-provider-training/attestation-provider-training-dialog/attestation-provider-training-dialog.component.html","src/app/reports/attestation/attestation-provider-training/attestation-provider-training-annual/attestation-provider-training-annual.component.ts","src/app/reports/attestation/attestation-provider-training/attestation-provider-training-annual/attestation-provider-training-annual.component.html","src/app/reports/attestation/attestation-provider-training/attestation-provider-training-individual/attestation-provider-training-individual.component.ts","src/app/reports/attestation/attestation-provider-training/attestation-provider-training-individual/attestation-provider-training-individual.component.html","src/app/reports/attestation/attestation-provider-training/attestation-provider-training.component.ts","src/app/reports/attestation/attestation-provider-training/attestation-provider-training.component.html","src/app/reports/attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals-member/attestation-bh-aba-referrals-member.component.ts","src/app/reports/attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals-member/attestation-bh-aba-referrals-member.component.html","src/app/services/models/bh-aba-referral-attestation.ts","src/app/services/models/bh-aba-referral.ts","src/app/services/models/requests/resource-request.ts","src/app/services/resources.service.ts","node_modules/primeng/fesm2022/primeng-icons-minus.mjs","node_modules/primeng/fesm2022/primeng-panel.mjs","src/app/reports/attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals-dialog/attestation-bh-aba-referrals-dialog.component.ts","src/app/reports/attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals-dialog/attestation-bh-aba-referrals-dialog.component.html","src/app/reports/attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals-provider/attestation-bh-aba-referrals-provider.component.ts","src/app/reports/attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals-provider/attestation-bh-aba-referrals-provider.component.html","src/app/reports/attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals.component.ts","src/app/reports/attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals.component.html","src/app/reports/reports-pdc/pdc-health-network/pdc-health-network.component.ts","src/app/reports/reports-pdc/pdc-health-network/pdc-health-network.component.html","src/app/reports/reports-pdc/pdc-provider/pdc-provider.component.ts","src/app/reports/reports-pdc/pdc-provider/pdc-provider.component.html","src/app/reports/reports-pdc/pdc-provider-search/pdc-provider-search.component.ts","src/app/reports/reports-pdc/pdc-provider-search/pdc-provider-search.component.html","src/app/reports/reports-pdc/reports-pdc.component.ts","src/app/reports/reports-pdc/reports-pdc.component.html","src/app/reports/reports-provider-member-roster/reports-roster-provider/reports-roster-provider.component.ts","src/app/reports/reports-provider-member-roster/reports-roster-provider/reports-roster-provider.component.html","src/app/reports/reports-provider-member-roster/reports-roster-menu/reports-roster-menu.component.ts","src/app/reports/reports-provider-member-roster/reports-roster-menu/reports-roster-menu.component.html","src/app/reports/reports-provider-member-roster/reports-roster-member-dialog/reports-roster-member-dialog.component.ts","src/app/reports/reports-provider-member-roster/reports-roster-member-dialog/reports-roster-member-dialog.component.html","src/app/reports/reports-provider-member-roster/reports-roster-member/reports-roster-member.component.ts","src/app/reports/reports-provider-member-roster/reports-roster-member/reports-roster-member.component.html","src/app/reports/reports-provider-member-roster/reports-provider-member-roster.component.ts","src/app/reports/reports-provider-member-roster/reports-provider-member-roster.component.html","src/app/reports/reports-routing.ts","src/app/reports/reports.module.ts"],"sourcesContent":["\r\nimport { AfterViewInit, Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { UiUtility } from '../../utils/ui-utility';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport { UserPermission } from 'src/app/services/models/user-permission';\r\n\r\n@Component({\r\n  selector: 'app-reports-type',\r\n  templateUrl: './reports-type.component.html',\r\n  styleUrls: ['./reports-type.component.scss']\r\n})\r\nexport class ReportsTypeComponent implements OnInit{\r\n  private paramsviaState: any = null;\r\n  private currentUserPermission: UserPermission;\r\n  private isInternalUser: boolean = false;\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private route: ActivatedRoute,\r\n    private sessionService: SessionService) \r\n  { \r\n    if(this.router.getCurrentNavigation() && this.router.getCurrentNavigation().extras && this.router.getCurrentNavigation().extras.state)\r\n      this.paramsviaState = this.router.getCurrentNavigation().extras.state;\r\n  }\r\n  \r\n  @Input() reportType: string;\r\n\r\n  public get showDHCSBLS() : boolean{\r\n    var lastdate = new Date(\"2023-08-01\").valueOf();\r\n    var todayDate = Date.now().valueOf();\r\n    \r\n    return (todayDate < lastdate);\r\n  }\r\n\r\n  public get showPDC() : boolean {\r\n    var result = (this.isInternalUser || !UiUtility.isNullUndefinedOrEmpty(this.currentUserPermission.healthNetworkPlanCodes));\r\n    return result;\r\n  }\r\n  \r\n  ngOnInit() {\r\n    this.currentUserPermission = this.sessionService.currentPermission;\r\n    this.isInternalUser = this.sessionService.isEnterpriseAdmin || this.sessionService.isEnterpriseUser;\r\n\r\n    if(this.paramsviaState) {\r\n      this.extractStateParam(this.paramsviaState);\r\n    }    \r\n    else {\r\n      this.route.params.subscribe(value => {\r\n        // If suspenseID get user and assigne to selected user\r\n        this.extractStateParam(value);        \r\n      });  \r\n    }\r\n  }\r\n\r\n  public onChange() {\r\n    this.router.navigate(['/reports/' + this.reportType]);\r\n  }\r\n\r\n  public redirectToAttestation() {\r\n    this.router.navigate(['/reports/attestationhome'])\r\n  }\r\n\r\n  public onContinue(){\r\n    \r\n  }\r\n\r\n  private extractStateParam(params) {\r\n    if (params && params.rname) {\r\n      const reportName = params.rname;\r\n      if (!UiUtility.isNullOrUndefined(reportName)) {\r\n        this.reportType = reportName;\r\n        this.onChange();\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div class=\"report-type-container\">\r\n    <div class=\"report-type-header\">\r\n      <h4>Report Type:</h4>\r\n    </div>\r\n    <div class=\"report-type-selection\">\r\n      <select class=\"form-control\" name=\"reportType\" id=\"ddlreportType\" [(ngModel)]=\"reportType\" (change)=\"onChange()\">\r\n        <option value=\"home\">Select Report Type</option>\r\n        <option value=\"pcpmembershiproster\">PCP Membership Roster</option>\r\n        <option value=\"payforvalue\">Pay for Value</option>\r\n        <!--<option value=\"payforvaluemanual\">Pay for Value - Manual</option>-->\r\n        <option value=\"bloodleadscreening\">Blood Lead Screening</option>\r\n        <option *ngIf=\"showDHCSBLS\" value=\"dhcsbloodleadscreening\">DHCS Blood Lead Screening</option>\r\n        <option value=\"pcpattestation\">Primary Care Documentation Program</option>              \r\n        <!--<option value=\"bhpayforvalue\">BH Pay for Value</option>-->\r\n        <option value=\"bhaba\">BH ABA P4V Member Roster</option>\r\n        <option value=\"awp\">Medi-Cal Annual Wellness Visit</option>\r\n        <option value=\"hif\">Health Information Form</option>\r\n        <option value=\"iha\">Initial Health Appointment</option>\r\n        <option value=\"bhi\">BHI Quality Measure</option>\r\n        <option value=\"pdc\">Proportion of Days Covered (PDC)</option>\r\n        <!-- <option value=\"roster\">Provider Member Roster</option> -->\r\n      </select>\r\n    </div>\r\n    <div class=\"report-type-manageattestion\">\r\n      <h4><a href=\"javascript:void(0);\" (click)=\"redirectToAttestation()\">Manage Attestation</a></h4>\r\n    </div>    \r\n</div>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-reports-home',\r\n  templateUrl: './reports-home.component.html',\r\n  styleUrls: ['./reports-home.component.scss']\r\n})\r\nexport class ReportsHomeComponent implements OnInit {\r\n\r\n  constructor(\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n}\r\n","<div class=\"reports-type\">\r\n  <app-reports-type [reportType]=\"'home'\"></app-reports-type>\r\n</div>\r\n<div class=\"ribbon-wrapper\">\r\n  <div class=\"ribbon-header\"></div>\r\n  <div class=\"ribbon\">\r\n      <div class=\"icon-wrapper\">\r\n\r\n          <!-- IMAGE FILE //-->\r\n          <img src=\"../../../assets/images/icon-report.png\">\r\n\r\n          <!-- FONTAWESOME //-->\r\n          <!-- i class=\"fa fa-file-alt icon-treatment\"></i //-->\r\n\r\n      </div>\r\n      <div class=\"landing-title\">\r\nLet's take a look at that report.\r\n      </div>\r\n      <div class=\"landing-verbiage\">\r\nSelect from the many report types provided via the select menu above.\r\n      </div>\r\n  </div>\r\n</div>\r\n","\r\nimport { Component, OnInit, Provider, Inject } from '@angular/core';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DropDownObject } from '../../services/models/drop-down-object.interface';\r\nimport { ProviderDetail, ProviderDetailWithAttestation } from '../../services/models/provider-detail';\r\nimport { ReportsService } from '../../services/reports.service';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\nimport { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { ReportType } from '../../services/models/reportype';\r\nimport { UserProfile } from '@caloptima/authentication';\r\nimport { UiUtility } from '../../utils/ui-utility';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n  selector: 'app-reports-bloodlead-screening',\r\n  templateUrl: './reports-bloodlead-screening.component.html',\r\n  styleUrls: ['./reports-bloodlead-screening.component.scss']\r\n})\r\n\r\nexport class ReportsBloodleadScreeningComponent implements OnInit {\r\n\r\n  public userProfile: UserProfile;\r\n  public providers:ProviderDetailWithAttestation[] = [];\r\n  public displayProviders:ProviderDetailWithAttestation[] = [];\r\n  public selectedCalProviderID: string;\r\n  public selectedCalProvider: ProviderDetailWithAttestation;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public totalRecords: number;\r\n  public fileList: SelectItem[];\r\n  public selectedFile: DropDownObject;\r\n  public searchProviderId: string;\r\n  public searchProviderName: string;\r\n\r\n  constructor(\r\n    private sessionService: SessionService,\r\n    private reportsService: ReportsService,\r\n    private datePipe: DatePipe,\r\n    private router: Router,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n      this.sortColumn = 'name';\r\n      this.sortAscending = true;\r\n      this.selectedFile = null;\r\n      this.searchProviderId = '';\r\n      this.searchProviderName = '';\r\n      this.selectedCalProviderID = '';\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    if (!(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser)) { \r\n      this.reportsService.getProvidersWithAttestationForReports(this.sessionService.currentPermission.providerCollectionID, this.sessionService.currentPermission.collectionName, ReportType.BLS).subscribe(result=>{\r\n\r\n        this.providers = result;\r\n\r\n        this.totalRecords = this.providers.length;\r\n\r\n        if(this.providers)\r\n          this.displayProviders = this.providers.slice();\r\n\r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetailWithAttestation): void {\r\n    this.selectedCalProviderID = provider.calProviderID;\r\n    this.selectedCalProvider = provider;\r\n\r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    this.reportsService.getReportFilesForProvider(this.selectedCalProviderID, ReportType.BLS).subscribe(result=>{\r\n      result.forEach(x=>\r\n        {\r\n          this.fileList.push(\r\n            {\r\n              label: this.datePipe.transform(x.yearMonth, 'yyyy-MM'),\r\n              value: x\r\n            });\r\n        });\r\n\r\n      if(this.fileList.length > 0) {\r\n        this.selectedFile = this.fileList[0].value;\r\n      }\r\n\r\n      UiUtility.scrollDown(this.document);\r\n    });\r\n  }\r\n\r\n  public get displayText(): string {\r\n    if(this.selectedCalProviderID) {\r\n\r\n      let providerDetail: ProviderDetail = this.providers.find(x=> x.calProviderID === this.selectedCalProviderID);\r\n\r\n      if(providerDetail) {\r\n        let s = providerDetail.name;\r\n        return s;\r\n      }\r\n      else {\r\n        return \"\"\r\n      }\r\n    }\r\n    else {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  public get enableBuildReport() : boolean {\r\n\r\n    return this.selectedCalProviderID !== '' && this.selectedFile !== null\r\n  }\r\n\r\n  public onBuildReport() : void {\r\n\r\n    var temp:any = this.selectedFile;\r\n    var fileName = temp.fileName;\r\n    var filePath = temp.filePath;\r\n    var fileType = filePath.split('.').pop();\r\n\r\n    this.reportsService.downloadReportFileForProvider(this.selectedCalProviderID, fileName, ReportType.BLS).subscribe(result=>{\r\n      this.saveAsFile(result, filePath, fileType);\r\n    });\r\n  }\r\n\r\n  public get attestationMessage() : string {\r\n    return \"<b>Attestation Required!</b> You will need to attest to having received and reviewed the Blood Lead Screening Report, go to <a href='#/reports/attestationbloodleadscreening'>Manage Attestation</a>\"\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public get isAdminUser(): boolean {\r\n    return (this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser);\r\n  }\r\n\r\n  public onSearch(search) : void {\r\n    this.selectedCalProviderID = '';\r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    if (search && (search.providerName || search.providerId || search.providerTin)) {\r\n\r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n          this.reportsService.searchProvidersWithAttestationForReports(search.providerId, search.providerName, search.providerTin, ReportType.BLS).subscribe(result => {\r\n            this.providers = result;\r\n            this.displayProviders = this.providers.slice();\r\n          });\r\n      }\r\n      else {\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerTin)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.taxId.toLowerCase().indexOf(search.providerTin.trim().toLowerCase()) >= 0);\r\n        }   \r\n      }\r\n    }\r\n    else {\r\n      this.displayProviders = this.providers.slice();\r\n    }\r\n  }\r\n\r\n  private scrollToNext() {\r\n    let el = this.document.getElementsByClassName(\"page\");\r\n    el[0].scrollTop = el[0].scrollHeight;\r\n  }\r\n}\r\n","<div class=\"reports-bloodlead-report-type\">\r\n    <app-reports-type [reportType]=\"'bloodleadscreening'\"></app-reports-type>\r\n</div>\r\n<div class=\"reports-bloodlead-container\">\r\n  <div class=\"report-alert\">\r\n    <app-alert-info uniqueID=\"reportsbls\" subjectMessage=\"\" contentMessage=\"Narrow your search using the known provider name or ID.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"report-search\">\r\n    <app-reports-provider-search (onProviderSearch)=\"onSearch($event)\"></app-reports-provider-search>\r\n  </div>\r\n  <div class=\"report-parameter\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"displayProviders\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\"\r\n    [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"5%\"></th>\r\n          <th width=\"40%\" pSortableColumn=\"name\">Name<div class=\"{{sortClass('name')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"calProviderID\" class=\"header-provider-column\">Provider ID<div class=\"{{sortClass('calProviderID')}}\"></div></th>\r\n          <th width=\"35%\" pSortableColumn=\"groupName\">Medical Group<div class=\"{{sortClass('groupName')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"5%\" class=\"check-column\">\r\n            <p-radioButton name=\"providerid\" [inputId]=\"row.calProviderID\" [value]=\"row.calProviderID\" [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(row)\"></p-radioButton>\r\n          </td>\r\n          <td width=\"40%\">\r\n            <div>{{row.name}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.calProviderID}}</div>\r\n          </td>\r\n          <td width=\"35%\">\r\n            <div>{{row.groupName}}</div>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>\r\n  <div class=\"report-alert1\" *ngIf=\"isAdminUser == false && selectedCalProviderID != '' && (selectedCalProvider.attestationStatus == 2 || selectedCalProvider.attestationStatus == 3)\">\r\n    <app-alert-warning uniqueID=\"idattestalert\" contentMessage=\"\" subjectMessage=\"{{attestationMessage}}\"></app-alert-warning>\r\n  </div>\r\n  <div class=\"report-measurementlabel\" *ngIf=\"selectedCalProviderID != ''\">\r\n    <label>Reporting Period for {{displayText}}</label>\r\n  </div>\r\n  <div class=\"report-filelist\" *ngIf=\"selectedCalProviderID != '' && fileList && fileList.length > 0\">\r\n    <p-dropdown name=\"providerfiles\" id=\"providerfiles\" [options]=\"fileList\" [(ngModel)]=\"selectedFile\">\r\n    </p-dropdown>\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" [disabled]='!enableBuildReport'>Download</button>\r\n  </div>\r\n</div>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CollectionService } from '../../services/collection.service';\r\nimport { ReportsService } from '../../services/reports.service';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\n\r\n@Component({\r\n  selector: 'app-reports-member-eligibility-roster',\r\n  templateUrl: './reports-member-eligibility-roster.component.html',\r\n  styleUrls: ['./reports-member-eligibility-roster.component.scss']\r\n})\r\nexport class ReportsMemberEligibilityRosterComponent implements OnInit {\r\n\r\n  constructor(\r\n    private sessionService: SessionService, \r\n    private collectionService: CollectionService,\r\n    private reportsService: ReportsService) {\r\n\r\n  }\r\n\r\n  ngOnInit() {\r\n    \r\n  }\r\n\r\n  public onBuildReport() {\r\n\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n}\r\n","<div class=\"reports-type\">\r\n  <app-reports-type [reportType]=\"'membereligibilityroster'\"></app-reports-type>\r\n</div>\r\n<div class=\"reports-membereligibility\">\r\n  <p>Work in progress</p>\r\n</div>","\r\nimport { Component, OnInit, Provider, Inject } from '@angular/core';\r\nimport { UserProfile } from '@caloptima/authentication';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DropDownObject } from '../../services/models/drop-down-object.interface';\r\nimport { ProviderDetail } from '../../services/models/provider-detail';\r\nimport { ReportsService } from '../../services/reports.service';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\nimport { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { ReportType } from '../../services/models/reportype';\r\nimport { UiUtility } from '../../utils/ui-utility';\r\n\r\n@Component({\r\n  selector: 'app-reports-pay-for-value',\r\n  templateUrl: './reports-pay-for-value.component.html',\r\n  styleUrls: ['./reports-pay-for-value.component.scss']\r\n})\r\nexport class ReportsPayForValueComponent implements OnInit {\r\n\r\n  public userProfile: UserProfile;\r\n  public providers:ProviderDetail[] = [];\r\n  public displayProviders:ProviderDetail[] = [];\r\n  public selectedCalProviderID: string;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public totalRecords: number;\r\n  public fileList: SelectItem[];\r\n  public selectedFile: DropDownObject;\r\n  public searchProviderId: string;\r\n  public searchProviderName: string;\r\n\r\n  constructor(\r\n    private sessionService: SessionService,\r\n    private reportsService: ReportsService,\r\n    private datePipe: DatePipe,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n      this.sortColumn = 'name';\r\n      this.sortAscending = true;\r\n      this.selectedFile = null;\r\n      this.searchProviderId = '';\r\n      this.searchProviderName = '';\r\n      this.selectedCalProviderID = '';\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      //  Nothing. \r\n    }\r\n    else {\r\n      this.reportsService.getProvidersForReports(this.sessionService.currentPermission.providerCollectionID, ReportType.P4V).subscribe(result=>{\r\n\r\n        this.providers = result;\r\n  \r\n        this.totalRecords = this.providers.length;\r\n  \r\n        if(this.providers)\r\n          this.displayProviders = this.providers.slice();\r\n  \r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetail): void {\r\n    this.selectedCalProviderID = provider.calProviderID;\r\n\r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    this.reportsService.getReportFilesForProvider(this.selectedCalProviderID, ReportType.P4V).subscribe(result=>{\r\n      result.forEach(x=>\r\n        {\r\n          this.fileList.push(\r\n            {\r\n              label: this.datePipe.transform(x.yearMonth, 'yyyy-MM'),\r\n              value: x\r\n            });\r\n        });\r\n\r\n      if(this.fileList.length > 0) {\r\n        this.selectedFile = this.fileList[0].value;\r\n        UiUtility.scrollDown(this.document);\r\n      }\r\n    });\r\n  }\r\n\r\n  public get displayText(): string {\r\n    if(this.selectedCalProviderID) {\r\n\r\n      let providerDetail: ProviderDetail = this.providers.find(x=> x.calProviderID === this.selectedCalProviderID);\r\n\r\n      if(providerDetail) {\r\n        let s = providerDetail.name;\r\n        return s;\r\n      }\r\n      else {\r\n        return \"\"\r\n      }\r\n    }\r\n    else {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  public get enableBuildReport() : boolean {\r\n\r\n    return this.selectedCalProviderID !== '' && this.selectedFile !== null\r\n  }\r\n\r\n  public onBuildReport() : void {\r\n\r\n    var temp:any = this.selectedFile;\r\n    var fileName = temp.fileName;\r\n\r\n    this.reportsService.downloadReportFileForProvider(this.selectedCalProviderID, fileName, ReportType.P4V).subscribe(result=>{\r\n      this.saveAsFile(result, fileName + \".xlsb\", 'xlsb');\r\n    });\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public onSearch(search) : void {\r\n    this.selectedCalProviderID = '';\r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    if (search && (search.providerName || search.providerId || search.providerTin)) {\r\n      \r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n          this.reportsService.searchProvidersForReports(search.providerId, search.providerName, search.providerTin, ReportType.P4V).subscribe(result => {\r\n            this.providers = result;\r\n            this.displayProviders = this.providers.slice();\r\n           });\r\n      }\r\n      else {\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerTin)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.taxId.toLowerCase().indexOf(search.providerTin.trim().toLowerCase()) >= 0);\r\n        }   \r\n      }\r\n    }\r\n    else {\r\n      this.displayProviders = this.providers.slice();\r\n    }\r\n  }\r\n}\r\n","<div class=\"reports-payforvalue-report-type\">\r\n    <app-reports-type [reportType]=\"'payforvalue'\"></app-reports-type>\r\n</div>\r\n<div class=\"reports-payforvalue-container\">\r\n  <div class=\"report-alert\">\r\n    <app-alert-info subjectMessage=\" \" uniqueID=\"reportspayforvalue\" contentMessage=\"Narrow your search using the known provider name or ID.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"report-search\">\r\n    <app-reports-provider-search (onProviderSearch)=\"onSearch($event)\"></app-reports-provider-search>\r\n  </div>\r\n  <div class=\"report-parameter\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"displayProviders\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\"\r\n    [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n    >\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"5%\"></th>\r\n          <th width=\"40%\" pSortableColumn=\"name\">Name<div class=\"{{sortClass('name')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"calProviderID\" class=\"header-provider-column\">Provider ID<div class=\"{{sortClass('calProviderID')}}\"></div></th>\r\n          <th width=\"35%\" pSortableColumn=\"groupName\">Medical Group<div class=\"{{sortClass('groupName')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"5%\" class=\"check-column\">\r\n            <p-radioButton name=\"providerid\" [inputId]=\"row.calProviderID\" [value]=\"row.calProviderID\" [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(row)\"></p-radioButton>\r\n          </td>\r\n          <td width=\"40%\">\r\n            <div>{{row.name}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.calProviderID}}</div>\r\n          </td>\r\n          <td width=\"35%\">\r\n            <div>{{row.groupName}}</div>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>\r\n  <div class=\"report-measurementlabel\" *ngIf=\"selectedCalProviderID != ''\">\r\n    <label>Measurement Period for {{displayText}}</label>\r\n  </div>\r\n  <div class=\"report-filelist\" *ngIf=\"selectedCalProviderID != '' && fileList && fileList.length > 0\">\r\n    <p-dropdown name=\"providerfiles\" id=\"providerfiles\" [options]=\"fileList\" [(ngModel)]=\"selectedFile\">\r\n    </p-dropdown>\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" [disabled]='!enableBuildReport'>Download</button>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CollectionService } from '../../services/collection.service';\r\nimport { ProviderDetail } from '../../services/models/provider-detail';\r\nimport { ReportsService } from '../../services/reports.service';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\n\r\n@Component({\r\n  selector: 'app-reports-pcp-member-roster',\r\n  templateUrl: './reports-pcp-member-roster.component.html',\r\n  styleUrls: ['./reports-pcp-member-roster.component.scss']\r\n})\r\nexport class ReportsPcpMemberRosterComponent implements OnInit {\r\n\r\n  public providers:ProviderDetail[] = [];\r\n  public selected: ProviderDetail[] = [];\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  private enableBuildReport: boolean;\r\n  private threshold: number = 25000;\r\n  public showThresholdAlert: boolean = false;\r\n\r\n  constructor(\r\n    private sessionService: SessionService, \r\n    private collectionService: CollectionService,\r\n    private reportsService: ReportsService\r\n\r\n    ) {\r\n\r\n      this.sortColumn = 'name';\r\n      this.sortAscending = true;    \r\n      this.enableBuildReport = true;\r\n  }\r\n\r\n  ngOnInit() {\r\n    \r\n    this.reportsService.getProvidersForPCPMemberRoster(this.sessionService.currentPermission.providerCollectionID).subscribe(result=>{\r\n      this.providers = result;\r\n\r\n      let param: any = {\r\n        \"field\": \"name\",\r\n        \"order\": 1\r\n      }\r\n      this.onSort(param)\r\n\r\n      this.selected = result;\r\n    })\r\n  }\r\n\r\n  public onBuildReport() {\r\n\r\n    this.enableBuildReport = false;\r\n\r\n    let providerIds: string[] = [];\r\n    this.selected.forEach(x=> {\r\n      providerIds.push(x.calProviderID);\r\n    });\r\n\r\n    this.reportsService.downloadMemberPcpRosterUsingProviderIds(providerIds).subscribe(result => {\r\n      this.saveAsFile(result, 'member-pcp-roster.csv', 'text/csv');\r\n      this.enableBuildReport = true;\r\n    })\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public get IsEnterpriseUser() : boolean {\r\n    return (this.sessionService.isEnterpriseAdmin || this.sessionService.isEnterpriseUser);\r\n  }\r\n\r\n  public onSearch(search) : void {\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      this.selected = [];\r\n      this.reportsService.searchProvidersForPCPMemberRoster(search.providerId, search.providerName, search.providerTin).subscribe(result => {\r\n        this.providers = result;\r\n       });\r\n    }          \r\n  }\r\n\r\n  public get totalCount() : number{\r\n    this.showThresholdAlert = false;\r\n    \r\n    let totalCount: number = 0;\r\n    this.selected.forEach(x=>{\r\n      totalCount += x.pcpMemberCount\r\n    });\r\n\r\n    if(totalCount > this.threshold)\r\n      this.showThresholdAlert = true;\r\n\r\n    return totalCount;\r\n  }\r\n}\r\n","<div>\r\n  <app-reports-type [reportType]=\"'pcpmembershiproster'\"></app-reports-type>\r\n</div>\r\n<div class=\"reports-pcpmembershiproster\">\r\n  <div class=\"report-alert\" *ngIf=\"IsEnterpriseUser\">\r\n    <app-alert-info subjectMessage=\" \" contentMessage=\"Narrow your search using the known provider name or ID.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"report-search\" *ngIf=\"IsEnterpriseUser\">\r\n    <app-reports-provider-search (onProviderSearch)=\"onSearch($event)\"></app-reports-provider-search>\r\n  </div>      \r\n  <div class=\"report-parameter\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList [value]=\"providers\" [paginator]=\"false\" \r\n      selectionMode=\"multiple\" [(selection)]=\"selected\" [scrollable]=\"true\" scrollHeight=\"315px\" (onSort)=\"onSort($event)\" [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"10%\" class=\"header-check-column\">\r\n            <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n          </th>\r\n          <th width=\"30%\" pSortableColumn=\"name\" class=\"header-name-column\">Name<div class=\"{{sortClass('name')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"calProviderID\" class=\"header-provider-column\">Provider ID<div class=\"{{sortClass('calProviderID')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"pcpMemberCount\" class=\"header-pcpmembercount-column\">Member Count<div class=\"{{sortClass('pcpMemberCount')}}\"></div></th>\r\n          <th width=\"30%\" pSortableColumn=\"groupName\" class=\"header-group-column\">Medical Group<div class=\"{{sortClass('groupName')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"10%\" class=\"check-column\">\r\n            <p-tableCheckbox [value]=\"row\" (click)=\"$event.stopPropagation()\"></p-tableCheckbox>\r\n          </td>\r\n          <td width=\"30%\" class=\"name-column\">\r\n            <div>{{row.name}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.calProviderID}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"pcpmembercount-column\">\r\n            <div>{{row.pcpMemberCount}}</div>\r\n          </td>\r\n          <td width=\"30%\" class=\"group-column\">\r\n            <div>{{row.groupName}}</div>\r\n          </td>          \r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"summary\">\r\n        <div class=\"report-countsummary\">\r\n          <span>\r\n            Total Selected Members : {{totalCount}}.\r\n          </span>\r\n          <span *ngIf=\"showThresholdAlert\" style=\"color: red;\">\r\n            &nbsp;Too many members selected ({{threshold}}) MAX.\r\n          </span>\r\n        </div>\r\n        <div class=\"report-summary\">\r\n          <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" tabindex=\"2\" [disabled]='!enableBuildReport || selected.length == 0 || showThresholdAlert'>Get Member Roster</button>\r\n        </div>          \r\n      </ng-template>      \r\n    </p-table>\r\n  </div>\r\n</div>","\r\nimport { Component, OnInit,ViewChild, Inject } from '@angular/core';\r\nimport { UserProfile } from '@caloptima/authentication';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DropDownObject } from '../../../services/models/drop-down-object.interface';\r\nimport { ReportsService } from '../../../services/reports.service';\r\nimport { SessionService } from '../../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\nimport { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { ReportType } from '../../../services/models/reportype';\r\nimport { ReportsMemberSearchComponent } from '../../../app-components/reports-member-search/reports-member-search.component';\r\nimport { UiUtility } from '../../../utils/ui-utility';\r\nimport { ReportMemberDetails } from '../../../services/models/reportmemberdetails';\r\n\r\n@Component({\r\n  selector: 'app-pcp-attestation-member',\r\n  templateUrl: './pcp-attestation-member.component.html',\r\n  styleUrls: ['./pcp-attestation-member.component.scss']\r\n})\r\nexport class PcpAttestationMemberComponent implements OnInit {\r\n\r\n  public userProfile: UserProfile;\r\n  public members:ReportMemberDetails[] = [];\r\n  public displayMembers:ReportMemberDetails[] = [];\r\n  public selectedCin: string;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public totalRecords: number;\r\n  public fileList: SelectItem[];\r\n  public selectedFile: DropDownObject;\r\n  public searchCin: string;\r\n  public searchName: string;\r\n  public collectionId: number;\r\n  public calProviderId: string;\r\n\r\n  @ViewChild('memberSearch') memberSearch: ReportsMemberSearchComponent;\r\n\r\n  constructor(\r\n    private reportsService: ReportsService,\r\n    private sessionService: SessionService,\r\n    private datePipe: DatePipe,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.collectionId = this.sessionService.currentPermission.providerCollectionID;\r\n\r\n    this.initialize();\r\n  }\r\n\r\n  public setProviderId(providerId: string) {\r\n    this.calProviderId = providerId;\r\n    this.initialize(true);\r\n  }\r\n\r\n  public initialize(resetComponent = false) {\r\n    this.sortColumn = 'memberName';\r\n    this.sortAscending = true;\r\n    this.selectedFile = null;\r\n    this.searchCin = '';\r\n    this.searchName = '';\r\n    this.selectedCin = '';\r\n    this.displayMembers = [];\r\n\r\n    if (resetComponent) {\r\n      this.memberSearch.resetSearchFilters();\r\n    }\r\n\r\n    if(!UiUtility.isNullUndefinedOrEmpty(this.calProviderId)) {\r\n      this.reportsService.getMembersForReports(this.collectionId, this.calProviderId, ReportType.PCPDocAttest).subscribe(result=>{\r\n\r\n        this.members = result;\r\n\r\n        this.totalRecords = this.members.length;\r\n\r\n        if(this.members)\r\n          this.displayMembers = this.members.slice();\r\n\r\n        let param: any = {\r\n          \"field\": \"memberName\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.displayMembers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onMemberSelected(member: ReportMemberDetails): void {\r\n    this.selectedCin = member.cin;    \r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    const providerId = UiUtility.isNullUndefinedOrEmpty(this.calProviderId) ? member.providerId : this.calProviderId;\r\n\r\n    this.reportsService.getReportFilesForMember(providerId, this.selectedCin, ReportType.PCPDocAttest).subscribe(result=>{\r\n      result.forEach(x=>\r\n        {\r\n          this.fileList.push(\r\n            {\r\n              label: this.datePipe.transform(x.yearMonth, 'yyyy-MM'),\r\n              value: x\r\n            });\r\n        });\r\n\r\n      if(this.fileList.length > 0) {\r\n        this.selectedFile = this.fileList[0].value;\r\n\r\n        UiUtility.scrollDown(this.document);\r\n      }\r\n    });\r\n  }\r\n\r\n  public get displayText(): string {\r\n    if(this.selectedCin) {\r\n\r\n      let memeberDetail: ReportMemberDetails = this.members.find(x=> x.cin === this.selectedCin);\r\n\r\n      if(memeberDetail) {\r\n        let s = memeberDetail.memberName;\r\n        return s;\r\n      }\r\n      else {\r\n        return \"\"\r\n      }\r\n    }\r\n    else {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  public get enableBuildReport() : boolean {\r\n\r\n    return this.selectedCin !== '' && this.selectedFile !== null\r\n  }\r\n\r\n  public onBuildReport() : void {\r\n\r\n    var temp:any = this.selectedFile;\r\n    var fileName = temp.fileName;\r\n\r\n    this.reportsService.downloadReportFileForMember(this.calProviderId, this.selectedCin, fileName, ReportType.PCPDocAttest).subscribe(result=>{\r\n      this.saveAsFile(result, fileName + \".pdf\", 'pdf');\r\n    });\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  // public onKeyPress(e:any) : void {\r\n  //   if (e.keyCode === 13) {\r\n  //     this.onMemberSearch();\r\n  //   }\r\n  // }\r\n\r\n  public onMemberSearch(search) : void {\r\n\r\n    this.selectedCin = '';\r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    if(!UiUtility.isNullUndefinedOrEmpty(this.calProviderId)) {\r\n      if(search.memberName === '' && search.memberId === '') {\r\n        this.displayMembers = this.members.slice();\r\n      }\r\n      else {\r\n        this.displayMembers = [];\r\n        this.members.forEach(x => {\r\n\r\n          let include: boolean = false;\r\n\r\n          if(search.memberName !== '') {\r\n            include = x.memberName.trim().toUpperCase().includes(search.memberName.trim().toUpperCase());\r\n          }\r\n          if(!include && search.memberId !== '') {\r\n            include = x.cin == search.memberId;\r\n          }\r\n          if(!include && search.memberId !== '') {\r\n            include = x.medsId == search.memberId;\r\n          }          \r\n          if(!include && search.memberId !== '') {\r\n            include = x.mbi == search.memberId;\r\n          }                    \r\n          if(include){\r\n            this.displayMembers.push(x);\r\n          }\r\n        });\r\n      }\r\n    }\r\n    else {\r\n\r\n      this.reportsService.searchMembersForReports(ReportType.PCPDocAttest, this.collectionId, search.memberName, search.memberId).subscribe(result=>{\r\n\r\n        this.members = result;\r\n\r\n        this.totalRecords = this.members.length;\r\n\r\n        if(this.members)\r\n          this.displayMembers = this.members.slice();\r\n\r\n          let param: any = {\r\n            \"field\": \"memberName\",\r\n            \"order\": 1\r\n          }\r\n          this.onSort(param)\r\n      });\r\n\r\n    }\r\n  }\r\n\r\n}\r\n","<div class=\"reports-pcp-attestation-member\">\r\n  <div class=\"report-search\">\r\n    <app-reports-member-search (onMemberSearch)=\"onMemberSearch($event)\" #memberSearch></app-reports-member-search>\r\n  </div>\r\n  <div class=\"report-parameter\">\r\n    <p-table #providerList\r\n    [value]=\"displayMembers\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\"\r\n    [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n    >\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"5%\"></th>\r\n          <th width=\"40%\" pSortableColumn=\"memberName\">Name<div class=\"{{sortClass('memberName')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"cin\">Member ID<div class=\"{{sortClass('cin')}}\"></div></th>\r\n          <th width=\"35%\" pSortableColumn=\"providerid\">Provider ID<div class=\"{{sortClass('providerid')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"5%\" class=\"check-column\">\r\n            <p-radioButton name=\"cin\" [inputId]=\"row.cin\" [value]=\"row.cin\" [(ngModel)]=\"selectedCin\" (click)=\"onMemberSelected(row)\"></p-radioButton>\r\n          </td>\r\n          <td width=\"40%\">\r\n            <div>{{row.memberName}}</div>\r\n          </td>\r\n          <td width=\"20%\">\r\n            <div>{{row.cin}}</div>\r\n          </td>\r\n          <td width=\"35%\">\r\n            <div>{{row.providerId}}</div>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>\r\n  <div class=\"report-measurementlabel\" *ngIf=\"selectedCin != ''\">\r\n    <label>Measurement Period for {{displayText}}</label>\r\n  </div>\r\n  <div class=\"report-filelist\" *ngIf=\"selectedCin != '' && fileList && fileList.length > 0\">\r\n    <p-dropdown name=\"providerfiles\" id=\"providerfiles\" [options]=\"fileList\" [(ngModel)]=\"selectedFile\">\r\n    </p-dropdown>\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" [disabled]='!enableBuildReport'>Download</button>\r\n  </div>\r\n</div>\r\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-reports-member-search',\r\n  templateUrl: './reports-member-search.component.html',\r\n  styleUrls: ['./reports-member-search.component.scss']\r\n})\r\nexport class ReportsMemberSearchComponent implements OnInit {\r\n  public memberName: string;\r\n  public memberId: string;\r\n  public searchLabel: string = \"Search for Members\";\r\n  public idLabel: string = \"Member ID\";\r\n  public instructionLabel: string =\"CIN, MEDS ID, or MBI accepted\";\r\n  @Output() onMemberSearch: EventEmitter<any> = new EventEmitter(null);\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  public findMembers() {\r\n    this.onMemberSearch.emit({ memberName: this.memberName, memberId: this.memberId });\r\n  }\r\n\r\n  public resetSearchFilters() {\r\n    this.memberName = '';\r\n    this.memberId = '';\r\n  }\r\n\r\n  public setLabel(instructionlabel: string, id: string, search: string ){\r\n    this.instructionLabel = instructionlabel;\r\n    this.idLabel = id;\r\n    this.searchLabel = search;\r\n  }\r\n}\r\n","<form class=\"reports-member-search-container\" #memberLookupForm=\"ngForm\" (ngSubmit)=\"findMembers()\"\r\n  autocomplete=\"off\">\r\n  <!-- <div class=\"title-member-name\">\r\n    <label for=\"memberName\">Member Name</label>\r\n  </div>\r\n  <div class=\"filter-member-name\">\r\n        <input class=\"form-control\" type=\"text\" name=\"txtMemberName\" id=\"txtMemberName\" [(ngModel)]=\"memberName\">\r\n  </div> -->\r\n  <div class=\"title-member-id\">\r\n    <label for=\"memberId\">{{idLabel}}</label>\r\n  </div>\r\n  <div class=\"memberIdInput-sub-label\">{{instructionLabel}}</div>\r\n  <div class=\"filter-member-id\">\r\n    <input class=\"form-control\" type=\"text\"required=\"false\"  name=\"txtMemberId\" id=\"txtMemberId\" [(ngModel)]=\"memberId\"\r\n    maxlength=\"12\" pattern=\"^\\w{4,12}$\">\r\n  </div>\r\n  <div class=\"search-member-button\">\r\n    <button id=\"btnSearchForMember\" class=\"btn-member btn btn-primary\" type=\"submit\">\r\n      {{searchLabel}}\r\n    </button>\r\n  </div>\r\n</form>\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ProviderDetail } from '../../../services/models/provider-detail';\r\nimport { ReportType } from '../../../services/models/reportype';\r\nimport { ReportsService } from '../../../services/reports.service';\r\nimport { SessionService } from '../../../services/session.service';\r\nimport { UiUtility } from '../../../utils/ui-utility';\r\nimport { trigger, transition, query, style, group, animate, state } from '@angular/animations';\r\nimport { ReportsProviderSearchComponent } from '../../../app-components/reports-provider-search/reports-provider-search.component';\r\nimport { ReportsMemberSearchComponent } from '../../../app-components/reports-member-search/reports-member-search.component';\r\nimport { PcpAttestationMemberComponent } from '../pcp-attestation-member/pcp-attestation-member.component';\r\n\r\n@Component({\r\n  selector: 'app-pcp-attestation-provider',\r\n  templateUrl: './pcp-attestation-provider.component.html',\r\n  styleUrls: ['./pcp-attestation-provider.component.scss'],\r\n  animations: [\r\n    trigger('showMember', [\r\n      state('false', style({ opacity: 1, transform: 'translateX(0%)', display: 'block' })),\r\n      state('true', style({ opacity: 0, transform: 'translateX(-100%)', display: 'none' })),\r\n      transition('false => true', animate('500ms ease-in')),\r\n      transition('true => false', animate('500ms ease-out'))\r\n  ])]\r\n})\r\n\r\nexport class PcpAttestationProviderComponent implements OnInit {\r\n  public providers: ProviderDetail[] = [];\r\n  public displayedProviders: ProviderDetail[] = [];\r\n  public selectedProvider: ProviderDetail;\r\n  public totalRecords: number;\r\n  public rowsPerPage: number = 10;\r\n  public pageNumber: number = 1;\r\n  public selectedCalProviderID: string;\r\n  public animationState: string = '';\r\n  public displayMembers = false;\r\n\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n\r\n  public columns: any = [\r\n    { field: '', header: '', width: '5%', classHeader: 'provider-reports-header', classContent: 'provider-reports-content-alt1', sort: false },\r\n    { field: 'name', header: 'Name', width: '40%', classHeader: 'provider-reports-header', classContent: 'provider-reports-content', sort: true },\r\n    { field: 'taxId', header: 'TIN', width: '25%', classHeader: 'provider-reports-header-alt1', classContent: 'provider-reports-content-alt1', sort: true },\r\n    { field: 'calProviderID', header: 'Provider ID', width: '25%', classHeader: 'provider-reports-header-alt1', classContent: 'provider-reports-content-alt1', sort: true }\r\n  ];\r\n\r\n  @ViewChild('providerSearch') providerSearch: ReportsProviderSearchComponent;\r\n  @ViewChild('memberComponent') memberComponent: PcpAttestationMemberComponent;\r\n\r\n  constructor(\r\n    private reportsService: ReportsService,\r\n    private sessionService: SessionService\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.initialize();\r\n  }\r\n\r\n  public initialize(resetComponent = false) {\r\n\r\n    this.sortColumn = 'name';\r\n    this.selectedCalProviderID = '';\r\n\r\n    if (resetComponent) {\r\n      this.providerSearch.resetSearchFilters();\r\n      this.displayMembers = false;\r\n      this.providers = [];\r\n      this.displayedProviders = [];\r\n    }\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      //  Do nothing.\r\n    }\r\n    else {\r\n      this.reportsService.getProvidersForReports(this.sessionService.currentPermission.providerCollectionID, ReportType.PCPDocAttest).subscribe(result => {\r\n        this.providers = result;\r\n\r\n        this.pageNumber = 1;\r\n        this.onProviderSearch(null);\r\n\r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetail) {\r\n    this.selectedCalProviderID = provider.calProviderID;\r\n    this.displayMembers = true;\r\n    this.selectedProvider = provider;\r\n    this.memberComponent.setProviderId(this.selectedCalProviderID);\r\n  }\r\n\r\n  public backToProvider() {\r\n    this.displayMembers = false;\r\n  }\r\n\r\n  public onProviderSearch(search) {\r\n    this.selectedCalProviderID = '';\r\n    if (search && (search.providerName || search.providerId || search.providerTin)) {\r\n\r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n        this.reportsService.searchProvidersForReports(search.providerId, search.providerName, search.providerTin, ReportType.PCPDocAttest).subscribe(result => {\r\n          this.providers = result;\r\n          this.displayedProviders = this.providers.slice();\r\n        });\r\n      }\r\n      else {\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerTin)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.taxId.toLowerCase().indexOf(search.providerTin.trim().toLowerCase()) >= 0);\r\n        }        \r\n      }\r\n    }\r\n    else {\r\n      this.displayedProviders = this.providers.slice();\r\n    }\r\n    this.setPagedData();\r\n  }\r\n\r\n  private setPagedData(page: number = 0) {\r\n    if (page === 0) {\r\n      this.pageNumber = 1;\r\n    }\r\n    this.totalRecords = this.displayedProviders.length;\r\n    const start = (this.pageNumber - 1) * this.rowsPerPage;\r\n    let end = start + this.rowsPerPage;\r\n    if (end > this.displayedProviders.length) {\r\n      end = this.displayedProviders.length;\r\n    }\r\n\r\n    this.displayedProviders = this.displayedProviders.slice(start, end);\r\n  }\r\n}\r\n","\r\n<div class=\"pcp-attestation-container\">\r\n   <div class=\"pcp-attestation-provider-container\" [@showMember]=\"displayMembers\">\r\n    <div class=\"pcp-attestation-provider-search\">\r\n      <app-reports-provider-search (onProviderSearch)=\"onProviderSearch($event)\" #providerSearch></app-reports-provider-search>\r\n    </div>\r\n    <div class=\"pcp-attestation-provider-results\">\r\n      <p-table\r\n          [value]=\"displayedProviders\"\r\n          [paginator]=\"true\"\r\n          [rows]=\"10\"\r\n          [scrollable]=\"true\"\r\n          scrollHeight=\"400px\"\r\n          selectionMode=\"single\"\r\n          (onSort)=\"onSort($event)\"\r\n          [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n          >\r\n        <ng-template pTemplate=\"header\">\r\n          <tr>\r\n            <th pSortableColumn=\"{{col.field}}\" width=\"{{col.width}}\" class=\"{{col.classHeader}}\" *ngFor=\"let col of columns\">\r\n              {{col.header}}\r\n              <div *ngIf=\"col.sort\" class=\"{{sortClass(col.field)}}\">\r\n              </div>\r\n            </th>\r\n          </tr>\r\n        </ng-template>\r\n        <ng-template pTemplate=\"body\" let-provider>\r\n          <tr>\r\n            <td width=\"{{col.width}}\" class=\"{{col.classContent}}\" *ngFor=\"let col of columns\">\r\n              <div *ngIf=\"col.header === ''\">\r\n                <p-radioButton name=\"providerid\" [inputId]=\"provider.calProviderID\" [value]=\"provider.calProviderID\" [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(provider)\"></p-radioButton>\r\n              </div>\r\n              <div *ngIf=\"col.header === 'Name' || col.header === 'Provider ID' || col.header === 'TIN'\">\r\n                <div>\r\n                  <span>{{provider[col.field]}}</span>\r\n                </div>\r\n              </div>\r\n          </tr>\r\n        </ng-template>\r\n      </p-table>\r\n    </div>\r\n   </div>\r\n   <div class=\"pcp-attestation-member-container\" [@showMember]=\"!displayMembers\">\r\n    <div class=\"pcp-attestation-member-container-header\" *ngIf=\"selectedProvider\">\r\n      <button class=\"btn btn-primary btn-back\" (click)=\"backToProvider()\">\r\n        <i class=\"fa fa-arrow-left\" aria-hidden=\"true\"></i>\r\n        <span>Back</span>\r\n      </button>\r\n      <p class=\"provider-name\">{{selectedProvider.name}}</p>\r\n    </div>\r\n    <div class=\"pcp-attestation-member-container\">\r\n      <app-pcp-attestation-member #memberComponent></app-pcp-attestation-member>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit, AfterViewInit, ViewChild, ElementRef, Output, EventEmitter } from '@angular/core';\r\nimport { UiUtility } from '../../utils/ui-utility';\r\nimport { TabView } from 'primeng/tabview';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { PcpAttestationProviderComponent } from './pcp-attestation-provider/pcp-attestation-provider.component';\r\nimport { PcpAttestationMemberComponent } from './pcp-attestation-member/pcp-attestation-member.component';\r\n\r\n@Component({\r\n  selector: 'app-reports-pcp-attestation',\r\n  templateUrl: './reports-pcp-attestation.component.html',\r\n  styleUrls: ['./reports-pcp-attestation.component.scss']\r\n})\r\nexport class ReportsPcpAttestationComponent implements OnInit, AfterViewInit {\r\n  public displayConfirmContinue = false;\r\n  public activeindex:number = 0;\r\n\r\n  @ViewChild('tabView') tabview: TabView;\r\n  @ViewChild('providerComponent') providerComponent: PcpAttestationProviderComponent;\r\n  @ViewChild('memberComponent') memberComponent: PcpAttestationMemberComponent;\r\n\r\n  private tabs: any = [\r\n    { index: 0, id: 'pcpattestation-provider', label: 'Provider', enable: true },\r\n    { index: 1, id: 'pcpattestation-member', label: 'Member', enable: true }\r\n  ];\r\n\r\n  constructor(\r\n    private confirmationService: ConfirmationService,\r\n    private elementRef: ElementRef\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.setPcpReportAttestationTabs();\r\n  }\r\n\r\n  public canViewTab(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.enable : false;\r\n  }\r\n\r\n  public getTabName(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.label : '';\r\n  }\r\n\r\n  public getTabIndex(name: string) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.label === name);\r\n    return currentTab ? currentTab.index : 0;\r\n  }\r\n\r\n  public onTabChanged(e: any) {\r\n    this.displayConfirmContinue = true;\r\n    this.tabview.activeIndex = e.index === 1 ? 0 : 1;\r\n  }\r\n\r\n  public handleChange(selectedIndex:number, e:MouseEvent) {\r\n    const currentIndex = this.tabview.activeIndex;\r\n    e.stopPropagation();\r\n    if (currentIndex == selectedIndex){\r\n      return;\r\n    }\r\n    this.confirmationService.confirm({\r\n      header: 'Are you sure?',\r\n      message: 'Your search results will be cleared.',\r\n      key: 'continueDialog',\r\n      accept: () => {\r\n        this.tabview.activeIndex = selectedIndex;\r\n        if (selectedIndex === this.getTabIndex('Provider')) {\r\n          this.providerComponent.initialize(true);\r\n        }\r\n        else if (selectedIndex === this.getTabIndex('Member')) {\r\n          if (this.memberComponent) {\r\n            this.memberComponent.setProviderId(null);\r\n          }\r\n        }\r\n      },\r\n      reject: () => {\r\n        this.tabview.activeIndex = currentIndex;\r\n      }\r\n    });\r\n  }\r\n\r\n  private setPcpReportAttestationTabs() {\r\n    const tabView = this.elementRef.nativeElement.querySelector('div.pcpattestation-tabview-styles  ul.p-tabview-nav');\r\n    UiUtility.SetTabsWidthDynamically(tabView, 0, 250);\r\n\r\n    const tabElements = tabView.querySelectorAll('li');\r\n    tabElements.forEach(element => {\r\n      const currentChild = element.firstChild;\r\n      const tabName = (element.querySelector(\"a\") as HTMLAnchorElement).innerText;\r\n      const tabIndex = this.getTabIndex(tabName.trim());\r\n\r\n      const newDiv = window.document.createElement(\"div\");\r\n      newDiv.addEventListener('click', this.handleChange.bind(this, tabIndex), false);\r\n      newDiv.style.cursor = 'pointer';\r\n      newDiv.appendChild(currentChild);\r\n\r\n      element.firstChild.remove();\r\n      element.appendChild(newDiv);\r\n    });\r\n  }\r\n\r\n  public confirmContinue(event) {\r\n    this.displayConfirmContinue = false;\r\n  }\r\n}\r\n","<div class=\"pcpattestation-container\">\r\n  <div class=\"pcpattestation-container-reporttype\">\r\n    <app-reports-type [reportType]=\"'pcpattestation'\"></app-reports-type>\r\n  </div>\r\n  <div class=\"pcpattestation-alert\">\r\n    <app-alert-info subjectMessage=\" \" uniqueID=\"reportspcpattestation\" contentMessage=\"Narrow your search using the known provider or member.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"pcpattestation-container-main\">\r\n    <p-tabView styleClass=\"pcpattestation-tabview-styles\" [activeIndex]=\"activeindex\" #tabView>\r\n      <p-tabPanel [header]=\"getTabName(0)\">\r\n        <ng-template pTemplate=\"header\">\r\n          {{getTabName(0)}}\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n          <app-pcp-attestation-provider #providerComponent></app-pcp-attestation-provider>\r\n        </ng-template>\r\n      </p-tabPanel>\r\n      <p-tabPanel *ngIf=\"canViewTab(1)\" [header]=\"getTabName(1)\">\r\n        <ng-template pTemplate=\"header\">\r\n          {{getTabName(1)}}\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n          <app-pcp-attestation-member  #memberComponent></app-pcp-attestation-member>\r\n        </ng-template>\r\n      </p-tabPanel>\r\n    </p-tabView>\r\n  </div>\r\n</div>\r\n<app-continue-dialog key=\"continueDialog\"></app-continue-dialog>\r\n","\r\nimport { Component, OnInit, Provider, Inject } from '@angular/core';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DropDownObject } from '../../services/models/drop-down-object.interface';\r\nimport { ProviderDetail } from '../../services/models/provider-detail';\r\nimport { ReportsService } from '../../services/reports.service';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\nimport { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { ReportType } from '../../services/models/reportype';\r\nimport { UserProfile } from '@caloptima/authentication';\r\nimport { UiUtility } from '../../utils/ui-utility';\r\n\r\n@Component({\r\n  selector: 'app-reports-dhcs-bloodlead-screening',\r\n  templateUrl: './reports-dhcs-bloodlead-screening.component.html',\r\n  styleUrls: ['./reports-dhcs-bloodlead-screening.component.scss']\r\n})\r\n\r\nexport class ReportsDHCSBloodleadScreeningComponent implements OnInit {\r\n\r\n  public userProfile: UserProfile;\r\n  public providers:ProviderDetail[] = [];\r\n  public displayProviders:ProviderDetail[] = [];\r\n  public selectedCalProviderID: string;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public totalRecords: number;\r\n  public fileList: SelectItem[];\r\n  public selectedFile: DropDownObject;\r\n  public searchProviderId: string;\r\n  public searchProviderName: string;\r\n\r\n  constructor(\r\n    private sessionService: SessionService,\r\n    private reportsService: ReportsService,\r\n    private datePipe: DatePipe,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n      this.sortColumn = 'name';\r\n      this.sortAscending = true;\r\n      this.selectedFile = null;\r\n      this.searchProviderId = '';\r\n      this.searchProviderName = '';\r\n      this.selectedCalProviderID = '';\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      //  Nothing. \r\n    }\r\n    else {\r\n      this.reportsService.getProvidersForReports(this.sessionService.currentPermission.providerCollectionID, ReportType.DHCS_BLS).subscribe(result=>{\r\n\r\n        this.providers = result;\r\n\r\n        this.totalRecords = this.providers.length;\r\n\r\n        if(this.providers)\r\n          this.displayProviders = this.providers.slice();\r\n\r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetail): void {\r\n    this.selectedCalProviderID = provider.calProviderID;\r\n\r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    this.reportsService.getReportFilesForProvider(this.selectedCalProviderID, ReportType.DHCS_BLS).subscribe(result=>{\r\n      result.forEach(x=>\r\n        {\r\n          this.fileList.push(\r\n            {\r\n              label: this.datePipe.transform(x.yearMonth, 'yyyy-MM'),\r\n              value: x\r\n            });\r\n        });\r\n\r\n      if(this.fileList.length > 0) {\r\n        this.selectedFile = this.fileList[0].value;\r\n      }\r\n\r\n      UiUtility.scrollDown(this.document);\r\n    });\r\n  }\r\n\r\n  public get displayText(): string {\r\n    if(this.selectedCalProviderID) {\r\n\r\n      let providerDetail: ProviderDetail = this.providers.find(x=> x.calProviderID === this.selectedCalProviderID);\r\n\r\n      if(providerDetail) {\r\n        let s = providerDetail.name;\r\n        return s;\r\n      }\r\n      else {\r\n        return \"\"\r\n      }\r\n    }\r\n    else {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  public get enableBuildReport() : boolean {\r\n\r\n    return this.selectedCalProviderID !== '' && this.selectedFile !== null\r\n  }\r\n\r\n  public onBuildReport() : void {\r\n\r\n    var temp:any = this.selectedFile;\r\n    var fileName = temp.fileName;\r\n    var filePath = temp.filePath;\r\n    var fileType = filePath.split('.').pop();\r\n\r\n    this.reportsService.downloadReportFileForProvider(this.selectedCalProviderID, fileName, ReportType.DHCS_BLS).subscribe(result=>{\r\n      this.saveAsFile(result, filePath, fileType);\r\n    });\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public onSearch(search) : void {\r\n    this.selectedCalProviderID = '';\r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    if (search && (search.providerName || search.providerId || search.providerTin)) {\r\n\r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n          this.reportsService.searchProvidersForReports(search.providerId, search.providerName, search.providerTin, ReportType.DHCS_BLS).subscribe(result => {\r\n            this.providers = result;\r\n            this.displayProviders = this.providers.slice();\r\n          });\r\n      }\r\n      else {\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerTin)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.taxId.toLowerCase().indexOf(search.providerTin.trim().toLowerCase()) >= 0);\r\n        }   \r\n      }\r\n    }\r\n    else {\r\n      this.displayProviders = this.providers.slice();\r\n    }\r\n  }\r\n\r\n  private scrollToNext() {\r\n    let el = this.document.getElementsByClassName(\"page\");\r\n    el[0].scrollTop = el[0].scrollHeight;\r\n  }\r\n}\r\n","<div class=\"reports-bloodlead-report-type\">\r\n    <app-reports-type [reportType]=\"'dhcsbloodleadscreening'\"></app-reports-type>\r\n</div>\r\n<div class=\"reports-bloodlead-container\">\r\n  <div class=\"report-alert\">\r\n    <app-alert-info subjectMessage=\"\" uniqueID=\"reportsdhcsbls\" contentMessage=\"Narrow your search using the known provider name or ID.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"report-search\">\r\n    <app-reports-provider-search (onProviderSearch)=\"onSearch($event)\"></app-reports-provider-search>\r\n  </div>\r\n  <div class=\"report-parameter\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"displayProviders\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\"\r\n    [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"5%\"></th>\r\n          <th width=\"40%\" pSortableColumn=\"name\">Name<div class=\"{{sortClass('name')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"calProviderID\" class=\"header-provider-column\">Provider ID<div class=\"{{sortClass('calProviderID')}}\"></div></th>\r\n          <th width=\"35%\" pSortableColumn=\"groupName\">Medical Group<div class=\"{{sortClass('groupName')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"5%\" class=\"check-column\">\r\n            <p-radioButton name=\"providerid\" [inputId]=\"row.calProviderID\" [value]=\"row\" [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(row)\"></p-radioButton>\r\n          </td>\r\n          <td width=\"40%\">\r\n            <div>{{row.name}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.calProviderID}}</div>\r\n          </td>\r\n          <td width=\"35%\">\r\n            <div>{{row.groupName}}</div>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>\r\n  <div class=\"report-measurementlabel\" *ngIf=\"selectedCalProviderID != ''\">\r\n    <label>Reporting Period for {{displayText}}</label>\r\n  </div>\r\n  <div class=\"report-filelist\" *ngIf=\"selectedCalProviderID != ''\">\r\n    <p-dropdown name=\"providerfiles\" id=\"providerfiles\" [options]=\"fileList\" [(ngModel)]=\"selectedFile\">\r\n    </p-dropdown>\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" [disabled]='!enableBuildReport'>Download</button>\r\n  </div>\r\n</div>\r\n","\r\nimport { Component, OnInit, Provider, Inject } from '@angular/core';\r\nimport { UserProfile } from '@caloptima/authentication';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DropDownObject } from '../../services/models/drop-down-object.interface';\r\nimport { ReportsService } from '../../services/reports.service';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\nimport { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { ReportType } from '../../services/models/reportype';\r\nimport { UiUtility } from '../../utils/ui-utility';\r\n\r\n@Component({\r\n  selector: 'app-reports-pay-for-value-manual',\r\n  templateUrl: './reports-pay-for-value-manual.component.html',\r\n  styleUrls: ['./reports-pay-for-value-manual.component.scss']\r\n})\r\nexport class ReportsPayForValueManualComponent implements OnInit {\r\n\r\n  public userProfile: UserProfile;\r\n  public totalRecords: number;\r\n  public fileList: SelectItem[];\r\n  public selectedFile: DropDownObject;\r\n\r\n  constructor(\r\n    private sessionService: SessionService,\r\n    private reportsService: ReportsService,\r\n    private datePipe: DatePipe,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n      this.selectedFile = null;\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    this.onShowPeriod();\r\n  }\r\n\r\n\r\n\r\n  public onShowPeriod(): void {\r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    this.reportsService.getReportFilesForProvider(\"ALL\", ReportType.P4V_Manual).subscribe(result=>{\r\n      result.forEach(x=>\r\n        {\r\n          this.fileList.push(\r\n            {\r\n              label: this.datePipe.transform(x.yearMonth, 'yyyy'),\r\n              value: x\r\n            });\r\n        });\r\n\r\n      if(this.fileList.length > 0) {\r\n        this.selectedFile = this.fileList[0].value;\r\n        UiUtility.scrollDown(this.document);\r\n      }\r\n    });\r\n  }\r\n\r\n  public get enableBuildReport() : boolean {\r\n\r\n    return this.selectedFile !== null\r\n  }\r\n\r\n  public onBuildReport() : void {\r\n\r\n    var temp:any = this.selectedFile;\r\n    var fileName = temp.fileName;\r\n\r\n    this.reportsService.downloadReportFileForProvider(\"ALL\", fileName, ReportType.P4V_Manual).subscribe(result=>{\r\n      this.saveAsFile(result, fileName + \".pdf\", 'pdf');\r\n    });\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n}\r\n","<div class=\"reports-payforvalue-report-type\">\r\n    <app-reports-type [reportType]=\"'payforvaluemanual'\"></app-reports-type>\r\n</div>\r\n<div class=\"reports-payforvalue-container\">\r\n  <div class=\"report-measurementlabel\">\r\n    <label>Measurement Period</label>\r\n  </div>\r\n  <div class=\"report-filelist\" *ngIf=\"fileList && fileList.length > 0\">\r\n    <p-dropdown name=\"providerfiles\" id=\"providerfiles\" [options]=\"fileList\" [(ngModel)]=\"selectedFile\">\r\n    </p-dropdown>\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" [disabled]='!enableBuildReport'>Download</button>\r\n  </div>\r\n  <div class=\"report-filelist\" *ngIf=\"!fileList || fileList.length == 0\">\r\n    <div>No measurement period files available to download.</div>\r\n  </div>  \r\n</div>\r\n\r\n","\r\nimport { AfterViewInit, Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { UiUtility } from '../../../utils/ui-utility';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { AppConfig } from '@caloptima/portal-foundation';\r\n\r\n@Component({\r\n  selector: 'app-attestation-type',\r\n  templateUrl: './attestation-type.component.html',\r\n  styleUrls: ['./attestation-type.component.scss']\r\n})\r\nexport class AttestationTypeComponent implements OnInit{\r\n  public showProviderTrainingAttestation: boolean = false;\r\n\r\n  private paramsviaState: any = null;\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private route: ActivatedRoute,\r\n    private sessionService: SessionService,\r\n    private reportsService: ReportsService,\r\n    private appConfig: AppConfig\r\n  ) { \r\n    if(this.router.getCurrentNavigation() && this.router.getCurrentNavigation().extras && this.router.getCurrentNavigation().extras.state)\r\n      this.paramsviaState = this.router.getCurrentNavigation().extras.state;\r\n  }\r\n  \r\n  @Input() attestationType: string;\r\n\r\n  ngOnInit() {\r\n    if(this.paramsviaState) {\r\n      this.extractStateParam(this.paramsviaState);\r\n    }    \r\n    else {\r\n      this.route.params.subscribe(value => {\r\n        // If suspenseID get user and assigne to selected user\r\n        this.extractStateParam(value);        \r\n      });  \r\n    }\r\n\r\n    if (this.appConfig.getConfig('EnableProviderAttestation').trim().toLowerCase() === \"false\") {\r\n      this.showProviderTrainingAttestation = false;\r\n      return;\r\n    }\r\n\r\n    if (this.attestationType === 'providertrainingattestation') {\r\n      this.showProviderTrainingAttestation = true;\r\n    }\r\n    else {\r\n      if (this.sessionService.isAdmin && !this.showProviderTrainingAttestation) {\r\n        this.reportsService.accessProviderTrainingAttestation(this.sessionService.currentPermission.providerCollectionID).subscribe(result => {\r\n          this.showProviderTrainingAttestation = result;\r\n        });\r\n      }\r\n      else {\r\n        this.showProviderTrainingAttestation = this.sessionService.isEnterpriseAdmin || this.sessionService.isEnterpriseUser;\r\n      }\r\n    }\r\n  }\r\n\r\n  public onChange() {\r\n    this.router.navigate(['/reports/' + this.attestationType]);\r\n  }\r\n\r\n  public onContinue(){\r\n    \r\n  }\r\n\r\n  private extractStateParam(params) {\r\n    if (params && params.rname) {\r\n      const attestationType = params.rname;\r\n      if (!UiUtility.isNullOrUndefined(attestationType)) {\r\n        this.attestationType = attestationType;\r\n        this.onChange();\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div class=\"report-type-container\">\r\n    <div class=\"report-type-header\">\r\n      <h4>Attestation Type:</h4>\r\n    </div>\r\n    <div class=\"report-type-selection\">\r\n      <select class=\"form-control\" name=\"reportType\" id=\"ddlreportType\" [(ngModel)]=\"attestationType\" (change)=\"onChange()\">\r\n        <option value=\"attestationhome\">Select Attestation Type</option>\r\n        <option value=\"attestationbloodleadscreening\">Blood Lead Screening</option>\r\n        <option *ngIf=\"showProviderTrainingAttestation\" value=\"providertrainingattestation\">Provider Training Attestation</option>\r\n        <option value=\"bhabareferralattestation\">BH ABA P4V Attestation</option>\r\n      </select>\r\n    </div>\r\n  </div>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-attestation-home',\r\n  templateUrl: './attestation-home.component.html',\r\n  styleUrls: ['./attestation-home.component.scss']\r\n})\r\nexport class AttestationHomeComponent implements OnInit {\r\n\r\n  constructor(\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n}\r\n","<div class=\"attestation-type\">\r\n  <app-attestation-type [attestationType]=\"'attestationhome'\"></app-attestation-type>\r\n</div>\r\n<div class=\"ribbon-wrapper\">\r\n  <div class=\"ribbon-header\"></div>\r\n  <div class=\"ribbon\">\r\n      <div class=\"icon-wrapper\">\r\n\r\n          <!-- IMAGE FILE //-->\r\n          <img src=\"../../../assets/images/icon-report.png\">\r\n\r\n          <!-- FONTAWESOME //-->\r\n          <!-- i class=\"fa fa-file-alt icon-treatment\"></i //-->\r\n\r\n      </div>\r\n      <div class=\"landing-title\">\r\nLet's take a look at that attestation.\r\n      </div>\r\n      <div class=\"landing-verbiage\">\r\nSelect from the many report attestation types provided via the select menu above.\r\n      </div>\r\n  </div>\r\n</div>\r\n","export enum AttestationStatus {\r\n    NotAvailable = 0,\r\n    Attested = 1,\r\n    Pending = 2,\r\n    PastDue = 3\r\n}\r\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\nimport { CollectionService } from '../../../../services/collection.service';\r\nimport { CollectionListItem } from '../../../../services/models/collection-list-item';\r\nimport { Messages } from '../../../../app.messages';\r\nimport { isNgContent } from '@angular/compiler';\r\n\r\nconst ATTESTATION_VERSION: string = \"1.0\"\r\n\r\n@Component({\r\n  selector: 'attestation-dialog',\r\n  templateUrl: './attestation-dialog.component.html',\r\n  styleUrls: ['./attestation-dialog.component.scss']\r\n})\r\n\r\nexport class AttestationDialogComponent implements OnInit {\r\n  @Input() fullname: string;\r\n  @Output() submitAttestation = new EventEmitter();\r\n  @Output() cancelAttestation = new EventEmitter();\r\n  public iagree:boolean = false;  \r\n  \r\n\r\n  ngOnInit() {\r\n\r\n  }\r\n\r\n  public onSubmit() {\r\n    this.submitAttestation.emit(ATTESTATION_VERSION);\r\n  }\r\n\r\n  public onCancel() {\r\n    this.cancelAttestation.emit();\r\n  }\r\n\r\n  public get display(): boolean {\r\n    return true;\r\n  }\r\n\r\n  public set display(value: boolean) {\r\n    this.onCancel();\r\n  }\r\n}\r\n","<p-dialog header=\"Delegate Attestation\" [(visible)]=\"display\" [modal]=\"true\" width=\"600\">\r\n    <div class=\"bls-modal-wrapper\">\r\n\r\n        <div class=\"bls-modal-container\">\r\n    \r\n            <!-- <div class=\"bls-modal-title\">\r\n            Delegate Attestation\r\n            </div> -->\r\n    \r\n            <div class=\"bls-modal-intro\">\r\n            The DHCS release All Plan Letter (APL) 20-016 (Revised): Blood Lead Screening of Young Children.  This APL requires providers to screen children in Medicaid for elevated blood lead levels as part of required prevention services offered through Early and Periodic Screening, Diagnostic, and Treatment (EPSDT) program.\r\n            </div>\r\n    \r\n            <div class=\"bls-modal-table-wrapper\">\r\n            <table border=\"0\" cellspacing=\"0\" width=\"100%\" class=\"bls-modal-table-data\">\r\n            <tr><td>\r\n                    By agreeing to the terms below, I am attesting that I:\r\n            </td></tr>\r\n            <tr><td>\r\n                    <b>1) Received and reviewed the CalOptima Health Lead Screening Performance quarterly report,</b> and\r\n            </td></tr>\r\n            <tr><td>\r\n                    <b>2) Will comply with APL 20-016 to provide oral or written anticipatory guidance</b> to the parent(s) or guardian(s) of a child member that at a minimum includes information that children are at resk for lead poisoning and can be harmed by exposure to lead.\r\n            </td></tr>\r\n            <tr><td>\r\n                    <b>3) Will comply with APL 20-016 reporting requirements</b> for submitting claims and encounters using standard formats and proper CPT coding.\r\n            </td></tr>\r\n            <tr><td>\r\n                    <b>4) Will document reason(s) for not performing the blood lead screening</b> in the child member's medical record.  In cases where screening consent has been withheld, a signed statement of voluntary refusal must be obtained and documented in the child member's medical record.  Records of voluntary refusal must be provided to CalOptima Health upon request.\r\n            </td></tr>\r\n            <tr><td>\r\n                    <b>5) Will follow California Lead Poisoning Prevention Branch minimum standards of care</b> for conducting blood lead screenings, interpreting blood lead levels, and determining appropriate follow-up.\r\n            </td></tr>\r\n            </table>\r\n            </div>\r\n    \r\n            <div class=\"bls-modal-section\">\r\n                <div class=\"bls-modal-sig-box\">\r\n                    <div class=\"bls-modal-sig-label\">\r\n                    Your Full Name\r\n                    </div>\r\n                    <div class=\"bls-modal-sig-wrapper\">\r\n                        <div class=\"bls-modal-sig\">\r\n                        <input class=\"bls-modal-sig-input\" type=\"text\" placeholder=\"{{fullname}}\" readonly>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n    \r\n            <div class=\"bls-modal-section\">\r\n            <label>\r\n                <div class=\"bls-modal-check-wrapper\">\r\n                    <div class=\"bls-modal-check-left\">\r\n                        <input type=\"checkbox\" class=\"bls-modal-checkbox\" [(ngModel)]=\"iagree\">\r\n                    </div>\r\n                    <div class=\"bls-modal-agree\">\r\n                        I agree to the terms of this attestation\r\n                    </div>\r\n                </div>\r\n            </label>\r\n            </div>\r\n    \r\n            <div class=\"bls-modal-section\">\r\n                <div class=\"bls-modal-button-wrapper\">\r\n                    <button type=\"button\" class=\"btn btn-primary btn-cancel\" (click)=\"onCancel()\">\r\n                        Maybe Later\r\n                    </button>\r\n                    <button id=\"btnSubmit\" type=\"button\" class=\"btn btn-primary btn-rename\" (click)=\"onSubmit()\" [disabled]='!iagree'>\r\n                        Submit\r\n                    </button>  \r\n                </div>\r\n            </div>\r\n    \r\n            <div class=\"bls-modal-section\">\r\n            &nbsp;\r\n            </div>\r\n    \r\n        </div>\r\n    \r\n        <div class=\"bls-modal-section\">\r\n        &nbsp;\r\n        </div>\r\n    \r\n    </div>\r\n</p-dialog>\r\n","\r\nimport { Component, OnInit, Provider, Inject } from '@angular/core';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DropDownObject } from '../../../services/models/drop-down-object.interface';\r\nimport { ProviderDetail, ProviderDetailWithAttestation } from '../../../services/models/provider-detail';\r\nimport { ReportsService } from '../../../services/reports.service';\r\nimport { SessionService } from '../../../services/session.service';\r\nimport { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { ReportType } from '../../../services/models/reportype';\r\nimport { AuthenticationService, UserProfile } from '@caloptima/authentication';\r\nimport { UiUtility } from '../../../utils/ui-utility';\r\nimport { AttestationDetail } from '../../../services/models/attestation-detail';\r\nimport { AttestationStatus } from '../../../services/models/attestationstatus';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { PortalConfig } from '../../../portal-config';\r\n\r\n@Component({\r\n  selector: 'app-attestation-bloodlead-screening',\r\n  templateUrl: './attestation-bloodlead-screening.component.html',\r\n  styleUrls: ['./attestation-bloodlead-screening.component.scss']\r\n})\r\n\r\nexport class AttestationBloodleadScreeningComponent implements OnInit {\r\n\r\n  public userProfile: UserProfile;\r\n  public providers:ProviderDetailWithAttestation[] = [];\r\n  public displayProviders:ProviderDetailWithAttestation[] = [];\r\n  public selectedProviderID: string;\r\n  public selectedProvider: ProviderDetailWithAttestation;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public totalRecords: number;\r\n  public attestationList: AttestationDetail[];\r\n  public searchProviderId: string;\r\n  public searchProviderName: string;\r\n  public showAttestation: boolean;\r\n  public anyAttestationAvailableToSelect: boolean;\r\n  private overAllCheckUnCheckValue: boolean;\r\n\r\n  constructor(\r\n    private sessionService: SessionService,\r\n    private reportsService: ReportsService,\r\n    private outhService: OAuthService,\r\n    private datePipe: DatePipe,\r\n    private authenticationService: AuthenticationService,\r\n    private portalConfig: PortalConfig,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n      this.sortColumn = 'name';\r\n      this.sortAscending = true;\r\n      this.searchProviderId = '';\r\n      this.searchProviderName = '';\r\n      this.selectedProviderID = '';\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    var userEmail: string  = \"\";\r\n    const claims = this.outhService.getIdentityClaims();\r\n      if (claims) {\r\n        userEmail = claims['sub'];\r\n      }\r\n\r\n    this.authenticationService.findUsers(null, userEmail, this.portalConfig.ClientId,1, 1).subscribe(users=>{\r\n      if(users != null && users.length == 1) {\r\n        this.userProfile = users[0];\r\n      }\r\n\r\n      this.selectedProvider = null;\r\n      this.loadProviders();\r\n    });\r\n  }\r\n\r\n  public loadProviders():void {\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      //  Nothing. \r\n    }\r\n    else {\r\n      this.reportsService.getProvidersWithAttestationForReports(this.sessionService.currentPermission.providerCollectionID, this.sessionService.currentPermission.collectionName, ReportType.BLS).subscribe(result=>{\r\n\r\n        this.providers = result.filter(x=>x.attestationStatus != AttestationStatus.NotAvailable);\r\n\r\n        this.totalRecords = this.providers.length;\r\n\r\n        if(this.providers)\r\n          this.displayProviders = this.providers.slice();\r\n\r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n\r\n        this.onProviderSelected(this.selectedProvider);\r\n      });\r\n    }      \r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetailWithAttestation): void {\r\n    if(!provider) return;\r\n\r\n    this.selectedProviderID = provider.calProviderID;\r\n    this.selectedProvider = provider;\r\n\r\n    this.attestationList = [];\r\n    this.anyAttestationAvailableToSelect = false;\r\n    this.overAllCheckUnCheckValue = false;\r\n\r\n    this.reportsService.getAttestationListForProvider(this.selectedProviderID, ReportType.BLS).subscribe(result=>{\r\n\r\n      result.forEach(item => {\r\n        item.reportPeriodDisplay = this.getReportPeriodDisplay(item.reportPeriod);\r\n        item.measurementPeriodDisplay = this.getMeasurementPeriodDisplay(item.reportPeriod);\r\n\r\n        if(item.attestationStatus == AttestationStatus.PastDue || item.attestationStatus == AttestationStatus.Pending)\r\n          this.anyAttestationAvailableToSelect = true;\r\n      });\r\n\r\n      this.attestationList = result;\r\n    });\r\n  }\r\n\r\n  public get displayText(): string {\r\n    if(this.selectedProviderID) {\r\n\r\n      let providerDetail: ProviderDetailWithAttestation = this.providers.find(x=> x.calProviderID === this.selectedProviderID);\r\n\r\n      if(providerDetail) {\r\n        let s = providerDetail.name;\r\n        return s;\r\n      }\r\n      else {\r\n        return \"\"\r\n      }\r\n    }\r\n    else {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  public onSearch(search) : void {\r\n    this.selectedProviderID = '';\r\n    this.attestationList = [];\r\n\r\n    if (search && (search.providerName || search.providerId)) {\r\n\r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n          this.reportsService.searchProvidersWithAttestationForReports(search.providerId, search.providerName, search.providerTin, ReportType.BLS).subscribe(result => {\r\n\r\n            this.providers = result.filter(x=>x.attestationStatus != AttestationStatus.NotAvailable);\r\n\r\n            if(this.providers)\r\n              this.displayProviders = this.providers.slice();\r\n          });\r\n      }\r\n      else {\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName) && !UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0 || p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n      }\r\n    }\r\n    else {\r\n      this.displayProviders = this.providers.slice();\r\n    }\r\n  }  \r\n\r\n  public attestationStatusDisplay(attestationStatus:AttestationStatus): string {\r\n    if(attestationStatus === AttestationStatus.Attested)\r\n        return \"Up to date\";\r\n    else if(attestationStatus == AttestationStatus.Pending)\r\n        return \"Pending\";\r\n    else \r\n        return \"Past Due\";\r\n  }\r\n\r\n  private getReportPeriodDisplay(reportPeriod:string): string {\r\n\r\n    var quarter: string = reportPeriod.substring(0,2);\r\n    var year: string = reportPeriod.substring(2,6);\r\n    var month: string = reportPeriod.substring(6,8);\r\n\r\n    return month + ' - ' + year;\r\n  }\r\n\r\n  private getMeasurementPeriodDisplay(reportPeriod:string): string {\r\n\r\n    var quarter: string = reportPeriod.substring(0,2);\r\n    var year: string = reportPeriod.substring(2,6);\r\n    var month: string = reportPeriod.substring(6,8);\r\n    \r\n    var numMonth = Number(month);\r\n    var numYear = Number(year);\r\n\r\n    if(numMonth == 1) {\r\n      numMonth = 12\r\n      numYear = numYear - 1;\r\n    }\r\n    else {\r\n      numMonth = numMonth - 1;\r\n    }\r\n    \r\n    month = numMonth.toString();\r\n    year = numYear.toString();\r\n\r\n    if(month.length == 1)\r\n      month = \"0\" + month;\r\n\r\n    return month + ' - ' + year;\r\n  }\r\n\r\n  public onAttest(): void {\r\n    this.showAttestation = true;\r\n  }\r\n\r\n  public get enableAttest() : boolean {\r\n    return (this.attestationList && this.attestationList.find(x=>x.hasChecked) != null);\r\n  }\r\n\r\n  public onSubmitAttestation(event) {\r\n    var list:AttestationDetail[] = this.attestationList.filter(x=>x.hasChecked);\r\n    list.forEach(attestationDetail => {\r\n      attestationDetail.attestationName  = this.userProfile.userID;\r\n      attestationDetail.attestationEmail = this.userProfile.email;\r\n      attestationDetail.attestationPhone = this.userProfile.mobilePhone;\r\n      attestationDetail.attestationVersion = event;\r\n    });\r\n\r\n    this.reportsService.ApplyAttestation(list).subscribe(result=> {\r\n      this.loadProviders();\r\n      this.showAttestation = false;\r\n    });\r\n  }\r\n\r\n  public onCancelAttestation() {\r\n    this.showAttestation = false;\r\n  }\r\n\r\n  public get userFullName() {\r\n    return this.userProfile.firstName + ' ' + this.userProfile.lastName;\r\n  }\r\n\r\n  public get overAllCheckUnCheck() : boolean {\r\n    return this.overAllCheckUnCheckValue;\r\n  }\r\n\r\n  public set overAllCheckUnCheck(value:boolean) {\r\n\r\n    if(this.attestationList) {\r\n      this.attestationList.forEach(item=>{\r\n        if(item.attestationStatus == AttestationStatus.Pending || item.attestationStatus == AttestationStatus.PastDue) \r\n          item.hasChecked = value;\r\n      });\r\n    }\r\n\r\n    this.overAllCheckUnCheckValue = value;\r\n  }\r\n  \r\n  public get visibleAttest() : boolean {\r\n    return !(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser);\r\n  }\r\n}\r\n","<div class=\"reports-bloodlead-report-type\">\r\n    <app-attestation-type [attestationType]=\"'attestationbloodleadscreening'\"></app-attestation-type>\r\n</div>\r\n<div class=\"reports-bloodlead-container\">\r\n  <div class=\"report-alert\">\r\n    <app-alert-info  uniqueID=\"attestationbloodleadscreening\" subjectMessage=\"\" contentMessage=\"Narrow your search using the known provider name or ID.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"report-search\">\r\n    <app-reports-provider-search (onProviderSearch)=\"onSearch($event)\"></app-reports-provider-search>\r\n  </div>\r\n  <div class=\"report-parameter\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"displayProviders\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"5%\"></th>\r\n          <th width=\"35%\" pSortableColumn=\"name\">Name<div class=\"{{sortClass('name')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"calProviderID\" class=\"header-provider-column\">Provider ID<div class=\"{{sortClass('calProviderID')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"taxId\" class=\"header-provider-column\">TIN<div class=\"{{sortClass('taxId')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"attestationStatus\">Attestation Required<div class=\"{{sortClass('attestationStatus')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"5%\" class=\"check-column\">\r\n            <p-radioButton name='providerid' id='{{row.calProviderID}}' value='{{row.calProviderID}}' [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(row)\"></p-radioButton>\r\n          </td>\r\n          <td width=\"35%\">\r\n            <div>{{row.name}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.calProviderID}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.taxId}}</div>\r\n          </td>\r\n          <td width=\"20%\">\r\n            <div *ngIf=\"row.attestationStatus == 1\" style=\"color:green\">{{attestationStatusDisplay(row.attestationStatus)}}</div>\r\n            <div *ngIf=\"row.attestationStatus == 2\" style=\"color:orange\">{{attestationStatusDisplay(row.attestationStatus)}}</div>            \r\n            <div *ngIf=\"row.attestationStatus == 3\" style=\"color:red\">{{attestationStatusDisplay(row.attestationStatus)}}</div>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>\r\n  <div class=\"report-measurementlabel\" *ngIf=\"selectedProviderID != ''\">\r\n    <label>Measurement Period for {{displayText}}</label>\r\n  </div>\r\n  <div class=\"report-filelist\" *ngIf=\"selectedProviderID != ''\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"attestationList\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"5%\">\r\n            <p-checkbox *ngIf=\"anyAttestationAvailableToSelect && visibleAttest\" name='selectunselectall' [(ngModel)]=\"overAllCheckUnCheck\" title=\"\" binary=\"true\"></p-checkbox>\r\n          </th>\r\n          <th width=\"30%\" pSortableColumn=\"measurementPeriodDisplay\">Measurement Period<div class=\"{{sortClass('measurementPeriodDisplay')}}\"></div></th>\r\n          <th width=\"30%\" pSortableColumn=\"reportPeriod\">Reporting Period<div class=\"{{sortClass('reportPeriod')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"attestationStatus\" class=\"header-provider-column\">Status<div class=\"{{sortClass('attestationStatus')}}\"></div></th>\r\n          <th width=\"15%\" pSortableColumn=\"attestationDueDate\">Due Date<div class=\"{{sortClass('attestationDueDate')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"5%\" class=\"check-column\">\r\n            <p-checkbox *ngIf=\"row.attestationStatus !== 1 && visibleAttest\" name='{{row.attestationId}}' [(ngModel)]=\"row.hasChecked\" title=\"\" binary=\"true\"></p-checkbox>\r\n          </td>\r\n          <td width=\"30%\">\r\n            <div>{{row.measurementPeriodDisplay}}</div>\r\n          </td>\r\n          <td width=\"30%\">\r\n            <div>{{row.reportPeriodDisplay}}</div>\r\n          </td>          \r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div *ngIf=\"row.attestationStatus == 1\" style=\"color:green\">{{attestationStatusDisplay(row.attestationStatus)}}</div>\r\n            <div *ngIf=\"row.attestationStatus == 2\" style=\"color:orange\">{{attestationStatusDisplay(row.attestationStatus)}}</div>            \r\n            <div *ngIf=\"row.attestationStatus == 3\" style=\"color:red\">{{attestationStatusDisplay(row.attestationStatus)}}</div>\r\n          </td>\r\n          <td width=\"15%\">\r\n            <div>{{row.attestationDueDate | date : 'MM-dd-yyyy'}}</div>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n    \r\n  </div>\r\n  <div class=\"report-alert1\" *ngIf=\"visibleAttest && anyAttestationAvailableToSelect\">\r\n    <app-alert-info uniqueID=\"alert1\" subjectMessage=\"\" contentMessage=\"Did you know? Check multiple boxes to complete BLS attestations at once.\"></app-alert-info>\r\n  </div>  \r\n  <div class=\"report-button\" *ngIf=\"visibleAttest\">\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onAttest()\" [disabled]='!enableAttest'>Attest</button>    \r\n  </div>\r\n</div>\r\n<attestation-dialog #attestation *ngIf=\"showAttestation\" [fullname]='userFullName' (submitAttestation)=\"onSubmitAttestation($event)\" (cancelAttestation)=\"onCancelAttestation()\"></attestation-dialog>","\r\nimport { Component, OnInit, Provider, Inject } from '@angular/core';\r\nimport { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { UserProfile } from '@caloptima/authentication';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DropDownObject } from '../../services/models/drop-down-object.interface';\r\nimport { ReportsService } from '../../services/reports.service';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\nimport { ReportType } from '../../services/models/reportype';\r\nimport { UiUtility } from '../../utils/ui-utility';\r\nimport { ProviderTaxDetails } from '../../services/models/provider-tax-details';\r\n\r\n@Component({\r\n  selector: 'app-bh-reports-pay-for-value',\r\n  templateUrl: './reports-bh-pay-for-value.component.html',\r\n  styleUrls: ['./reports-bh-pay-for-value.component.scss']\r\n})\r\nexport class ReportsBHPayForValueComponent implements OnInit {\r\n\r\n  public userProfile: UserProfile;\r\n  public taxes:ProviderTaxDetails[] = [];\r\n  public displaytaxes:ProviderTaxDetails[] = [];\r\n  public selectedtaxid: string;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public totalRecords: number;\r\n  public fileList: SelectItem[];\r\n  public selectedFile: DropDownObject;\r\n  public searchTaxId: string;\r\n  public searchTaxName: string;\r\n\r\n  constructor(\r\n    private sessionService: SessionService,\r\n    private reportsService: ReportsService,\r\n    private datePipe: DatePipe,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n      this.sortColumn = 'taxname';\r\n      this.sortAscending = true;\r\n      this.selectedFile = null;\r\n      this.searchTaxId = '';\r\n      this.searchTaxName = '';\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      //  Nothing. \r\n    }\r\n    else {\r\n      this.reportsService.getTaxesForReports(this.sessionService.currentPermission.providerCollectionID, ReportType.BHP4V).subscribe(result=>{\r\n\r\n        this.taxes = result;\r\n  \r\n        this.totalRecords = this.taxes.length;\r\n  \r\n        if(this.taxes)\r\n          this.displaytaxes = this.taxes.slice();\r\n  \r\n        this.fixDisplayTaxes();\r\n\r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public fixDisplayTaxes(): void {\r\n    if(this.displaytaxes.length == 0)\r\n    {\r\n      var norecordfound = new ProviderTaxDetails();\r\n      norecordfound.providerTaxId = \"\";\r\n      norecordfound.providerTaxName = \"No record found.\";\r\n\r\n      this.displaytaxes.push(norecordfound);\r\n\r\n      this.selectedtaxid = \"\";\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.displaytaxes.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onTaxSelected(provider: ProviderTaxDetails): void {\r\n    this.selectedtaxid = provider.providerTaxId;\r\n\r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    this.reportsService.getReportFilesForTax(this.selectedtaxid, ReportType.BHP4V).subscribe(result=>{\r\n      result.forEach(x=>\r\n        {\r\n          this.fileList.push(\r\n            {\r\n              label: this.datePipe.transform(x.yearMonth, 'yyyy-MM'),\r\n              value: x\r\n            });\r\n        });\r\n\r\n      if(this.fileList.length > 0) {\r\n        this.selectedFile = this.fileList[0].value;\r\n        UiUtility.scrollDown(this.document);\r\n      }\r\n    });\r\n  }\r\n\r\n  public get displayText(): string {\r\n    if(this.searchTaxId) {\r\n\r\n      let taxdetails: ProviderTaxDetails = this.taxes.find(x=> x.providerTaxId === this.searchTaxId);\r\n\r\n      if(taxdetails) {\r\n        let s = taxdetails.providerTaxName;\r\n        return s;\r\n      }\r\n      else {\r\n        return \"\"\r\n      }\r\n    }\r\n    else {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  public get enableBuildReport() : boolean {\r\n\r\n    return this.selectedtaxid !== '' && this.selectedFile !== null\r\n  }\r\n\r\n  public onBuildReport() : void {\r\n\r\n    var temp:any = this.selectedFile;\r\n    var fileName = temp.fileName;\r\n\r\n    this.reportsService.downloadReportFileForProvider(this.searchTaxId, fileName, ReportType.BHP4V).subscribe(result=>{\r\n      this.saveAsFile(result, fileName + \".xlsx\", 'xlsx');\r\n    });\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public onSearch(search) : void {\r\n    this.searchTaxId = '';\r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n    this.displaytaxes = [];\r\n\r\n    if(!search.providerId)\r\n      search.providerId = '';\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      if(search.providerId == ''){\r\n        this.taxes = [];\r\n        this.displaytaxes = [];\r\n        this.fixDisplayTaxes();\r\n      } \r\n      else {\r\n        this.reportsService.searchTaxForReports(ReportType.BHP4V, \"\", search.providerId).subscribe(result => {\r\n          this.taxes = result;\r\n          this.displaytaxes = this.taxes.slice();\r\n          this.fixDisplayTaxes();\r\n          });\r\n      } \r\n    }\r\n    else {\r\n      if(search.providerId == '') {\r\n        this.displaytaxes = this.taxes.slice();\r\n      }\r\n      else {\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displaytaxes = this.taxes\r\n            .filter(p => p.providerTaxId.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n      }\r\n\r\n      this.fixDisplayTaxes();\r\n    }\r\n  }\r\n}\r\n","<div class=\"reports-payforvalue-report-type\">\r\n    <app-reports-type [reportType]=\"'bhpayforvalue'\"></app-reports-type>\r\n</div>\r\n<div class=\"reports-payforvalue-container\">\r\n  <div class=\"report-alert\">\r\n    <app-alert-info subjectMessage=\" \" uniqueID=\"reportsbhpayforvalue\" contentMessage=\"Narrow your search using the known TIN.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"report-search\">\r\n    <app-reports-tin-search [dialogType]=\"2\" (onProviderSearch)=\"onSearch($event)\"></app-reports-tin-search>\r\n  </div>\r\n  <div class=\"report-parameter\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"displaytaxes\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\"\r\n    [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"10%\"></th>\r\n          <th width=\"45%\" pSortableColumn=\"providerTaxName\">Name<div class=\"{{sortClass('providerTaxName')}}\"></div></th>\r\n          <th width=\"45%\" pSortableColumn=\"providerTaxId\" class=\"header-provider-column\">TIN<div class=\"{{sortClass('providerTaxId')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"10%\" class=\"check-column\">\r\n            <p-radioButton *ngIf='row.providerTaxId != \"\"' name=\"taxid\" [inputId]=\"row\" [value]=\"row.providerTaxId\" [(ngModel)]=\"selectedtaxid\" (click)=\"onTaxSelected(row)\"></p-radioButton>\r\n          </td>\r\n          <td width=\"45%\">\r\n            <div>{{row.providerTaxName}}</div>\r\n          </td>\r\n          <td width=\"45%\" class=\"provider-column\">\r\n            <div>{{row.providerTaxId}}</div>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>\r\n  <div class=\"report-measurementlabel\" *ngIf=\"selectedtaxid && selectedtaxid != ''\">\r\n    <label>Measurement Period for {{displayText}}</label>\r\n  </div>\r\n  <div class=\"report-filelist\" *ngIf=\"selectedtaxid && selectedtaxid != '' && fileList && fileList.length > 0\">\r\n    <p-dropdown name=\"taxfiles\" id=\"taxfiles\" [options]=\"fileList\" [(ngModel)]=\"selectedFile\">\r\n    </p-dropdown>\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" [disabled]='!enableBuildReport'>Download</button>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-reports-tin-search',\r\n  templateUrl: './reports-tin-search.component.html',\r\n  styleUrls: ['./reports-tin-search.component.scss']\r\n})\r\nexport class ReportsTinSearchComponent implements OnInit {\r\n  public providerId: string;\r\n  @Input() dialogType: number;\r\n  @Output() onProviderSearch: EventEmitter<any> = new EventEmitter(null);\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  public findProviders() {\r\n    this.onProviderSearch.emit({ providerId: this.providerId });\r\n  }\r\n\r\n  public resetSearchFilters() {\r\n    this.providerId = '';\r\n  }\r\n\r\n  public get nameLabel(): string {\r\n    if(this.dialogType && this.dialogType == 2)\r\n      return \"Tax Name or Office Name\";\r\n    else\r\n      return \"Provider Name\";\r\n  }\r\n  public get idLabel(): string {\r\n    if(this.dialogType && this.dialogType == 2)\r\n      return \"TIN\";\r\n    else\r\n      return \"Provider ID\";\r\n  }  \r\n  public get requiredName() : boolean {\r\n    if(this.dialogType == 2)\r\n      return false;\r\n    else\r\n      return true;\r\n  }\r\n}\r\n","<form class=\"reports-provider-search-container\" #providerLookupForm=\"ngForm\" (ngSubmit)=\"findProviders()\"\r\n  autocomplete=\"off\">\r\n  <div class=\"title-provider-id\">\r\n    <label for=\"provoiderId\">{{idLabel}}</label>\r\n  </div>\r\n  <div class=\"filter-provider-id\">\r\n    <input class=\"form-control\" type=\"text\"required=\"false\"  name=\"txtProviderId\" id=\"txtProviderId\" [(ngModel)]=\"providerId\"\r\n    maxlength=\"12\" pattern=\"^\\w{4,12}$\">\r\n  </div>\r\n  <div class=\"search-provider-button\">\r\n    <button id=\"btnSearchForProvider\" class=\"btn-provider btn btn-primary\" type=\"submit\">\r\n      Search for Provider\r\n    </button>\r\n  </div>\r\n</form>\r\n","import { Component, OnInit, AfterViewInit, Provider, Input, ViewChild, Inject } from '@angular/core';\r\nimport { AuthenticationService, UserProfile } from '@caloptima/authentication';\r\nimport { ReportsService } from '../../../services/reports.service';\r\nimport { SessionService } from '../../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\nimport { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { ReportType } from '../../../services/models/reportype';\r\nimport { ReportsMemberSearchComponent } from '../../../app-components/reports-member-search/reports-member-search.component';\r\nimport { UiUtility } from '../../../utils/ui-utility';\r\nimport { ReportMemberDetails } from '../../../services/models/reportmemberdetails';\r\nimport { MemberAWPStatus } from '../../../services/models/awp-detail';\r\nimport { WellnessDetails } from '../../../services/models/wellness-details';\r\nimport { BusyService } from '../../../services/busy.service';\r\nimport { ThisReceiver } from '@angular/compiler';\r\nimport { ProviderDetail } from 'src/app/services/models/provider-detail';\r\nimport { forkJoin } from 'rxjs';\r\nimport { CollectionService } from 'src/app/services/collection.service';\r\nimport { ReportsMemberEligibilityRosterComponent } from '../../reports-member-eligibility-roster/reports-member-eligibility-roster.component';\r\nimport { ProviderDetail2 } from 'src/app/services/models/provider-detail2';\r\n\r\n\r\n@Component({\r\n  selector: 'app-awp-member',\r\n  templateUrl: './awp-member.component.html',\r\n  styleUrls: ['./awp-member.component.scss']\r\n})\r\nexport class AWPMemberComponent implements OnInit {\r\n\r\n  public userProfile: UserProfile;\r\n  public members:ReportMemberDetails[] = [];\r\n  public displayMembers:ReportMemberDetails[] = [];\r\n  public selectedMember: ReportMemberDetails;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public totalRecords: number;\r\n  public awpList: MemberAWPStatus[];\r\n  public searchCin: string;\r\n  public searchName: string;\r\n  public collectionId: number;\r\n  public selectedProvider: ProviderDetail;\r\n  public fromProviderTab: boolean;\r\n  public showAttachment: boolean;\r\n  public userFullName: string;\r\n  public wellnessDetails: WellnessDetails;\r\n  public selectedMemberAWPStatus:MemberAWPStatus;\r\n  public lastSelectedMemberCin: string;\r\n  public lastMemberSearch: any;\r\n  public selectedCin: string;\r\n  public first: number =0;\r\n    \r\n\r\n  @ViewChild('memberSearch') memberSearch: ReportsMemberSearchComponent;\r\n\r\n  constructor(\r\n    private reportsService: ReportsService,\r\n    private sessionService: SessionService,\r\n    private collectionService: CollectionService,\r\n    private datePipe: DatePipe,\r\n    private busyService: BusyService,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.collectionId = this.sessionService.currentPermission.providerCollectionID;\r\n    this.userFullName = '';\r\n    this.fromProviderTab = false;\r\n\r\n    this.initialize();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n\r\n  }\r\n\r\n  public setProviderId(providerDetail: ProviderDetail) {\r\n    this.awpList = [];\r\n    this.selectedProvider = providerDetail;\r\n    this.lastMemberSearch = null;\r\n    this.lastSelectedMemberCin = null;\r\n    this.fromProviderTab = (providerDetail != null);\r\n    this.initialize(true);\r\n  }\r\n\r\n  public initialize(resetComponent = false) {\r\n    this.sortColumn = 'memberName';\r\n    this.sortAscending = true;\r\n    this.selectedCin = '';\r\n    this.searchCin = '';\r\n    this.searchName = '';\r\n    this.selectedMember = null;\r\n    this.displayMembers = [];\r\n    \r\n    if (resetComponent) {\r\n      this.memberSearch.resetSearchFilters();\r\n    }\r\n\r\n    if(this.selectedProvider) {\r\n\r\n      this.reportsService.getMembersForReportsAWP2(this.collectionId, this.selectedProvider.calProviderID, this.selectedProvider.taxId, ReportType.AWV).subscribe(result=>{\r\n\r\n        this.members = result;\r\n\r\n        this.totalRecords = this.members.length;\r\n\r\n        if(this.members)\r\n          this.displayMembers = this.members.slice();\r\n\r\n        let param: any = {\r\n          \"field\": \"memberName\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n\r\n        if(this.lastSelectedMemberCin) {\r\n          let lastselectedMember = this.displayMembers.find(x=>x.cin == this.lastSelectedMemberCin);\r\n          this.lastSelectedMemberCin= null;\r\n          if(lastselectedMember)\r\n            this.onMemberSelected(lastselectedMember);          \r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {    \r\n    this.displayMembers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onMemberSelected(member: ReportMemberDetails): void {\r\n    this.selectedMember = member;    \r\n    this.awpList = [];\r\n    \r\n    this.reportsService.getReportFilesForMemberAWP2(this.selectedMember.providerId, this.selectedMember.cin,this.selectedMember.grgr_ck,this.selectedMember.providerTaxId, ReportType.AWV).subscribe(result=>{\r\n\r\n      if(!this.selectedProvider) {\r\n        this.collectionService.GetProvider2(this.selectedMember.providerId).subscribe(prov=>{\r\n\r\n          this.selectedProvider = new ProviderDetail();\r\n          this.selectedProvider.providerID = prov.providerID.toString();\r\n          this.selectedProvider.calProviderID = prov.calProviderId;\r\n          this.selectedProvider.taxId = prov.providerTaxId;\r\n          this.selectedProvider.name = prov.providerName;\r\n\r\n          if (!this.selectedMember.providerTaxId) \r\n            this.selectedMember.providerTaxId = prov.providerTaxId;\r\n\r\n          this.awpList = result;      \r\n        });\r\n      }\r\n      else {\r\n        if (!this.selectedMember.providerTaxId)\r\n          this.selectedMember.providerTaxId = this.selectedProvider.taxId;\r\n\r\n        this.awpList = result;\r\n      }\r\n    });\r\n  }\r\n\r\n  public get displayText(): string {\r\n    if(this.selectedMember && this.selectedMember.cin) {\r\n\r\n      let memeberDetail: ReportMemberDetails = this.members.find(x=> x.cin === this.selectedMember.cin);\r\n\r\n      if(memeberDetail) {\r\n        let s = memeberDetail.memberName;\r\n        return s;\r\n      }\r\n      else {\r\n        return \"\"\r\n      }\r\n    }\r\n    else {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  public get enableBuildReport() : boolean {\r\n\r\n    return this.selectedMember != null;\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public onMemberSearch(search) : void {\r\n\r\n    this.lastMemberSearch = search;\r\n    this.selectedMember = null;\r\n    this.awpList = [];\r\n\r\n    if(this.fromProviderTab) {\r\n\r\n      if(search.memberId === '') {\r\n        this.displayMembers = this.members.slice();\r\n        this.first = 0;\r\n        this.selectedCin = '';\r\n\r\n        let param: any = {\r\n          \"field\": \"memberName\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)        \r\n      }\r\n      else {\r\n\r\n        this.displayMembers.splice(0);\r\n\r\n        var items = this.members.find(x=>\r\n          x.cin == search.memberId || \r\n          x.medsId == search.memberId || \r\n          x.mbi == search.memberId\r\n        );\r\n\r\n        this.displayMembers.push(items);\r\n        this.selectedCin = '';\r\n        this.first = 0;\r\n      }      \r\n      \r\n    }\r\n    else {\r\n\r\n      this.selectedProvider = null;\r\n\r\n      if(search.memberId === '')\r\n      {\r\n          //  Do nothing.\r\n      }\r\n      else {\r\n        this.reportsService.searchMembersForReportsAWP2(ReportType.AWV, this.collectionId, search.memberName, search.memberId).subscribe(result=>{\r\n\r\n          this.members = result;  \r\n          this.totalRecords = this.members.length;\r\n  \r\n          if(this.members)\r\n            this.displayMembers = this.members.slice();\r\n  \r\n            let param: any = {\r\n              \"field\": \"memberName\",\r\n              \"order\": 1\r\n            }\r\n            this.onSort(param)\r\n  \r\n            if(this.lastSelectedMemberCin) {\r\n              let lastselectedMember = this.displayMembers.find(x=>x.cin == this.lastSelectedMemberCin);\r\n              this.lastSelectedMemberCin = null;\r\n              if(lastselectedMember)\r\n                this.onMemberSelected(lastselectedMember);          \r\n            }\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  public download(awpDetail:MemberAWPStatus) : void {\r\n    if(this.isNewWellness) {\r\n      this.reportsService.downloadUnansweredAWPDetailPdf(awpDetail.documentId).subscribe(result=>{\r\n\r\n        var fileName: string = \"AWP_PROV_\" + this.selectedProvider.taxId + \"_\" + \r\n        awpDetail.period.toString() + \"_\" +\r\n        this.selectedMember.providerId + \"_\" +\r\n        this.selectedMember.cin;\r\n\r\n        this.saveAsFile(result, fileName + \".pdf\", 'pdf');\r\n      });\r\n    }\r\n    else {\r\n      this.reportsService.downloadReportFileForMember(this.selectedMember.providerId, this.selectedMember.cin, awpDetail.downloadFileName, ReportType.AWV).subscribe(result=>{\r\n        this.saveAsFile(result, awpDetail.downloadFileName + \".pdf\", 'pdf');\r\n      });\r\n    }\r\n  }\r\n\r\n  public upload(awpDetail:MemberAWPStatus) : void {\r\n\r\n    this.selectedMemberAWPStatus = awpDetail;\r\n\r\n    this.wellnessDetails = new WellnessDetails();\r\n    this.wellnessDetails.grgr_ck = this.selectedMember.grgr_ck;\r\n    this.wellnessDetails.memberCIN = this.selectedMember.cin;\r\n    this.wellnessDetails.pcpTIN = this.selectedMember.providerTaxId;\r\n    this.wellnessDetails.providerId = this.selectedMember.providerId;\r\n    this.wellnessDetails.wellnessYear = awpDetail.period;\r\n\r\n    this.showAttachment = true;\r\n  }\r\n\r\n  public onCancelWellness() {\r\n    this.showAttachment = false;\r\n  }\r\n\r\n  public get canShowAttachmentDialog(): boolean {\r\n    if(this.reportsService.newWellnessForm) {      \r\n      if(this.selectedMemberAWPStatus && this.selectedMemberAWPStatus.usedDocument)\r\n        return true;\r\n      else\r\n        return false;\r\n    }\r\n    else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  public get canShowDetailsDialog(): boolean {\r\n    return !this.canShowAttachmentDialog;\r\n  }  \r\n\r\n  public onApplyWellness(selectedMemberAWPStatus: MemberAWPStatus) {\r\n    this.lastSelectedMemberCin = this.selectedMember.cin;\r\n\r\n    if(this.selectedProvider) {\r\n      var temp = this.selectedCin;\r\n      this.initialize(true);\r\n      this.selectedCin = temp;\r\n    }\r\n    else {\r\n      this.onMemberSearch(this.lastMemberSearch);\r\n    }\r\n\r\n    this.showAttachment = false;\r\n  }\r\n\r\n  public get isNewWellness(): boolean {\r\n    return this.reportsService.newWellnessForm;\r\n  }\r\n\r\n  public uploadCaption(item:MemberAWPStatus) : string {\r\n    let currentYear: Date = new Date();\r\n    let applicable:boolean = true;\r\n\r\n    if(item && item.period < currentYear.getFullYear() - 1) {\r\n      applicable = false;\r\n    }\r\n    else if(item && item.period == currentYear.getFullYear() - 1 && currentYear.getMonth() > 0) {\r\n      applicable = false;\r\n    }\r\n\r\n    if(item.status.trim().toUpperCase() === \"SUBMITTED\"){\r\n      return \"VIEW\";\r\n    }      \r\n    else {\r\n      if(applicable)\r\n        return this.isNewWellness ? \"VIEW\" : \"UPLOAD\";\r\n      else\r\n        return \"\";\r\n    }      \r\n  }\r\n\r\n  public downloadCaption(item: MemberAWPStatus) : string {\r\n    let currentYear: Date = new Date();\r\n    let applicable:boolean = true;\r\n\r\n    if(item && item.period < currentYear.getFullYear() - 1) {\r\n      applicable = false;\r\n    }\r\n    else if(item && item.period == currentYear.getFullYear() - 1 && currentYear.getMonth() > 0) {\r\n      applicable = false;\r\n    }\r\n\r\n    return (applicable) ? \"DOWNLOAD\" : \"\";   \r\n  }\r\n\r\n  public pendingCaption(item: MemberAWPStatus) : string {\r\n    let currentYear: Date = new Date();\r\n    let applicable:boolean = true;\r\n\r\n    if(item && item.period < currentYear.getFullYear() - 1) {\r\n      applicable = false;\r\n    }\r\n    else if(item && item.period == currentYear.getFullYear() - 1 && currentYear.getMonth() > 0) {\r\n      applicable = false;\r\n    }\r\n\r\n    return (applicable) ? \"Pending\" : \"Expired\";   \r\n  }  \r\n}\r\n","<div class=\"reports-awp-member\">\r\n  <div class=\"report-search\">\r\n    <app-reports-member-search (onMemberSearch)=\"onMemberSearch($event)\" #memberSearch></app-reports-member-search>\r\n  </div>\r\n  <div class=\"report-parameter\">\r\n    <p-table\r\n      [value]=\"displayMembers\"\r\n      [paginator]=\"true\"\r\n      [rows]=\"10\"\r\n      [scrollable]=\"true\"\r\n      scrollHeight=\"400px\"\r\n      (onSort)=\"onSort($event)\"\r\n      [(first)]=\"first\"\r\n      [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n      >\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"5%\"></th>\r\n          <th width=\"35%\" pSortableColumn=\"memberName\">Name<div class=\"{{sortClass('memberName')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"cin\">Member ID<div class=\"{{sortClass('cin')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"providerId\">Provider ID<div class=\"{{sortClass('providerId')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"status\">Current Year Status<div class=\"{{sortClass('status')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"5%\" class=\"check-column\">\r\n            <p-radioButton name=\"cin\" [inputId]=\"row.cin\" [value]=\"row\" [(ngModel)]=\"selectedCin\" (click)=\"onMemberSelected(row)\"></p-radioButton>\r\n          </td>\r\n          <td width=\"35%\">\r\n            <div>{{row.memberName}}</div>\r\n          </td>\r\n          <td width=\"20%\">\r\n            <div>{{row.cin}}</div>\r\n          </td>\r\n          <td width=\"20%\">\r\n            <div>{{row.providerId}}</div>\r\n          </td>\r\n          <td width=\"20%\">\r\n            <div *ngIf=\"row.status == 'Submitted'\" style=\"color:green\">{{row.status}}</div>\r\n            <div *ngIf=\"row.status == 'Pending'\" style=\"color:red\">{{row.status}}</div>                                    \r\n          </td>          \r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>\r\n  <div class=\"report-measurementlabel\" *ngIf=\"selectedMember != null\">\r\n    <label>Measurement Period for {{displayText}}</label>\r\n  </div>\r\n  <div class=\"report-filelist\" *ngIf=\"selectedMember != null\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"awpList\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"15%\">Period</th>\r\n          <th width=\"15%\">Signed</th>\r\n          <th width=\"15%\">Status</th>\r\n          <th width=\"20%\">Unsigned</th>\r\n          <th width=\"15%\">Action</th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"15%\"><div>{{row.period}}</div></td>\r\n          <td width=\"15%\"><div>{{row.signed ? \"Yes\" : \"No\"}}</div></td>\r\n          <td width=\"15%\">\r\n            <div *ngIf=\"row.status == 'Submitted'\" style=\"color:green\">{{row.status}}</div>\r\n            <div *ngIf=\"row.status == 'Pending'\" style=\"color:red\">{{pendingCaption(row)}}</div>            \r\n          </td>\r\n          <td width=\"20%\"><div><a href='javascript:void(0);' (click)=\"download(row)\">{{downloadCaption(row)}}</a></div></td>\r\n          <td width=\"15%\"><div><a href='javascript:void(0);' (click)=\"upload(row)\">{{uploadCaption(row)}}</a></div></td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>    \r\n  </div>\r\n</div>\r\n <report-wellness-attachment-dialog #attachment *ngIf=\"showAttachment && selectedMember && selectedMemberAWPStatus && canShowAttachmentDialog\" \r\n  [selectedMemberAWPStatus]=\"selectedMemberAWPStatus\" \r\n  [selectedMember]=\"selectedMember\"  \r\n  (applyWellness)=\"onApplyWellness()\" \r\n  (cancelWellness)=\"onCancelWellness()\">\r\n</report-wellness-attachment-dialog>\r\n<report-wellness-details-dialog #attachment *ngIf=\"showAttachment && selectedMember && selectedMemberAWPStatus && canShowDetailsDialog\"  \r\n  [selectedMemberAWPStatus]=\"selectedMemberAWPStatus\"\r\n  [selectedMember]=\"selectedMember\"\r\n  [selectedProvider]=\"selectedProvider\"\r\n  (applyWellness)=\"onApplyWellness()\" \r\n  (cancelWellness)=\"onCancelWellness()\">\r\n</report-wellness-details-dialog>\r\n","export class WellnessDetails {\r\n    \r\n    public grgr_ck: number;\r\n    public wellnessYear: number;\r\n    public pcpTIN: string;\r\n    public memberCIN: string;\r\n    public completionDate? : Date;\r\n    public documentId: number;\r\n    public pcpId : string;\r\n    public pcpName: string;\r\n    public memberName: string;\r\n    public memberDOB: Date;\r\n    public age: number;\r\n    public healthNetworkPlanCode: string;\r\n    public collectioName: string;\r\n    public providerId: string;\r\n    public providerName: string;\r\n    public providerNPI: string;\r\n    public address1: string;\r\n    public address2: string;\r\n    public address3: string;\r\n    public city: string;\r\n    public state: string;\r\n    public zip: string;\r\n    public groupId: string;\r\n    public groupName: string;\r\n    public groupTin: string;\r\n    public groupNpi: string;\r\n    public pymm: number;\r\n    public cymm: number;\r\n    public memMediCode: string;\r\n    public cdpsModel: string;\r\n    public capturedDiag: number;\r\n    public recapturedDiag: number;\r\n    public emClaims: number;\r\n    public inpClaims: number;\r\n    public totalClaims: number;\r\n    public created: Date;\r\n    public createdBy: string;\r\n    public modified: Date;\r\n    public modifiedBy: string;\r\n    public notes: string;\r\n    public medsId: string;\r\n    public mbi: string;\r\n}\r\n\r\nexport class WellnessDetails2 {\r\n    public grgr_ck: number;\r\n    public wellnessYear: number;\r\n    public pcpTIN: string;\r\n    public memberCIN: string;\r\n    public completionDate? : Date;\r\n    public documentId: number;\r\n    public pcpId : string;\r\n    public memberName: string;\r\n    public memberDOB: Date;\r\n    public age: number;\r\n    public pymm: number;\r\n    public cymm: number;\r\n    public memMediCode: string;\r\n    public cdpsModel: string;\r\n    public capturedDiag: number;\r\n    public recapturedDiag: number;\r\n    public emClaims: number;\r\n    public inpClaims: number;\r\n    public totalClaims: number;\r\n    public created: Date;\r\n    public createdBy: string;\r\n    public modified: Date;\r\n    public modifiedBy: string;\r\n    public notes: string;\r\n    public medsId: string;\r\n    public mbi: string;    \r\n    public usedDocument:boolean;\r\n    public additionalComments: string;    \r\n    public dateOfService: Date;\r\n}\r\n\r\nexport class WellnessDetails2Extend extends WellnessDetails2 {\r\n    public diagnosisCaptured: WellnessDetailsDiagnosisCaptured[];\r\n    public diagnosisReCaptured: WellnessDetailsDiagnosisReCaptured[];\r\n    public screening: WellnessDetailsScreening[];\r\n    public otherDiagnosis: WellnessDetailsOtherDiagnosis[];\r\n}\r\n\r\nexport class WellnessDetailsDiagnosisCaptured {\r\n    public documentId: number;\r\n    public cin: string;\r\n    public grgr_ck: number;\r\n    public fromDt: Date;\r\n    public diagID: number;\r\n    public diagCode: string;\r\n    public description: string;\r\n    public isChronic: string;\r\n    public suppress: string;\r\n    public cdpsModel: string;\r\n    public diagGroup: string;\r\n    public severity: string;\r\n    public lastCapturedDt: Date;\r\n    public lastUpdatedDate: Date;\r\n    public created: Date;\r\n    public createdBy: string;\r\n    public modified: Date;\r\n    public modifiedBy: string;\r\n    public status: string;\r\n}\r\n\r\nexport class WellnessDetailsDiagnosisReCaptured extends  WellnessDetailsDiagnosisCaptured {\r\n    public diagCaptured: string;\r\n    public diagGroupSeverityCaptured: string;\r\n    public lastYear: string;\r\n    public twoYears: string;\r\n}\r\n\r\nexport class WellnessDetailsScreening {\r\n    public documentId: number;\r\n    public memberCin: string;\r\n    public screening: string;\r\n    public lastUpdatedDate: Date;\r\n    public created: Date;\r\n    public createdBy: string;\r\n    public modified: Date;\r\n    public modifiedBy: string;\r\n    public status: string;\r\n    public completionDate: Date;\r\n}\r\n\r\nexport class WellnessDetailsOtherDiagnosis {\r\n    public documentId: number;\r\n    public memberCin: string;\r\n    public diagCode: string;\r\n    public description: string;\r\n    public created: Date;\r\n    public createdBy: string;\r\n    public modified: Date;\r\n    public modifiedBy: string;\r\n    public status: string;\r\n    public dateOfService: Date;\r\n    public index: number;\r\n}\r\n","import { HttpEventType } from '@angular/common/http';\r\nimport { Component, OnInit, OnDestroy, Output, EventEmitter, ViewChild, AfterViewInit, Input, Provider } from '@angular/core';\r\nimport { MemberAWPStatus } from 'src/app/services/models/awp-detail';\r\nimport { BusyService } from '@caloptima/portal-foundation';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { WellnessDetails2Extend } from 'src/app/services/models/wellness-details';\r\nimport { ReportMemberDetails } from 'src/app/services/models/reportmemberdetails';\r\nimport { forkJoin, retry } from 'rxjs';\r\nimport { FileService } from 'src/app/services/file.service';\r\nimport { WellnessSearchData } from 'src/app/services/models/wellness-attachment';\r\nimport { ReportType } from 'src/app/services/models/reportype';\r\nimport { wellnessSurvey } from 'src/app/services/models/wellnessSurvey';\r\nimport { saveAs } from 'file-saver';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { CollectionService } from 'src/app/services/collection.service';\r\nimport { MemberInfoService } from 'src/app/services/member-info.service';\r\nimport { Member } from 'src/app/services/models/member';\r\nimport { ProviderDetail } from 'src/app/services/models/provider-detail';\r\nimport { ProviderDetail2 } from 'src/app/services/models/provider-detail2';\r\nimport { AlertDangerComponent } from '../../../../app-components/alerts/alert-danger/alert-danger.component';\r\nimport { ReportWellnessDetailsComponent } from '../../awp-components/report-wellness-details/report-wellness-details.component';\r\nimport { ReportWellnessAttachmentsComponent } from '../../awp-components/report-wellness-attachments/report-wellness-attachments.component';\r\nimport { ReportWellnessSurveyComponent } from '../../awp-components/report-wellness-survey/report-wellness-survey.component';\r\n\r\n@Component({\r\n  selector: 'report-wellness-details-dialog',\r\n  templateUrl: './report-wellness-details-dialog.component.html',\r\n  styleUrls: ['./report-wellness-details-dialog.component.scss']\r\n})\r\nexport class ReportWellnessDetailsDialogComponent implements OnInit, OnDestroy {\r\n\r\n  @Input() public selectedMemberAWPStatus: MemberAWPStatus;\r\n  @Input() public selectedMember: ReportMemberDetails;\r\n  @Input() public selectedProvider: ProviderDetail;\r\n  @Output() cancelWellness = new EventEmitter();\r\n  @Output() applyWellness = new EventEmitter();\r\n  public currentView: number = 1;\r\n  public wellnessFileList: WellnessSearchData[];\r\n  public wellnessDetails: WellnessDetails2Extend;\r\n  public wellnessSurveys: wellnessSurvey[];\r\n  public providerDetail: ProviderDetail2;\r\n  public memberDetail: Member;\r\n  public attachmentProgress: number = null;\r\n  public attachments2: any[] = [];\r\n  public hasUploadError2: boolean = false;\r\n  public maxUploadFilesSupported2 = 5;\r\n  private totalFilesSize: number = 100000000;\r\n  private maxFileNameLength = 128;\r\n  public isLoaded: boolean = false;\r\n  public wellnessFormChanged: boolean = false;\r\n  public wellnessAttachmentChanged: boolean = false;\r\n  public errorMessage: string = '';\r\n  public currentUser: string;\r\n  public isskipped: boolean = false;\r\n  @ViewChild('alertdangermessage') alertDangerComponent: AlertDangerComponent;;\r\n  @ViewChild('wellnessdetailscomponent') wellnessdetailscomponent: ReportWellnessDetailsComponent;\r\n  @ViewChild('wellnessattachmentcomponent') wellnessattachmentcomponent: ReportWellnessAttachmentsComponent;\r\n  @ViewChild('surveycomponent') surveycomponent: ReportWellnessSurveyComponent;\r\n\r\n  constructor(\r\n    private reportService: ReportsService,\r\n    private fileService: FileService,\r\n    private memberService: MemberInfoService,\r\n    private collectionService: CollectionService,\r\n    private busyService: BusyService,\r\n    private oauth: OAuthService\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.LoadData();\r\n  }\r\n\r\n  LoadData() {\r\n    this.hasUploadError2 = false;\r\n    this.errorMessage = \"\";\r\n\r\n    forkJoin([\r\n      this.fileService.getWellnessAttachment(this.selectedMember.cin, this.selectedProvider.calProviderID, this.selectedProvider.taxId, this.selectedMemberAWPStatus.period),\r\n      this.reportService.getReportWellnessDetails(this.selectedMemberAWPStatus.documentId),\r\n      this.reportService.getReportWellnessSurvey(this.selectedMemberAWPStatus.period, this.selectedMember.providerId, this.selectedMember.cin, this.selectedMember.grgr_ck, this.selectedMember.providerTaxId, ReportType.AWV),\r\n      this.collectionService.GetProvider2(this.selectedProvider.calProviderID)\r\n    ]).subscribe(\r\n      (result) => {\r\n        if (result && result.length > 1) {\r\n          this.wellnessFileList = result[0];\r\n          this.wellnessDetails = result[1];\r\n          this.wellnessSurveys = result[2];\r\n          this.providerDetail = result[3];\r\n\r\n          this.wellnessFileList.forEach(x=>{\r\n            let content = \"1\";\r\n            let data = new Blob([content], { type: 'application/txt' });\r\n            let arrayOfBlob:Blob[] = [];\r\n            arrayOfBlob.push(data);\r\n            let tempFile = new File(arrayOfBlob, x.originalFileName);\r\n      \r\n            if(!x.isWellnessForm)\r\n              this.attachments2.push(tempFile);\r\n          });  \r\n\r\n          const claims = this.oauth.getIdentityClaims();\r\n          if (claims) {\r\n            this.currentUser = claims['sub'];\r\n          }\r\n\r\n          this.isLoaded = true;\r\n          this.isskipped = false;\r\n        }\r\n      },\r\n      (error) => {\r\n        this.hasUploadError2 = true;\r\n        this.errorMessage = \"Error Loading Annual Wellness data for the member. Please try again after sometime.\"\r\n        this.busyService.emit(false);\r\n      }\r\n    );\r\n  }\r\n\r\n  ngOnDestroy() {\r\n  }\r\n\r\n  public fileAdded(event) {\r\n    this.attachments2 = event;\r\n    this.wellnessAttachmentChanged = true;\r\n  }\r\n\r\n  public fileRemoved(event) {\r\n    this.attachments2 = event;\r\n    this.wellnessAttachmentChanged = true;\r\n  }\r\n\r\n  public onWellnessFormChanges($event) {\r\n    this.wellnessFormChanged = true;\r\n  }\r\n\r\n  public get display(): boolean {\r\n    return true;\r\n  }\r\n\r\n  public set display(value: boolean) {\r\n    this.onCancel();\r\n  }\r\n\r\n  public onCancel() {\r\n    this.cancelWellness.emit();\r\n    this.display = false;\r\n  }\r\n\r\n  public onCancelWellness() {\r\n    if (this.currentView === 1) {\r\n      this.cancelWellness.emit();\r\n      this.display = false;\r\n    }\r\n    else if (this.currentView === 2) {\r\n      this.currentView = 1;\r\n    }\r\n    else if (this.currentView === 3) {\r\n      this.currentView = 2;\r\n\r\n      setTimeout(() => {\r\n        this.wellnessattachmentcomponent.setAttachments(this.attachments2);\r\n      }, (500));                \r\n    }\r\n  }\r\n\r\n  public onSkip() {\r\n    this.wellnessDetails.diagnosisReCaptured.forEach(x=>{\r\n      x.status = null;\r\n    });\r\n\r\n    this.wellnessDetails.otherDiagnosis.splice(0);\r\n\r\n    this.wellnessDetails.screening.forEach(x=>{\r\n      x.status = null;\r\n      x.completionDate = null;\r\n    });\r\n\r\n    this.wellnessDetails.additionalComments = null;\r\n    this.wellnessDetails.notes = null;\r\n    this.wellnessDetails.dateOfService = null;  \r\n\r\n    this.isskipped = true;\r\n    this.hasUploadError2 = false;\r\n    this.errorMessage = \"\";\r\n    this.currentView = 2;\r\n\r\n    setTimeout(() => {\r\n      this.wellnessattachmentcomponent.setAttachments(this.attachments2);\r\n    }, (500));    \r\n  }\r\n\r\n  public onSaveAndContinueLater() {\r\n\r\n    this.fixDates();\r\n\r\n    this.wellnessDetails.modifiedBy = this.currentUser;\r\n    this.hasUploadError2 = false;\r\n    this.errorMessage = \"\";    \r\n\r\n    this.busyService.emit(true);\r\n    forkJoin([\r\n      this.reportService.ApplyWellness2Save(this.wellnessDetails),\r\n      this.reportService.ApplyWellnessSurveyAnswers(this.wellnessDetails.wellnessYear, this.selectedMember.providerId, this.selectedMember.cin, this.selectedMember.grgr_ck, ReportType.AWV, this.wellnessSurveys)\r\n    ]).subscribe((result) => {\r\n\r\n      this.uploadWellnessForm(false);\r\n    },\r\n      (error) => {\r\n        this.hasUploadError2 = true;\r\n        this.errorMessage = \"Error submitting the wellness form. Try submitting again !!!\"\r\n        this.busyService.emit(false);\r\n      });\r\n  }\r\n\r\n  public performWellnessFormValidation() {\r\n    this.hasUploadError2 = false;\r\n    this.errorMessage = \"\";\r\n\r\n    if (!this.hasUploadError2) {\r\n      if (this.wellnessDetails.dateOfService == null || this.wellnessDetails.dateOfService.toString() == \"\") {\r\n        this.hasUploadError2 = true;\r\n        this.errorMessage = \"Date of service required to submit this form.\"\r\n      };\r\n    }\r\n\r\n    if (!this.hasUploadError2) {\r\n      this.wellnessDetails.screening.forEach(x => {\r\n        if (x.status && x.status.trim().toUpperCase() === \"COMPLETED\" && (x.completionDate == null || x.completionDate.toString() == \"\")) {\r\n          this.hasUploadError2 = true;\r\n          this.errorMessage = \"Date Completed is required for Completed screenings.\"\r\n        }\r\n      });\r\n    }\r\n\r\n    if (!this.hasUploadError2) {\r\n      this.wellnessDetails.diagnosisReCaptured.forEach(element => {\r\n        if (element.isChronic && element.isChronic.trim().toUpperCase() === \"Y\") {\r\n          if (element.status == null || element.status == \"\") {\r\n            this.hasUploadError2 = true;\r\n            this.errorMessage = \"Status required for Chronic Condition.\"\r\n          }\r\n        }\r\n      });\r\n    }\r\n\r\n    if (!this.hasUploadError2) {\r\n      this.wellnessDetails.diagnosisReCaptured.forEach(element => {\r\n        if (element.isChronic && element.isChronic.trim().toUpperCase() === \"N\") {\r\n          if (element.status == null || element.status == \"\") {\r\n            this.hasUploadError2 = true;\r\n            this.errorMessage = \"Status required for Non-Chronic Condition.\"\r\n          }\r\n        }\r\n      });\r\n    }\r\n\r\n    if (!this.hasUploadError2) {\r\n      this.wellnessDetails.otherDiagnosis.forEach(element => {\r\n        if (element.status == null || element.status == \"\") {\r\n          this.hasUploadError2 = true;\r\n          this.errorMessage = \"Status required for Other Diagnosis.\"\r\n        }\r\n      });\r\n    }\r\n\r\n    if (this.hasUploadError2) {\r\n      if (this.alertDangerComponent) {\r\n        this.alertDangerComponent.contentMessage = this.errorMessage;\r\n        this.alertDangerComponent.setContentMessages()\r\n      }\r\n    }\r\n  }\r\n\r\n  public performAttachmentValidation() {\r\n    this.hasUploadError2 = false;\r\n    this.errorMessage = \"\";\r\n\r\n    if(this.isskipped){\r\n\r\n      var fileExists: boolean = false;\r\n      this.wellnessFileList.forEach(x=>{\r\n        if(!x.isWellnessForm)\r\n          fileExists = true;\r\n      })\r\n      if(!fileExists) {\r\n        fileExists = this.attachments2.length > 0;\r\n      }\r\n\r\n      if(!fileExists) {\r\n        this.hasUploadError2 = true;\r\n        this.errorMessage = \"Upload the signed document and any supporting documents you may have.\";\r\n      }\r\n    }\r\n  }\r\n\r\n  private fixDates() {\r\n    if (this.wellnessDetails.dateOfService != null && this.wellnessDetails.dateOfService.toString() == \"\") {\r\n      this.wellnessDetails.dateOfService = null;\r\n    };\r\n\r\n    this.wellnessDetails.screening.forEach(x => {\r\n      if (x.completionDate != null && x.completionDate.toString() == \"\") {\r\n        x.completionDate = null;\r\n      }\r\n    });\r\n\r\n    this.wellnessDetails.otherDiagnosis.forEach(x => {\r\n      if (x.dateOfService != null && x.dateOfService.toString() == \"\") {\r\n        x.dateOfService = null;\r\n      }\r\n    });\r\n  }\r\n\r\n  public onApplyWellness() {\r\n    if (this.currentView === 1) {\r\n\r\n      this.performWellnessFormValidation();\r\n      if (!this.hasUploadError2) {\r\n        this.isskipped = false;\r\n        this.currentView = 2;\r\n\r\n        setTimeout(() => {\r\n          this.wellnessattachmentcomponent.setAttachments(this.attachments2);\r\n        }, (500));                        \r\n      }\r\n    }\r\n    else if (this.currentView === 2) {\r\n\r\n      this.performAttachmentValidation();\r\n      if(!this.hasUploadError2){\r\n        this.currentView = 3;\r\n      }            \r\n    }\r\n    else if (this.currentView === 3) {\r\n\r\n      this.fixDates();\r\n\r\n      this.selectedMemberAWPStatus.status = \"Completed\";\r\n      this.wellnessDetails.completionDate = new Date();\r\n      this.wellnessDetails.modifiedBy = this.currentUser;\r\n      this.hasUploadError2 = false;\r\n      this.errorMessage = \"\";\r\n\r\n      this.busyService.emit(true);\r\n      forkJoin([\r\n        this.reportService.ApplyWellness2(this.wellnessDetails),\r\n        this.reportService.ApplyWellnessSurveyAnswers(this.wellnessDetails.wellnessYear, this.selectedMember.providerId, this.selectedMember.cin, this.selectedMember.grgr_ck, ReportType.AWV, this.wellnessSurveys)\r\n      ]).subscribe((result) => {\r\n\r\n        this.uploadWellnessForm(true);\r\n      },\r\n        (error) => {\r\n          this.hasUploadError2 = true;\r\n          this.errorMessage = \"Error submitting the wellness form. Try submitting again !!!\"\r\n          this.busyService.emit(false);\r\n        });\r\n    }\r\n  }\r\n\r\n  public uploadWellnessForm(isFromSubmit: boolean) {\r\n\r\n    var wellnessFormExits: WellnessSearchData = this.wellnessFileList.find(x => x.isWellnessForm);\r\n    //var requireWellnessForm = isFromSubmit ? (this.wellnessFormChanged || !wellnessFormExits) : false;\r\n\r\n    if (isFromSubmit) {\r\n      this.reportService.downloadAWPDetailPdf(this.wellnessDetails.documentId).subscribe((wellnessForm) => {\r\n        this.uploadSupportingDocuments(wellnessForm);\r\n      },\r\n        (error) => {\r\n          this.hasUploadError2 = true;\r\n          this.errorMessage = \"Error generating the wellness form. Try submitting again !!!\"\r\n          this.busyService.emit(false);\r\n        });\r\n    }\r\n    else {\r\n      this.uploadSupportingDocuments(null);\r\n    }\r\n  }\r\n\r\n  public uploadSupportingDocuments(wellnessForm: Blob) {\r\n    var formData: FormData = this.getFormData(wellnessForm);\r\n    if (formData) {\r\n      this.fileService.uploadWellnessAttachments(formData).subscribe(x => {\r\n        this.busyService.emit(false);\r\n        this.applyWellness.emit();\r\n      },\r\n        (error) => {\r\n          this.hasUploadError2 = true;\r\n          this.errorMessage = \"Error uploading the attachments. Try submitting again !!!\"\r\n          this.busyService.emit(false);\r\n        });\r\n    }\r\n    else {\r\n      this.busyService.emit(false);\r\n      this.applyWellness.emit();\r\n    }\r\n  }\r\n\r\n  public get getSubmitButtonText() {\r\n    if (this.currentView === 1) {\r\n      return \"Next\";\r\n    }\r\n    else if (this.currentView === 2) {\r\n      return \"Next\";\r\n    }\r\n    else if (this.currentView === 3)\r\n      return \"Submit\"\r\n  }\r\n\r\n  public get getCancelButtonText() {\r\n    if (this.currentView === 1) {\r\n      return \"Cancel\";\r\n    }\r\n    else if (this.currentView === 2) {\r\n      return \"Back\";\r\n    }\r\n    else if (this.currentView === 3) {\r\n      return \"Back\";\r\n    }\r\n  }\r\n\r\n  public get getHeaderText(): string {\r\n    return this.selectedMember ? this.selectedMember.memberName : \"\";\r\n  }\r\n\r\n  public get wellnessFormFileName(): string {\r\n    var fileName: string = \"AWP_PROV_\" +\r\n      this.providerDetail.providerTaxId + \"_\" +\r\n      this.wellnessDetails.wellnessYear.toString() + \"_\" +\r\n      this.wellnessDetails.pcpId + \"_\" +\r\n      this.wellnessDetails.memberCIN + \".pdf\";\r\n    return fileName;\r\n  }\r\n\r\n  public getNewWellnessFormFileName(): string {\r\n\r\n    var fileName: string = \"AWP_PROV_\" +\r\n      this.providerDetail.providerTaxId + \"_\" +\r\n      this.wellnessDetails.wellnessYear.toString() + \"_\" +\r\n      this.wellnessDetails.pcpId + \"_\" +\r\n      this.wellnessDetails.memberCIN + \"_wellnessForm\";\r\n\r\n    var temp = fileName + \".pdf\";\r\n    var iloop = 1;\r\n\r\n    while (this.doesExists(temp) || this.doesExists2(temp)) {\r\n      temp = fileName + \"_\" + iloop.toString() + \".pdf\";\r\n      iloop++;\r\n    }\r\n\r\n    return temp;\r\n  }\r\n\r\n  public getFormData(mainWellnessFormFile: Blob): FormData {\r\n    let wellnessFormFiles = '';\r\n    let fileToUpload: File[] = [];\r\n    const formData = new FormData();\r\n\r\n    if (mainWellnessFormFile) {\r\n      let wellnewFile: File = new File([mainWellnessFormFile], this.getNewWellnessFormFileName());\r\n      fileToUpload.push(wellnewFile);\r\n      wellnessFormFiles += wellnewFile.name + \"|\";\r\n    }  \r\n\r\n    this.attachments2.forEach(element => {\r\n      if (!this.doesExists(element.name)) {\r\n        fileToUpload.push(element);\r\n      }\r\n    });\r\n\r\n    if (fileToUpload.length > 0) {\r\n\r\n      let totalSize = 0;\r\n      Array.from(fileToUpload)\r\n        .map((file, index) => {\r\n          totalSize += file.size;\r\n          return formData.append('file' + index, file, file.name);\r\n        });\r\n\r\n      formData.append('memberId', this.selectedMember.cin);\r\n      formData.append('providerid', this.selectedMember.providerId);\r\n      formData.append('providertaxid', this.providerDetail.providerTaxId);\r\n      formData.append('wellnessyear', this.selectedMemberAWPStatus.period.toString());\r\n\r\n      if (wellnessFormFiles != '')\r\n        formData.append('wellnessFiles', wellnessFormFiles);\r\n\r\n      return formData;\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  public doesExists(fileName: string): boolean {\r\n    var temp = this.wellnessFileList.find(x => x.originalFileName.trim().toUpperCase() === fileName.trim().toUpperCase())\r\n    return temp ? true : false;\r\n  }\r\n\r\n  public doesExists2(fileName: string): boolean {\r\n    var temp = this.attachments2.find(x => x.name.trim().toUpperCase() === fileName.trim().toUpperCase())\r\n    return temp ? true : false;\r\n  }\r\n\r\n  public onPrintToPdf() {\r\n    if (this.isLoaded) {\r\n      this.reportService.downloadAWPDetailPdf(this.wellnessDetails.documentId).subscribe(result => {\r\n\r\n        const data: Blob = new Blob([result], { type: 'text/pdf' });\r\n        saveAs(data, this.wellnessFormFileName);\r\n        this.busyService.emit(false);\r\n      });\r\n    }\r\n  }\r\n\r\n  public get isSubmitted(): boolean {\r\n    return this.wellnessDetails && this.wellnessDetails.completionDate != null;\r\n  }\r\n}\r\n\r\n","<p-dialog header=\"{{getHeaderText}}\" [(visible)]=\"display\" [modal]=\"true\" (onHide)=\"onCancel()\" [draggable]=\"false\" [style]=\"{width: '1100px', height:'1500px'}\" position=\"center center\" [closeOnEscape]=\"false\">\r\n  <div *ngIf=\"currentView == 1 && isLoaded\">\r\n    <report-wellness-details #wellnessdetailscomponent\r\n                            [selectedMemberAWPStatus]=\"selectedMemberAWPStatus\"\r\n                            [selectedMember]=\"selectedMember\"\r\n                            [wellnessDetails]=\"wellnessDetails\"\r\n                            [providerDetail]=\"providerDetail\"\r\n                            [memberDetail]=\"memberDetail\"\r\n                            (onItemChange)=\"onWellnessFormChanges($event)\">\r\n    </report-wellness-details>\r\n  </div>\r\n  <div *ngIf=\"currentView == 2 && isLoaded\">\r\n    <report-wellness-attachments #wellnessattachmentcomponent\r\n                            [selectedMemberAWPStatus]=\"selectedMemberAWPStatus\"\r\n                            [selectedMember]=\"selectedMember\"\r\n                            [wellnessFileList]=\"wellnessFileList\"\r\n                            (onFileAdded)=\"fileAdded($event)\"\r\n                            (onFileRemoved)=\"fileRemoved($event)\">\r\n    </report-wellness-attachments>\r\n  </div>\r\n  <div *ngIf=\"currentView == 3 && isLoaded\">\r\n    <report-wellness-survey #surveycomponent\r\n                            [wellnessSurveys]=\"wellnessSurveys\"\r\n                            (onItemChange)=\"onWellnessFormChanges($event)\">\r\n    </report-wellness-survey>\r\n  </div>\r\n  <p-footer>\r\n    <div *ngIf=\"currentView == 1 && isLoaded\" class=\"awp-dialog-footer\">\r\n      <span class=\"required-field\">* Required field</span>\r\n    </div>\r\n    <div *ngIf=\"hasUploadError2\" class=\"alert-error\">\r\n      <app-alert-danger *ngIf=\"hasUploadError2\" #alertdangermessage\r\n                        [uniqueID]=\"validationerror\"\r\n                        [subjectMessage]=\"' '\"\r\n                        [contentMessage]=\"errorMessage\">\r\n      </app-alert-danger>\r\n    </div>\r\n    <div>\r\n      <button *ngIf=\"currentView == 1\" type=\"button\" class=\"btn btn-primary btn-skip\" (click)=\"onSkip()\">Manual Upload</button>      \r\n      <button *ngIf=\"isSubmitted\" type=\"button\" class=\"btn btn-primary btn-download\" (click)=\"onPrintToPdf()\">Print</button>\r\n      <button type=\"button\" class=\"btn btn-secondary btn-cancel\" (click)=\"onCancelWellness()\">{{getCancelButtonText}}</button>\r\n      <button type=\"button\" class=\"btn btn-primary btn-savelater\" (click)=\"onSaveAndContinueLater()\">Save and Continue Later</button>\r\n      <button type=\"button\" class=\"btn btn-primary btn-create\" (click)=\"onApplyWellness()\">{{getSubmitButtonText}}</button>      \r\n    </div>\r\n  </p-footer>\r\n</p-dialog>\r\n","import { Component, OnInit, OnDestroy, Output, EventEmitter, ViewChild, AfterViewInit, Input, Provider } from '@angular/core';\r\nimport { MemberAWPStatus } from 'src/app/services/models/awp-detail';\r\nimport { BusyService, Email } from '@caloptima/portal-foundation';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { WellnessDetails2Extend, WellnessDetailsDiagnosisCaptured, WellnessDetailsDiagnosisReCaptured, WellnessDetailsOtherDiagnosis } from 'src/app/services/models/wellness-details';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { ReportMemberDetails } from 'src/app/services/models/reportmemberdetails';\r\nimport { NullLogger } from '@microsoft/signalr';\r\nimport { CollectionService } from 'src/app/services/collection.service';\r\nimport { MemberInfoService } from 'src/app/services/member-info.service';\r\nimport { forkJoin, max } from 'rxjs';\r\nimport { ProviderDetail } from 'src/app/services/models/provider-detail';\r\nimport { Member } from 'src/app/services/models/member';\r\nimport { ProviderDetailInfo } from 'src/app/services/models/provider-detail-info';\r\nimport { ProviderDetail2 } from 'src/app/services/models/provider-detail2';\r\n\r\n@Component({\r\n  selector: 'report-wellness-details',\r\n  templateUrl: './report-wellness-details.component.html',\r\n  styleUrls: ['./report-wellness-details.component.scss']\r\n})\r\nexport class ReportWellnessDetailsComponent implements OnInit, OnDestroy {\r\n  \r\n  @Input() selectedMemberAWPStatus: MemberAWPStatus;  \r\n  @Input() selectedMember: ReportMemberDetails;  \r\n  @Input() wellnessDetails: WellnessDetails2Extend;\r\n  @Input() providerDetail: ProviderDetail2;\r\n  @Input() memberDetail: Member;  \r\n  @Output() onItemChange = new EventEmitter<any[]>();\r\n  public screeningStatusList: SelectItem[] = [];\r\n  public diagnosisStatusList: SelectItem[] = [];\r\n  public statusList: SelectItem[] = [];\r\n  public chronicDiagnosis: WellnessDetailsDiagnosisReCaptured[] = [];\r\n  public nonChronicDiagnosis: WellnessDetailsDiagnosisReCaptured[] = [];\r\n  public showAddDiagnosis:boolean = false;\r\n\r\n\r\n  constructor(\r\n    private busyService: BusyService) {\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    this.screeningStatusList.push(\r\n      { label: 'Member Refused', value: 'Member Refused' },\r\n      { label: 'Completed', value: 'Completed' },\r\n      { label: 'Ordered/Referred', value: 'Ordered/Referred' },\r\n      { label: 'Not Applicable', value: 'Not Applicable' },\r\n      { label: 'Select One', value: null }\r\n    )        \r\n \r\n    this.diagnosisStatusList.push(\r\n      { label: 'Undetermined', value: 'Undetermined' },      \r\n      { label: 'Present', value: 'Present' },\r\n      { label: 'Not Present', value: 'Not Present' },\r\n      { label: 'Select One', value: null }\r\n    )        \r\n\r\n    this.statusList.push(\r\n      { label: 'Undetermined', value: 'Undetermined' },\r\n      { label: 'Present', value: 'Present' },\r\n      { label: 'Not Present', value: 'Not Present' },\r\n      { label: 'Select One', value: null }\r\n    )    \r\n\r\n    this.LoadData();\r\n  }\r\n\r\n  ngOnDestroy() {    \r\n  }\r\n\r\n  LoadData() {\r\n\r\n    if(this.wellnessDetails) \r\n    {\r\n      this.chronicDiagnosis = [];\r\n      this.nonChronicDiagnosis = [];\r\n\r\n      this.wellnessDetails.diagnosisReCaptured.forEach(diag=>{\r\n        if(diag.isChronic && diag.isChronic.trim().toUpperCase() === \"Y\") {\r\n          this.chronicDiagnosis.push(diag);\r\n        }\r\n        else{\r\n            this.nonChronicDiagnosis.push(diag);\r\n        }\r\n      });            \r\n\r\n      var index: number= 1;\r\n      this.wellnessDetails.otherDiagnosis.forEach(x=>{\r\n        x.index = index;\r\n        index++;\r\n      });\r\n    }\r\n  }\r\n\r\n  public get additionalComments(): string {\r\n    if(this.wellnessDetails && this.wellnessDetails.additionalComments)\r\n      return this.wellnessDetails.additionalComments;\r\n    else  \r\n      return \"\";\r\n  }\r\n\r\n  public set additionalComments(val:string) {\r\n    if(this.wellnessDetails)\r\n      this.wellnessDetails.additionalComments = val;\r\n  }\r\n\r\n  public get notes(): string {\r\n    if(this.wellnessDetails && this.wellnessDetails.notes)\r\n      return this.wellnessDetails.notes;\r\n    else  \r\n      return \"\";\r\n  }\r\n\r\n  public set notes(val:string) {\r\n    if(this.wellnessDetails)\r\n      this.wellnessDetails.notes = val;\r\n  }\r\n\r\n  public get showData() : string{\r\n    if(this.wellnessDetails)\r\n      return JSON.stringify(this.wellnessDetails);\r\n    else\r\n      return \"\";\r\n  }\r\n  \r\n  public diagnosisAdded($event) {\r\n\r\n    if(this.wellnessDetails) {\r\n      let temp: WellnessDetailsOtherDiagnosis = new WellnessDetailsOtherDiagnosis();\r\n      temp.description = $event.name;\r\n      temp.diagCode = $event.id;\r\n      temp.documentId = this.wellnessDetails.documentId;\r\n      temp.status = null;\r\n      temp.memberCin = this.selectedMember.cin;\r\n      this.wellnessDetails.otherDiagnosis.push(temp);\r\n\r\n      this.onItemChange.emit();\r\n    }\r\n\r\n    this.showAddDiagnosis = false;\r\n  }\r\n\r\n  public onChange($event) {\r\n    this.onItemChange.emit();\r\n  }\r\n\r\n  public get getAddress(): string {\r\n    if(this.providerDetail)\r\n      return this.providerDetail.address1 +\", \" + (this.providerDetail.address2 && this.providerDetail.address2 !== '' ? this.providerDetail.address2 + \", \" : \"\") + this.providerDetail.city + \", \" + this.providerDetail.state + \", \" + this.providerDetail.zipCode;\r\n    else\r\n      return \"\";\r\n  }\r\n\r\n  public get dateOfService():Date {\r\n    if(this.wellnessDetails)\r\n      return this.wellnessDetails.dateOfService;\r\n\r\n    return null;\r\n  }\r\n\r\n  public set dateOfService($value: Date) {\r\n    if(this.wellnessDetails)\r\n      this.wellnessDetails.dateOfService = $value;\r\n  }\r\n\r\n  public removeDiagnosis(diag) {\r\n    if(diag){\r\n      var index = this.wellnessDetails.otherDiagnosis.indexOf(diag);\r\n      if(index >= 0) {\r\n        this.wellnessDetails.otherDiagnosis.splice(index,1);\r\n        this.onItemChange.emit();\r\n      }\r\n    }    \r\n  }\r\n\r\n  public diagnosisCancelled() {\r\n    this.showAddDiagnosis = false;\r\n  }\r\n\r\n  public onAddDiagnostic() {\r\n\r\n    if(this.wellnessDetails) {\r\n\r\n      var maxIndex: number = 1;\r\n      this.wellnessDetails.otherDiagnosis.forEach(x=>{\r\n        if(x.index > maxIndex)\r\n          maxIndex = x.index;\r\n      });\r\n\r\n      let temp: WellnessDetailsOtherDiagnosis = new WellnessDetailsOtherDiagnosis();\r\n      temp.description = \"\";\r\n      temp.diagCode = \"\";\r\n      temp.documentId = this.wellnessDetails.documentId;\r\n      temp.status = \"Present\";\r\n      temp.memberCin = this.selectedMember.cin;\r\n      temp.index = maxIndex + 1;\r\n      this.wellnessDetails.otherDiagnosis.push(temp);\r\n\r\n      this.onItemChange.emit();\r\n    }\r\n\r\n    //this.showAddDiagnosis = true;\r\n  }\r\n}\r\n","<form class=\"report-wellness-details\">\r\n    <div class=\"report-wellness-details-memberinfo\">\r\n        <div class=\"report-wellness-details-memberinfo-lblmemberid\">\r\n            <b>Member ID</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-memberinfo-valuememberid\">\r\n            {{wellnessDetails ? wellnessDetails.memberCIN : ''}}\r\n        </div>\r\n        <div class=\"report-wellness-details-memberinfo-lblmemberdob\">\r\n            <b>Date of Birth</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-memberinfo-valuememberdob\">\r\n            {{wellnessDetails ? wellnessDetails.memberDOB : ''}}\r\n        </div>\r\n    </div>        \r\n    <div class=\"report-wellness-details-providerinfo\">\r\n        <div class=\"report-wellness-details-providerinfo-lbl\">\r\n            <b>Provider name</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-providerinfo-name\">\r\n            {{providerDetail ? providerDetail.providerName : ''}}\r\n        </div>\r\n        <div class=\"report-wellness-details-providerinfo-lbladdress\">\r\n            <b>Address</b>\r\n        </div>        \r\n        <div class=\"report-wellness-details-providerinfo-address\">\r\n            {{getAddress}}\r\n        </div>            \r\n    </div>\r\n    <div class=\"report-wellness-details-notes\">\r\n        <div class=\"report-wellness-details-notes-lbl\">\r\n            <b>If other provider, specify NPI</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-notes-name\">\r\n            <input class=\"form-control\" type=\"text\" required=\"false\" name=\"txtnotesname\" id=\"txtnotesid\" [(ngModel)]=\"notes\"/>\r\n        </div>          \r\n    </div>    \r\n    <div class=\"report-wellness-details-dateofservice\">\r\n        <div class=\"report-wellness-details-dateofservice-text\">Date of Service</div>\r\n        <!--<div class=\"report-wellness-details-preventivehealth-icon\"><i class=\"fa-icon fa fa-info-circle\" [title]=\"'TODO'\"></i></div>-->\r\n    </div>         \r\n    <div class=\"report-wellness-details-dateofservicelblvalue\">\r\n        <div class=\"report-wellness-details-dateofservicelblvalue-dsl\">\r\n            <b>Date of Service</b><span class=\"required-field-star\"> *</span>\r\n        </div>\r\n        <div class=\"report-wellness-details-dateofservicelblvalue-dsv\">\r\n            <input class=\"form-control\" type=\"date\" required=\"false\"  name=\"txtdateofservicename\" id=\"txtdateofserviceid\" [ngModel]=\"wellnessDetails.dateOfService | date:'yyyy-MM-dd'\" [value]=\"wellnessDetails.dateOfService | date:'yyyy-MM-dd'\"  (ngModelChange)=\"wellnessDetails.dateOfService = $event; onChange($event)\" #wellnessDetails.dateOfService=\"ngModel\">\r\n        </div>    \r\n    </div>\r\n    <div class=\"report-wellness-details-preventivehealth\">\r\n        <div class=\"report-wellness-details-preventivehealth-text\">Preventative Health</div>\r\n        <!--<div class=\"report-wellness-details-preventivehealth-icon\"><i class=\"fa-icon fa fa-info-circle\" [title]=\"'TODO'\"></i></div>-->\r\n    </div>     \r\n    <div class=\"report-wellness-details-preventivehealthstoclbl\">\r\n        <div class=\"report-wellness-details-preventivehealthstoclbl-sc\">\r\n            <b>Screening to Consider</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-preventivehealthstoclbl-dc\">\r\n            <b>Date Completed</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-preventivehealthstoclbl-s\">\r\n            <b>Status</b>\r\n        </div>\r\n    </div>        \r\n    <div class=\"report-wellness-details-preventivehealthstocvalue\">      \r\n        <div class=\"report-wellness-details-preventivehealthstocvalue-row\" *ngFor=\"let screen of wellnessDetails?.screening\">\r\n            <div class=\"report-wellness-details-preventivehealthstocvalue-sc\">\r\n                <input class=\"form-control\" readonly type=\"text\" required=\"false\"  name=\"txtscreenname{{screen.screening}}\" id=\"txtscreenid{{screen.screening}}\" [(ngModel)]=\"screen.screening\">               \r\n            </div>\r\n            <div class=\"report-wellness-details-preventivehealthstocvalue-dc\">\r\n                <input class=\"form-control\" type=\"date\" required=\"false\"  name=\"txtscreencdname{{screen.screening}}\" id=\"txtscreencdid{{screen.screening}}\" [ngModel]=\"screen.completionDate | date:'yyyy-MM-dd'\" [value]=\"screen.completionDate | date:'yyyy-MM-dd'\"  (ngModelChange)=\"screen.completionDate = $event; onChange($event)\" #screen.completionDate=\"ngModel\">\r\n            </div>\r\n            <div class=\"report-wellness-details-preventivehealthstocvalue-s\">\r\n                <p-dropdown name=\"txtscreensname{{screen.screening}}\" id=\"drpdownscreensid{{screen.screening}}\" [options]=\"screeningStatusList\" [(ngModel)]=\"screen.status\" (onChange)=\"onChange($event)\">\r\n                </p-dropdown>\r\n            </div>\r\n            <div class=\"report-wellness-details-preventivehealthstocvalue-star\">\r\n                <span *ngIf=\"screen.status === 'Completed'\" class=\"required-field-star\">*</span>\r\n            </div>\r\n        </div>      \r\n    </div>                \r\n    <div class=\"report-wellness-details-chroniccondition\">\r\n        <div class=\"report-wellness-details-chroniccondition-text\">Chronic Conditions</div>\r\n        <!--<div class=\"report-wellness-details-chroniccondition-icon\"><i class=\"fa-icon fa fa-info-circle\" [title]=\"'TODO'\"></i></div>-->\r\n    </div>       \r\n    <div class=\"report-wellness-details-chronicconditionpdlbl\">\r\n        <div class=\"report-wellness-details-chronicconditionpdlbl-pd\">\r\n            <b>Potential Diagnosis</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-chronicconditionpdlbl-dcc\">\r\n            <b>Diagnosis Code</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-chronicconditionpdlbl-ss\">\r\n            <b>Status</b><span *ngIf=\"chronicDiagnosis && chronicDiagnosis.length\" class=\"required-field-star\"> *</span>\r\n        </div>\r\n    </div>                       \r\n    <div class=\"report-wellness-details-chronicconditionpdvalue\">      \r\n        <div class=\"report-wellness-details-chronicconditionpdvalue-row\" *ngFor=\"let diag of chronicDiagnosis\">\r\n            <div class=\"report-wellness-details-chronicconditionpdvalue-pd\"> \r\n                <input class=\"form-control\" readonly type=\"text\"required=\"false\"  name=\"txtpdname{{diag.diagCode}}\" id=\"txtpdid{{diag.diagCode}}\" [(ngModel)]=\"diag.description\">               \r\n            </div>\r\n            <div class=\"report-wellness-details-chronicconditionpdvalue-dc\">\r\n                <input class=\"form-control\" readonly type=\"text\"required=\"false\"  name=\"txtdcname{{diag.diagCode}}\" id=\"txtdcname{{diag.diagCode}}\" [(ngModel)]=\"diag.diagCode\">               \r\n            </div>\r\n            <div class=\"report-wellness-details-chronicconditionpdvalue-s\">\r\n                <p-dropdown name=\"txtsname{{diag.diagCode}}\" id=\"txtsid{{diag.diagCode}}\" [options]=\"diagnosisStatusList\" [(ngModel)]=\"diag.status\" (onChange)=\"onChange($event)\">\r\n                </p-dropdown>\r\n            </div>\r\n        </div>      \r\n    </div>            \r\n    <div class=\"report-wellness-details-nonchroniccondition\">        \r\n        <div class=\"report-wellness-details-nonchroniccondition-text\">Non-Chronic Conditions</div>\r\n        <!--<div class=\"report-wellness-details-nonchroniccondition-icon\"><i class=\"fa-icon fa fa-info-circle\" [title]=\"'TODO'\"></i></div>-->\r\n    </div>       \r\n    <div class=\"report-wellness-details-nonchronicconditionpdlbl\">\r\n        <div class=\"report-wellness-details-nonchronicconditionpdlbl-pd\">\r\n            <b>Potential Diagnosis</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-nonchronicconditionpdlbl-dcc\">\r\n            <b>Diagnosis Code</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-nonchronicconditionpdlbl-ss\">\r\n            <b>Status</b><span *ngIf=\"nonChronicDiagnosis && nonChronicDiagnosis.length\" class=\"required-field-star\"> *</span>\r\n        </div>\r\n    </div>                       \r\n    <div class=\"report-wellness-details-nonchronicconditionpdvalue\">      \r\n        <div class=\"report-wellness-details-nonchronicconditionpdvalue-row\" *ngFor=\"let diag of nonChronicDiagnosis\">\r\n\r\n            <div class=\"report-wellness-details-nonchronicconditionpdvalue-pd\"> \r\n                <input class=\"form-control\" readonly type=\"text\"required=\"false\"  name=\"txtnpdname{{diag.diagCode}}\" id=\"txtnpdid{{diag.diagCode}}\" [(ngModel)]=\"diag.description\">               \r\n            </div>\r\n            <div class=\"report-wellness-details-nonchronicconditionpdvalue-dc\">\r\n                <input class=\"form-control\" readonly type=\"text\"required=\"false\"  name=\"txtndcname{{diag.diagCode}}\" id=\"txtndcname{{diag.diagCode}}\" [(ngModel)]=\"diag.diagCode\">               \r\n            </div>\r\n            <div class=\"report-wellness-details-nonchronicconditionpdvalue-s\">\r\n                <p-dropdown name=\"txtnsname{{diag.diagCode}}\" id=\"txtnsid{{diag.diagCode}}\" [options]=\"diagnosisStatusList\" [(ngModel)]=\"diag.status\" (onChange)=\"onChange($event)\">\r\n                </p-dropdown>\r\n            </div>\r\n        </div>      \r\n    </div>           \r\n    <div class=\"report-wellness-details-otherdiagnosis\">\r\n        <div class=\"report-wellness-details-otherdiagnosis-text\">Other Diagnosis</div>\r\n        <!--<div class=\"report-wellness-details-otherdiagnosis-icon\"><i class=\"fa-icon fa fa-info-circle\" [title]=\"'TODO'\"></i></div>-->\r\n    </div>       \r\n    <div class=\"report-wellness-details-otherdiagnosislbl\">\r\n        <div class=\"report-wellness-details-otherdiagnosislbl-d\">\r\n            <b>Potential Diagnosis</b>\r\n        </div>\r\n        <div class=\"report-wellness-details-otherdiagnosislbl-dc\">\r\n            <b>Diagnosis Code</b>\r\n        </div>\r\n        <!-- <div class=\"report-wellness-details-otherdiagnosislbl-ds\">\r\n            <b>Date of Service</b>\r\n        </div>             -->\r\n        <div class=\"report-wellness-details-otherdiagnosislbl-s\">\r\n            <b>Status</b><span *ngIf=\"wellnessDetails?.otherDiagnosis && wellnessDetails?.otherDiagnosis.length\" class=\"required-field-star\"> *</span>  \r\n        </div>\r\n        <div class=\"report-wellness-details-otherdiagnosislbl-r\">\r\n            &nbsp;\r\n        </div>        \r\n    </div>                       \r\n    <div class=\"report-wellness-details-otherdiagnosisvalue\">      \r\n        <div class=\"report-wellness-details-otherdiagnosisvalue-row\" *ngFor=\"let diag of wellnessDetails?.otherDiagnosis\">\r\n            <div class=\"report-wellness-details-otherdiagnosisvalue-d\">\r\n                <input class=\"form-control\" type=\"text\" required=\"false\"  name=\"txtoddname{{diag.index}}\" id=\"txtoddname{{diag.index}}id\" [(ngModel)]=\"diag.description\">               \r\n            </div>\r\n            <div class=\"report-wellness-details-otherdiagnosisvalue-dc\">\r\n                <input class=\"form-control\" maxlength=\"19\" type=\"text\" required=\"false\"  name=\"txtoddcode{{diag.index}}\" id=\"txtoddcode{{diag.index}}id\" [(ngModel)]=\"diag.diagCode\">               \r\n            </div>\r\n            <!-- <div class=\"report-wellness-details-otherdiagnosisvalue-ds\">\r\n                <input class=\"form-control\" type=\"date\"required=\"false\"  name=\"txtodddos{{diag.diagCode}}\" id=\"txtodddos{{diag.diagCode}}id\" [ngModel]=\"diag.dateOfService | date:'yyyy-MM-dd'\" [value]=\"diag.dateOfService | date:'yyyy-MM-dd'\"  (ngModelChange)=\"diag.dateOfService = $event;onChange($event)\" #diag.dateOfService=\"ngModel\">\r\n            </div>                 -->\r\n            <div class=\"report-wellness-details-otherdiagnosisvalue-s\">\r\n                <p-dropdown name=\"txtoddstatus{{diag.index}}\" id=\"txtoddstatus{{diag.index}}id\" [options]=\"statusList\" [(ngModel)]=\"diag.status\" (onChange)=\"onChange($event)\">\r\n                </p-dropdown>\r\n            </div>\r\n            <div class=\"report-wellness-details-otherdiagnosisvalue-r\">\r\n                <span class=\"pull-right text-danger\" (click)=\"removeDiagnosis(diag)\"><i class=\"fa fa-times\"></i></span>\r\n            </div>            \r\n        </div>      \r\n    </div> \r\n    <div class=\"report-wellness-details-otherdiagnosticadd\">\r\n        <div class=\"dashed_wrapper\">\r\n            <a href=\"javascript:void(0)\" class=\"dashed_hyperlink\" (click)=\"onAddDiagnostic()\">\r\n                <div class=\"dashed_button\">\r\n                    Add Diagnosis &nbsp; <span class=\"dashed_span\">&plus;</span>\r\n                </div>\r\n            </a>\r\n        </div>\r\n    </div>        \r\n    <div class=\"report-wellness-details-preventivehealthaclbl\">\r\n        Additional Comment\r\n    </div>     \r\n    <div class=\"report-wellness-details-preventivehealthacvalue\">\r\n        <textarea class=\"form-control\" type=\"text\"required=\"false\"  name=\"txtacname\" id=\"txtacid\" [(ngModel)]=\"additionalComments\" maxlength=\"500\" rows=\"2\" cols=\"89\"></textarea>\r\n        <div class=\"alert-error\" *ngIf=\"additionalComments !== null && additionalComments.length > 500\">\r\n            Must have 500 max character limit.\r\n        </div>\r\n        <div class=\"report-wellness-details-comments\">\r\n            <span class=\"pull-left\" *ngIf=\"additionalComments !== null\">{{additionalComments.length}} / 500 characters</span>\r\n        </div>\r\n    </div>    \r\n    <add-diagnosis-dialog [existingDiagnosticCodes]=\"wellnessDetails?.otherDiagnosis\" (onDiagnosisAdded)=\"diagnosisAdded($event)\" (onDiagnosisCancel)=\"diagnosisCancelled()\" *ngIf=\"showAddDiagnosis\"></add-diagnosis-dialog>\r\n</form>","import { HttpEventType } from '@angular/common/http';\r\nimport { Component, OnInit, OnDestroy, ViewChild, Input, Output, EventEmitter, NgModule, VERSION, AfterViewInit } from '@angular/core';\r\nimport { BusyService } from '@caloptima/portal-foundation';\r\nimport { FileUpload } from 'primeng/fileupload';\r\nimport { FileService } from 'src/app/services/file.service';\r\nimport { MemberAWPStatus } from 'src/app/services/models/awp-detail';\r\nimport { ReportMemberDetails } from 'src/app/services/models/reportmemberdetails';\r\nimport { WellnessSearchData } from 'src/app/services/models/wellness-attachment';\r\nimport { UiUtility } from 'src/app/utils/ui-utility';\r\nimport { saveAs } from 'file-saver';\r\n\r\n@Component({\r\n  selector: 'report-wellness-attachments',\r\n  templateUrl: './report-wellness-attachments.component.html',\r\n  styleUrls: ['./report-wellness-attachments.component.scss']\r\n})\r\nexport class ReportWellnessAttachmentsComponent implements OnInit, OnDestroy {\r\n  \r\n  @Input() selectedMemberAWPStatus: MemberAWPStatus;  \r\n  @Input() selectedMember: ReportMemberDetails;  \r\n  @Input() wellnessFileList: WellnessSearchData[];\r\n  @Output() onFileAdded = new EventEmitter<any[]>();\r\n  @Output() onFileRemoved = new EventEmitter<any[]>();\r\n  @ViewChild('fileUpload2') fileUpload2: FileUpload;\r\n  \r\n  public attachmentProgress: number = null;\r\n  public attachments2: any[] = [];\r\n  public hasUploadError2: boolean;\r\n  public maxUploadFilesSupported2 = 5;\r\n  private totalFilesSize: number = 100000000;\r\n  private maxFileNameLength = 128;\r\n  public attachmentError: boolean = false;\r\n  \r\n  \r\n  constructor(\r\n    private busyService: BusyService,\r\n    private fileService: FileService\r\n    ) \r\n  {\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n  }\r\n\r\n\r\n  ngOnDestroy() {    \r\n  }\r\n\r\n  public setAttachments(attachments: any[]) {\r\n    this.attachments2 = attachments;\r\n    setTimeout(()=>{\r\n      if(this.fileUpload2)\r\n        this.fileUpload2.files = this.attachments2;\r\n    },1000);\r\n  }\r\n\r\n  public onSelect(event)  {\r\n    let totalSize = 0;\r\n    let filesRemove = [];\r\n    let hasUploadError: boolean = false;\r\n    let validate = false;\r\n    let index = 0;\r\n    let validFiles = 0;\r\n    let removeOnError = false;\r\n    let addedFiles: File[] = [];\r\n    let moreThanMaxfiles = false;  \r\n\r\n    for (let file of this.fileUpload2.files) {\r\n      validate = true;\r\n      removeOnError = true;      \r\n\r\n      if (this.findDuplicateInCurrentList(file)) {\r\n        this.fileUpload2.msgs.push({ detail: 'Duplicate file', severity: \"error\", summary: file.name });\r\n        validate = false;\r\n      }\r\n\r\n      if (validate && this.wellnessFileList.find(x=>x.originalFileName.trim().toUpperCase() === file.name.trim().toUpperCase() && x.isWellnessForm)) {\r\n        this.fileUpload2.msgs.push({ detail: 'Supporting document file name cannot be same as Wellness form file name.', severity: \"error\", summary: file.name });\r\n        validate = false;\r\n      }      \r\n\r\n      if(validate && addedFiles.find(x=>this.getFileName(x.name).trim().toUpperCase() === this.getFileName(file.name).trim().toUpperCase())) {\r\n        this.fileUpload2.msgs.push({ detail: 'Duplicate file', severity: \"error\", summary: file.name });\r\n        validate = false;\r\n        removeOnError = false;\r\n      }\r\n\r\n      if (validate && file.name.length > this.maxFileNameLength) {\r\n        this.fileUpload2.msgs.push({ detail: 'File name is too long, cannot exceed ' + this.maxFileNameLength + ' chars', severity: \"error\", summary: file.name })\r\n        validate = false;\r\n      }\r\n\r\n      if (validate && /[>:\"?*`[\\]\\\\#&]/g.test(file.name)) {\r\n        this.fileUpload2.msgs.push({ detail: 'File name cannot contain special characters - >:\"/\\|?*&#', severity: \"error\", summary: file.name })\r\n        validate = false;\r\n      }      \r\n\r\n      if(validate && (totalSize + file.size) > this.totalFilesSize){\r\n        this.fileUpload2.msgs.push({ detail: '', severity: \"error\", summary: 'Cannot upload files, total size cannot exceed 100 MB' });\r\n        validate = false; \r\n      }\r\n\r\n      if(validate && (validFiles + 1) > this.maxUploadFilesSupported2) {\r\n        if(!moreThanMaxfiles) {\r\n          this.fileUpload2.msgs.push({ detail: '', severity: \"error\", summary: 'Cannot upload more than ' + this.maxUploadFilesSupported2 + ' files' });\r\n        }\r\n                \r\n        validate = false;\r\n        moreThanMaxfiles = true;\r\n      }\r\n\r\n      if (validate) {\r\n        totalSize = (totalSize + file.size);\r\n        validFiles++;\r\n        addedFiles.push(file);\r\n      }\r\n      else {\r\n        if(removeOnError){\r\n          filesRemove.push(index);\r\n        }\r\n        \r\n        hasUploadError = true;\r\n      }\r\n\r\n      index++;\r\n    }\r\n\r\n    for (let i = filesRemove.length - 1; i >= 0; i--) {\r\n      this.fileUpload2.remove(event, filesRemove[i]);\r\n    }    \r\n\r\n    if (!hasUploadError && this.fileUpload2.files.length > 0) {\r\n      this.fileUpload2.msgs.push({ detail: '', severity: \"success\", summary: 'Success!  Your file(s) loaded successfully.' });\r\n    }\r\n\r\n    this.attachments2 = [...this.fileUpload2.files];    \r\n\r\n    this.onFileAdded.emit(this.attachments2);\r\n  }\r\n\r\n  public get enableUpload(): boolean {\r\n    /*\r\n    let currentYear: Date = new Date();\r\n    let returnValue:boolean = true;\r\n    \r\n    if(this.selectedMemberAWPStatus && this.selectedMemberAWPStatus.period < currentYear.getFullYear() - 1) {\r\n      returnValue = false;\r\n    }\r\n    else if(this.selectedMemberAWPStatus && this.selectedMemberAWPStatus.period == currentYear.getFullYear() - 1 && currentYear.getMonth() > 0) {\r\n      returnValue = false;\r\n    }\r\n    \r\n    return returnValue;\r\n    */\r\n    return true;\r\n  }\r\n\r\n  public onRemove2(event: Event, file: any) {\r\n    const index: number = this.attachments2.indexOf(file);\r\n    this.fileUpload2.remove(event, index);\r\n    this.attachments2 = [...this.fileUpload2.files];\r\n    this.hasUploadError2 = false;\r\n\r\n    this.onFileRemoved.emit(this.attachments2);\r\n  }\r\n\r\n  public fileUploadDateTime(fileName: string) : string {\r\n    var item = this.wellnessFileList.find(x=>x.originalFileName.trim().toUpperCase() === fileName.trim().toUpperCase());\r\n    return (item && item.created) ? item.created.toString() : \"\";\r\n  }\r\n\r\n  private findDuplicateInCurrentList(newFile): boolean {\r\n\r\n    let newFileName:string = this.getFileName(newFile.name);\r\n\r\n    var item = this.attachments2.find(x=>this.getFileName(x.name).trim().toUpperCase() === newFileName.trim().toUpperCase());\r\n    if(item && item != newFile) {      \r\n      return true;\r\n    }\r\n    else{\r\n      return false;\r\n    }\r\n  }\r\n\r\n  private getFileName(fileName: string): string {\r\n    return fileName;\r\n  }\r\n\r\n  public doesExists(fileName:string): boolean {\r\n    var temp = this.wellnessFileList.find(x=>this.getFileName(x.originalFileName).trim().toUpperCase() === this.getFileName(fileName).trim().toUpperCase())\r\n    return temp ? true : false;\r\n  }\r\n\r\n  public fileSize(originalFileName:string): string {\r\n\r\n    var item = this.wellnessFileList.find(x=> x.originalFileName.trim().toUpperCase() === originalFileName.trim().toUpperCase());\r\n    if(item) {\r\n      return this.formatSize(item.fileSize);\r\n    }\r\n    else {\r\n      var item1 = this.attachments2.find(x=>x.name.trim().toUpperCase() === originalFileName.trim().toUpperCase());\r\n\r\n      if(!item1)\r\n        item1 = this.attachments2.find(x=>x.name.trim().toUpperCase() === originalFileName.trim().toUpperCase());    \r\n\r\n      if(item1)\r\n        return this.formatSize(item1.size);\r\n    }\r\n\r\n    return \"\";\r\n  }\r\n\r\n  public formatSize(bytes) : string {\r\n    if (bytes == 0) {\r\n        return '0 B';\r\n    }\r\n    var k = 1000,\r\n        dm = 1,\r\n        sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\r\n        i = Math.floor(Math.log(bytes) / Math.log(k));\r\n    return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n  };\r\n\r\n  public fileType(name: string) : string {\r\n    let fileType = name.split('.').pop().toLowerCase();\r\n\r\n    if (['jpg', 'jpeg', 'png', 'bmp', 'tif'].indexOf(fileType) > -1) {\r\n        return 'img';\r\n    }\r\n    else if (['doc', 'docx'].indexOf(fileType) > -1) {\r\n        return 'docx';\r\n    }\r\n    else if (['csv', 'xls', 'xlsx'].indexOf(fileType) > -1) {\r\n        return 'csv';\r\n    }\r\n    else if (['htm', 'xps', 'rtf', 'html', 'msg', 'txt'].indexOf(fileType) > -1) {\r\n        return 'file';\r\n    }\r\n    else if (fileType === 'pdf') {\r\n        return 'pdf';\r\n    }\r\n    else {\r\n        return '';\r\n    }\r\n  }\r\n\r\n  public onDownload(filename:string) {\r\n    var temp = this.wellnessFileList.find(x=>x.originalFileName.trim().toUpperCase() == filename.trim().toUpperCase())\r\n    if(temp){\r\n      this.fileService.getWellnessAttachmentFile(temp.wellnessAttachmentID, temp.originalFileName).subscribe(result =>{\r\n        const bytesArray = UiUtility.convertBase64ToArrayBuffer(result.fileStreamData);\r\n        this.saveAsFile(bytesArray, result.originalFileName, result.fileContentType);\r\n      });\r\n    }\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n}\r\n","<div>\r\n    <div>\r\n        Do you have any supporting documents? Acceptable documents include *.pdf, *.docx, *.xlsx, and images files (5 items total)\r\n    </div>            \r\n    <div>\r\n        <p-fileUpload #fileUpload2 class=\"prime-file-upload\" chooseLabel=\"Choose File\"\r\n        (onSelect)=\"onSelect($event)\"\r\n        multiple=\"multiple\"\r\n        accept=\".pdf,.jpg,.jpeg,.png,.doc,.docx,.txt,.csv,.xls,.xlsx,.bmp,.tif,.xps,.rtf,.msg\"\r\n        maxFileSize=\"25000000\"\r\n        fileLimit=\"{{maxUploadFilesSupported2}}\"\r\n        [disabled]=\"!enableUpload\"\r\n        [showUploadButton]=\"false\"\r\n        [showCancelButton]=\"false\">        \r\n        <ng-template pTemplate=\"content\">\r\n            <div *ngIf=\"attachments2.length === 0\">\r\n                <div class=\"referral-submission-attach-summary\">\r\n                    <div class=\"referral-submission-attach-summary-icon\">\r\n                        <span><i class=\"fa fa-cloud-upload\"></i></span>\r\n                    </div>\r\n                    <div class=\"referral-submission-attach-summary-content\">\r\n                        There are 0 supporting documents for this member.\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <ul *ngIf=\"attachments2.length\" class=\"report-wellness-attach-list\">\r\n                <li *ngFor=\"let file of attachments2\">\r\n                    <div [ngSwitch]=\"fileType(file.name)\" style=\"display: inline;\">\r\n                        <div *ngSwitchCase=\"'pdf'\" class=\"file-type\">\r\n                            <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-pdf-o\"></i></span>\r\n                        </div>\r\n                        <div *ngSwitchCase=\"'docx'\" class=\"file-type\">\r\n                            <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-word-o\"></i></span>\r\n                        </div>\r\n                        <div *ngSwitchCase=\"'csv'\" class=\"file-type\">\r\n                            <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-excel-o\"></i></span>\r\n                        </div>\r\n                        <div *ngSwitchCase=\"'file'\" class=\"file-type\">\r\n                            <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa fa-file-text-o\"></i></span>\r\n                        </div>\r\n                        <div *ngSwitchCase=\"'img'\" class=\"file-type\">\r\n                            <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-image-o\"></i></span>\r\n                        </div>\r\n                        <div *ngSwitchDefault class=\"file-type\">\r\n                            <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa fa-file-text-o\"></i></span>\r\n                        </div>\r\n                    </div>\r\n                    <div *ngIf=\"doesExists(file.name)\" class=\"file-name\">\r\n                        <a href='javascript:void(0);' (click)=\"onDownload(file.name)\">{{file.name}}</a>\r\n                    </div>\r\n                    <div *ngIf=\"!doesExists(file.name)\" class=\"file-name\">\r\n                        {{file.name}}\r\n                    </div>                \r\n                    <div class=\"file-size\">\r\n                        | {{fileSize(file.name)}}\r\n                    </div>\r\n                    <div class=\"file-uploaddate\">\r\n                        | {{fileUploadDateTime(file.name) | date:'yyyy-MM-dd hh:mm a'}}\r\n                    </div>                    \r\n                    <div *ngIf=\"!doesExists(file.name)\" class=\"file-action\">\r\n                        <button type=\"button\" icon=\"fa fa-times\" pButton (click)=\"onRemove2(event, file)\"></button>\r\n                    </div>\r\n                </li>\r\n            </ul>\r\n        </ng-template>\r\n        </p-fileUpload>        \r\n        <div class=\"report-wellness-attach-body-footer\">\r\n            Upload up to {{maxUploadFilesSupported2}} files. Max file size 25MB.\r\n        </div>\r\n        <div class=\"report-wellness-attach-body-footer\" *ngIf=\"attachmentError\">\r\n            <app-alert-danger\r\n                [subjectMessage]=\"''\"\r\n                [contentMessage]=\"'Error in submitting annual wellness files. Please try to re-submit.'\">\r\n            </app-alert-danger>\r\n        </div>       \r\n    </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConsoleLogger } from '@microsoft/signalr/dist/esm/Utils';\r\nimport { wellnessSurvey } from 'src/app/services/models/wellnessSurvey';\r\n\r\n@Component({\r\n  selector: 'report-wellness-survey',\r\n  templateUrl: './report-wellness-survey.component.html',\r\n  styleUrls: ['./report-wellness-survey.component.scss']\r\n})\r\nexport class ReportWellnessSurveyComponent implements OnInit {\r\n  @Input() wellnessSurveys: wellnessSurvey[] = [];\r\n  @Output() onItemChange = new EventEmitter<any[]>();\r\n\r\n  constructor() {\r\n\r\n  }\r\n\r\n  ngOnInit() {\r\n   \r\n  }\r\n\r\n  public optionList(item: wellnessSurvey): string[] {\r\n    return item.options;\r\n  }\r\n\r\n  public checkvalue($event, wellnessSurvey:wellnessSurvey){\r\n  \r\n    wellnessSurvey.answer = \"\";\r\n    $event.checked.forEach(x=>{\r\n      wellnessSurvey.answer += x + \"|\";\r\n    });\r\n\r\n    if(wellnessSurvey.answer.trim().toUpperCase().includes(\"NONE OF THE ABOVE\")){\r\n      wellnessSurvey.answer = \"None of the above\";\r\n      wellnessSurvey.checkedAnswer = [];\r\n      wellnessSurvey.checkedAnswer.push(\"None of the above\");\r\n    }\r\n\r\n    if(wellnessSurvey.answer.endsWith(\"|\"))\r\n      wellnessSurvey.answer = wellnessSurvey.answer.slice(0, wellnessSurvey.answer.length-1);\r\n\r\n    this.onItemChange.emit();\r\n  }\r\n\r\n  public onChangeType(type, event) {\r\n    this.onItemChange.emit();\r\n  }    \r\n}\r\n\r\n\r\n","<div class=\"wellness-survey\">\r\n    <div class=\"wellness-survey-header\">\r\n        <h1>Social Determinants of Health Questionnaire</h1>\r\n    </div>\r\n    <div class=\"wellness-survey-table\">\r\n        <div class=\"wellness-survey-row\" *ngFor=\"let wellnessSurvey of wellnessSurveys\">\r\n            <div class=\"wellness-survey-row-question\">\r\n                <b>{{wellnessSurvey.question}}</b>\r\n            </div>\r\n            <div class=\"wellness-survey-row-answer\">\r\n                <div *ngIf=\"wellnessSurvey.type === 'R'\">\r\n                    <div *ngIf=\"wellnessSurvey.align === 'H'\">\r\n                        <span *ngFor=\"let item of wellnessSurvey.options\">\r\n                            <p-radioButton \r\n                                name=\"answer{{wellnessSurvey.id}}radio\" \r\n                                id=\"answer{{wellnessSurvey.id}}radio\"\r\n                                value=\"{{item}}\" \r\n                                label=\"{{item}}\"\r\n                                (onClick)=\"onChangeType(type,$event)\"\r\n                                [(ngModel)]=\"wellnessSurvey.answer\">\r\n                            </p-radioButton>\r\n                        </span>\r\n                    </div>\r\n                    <div *ngIf=\"wellnessSurvey.align === 'V'\">\r\n                        <div *ngFor=\"let item of wellnessSurvey.options\">\r\n                            <p-radioButton \r\n                                name=\"answer{{wellnessSurvey.id}}radio\" \r\n                                id=\"answer{{wellnessSurvey.id}}radio\"\r\n                                value=\"{{item}}\" \r\n                                label=\"{{item}}\"\r\n                                (onClick)=\"onChangeType(type,$event)\"\r\n                                [(ngModel)]=\"wellnessSurvey.answer\">\r\n                            </p-radioButton>\r\n                        </div>        \r\n                    </div>            \r\n                </div>\r\n                <div *ngIf=\"wellnessSurvey.type === 'C'\">\r\n                    <div *ngIf=\"wellnessSurvey.align === 'H'\">\r\n                        <span *ngFor=\"let item of wellnessSurvey.options\">\r\n                            <p-checkbox \r\n                                name=\"answer{{wellnessSurvey.id}}check\"\r\n                                id=\"answer{{wellnessSurvey.id}}check\"                   \r\n                                value=\"{{item}}\"\r\n                                label=\"{{item}}\"\r\n                                [(ngModel)]=\"wellnessSurvey.checkedAnswer\"\r\n                                (onChange)=\"checkvalue($event, wellnessSurvey)\">\r\n                            </p-checkbox>\r\n                        </span>\r\n                    </div>\r\n                    <div *ngIf=\"wellnessSurvey.align === 'V'\">\r\n                        <div *ngFor=\"let item of wellnessSurvey.options\">\r\n                            <p-checkbox \r\n                                name=\"answer{{wellnessSurvey.id}}check\"\r\n                                id=\"answer{{wellnessSurvey.id}}check\"                   \r\n                                value=\"{{item}}\"\r\n                                label=\"{{item}}\"\r\n                                [(ngModel)]=\"wellnessSurvey.checkedAnswer\"\r\n                                (onChange)=\"checkvalue($event, wellnessSurvey)\">\r\n                            </p-checkbox>\r\n                        </div>\r\n                    </div>                \r\n                </div>\r\n            </div>        \r\n        </div>\r\n    </div>\r\n</div>","import { Component, OnInit, OnDestroy, Output, EventEmitter, ViewChild, Input } from '@angular/core';\r\nimport { CollectionService } from '../../../../services/collection.service';\r\nimport { FileUpload } from 'primeng/fileupload';\r\nimport { WellnessDetails, WellnessDetails2Extend } from 'src/app/services/models/wellness-details';\r\nimport { MemberAWPStatus } from 'src/app/services/models/awp-detail';\r\nimport { BusyService } from '@caloptima/portal-foundation';\r\nimport { HttpEventType } from '@angular/common/http';\r\nimport { FileService } from '../../../../services/file.service';\r\nimport { WellnessSearchData } from '../../../../services/models/wellness-attachment';\r\nimport { UiUtility } from '../../../../utils/ui-utility';\r\nimport { saveAs } from 'file-saver';\r\nimport { ReportMemberDetails } from 'src/app/services/models/reportmemberdetails';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\n\r\n@Component({\r\n  selector: 'report-wellness-attachment-dialog',\r\n  templateUrl: './report-wellness-attachment-dialog.component.html',\r\n  styleUrls: ['./report-wellness-attachment-dialog.component.scss']\r\n})\r\nexport class ReportWellnessAttachmentDialogComponent implements OnInit, OnDestroy {\r\n\r\n  public attachments1: any[] = [];\r\n  public attachments2: any[] = [];\r\n  public maxUploadFilesSupported1 = 5;\r\n  public maxUploadFilesSupported2 = 5;\r\n  public hasUploadError1: boolean;\r\n  public hasUploadError2: boolean;\r\n  public currentView = 1;\r\n  private totalFilesSize: number = 100000000;\r\n  private maxFileNameLength = 128;\r\n  public attachmentProgress: number = null;\r\n  public attachmentError: boolean = false;\r\n  public editComment: boolean = true;\r\n  \r\n  @Input() public selectedMemberAWPStatus: MemberAWPStatus;  \r\n  @Input() public selectedMember:ReportMemberDetails;\r\n  @Output() cancelWellness = new EventEmitter();\r\n  @Output() applyWellness = new EventEmitter();\r\n  private wellnessFileList: WellnessSearchData[];\r\n  @ViewChild('fileUpload1') fileUpload1: FileUpload;\r\n  @ViewChild('fileUpload2') fileUpload2: FileUpload;\r\n  \r\n  constructor(\r\n    private collectionService: CollectionService,\r\n    private busyService: BusyService,\r\n    private fileService: FileService,\r\n    private reportService: ReportsService) {\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    this.fileService.getWellnessAttachment(this.selectedMember.cin, this.selectedMember.providerId, this.selectedMember.providerTaxId, this.selectedMemberAWPStatus.period).subscribe(results=>{\r\n\r\n      this.wellnessFileList = results;\r\n\r\n      results.forEach(x=>{\r\n        let content = \"1\";\r\n        let data = new Blob([content], { type: 'application/txt' });\r\n        let arrayOfBlob:Blob[] = [];\r\n        arrayOfBlob.push(data);\r\n        let tempFile = new File(arrayOfBlob, x.originalFileName);\r\n\r\n        if(x.isWellnessForm)\r\n          this.attachments1.push(tempFile);\r\n        else\r\n          this.attachments2.push(tempFile);\r\n      });\r\n\r\n      if(this.selectedMemberAWPStatus && this.selectedMemberAWPStatus.notes && this.selectedMemberAWPStatus.notes.length > 0) {\r\n          this.editComment = false;\r\n      }\r\n      \r\n      if(this.fileUpload1)\r\n        this.fileUpload1.files = this.attachments1;\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {    \r\n  }\r\n\r\n  ngAfterViewInit() {\r\n  }\r\n\r\n  public get display():boolean {\r\n    return true;\r\n  }\r\n\r\n  public get caption(): string {\r\n    if(this.currentView === 1)\r\n      return \"Upload AWV Form\";\r\n    else\r\n      return \"Supporting Documents (optional)\";\r\n  }\r\n\r\n  public set display(value:boolean) {\r\n    this.onCancel();\r\n  }\r\n\r\n  public onCancel() {\r\n    this.cancelWellness.emit();\r\n  }\r\n\r\n  public onContinue() {\r\n    if(this.currentView == 1) {\r\n\r\n      this.currentView = 2;\r\n\r\n      setTimeout(() => {\r\n        if(this.fileUpload2) {\r\n          this.fileUpload2.files = this.attachments2;\r\n        }\r\n      }, 500);\r\n    }\r\n    else {\r\n\r\n      var wellnessDetails = new WellnessDetails();\r\n      wellnessDetails.grgr_ck = this.selectedMember.grgr_ck;\r\n      wellnessDetails.memberCIN = this.selectedMember.cin;\r\n      wellnessDetails.pcpId = this.selectedMember.providerId;\r\n      wellnessDetails.providerId = this.selectedMember.providerId;\r\n      wellnessDetails.pcpTIN = this.selectedMember.providerTaxId;\r\n      wellnessDetails.wellnessYear = this.selectedMemberAWPStatus.period;\r\n      wellnessDetails.notes = this.selectedMemberAWPStatus.notes;\r\n      wellnessDetails.documentId = this.selectedMemberAWPStatus.documentId;\r\n      wellnessDetails.completionDate = this.attachments1.length > 0 ? new Date() : null;\r\n      this.selectedMemberAWPStatus.status = this.attachments1.length > 0 ? \"Completed\" : this.selectedMemberAWPStatus.status;\r\n\r\n      this.reportService.ApplyWellness(wellnessDetails).subscribe(results=> {\r\n        var formData:FormData = this.getFormData();\r\n        if(formData){\r\n          this.fileService.uploadWellnessAttachments(formData).subscribe(x=>{\r\n            this.busyService.emit(false);\r\n            this.applyWellness.emit(); \r\n          },\r\n          (error)=>{\r\n            this.busyService.emit(false);  \r\n          });\r\n        }\r\n        else {\r\n          this.busyService.emit(false);\r\n          this.applyWellness.emit();           \r\n        }\r\n      },\r\n      (error)=>{\r\n        this.busyService.emit(false);\r\n      });\r\n    }\r\n  }\r\n\r\n  public get submitText() {\r\n    if(this.currentView === 1) {\r\n      return \"Continue\";\r\n    }\r\n    else {\r\n      return \"Submit\";\r\n    } \r\n  }\r\n\r\n  public onSelect1(event) {\r\n    this.hasUploadError1 = this.onSelect(event, this.fileUpload1, this.attachments1, this.maxUploadFilesSupported1);\r\n    this.attachments1 = [...this.fileUpload1.files];\r\n  }\r\n\r\n  public onSelect2(event) {\r\n    this.hasUploadError2 = this.onSelect(event, this.fileUpload2, this.attachments1, this.maxUploadFilesSupported2);\r\n    this.attachments2 = [...this.fileUpload2.files];\r\n  }\r\n\r\n  public onDownload(filename:string) {\r\n    var temp = this.wellnessFileList.find(x=>x.originalFileName.trim().toUpperCase() == filename.trim().toUpperCase())\r\n    if(temp){\r\n      this.fileService.getWellnessAttachmentFile(temp.wellnessAttachmentID, temp.originalFileName).subscribe(result =>{\r\n        const bytesArray = UiUtility.convertBase64ToArrayBuffer(result.fileStreamData);\r\n        this.saveAsFile(bytesArray, result.originalFileName, result.fileContentType);\r\n      });\r\n    }\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public onSelect(event, fileUpload: FileUpload, attachments:any[], maxUploadFilesSupported: number) : boolean {\r\n    let totalSize = 0;\r\n    let filesRemove = [];\r\n    let hasUploadError: boolean = false;\r\n    let validate = false;\r\n    let index = 0;\r\n    let validFiles = 0;\r\n    let removeOnError = false;\r\n    let addedFiles: File[] = [];\r\n    let duplicateAdded: boolean = false;\r\n    let moreThanMaxfiles = false;\r\n    \r\n    let newFiles: File[] = Array.from(event.files);\r\n\r\n    for (let file of fileUpload.files) {\r\n\r\n      validate = true;\r\n      removeOnError = true;      \r\n\r\n      if (this.findDuplicateInCurrentList(file)) {\r\n        fileUpload.msgs.push({ detail: 'Duplicate file', severity: \"error\", summary: file.name });\r\n        validate = false;\r\n        duplicateAdded = true;\r\n      }\r\n\r\n      if (validate && this.findDuplicateInOtherList(file)) {\r\n        fileUpload.msgs.push({ detail: 'Duplicate file', severity: \"error\", summary: file.name });\r\n        validate = false;\r\n        duplicateAdded = true;\r\n      }\r\n\r\n      if(validate && addedFiles.find(x=>this.getFileName(x.name).trim().toUpperCase() === this.getFileName(file.name).trim().toUpperCase())) {\r\n        fileUpload.msgs.push({ detail: 'Duplicate file', severity: \"error\", summary: file.name });\r\n        validate = false;\r\n        removeOnError = false;\r\n        duplicateAdded = true;\r\n      }\r\n\r\n      if (validate && file.name.length > this.maxFileNameLength) {\r\n        fileUpload.msgs.push({ detail: 'File name is too long, cannot exceed ' + this.maxFileNameLength + ' chars', severity: \"error\", summary: file.name })\r\n        validate = false;\r\n      }\r\n\r\n      if (validate && /[>:\"?*`[\\]\\\\#&]/g.test(file.name)) {\r\n        fileUpload.msgs.push({ detail: 'File name cannot contain special characters - >:\"/\\|?*&#', severity: \"error\", summary: file.name })\r\n        validate = false;\r\n      }      \r\n\r\n      if(validate && (totalSize + file.size) > this.totalFilesSize){\r\n        fileUpload.msgs.push({ detail: '', severity: \"error\", summary: 'Cannot upload files, total size cannot exceed 100 MB' });\r\n        validate = false; \r\n      }\r\n\r\n      if(validate && (validFiles + 1) > maxUploadFilesSupported) {\r\n        if(!moreThanMaxfiles) {\r\n          fileUpload.msgs.push({ detail: '', severity: \"error\", summary: 'Cannot upload more than ' + maxUploadFilesSupported + ' files' });\r\n        }\r\n                \r\n        validate = false;\r\n        moreThanMaxfiles = true;\r\n      }\r\n\r\n      if (validate) {\r\n        totalSize = (totalSize + file.size);\r\n        validFiles++;\r\n        addedFiles.push(file);\r\n      }\r\n      else {\r\n        if(removeOnError){\r\n          filesRemove.push(index);\r\n        }\r\n        \r\n        hasUploadError = true;\r\n      }\r\n\r\n      index++;\r\n    }\r\n\r\n    for (let i = filesRemove.length - 1; i >= 0; i--) {\r\n      fileUpload.remove(event, filesRemove[i]);\r\n    }    \r\n\r\n    if (!hasUploadError && fileUpload.files.length > 0) {\r\n      fileUpload.msgs.push({ detail: '', severity: \"success\", summary: 'Success!  Your file(s) loaded successfully.' });\r\n    }\r\n\r\n    return hasUploadError;\r\n  }\r\n\r\n  public onRemove1(event: Event, file: any) {\r\n    const index: number = this.attachments1.indexOf(file);\r\n    this.fileUpload1.remove(event, index);\r\n    this.attachments1 = [...this.fileUpload1.files];\r\n    this.hasUploadError1 = false;\r\n  }\r\n\r\n  public onRemove2(event: Event, file: any) {\r\n    const index: number = this.attachments2.indexOf(file);\r\n    this.fileUpload2.remove(event, index);\r\n    this.attachments2 = [...this.fileUpload2.files];\r\n    this.hasUploadError2 = false;\r\n  }\r\n\r\n  private findDuplicate(file: any, newFiles: any[]): boolean {\r\n\r\n    return Array.from(newFiles).filter((newFile) => {\r\n      let newFileName:string = this.getFileName(newFile.name);\r\n      let fileName:string = this.getFileName(file.name);\r\n      return newFileName.trim().toUpperCase() === fileName.trim().toUpperCase();\r\n    }).length > 0;\r\n  }\r\n\r\n  private findDuplicateInOtherList(newFile): boolean {\r\n\r\n      let newFileName:string = this.getFileName(newFile.name);\r\n\r\n      let attachments = this.currentView == 1 ? this.attachments2 : this.attachments1;\r\n\r\n      var item = attachments.find(x=>this.getFileName(x.name).trim().toUpperCase() === newFileName.trim().toUpperCase());\r\n      if(item) {\r\n        return true;\r\n      }\r\n      else{\r\n        return false;\r\n      }\r\n  }\r\n\r\n  private findDuplicateInCurrentList(newFile): boolean {\r\n\r\n    let newFileName:string = this.getFileName(newFile.name);\r\n\r\n    let attachments = this.currentView == 1 ? this.attachments1 : this.attachments2;\r\n\r\n    var item = attachments.find(x=>this.getFileName(x.name).trim().toUpperCase() === newFileName.trim().toUpperCase());\r\n    if(item && item != newFile) {      \r\n      return true;\r\n    }\r\n    else{\r\n      return false;\r\n    }\r\n}\r\n\r\n  private getFileName(fileName: string): string {\r\n    //return fileName.replace(' ', '+');\r\n    return fileName;\r\n  }\r\n\r\n  public fileSize(originalFileName:string): string {\r\n\r\n    var item = this.wellnessFileList.find(x=> x.originalFileName.trim().toUpperCase() === originalFileName.trim().toUpperCase());\r\n    if(item) {\r\n      return this.formatSize(item.fileSize);\r\n    }\r\n    else {\r\n      var item1 = this.attachments1.find(x=>x.name.trim().toUpperCase() === originalFileName.trim().toUpperCase());\r\n\r\n      if(!item1)\r\n        item1 = this.attachments2.find(x=>x.name.trim().toUpperCase() === originalFileName.trim().toUpperCase());    \r\n\r\n      if(item1)\r\n        return this.formatSize(item1.size);\r\n    }\r\n\r\n    return \"\";\r\n  }\r\n\r\n  public formatSize(bytes) : string {\r\n    if (bytes == 0) {\r\n        return '0 B';\r\n    }\r\n    var k = 1000,\r\n        dm = 1,\r\n        sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\r\n        i = Math.floor(Math.log(bytes) / Math.log(k));\r\n    return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n  };\r\n\r\n  public fileType(name: string) : string {\r\n    let fileType = name.split('.').pop().toLowerCase();\r\n\r\n    if (['jpg', 'jpeg', 'png', 'bmp', 'tif'].indexOf(fileType) > -1) {\r\n        return 'img';\r\n    }\r\n    else if (['doc', 'docx'].indexOf(fileType) > -1) {\r\n        return 'docx';\r\n    }\r\n    else if (['csv', 'xls', 'xlsx'].indexOf(fileType) > -1) {\r\n        return 'csv';\r\n    }\r\n    else if (['htm', 'xps', 'rtf', 'html', 'msg', 'txt'].indexOf(fileType) > -1) {\r\n        return 'file';\r\n    }\r\n    else if (fileType === 'pdf') {\r\n        return 'pdf';\r\n    }\r\n    else {\r\n        return '';\r\n    }\r\n  }\r\n\r\n  public doesExists(fileName:string): boolean {\r\n    var temp = this.wellnessFileList.find(x=>this.getFileName(x.originalFileName).trim().toUpperCase() === this.getFileName(fileName).trim().toUpperCase())\r\n    return temp ? true : false;\r\n  }\r\n\r\n  public get enableSubmit(): boolean {\r\n    let currentYear: Date = new Date();\r\n    let returnValue:boolean = true;\r\n    \r\n    if(this.currentView == 1) {\r\n      returnValue = this.attachments1.length > 0 || this.attachments2.length > 0\r\n    }\r\n    else if(this.currentView == 2) {\r\n      if(this.selectedMemberAWPStatus && this.selectedMemberAWPStatus.period < currentYear.getFullYear() - 1) {\r\n        returnValue = false;\r\n      }\r\n      else if(this.selectedMemberAWPStatus && this.selectedMemberAWPStatus.period == currentYear.getFullYear() - 1 && currentYear.getMonth() > 0) {\r\n        returnValue = false;\r\n      }\r\n    }\r\n\r\n    return returnValue;\r\n  }\r\n\r\n  public get enableUpload(): boolean {\r\n    let currentYear: Date = new Date();\r\n    let returnValue:boolean = true;\r\n    \r\n    if(this.selectedMemberAWPStatus && this.selectedMemberAWPStatus.period < currentYear.getFullYear() - 1) {\r\n      returnValue = false;\r\n    }\r\n    else if(this.selectedMemberAWPStatus && this.selectedMemberAWPStatus.period == currentYear.getFullYear() - 1 && currentYear.getMonth() > 0) {\r\n      returnValue = false;\r\n    }\r\n    \r\n    return returnValue;\r\n  }\r\n\r\n  public getFormData():FormData {\r\n    this.busyService.emit(true);\r\n    let wellnessFormFiles = '';\r\n    let fileToUpload: File[] = [];\r\n    let wellnessFormAttached: boolean = false;\r\n\r\n    this.attachmentError = false;\r\n\r\n    this.attachments1.forEach(element => {\r\n      if(!this.doesExists(element.name)) {\r\n        fileToUpload.push(element);\r\n        wellnessFormFiles += this.getFileName(element.name) + \"|\";\r\n      }\r\n    });    \r\n\r\n    this.attachments2.forEach(element => {\r\n      if(!this.doesExists(element.name)) {\r\n        fileToUpload.push(element);\r\n      }\r\n    });\r\n  \r\n    if(fileToUpload.length > 0) {\r\n\r\n      const formData = new FormData();\r\n      let totalSize = 0;\r\n      Array.from(fileToUpload)\r\n        .map((file, index) => {\r\n          totalSize += file.size;\r\n          return formData.append('file' + index, file, file.name);\r\n        });\r\n  \r\n      \r\n      formData.append('memberId', this.selectedMember.cin);\r\n      formData.append('providerid', this.selectedMember.providerId);\r\n      formData.append('providertaxid', this.selectedMember.providerTaxId);\r\n      formData.append('wellnessyear', this.selectedMemberAWPStatus.period.toString());\r\n\r\n      if(wellnessFormFiles != '')\r\n        formData.append('wellnessFiles', wellnessFormFiles);\r\n      \r\n      return formData;\r\n    }\r\n\r\n    return null;\r\n  }  \r\n}\r\n","<p-dialog header=\"{{caption}}\" [(visible)]=\"display\" [modal]=\"true\" (onHide)=\"onCancel()\" width=\"800\" [draggable]=\"false\">\r\n    <div *ngIf=\"currentView === 1\">\r\n        <div>\r\n            Upload the signed document and then continue on to upload any supporting documents you may have.\r\n        </div>\r\n        <p-fileUpload #fileUpload1 class=\"prime-file-upload\" chooseLabel=\"Choose File\"\r\n            (onSelect)=\"onSelect1($event)\"\r\n            multiple=\"multiple\"\r\n            accept=\".pdf,.jpg,.jpeg,.png,.doc,.docx,.txt,.csv,.xls,.xlsx,.bmp,.tif,.xps,.rtf,.msg\"\r\n            maxFileSize=\"25000000\"\r\n            fileLimit=\"{{maxUploadFilesSupported1}}\"\r\n            [disabled]=\"!enableUpload\"\r\n            [showUploadButton]=\"false\"\r\n            [showCancelButton]=\"false\">\r\n            <ng-template pTemplate=\"content\">\r\n                <div *ngIf=\"attachments1.length === 0\">\r\n                    <div class=\"referral-submission-attach-summary\">\r\n                        <div class=\"referral-submission-attach-summary-icon\">\r\n                            <span><i class=\"fa fa-cloud-upload\"></i></span>\r\n                        </div>\r\n                        <div class=\"referral-submission-attach-summary-content\">\r\n                            There are 0 attachments for this members.\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <ul *ngIf=\"attachments1.length\" class=\"report-wellness-attach-list\">\r\n                    <li *ngFor=\"let file of attachments1\">\r\n                        <div [ngSwitch]=\"fileType(file.name)\" style=\"display: inline;\">\r\n                            <div *ngSwitchCase=\"'pdf'\" class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-pdf-o\"></i></span>\r\n                            </div>\r\n                            <div *ngSwitchCase=\"'docx'\" class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-word-o\"></i></span>\r\n                            </div>\r\n                            <div *ngSwitchCase=\"'csv'\" class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-excel-o\"></i></span>\r\n                            </div>\r\n                            <div *ngSwitchCase=\"'file'\" class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa fa-file-text-o\"></i></span>\r\n                            </div>\r\n                            <div *ngSwitchCase=\"'img'\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-image-o\"></i></span>\r\n                            </div>\r\n                            <div *ngSwitchDefault class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa fa-file-text-o\"></i></span>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"doesExists(file.name)\" class=\"file-name\">\r\n                            <a href='javascript:void(0);' (click)=\"onDownload(file.name)\">{{file.name}}</a>\r\n                        </div>\r\n                        <div *ngIf=\"!doesExists(file.name)\" class=\"file-name\">\r\n                            {{file.name}}\r\n                        </div>   \r\n                        <div class=\"file-size\">\r\n                            {{fileSize(file.name)}}\r\n                        </div>\r\n                        <div *ngIf=\"!doesExists(file.name)\" class=\"file-action\">\r\n                            <button type=\"button\" icon=\"fa fa-times\" pButton (click)=\"onRemove1(event, file)\"></button>\r\n                        </div>\r\n                    </li>\r\n                </ul>\r\n            </ng-template>\r\n        </p-fileUpload>  \r\n        <div *ngIf=\"editComment\">\r\n            <p><b>Notes or Comments</b></p>\r\n            <textarea id=\"txtNotes\" [(ngModel)]=\"selectedMemberAWPStatus.notes\" #notesTxt=\"ngModel\" maxlength=\"500\" rows=\"4\" cols=\"89\"></textarea>\r\n        </div>     \r\n        <div *ngIf=\"!editComment\">\r\n            <p><b>Notes or Comments</b></p>\r\n            <textarea id=\"txtNotes\" [(ngModel)]=\"selectedMemberAWPStatus.notes\" #notesTxt=\"ngModel\" maxlength=\"500\" rows=\"4\" cols=\"89\" readonly></textarea>\r\n        </div>     \r\n        <div class=\"referral-submission-attach-body-footer\">\r\n            Upload up to {{maxUploadFilesSupported1}} files. Max file size 25MB.\r\n        </div>        \r\n    </div>\r\n    <div *ngIf=\"currentView === 2\">\r\n        <div>\r\n            Do you have any supporting documents? Acceptable documents include *.pdf, *.docx, *.xlsx, and images files (5 items total)\r\n        </div>            \r\n        <p-fileUpload #fileUpload2 class=\"prime-file-upload\" chooseLabel=\"Choose File\"\r\n        (onSelect)=\"onSelect2($event)\"\r\n        multiple=\"multiple\"\r\n        accept=\".pdf,.jpg,.jpeg,.png,.doc,.docx,.txt,.csv,.xls,.xlsx,.bmp,.tif,.xps,.rtf,.msg\"\r\n        maxFileSize=\"25000000\"\r\n        fileLimit=\"{{maxUploadFilesSupported2}}\"\r\n        [disabled]=\"!enableUpload\"\r\n        [showUploadButton]=\"false\"\r\n        [showCancelButton]=\"false\">\r\n            <ng-template pTemplate=\"content\">\r\n                <div *ngIf=\"attachments2.length === 0\">\r\n                    <div class=\"referral-submission-attach-summary\">\r\n                        <div class=\"referral-submission-attach-summary-icon\">\r\n                            <span><i class=\"fa fa-cloud-upload\"></i></span>\r\n                        </div>\r\n                        <div class=\"referral-submission-attach-summary-content\">\r\n                            There are 0 supporting documents for this member.\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <ul *ngIf=\"attachments2.length\" class=\"report-wellness-attach-list\">\r\n                    <li *ngFor=\"let file of attachments2\">\r\n                        <div [ngSwitch]=\"fileType(file.name)\" style=\"display: inline;\">\r\n                            <div *ngSwitchCase=\"'pdf'\" class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-pdf-o\"></i></span>\r\n                            </div>\r\n                            <div *ngSwitchCase=\"'docx'\" class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-word-o\"></i></span>\r\n                            </div>\r\n                            <div *ngSwitchCase=\"'csv'\" class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-excel-o\"></i></span>\r\n                            </div>\r\n                            <div *ngSwitchCase=\"'file'\" class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa fa-file-text-o\"></i></span>\r\n                            </div>\r\n                            <div *ngSwitchCase=\"'img'\" class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa-file-image-o\"></i></span>\r\n                            </div>\r\n                            <div *ngSwitchDefault class=\"file-type\">\r\n                                <span class=\"report-wellness-attach-body-icon\"> <i class=\"fa fa fa-file-text-o\"></i></span>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"doesExists(file.name)\" class=\"file-name\">\r\n                            <a href='javascript:void(0);' (click)=\"onDownload(file.name)\">{{file.name}}</a>\r\n                        </div>\r\n                        <div *ngIf=\"!doesExists(file.name)\" class=\"file-name\">\r\n                            {{file.name}}\r\n                        </div>                \r\n                        <div  class=\"file-size\">\r\n                            {{fileSize(file.name)}}\r\n                        </div>\r\n                        <div *ngIf=\"!doesExists(file.name)\" class=\"file-action\">\r\n                            <button type=\"button\" icon=\"fa fa-times\" pButton (click)=\"onRemove2(event, file)\"></button>\r\n                        </div>\r\n                    </li>\r\n                </ul>\r\n            </ng-template>\r\n        </p-fileUpload>        \r\n        <div class=\"report-wellness-attach-body-footer\">\r\n            Upload up to {{maxUploadFilesSupported2}} files. Max file size 25MB.\r\n        </div>\r\n        <div class=\"report-wellness-attach-body-footer\" *ngIf=\"attachmentError\">\r\n            <app-alert-danger\r\n                [subjectMessage]=\"''\"\r\n                [contentMessage]=\"'Error in submitting annual wellness files. Please try to re-submit.'\">\r\n            </app-alert-danger>\r\n        </div>        \r\n    </div>\r\n    <p-footer>\r\n        <button type=\"button\" class=\"btn btn-primary btn-create\" [disabled]=\"!enableSubmit\" (click)=\"onContinue()\">{{submitText}}</button>\r\n        <button type=\"button\" class=\"btn btn-secondary btn-cancel\" (click)=\"onCancel()\">Cancel</button>        \r\n    </p-footer>\r\n</p-dialog>\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ProviderDetail } from '../../../services/models/provider-detail';\r\nimport { ReportType } from '../../../services/models/reportype';\r\nimport { ReportsService } from '../../../services/reports.service';\r\nimport { SessionService } from '../../../services/session.service';\r\nimport { UiUtility } from '../../../utils/ui-utility';\r\nimport { ReportsProviderSearchComponent } from '../../../app-components/reports-provider-search/reports-provider-search.component';\r\nimport { AWPMemberComponent } from '../awp-member/awp-member.component';\r\n\r\n@Component({\r\n  selector: 'app-awp-provider',\r\n  templateUrl: './awp-provider.component.html',\r\n  styleUrls: ['./awp-provider.component.scss']\r\n  // ,\r\n  // animations: [\r\n  //   trigger('showMember', [\r\n  //     state('false', style({ opacity: 1, transform: 'translateX(0%)', display: 'block' })),\r\n  //     state('true', style({ opacity: 0, transform: 'translateX(-100%)', display: 'none' })),\r\n  //     transition('false => true', animate('500ms ease-in')),\r\n  //     transition('true => false', animate('500ms ease-out'))\r\n  // ])]\r\n})\r\n\r\nexport class AWPProviderComponent implements OnInit {\r\n  public providers: ProviderDetail[] = [];\r\n  public displayedProviders: ProviderDetail[] = [];\r\n  public selectedProvider: ProviderDetail;\r\n  public totalRecords: number;\r\n  public rowsPerPage: number = 10;\r\n  public pageNumber: number = 1;\r\n  public selectedCalProviderID: string;\r\n  public animationState: string = '';\r\n  public displayMembers = false;\r\n\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n\r\n  public columns: any = [\r\n    { field: '', header: '', width: '5%', classHeader: 'provider-reports-header', classContent: 'provider-reports-content-alt1', sort: false },\r\n    { field: 'name', header: 'Name', width: '40%', classHeader: 'provider-reports-header', classContent: 'provider-reports-content', sort: true },\r\n    { field: 'taxId', header: 'TIN', width: '25%', classHeader: 'provider-reports-header-alt1', classContent: 'provider-reports-content-alt1', sort: true },\r\n    { field: 'calProviderID', header: 'Provider ID', width: '25%', classHeader: 'provider-reports-header-alt1', classContent: 'provider-reports-content-alt1', sort: true }\r\n  ];\r\n\r\n  @ViewChild('providerSearch') providerSearch: ReportsProviderSearchComponent;\r\n  @ViewChild('awpmemberComponent') awpmemberComponent: AWPMemberComponent;\r\n\r\n  constructor(\r\n    private reportsService: ReportsService,\r\n    private sessionService: SessionService\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.initialize();\r\n  }\r\n\r\n  public initialize(resetComponent = false) {\r\n    \r\n    this.sortColumn = 'name';\r\n    this.selectedCalProviderID = '';\r\n\r\n    if (resetComponent) {    \r\n      this.displayMembers = false;\r\n      this.providers = [];\r\n      this.displayedProviders = [];\r\n\r\n      setTimeout(() => {\r\n        if(this.providerSearch) {\r\n          this.providerSearch.resetSearchFilters();\r\n        }      \r\n      }, 100);\r\n    }\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      //  Do nothing.\r\n    }\r\n    else {\r\n      this.reportsService.getProvidersForReportsAWP(this.sessionService.currentPermission.providerCollectionID, ReportType.AWV).subscribe(result => {\r\n        this.providers = result;\r\n\r\n        this.pageNumber = 1;\r\n        this.onProviderSearch(null);\r\n\r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetail) {\r\n    this.selectedCalProviderID = provider.calProviderID;\r\n    this.selectedProvider = provider;\r\n    this.displayMembers = true;\r\n    setTimeout(() => {\r\n      this.awpmemberComponent.setProviderId(this.selectedProvider);  \r\n    }, (500));    \r\n  }\r\n\r\n  public backToProvider() {\r\n    this.initialize(true);\r\n  }\r\n\r\n  public onProviderSearch(search) {\r\n    this.selectedCalProviderID = '';\r\n    if (search && (search.providerName || search.providerId || search.providerTin)) {\r\n\r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n        this.reportsService.searchProvidersForReportsAWP(search.providerId, search.providerName, search.providerTin, ReportType.AWV).subscribe(result => {\r\n          this.providers = result;\r\n          this.displayedProviders = this.providers.slice();\r\n        });\r\n      }\r\n      else {\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerTin)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.taxId.toLowerCase().indexOf(search.providerTin.trim().toLowerCase()) >= 0);\r\n        }        \r\n      }\r\n    }\r\n    else {\r\n      this.displayedProviders = this.providers.slice();\r\n    }\r\n    //this.setPagedData();\r\n  }\r\n\r\n  private setPagedData(page: number = 0) {\r\n    if (page === 0) {\r\n      this.pageNumber = 1;\r\n    }\r\n    this.totalRecords = this.displayedProviders.length;\r\n    const start = (this.pageNumber - 1) * this.rowsPerPage;\r\n    let end = start + this.rowsPerPage;\r\n    if (end > this.displayedProviders.length) {\r\n      end = this.displayedProviders.length;\r\n    }\r\n\r\n    this.displayedProviders = this.displayedProviders.slice(start, end);\r\n  }\r\n}\r\n","<div class=\"awp-provider-container\">\r\n  <!--<div class=\"awp-provider-provider-container\" *ngIf='!displayMembers' [@showMember]=\"displayMembers\">-->\r\n  <div class=\"awp-provider-provider-container\" *ngIf='!displayMembers'>\r\n    <div class=\"awp-provider-provider-search\">\r\n      <app-reports-provider-search (onProviderSearch)=\"onProviderSearch($event)\" #providerSearch></app-reports-provider-search>\r\n    </div>\r\n    <div class=\"awp-provider-provider-results\">\r\n      <p-table\r\n          [value]=\"displayedProviders\"\r\n          [paginator]=\"true\"\r\n          [rows]=\"10\"\r\n          [scrollable]=\"true\"\r\n          scrollHeight=\"450px\"\r\n          selectionMode=\"single\"\r\n          (onSort)=\"onSort($event)\"\r\n          [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n          >\r\n        <ng-template pTemplate=\"header\">\r\n          <tr>\r\n            <th pSortableColumn=\"{{col.field}}\" width=\"{{col.width}}\" class=\"{{col.classHeader}}\" *ngFor=\"let col of columns\">\r\n              <span class=\"p-column-title\">{{col.header}}</span>\r\n              <div *ngIf=\"col.sort\" class=\"{{sortClass(col.field)}}\">\r\n              </div>\r\n            </th>\r\n          </tr>\r\n        </ng-template>\r\n        <ng-template pTemplate=\"body\" let-provider>\r\n          <tr>\r\n            <td width=\"{{col.width}}\" class=\"{{col.classContent}}\" *ngFor=\"let col of columns\">\r\n              <div *ngIf=\"col.header === ''\">\r\n                <p-radioButton name='providerid' id='{{provider.calProviderID}}' value='{{provider.calProviderID}}' [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(provider)\"></p-radioButton>\r\n              </div>\r\n              <div *ngIf=\"col.header === 'Name' || col.header === 'Provider ID' || col.header === 'TIN'\">\r\n                <div>\r\n                  <span>{{provider[col.field]}}</span>\r\n                </div>\r\n              </div>\r\n          </tr>\r\n        </ng-template>\r\n      </p-table>\r\n    </div>\r\n   </div>\r\n   <!--<div class=\"awp-provider-member-container\" *ngIf='displayMembers' [@showMember]=\"!displayMembers\">-->\r\n   <div class=\"awp-provider-member-container\" *ngIf='displayMembers'>\r\n    <div class=\"awp-provider-member-container-header\" *ngIf=\"selectedProvider\">\r\n      <button class=\"btn btn-primary btn-back\" (click)=\"backToProvider()\">\r\n        <i class=\"fa fa-arrow-left\" aria-hidden=\"true\"></i>\r\n        <span>Back</span>\r\n      </button>\r\n      <p class=\"provider-name\">{{selectedProvider.name}}</p>\r\n    </div>\r\n    <div class=\"awp-provider-member-container\">\r\n      <app-awp-member #awpmemberComponent></app-awp-member>\r\n      <!-- <app-awp-member [calProvider]='selectedProvider' #awpmemberComponent></app-awp-member> -->\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit, AfterViewInit, ViewChild, ElementRef, Output, EventEmitter } from '@angular/core';\r\nimport { UiUtility } from '../../utils/ui-utility';\r\nimport { TabView } from 'primeng/tabview';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { AWPProviderComponent } from './awp-provider/awp-provider.component';\r\nimport { AWPMemberComponent } from './awp-member/awp-member.component';\r\n\r\n@Component({\r\n  selector: 'app-reports-awp',\r\n  templateUrl: './reports-awp.component.html',\r\n  styleUrls: ['./reports-awp.component.scss']\r\n})\r\nexport class ReportsAWPComponent implements OnInit, AfterViewInit {\r\n  public displayConfirmContinue = false;\r\n  public activeindex:number = 0;\r\n\r\n  @ViewChild('tabView') tabview: TabView;\r\n  @ViewChild('awpproviderComponent') awpproviderComponent: AWPProviderComponent;\r\n  @ViewChild('awpmemberComponent') awpmemberComponent: AWPMemberComponent;\r\n\r\n  private tabs: any = [\r\n    { index: 0, id: 'awp-provider', label: 'Provider', enable: true },\r\n    { index: 1, id: 'awp-member', label: 'Member', enable: true }\r\n  ];\r\n\r\n  constructor(\r\n    private confirmationService: ConfirmationService,\r\n    private elementRef: ElementRef\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.setPcpReportAttestationTabs();\r\n  }\r\n\r\n  public canViewTab(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.enable : false;\r\n  }\r\n\r\n  public getTabName(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.label : '';\r\n  }\r\n\r\n  public getTabIndex(name: string) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.label === name);\r\n    return currentTab ? currentTab.index : 0;\r\n  }\r\n\r\n  public onTabChanged(e: any) {\r\n    this.displayConfirmContinue = true;\r\n    this.tabview.activeIndex = e.index === 1 ? 0 : 1;\r\n  }\r\n\r\n  public handleChange(selectedIndex:number, e:MouseEvent) {\r\n    const currentIndex = this.tabview.activeIndex;\r\n    e.stopPropagation();\r\n    if (currentIndex == selectedIndex){\r\n      return;\r\n    }\r\n    this.confirmationService.confirm({\r\n      header: 'Are you sure?',\r\n      message: 'Your search results will be cleared.',\r\n      key: 'continueDialog',\r\n      accept: () => {\r\n        this.tabview.activeIndex = selectedIndex;\r\n        if (selectedIndex === this.getTabIndex('Provider')) {\r\n          this.awpproviderComponent.initialize(true);\r\n        }\r\n        else if (selectedIndex === this.getTabIndex('Member')) {\r\n          if (this.awpmemberComponent) {\r\n            this.awpmemberComponent.setProviderId(null);\r\n          }\r\n        }\r\n      },\r\n      reject: () => {\r\n        this.tabview.activeIndex = currentIndex;\r\n      }\r\n    });\r\n  }\r\n\r\n  private setPcpReportAttestationTabs() {\r\n    const tabView = this.elementRef.nativeElement.querySelector('div.pcpattestation-tabview-styles  ul.p-tabview-nav');\r\n    UiUtility.SetTabsWidthDynamically(tabView, 0, 250);\r\n\r\n    const tabElements = tabView.querySelectorAll('li');\r\n    tabElements.forEach(element => {\r\n      const currentChild = element.firstChild;\r\n      const anchorelement = (element.querySelector(\"a\") as HTMLAnchorElement);\r\n      const tabName = (anchorelement) ? anchorelement.innerText : \"\";\r\n\r\n      const tabIndex = this.getTabIndex(tabName.trim());\r\n\r\n      const newDiv = window.document.createElement(\"div\");\r\n      newDiv.addEventListener('click', this.handleChange.bind(this, tabIndex), false);\r\n      newDiv.style.cursor = 'pointer';\r\n      newDiv.appendChild(currentChild);\r\n\r\n      element.firstChild.remove();\r\n      element.appendChild(newDiv);\r\n    });\r\n  }\r\n\r\n  public confirmContinue(event) {\r\n    this.displayConfirmContinue = false;\r\n  }\r\n}\r\n","<div class=\"pcpattestation-container\">\r\n  <div class=\"pcpattestation-container-reporttype\">\r\n    <app-reports-type [reportType]=\"'awp'\"></app-reports-type>\r\n  </div>\r\n  <div class=\"pcpattestation-alert\">\r\n    <app-alert-info subjectMessage=\" \" uniqueID=\"reportsawp\" contentMessage=\"Narrow your search using the known provider or member.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"pcpattestation-container-main\">\r\n    <p-tabView styleClass=\"pcpattestation-tabview-styles\" [activeIndex]=\"activeindex\" #tabView>\r\n      <p-tabPanel [header]=\"getTabName(0)\">\r\n        <ng-template pTemplate=\"header\">\r\n          {{getTabName(0)}}\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n          <app-awp-provider #awpproviderComponent></app-awp-provider>\r\n        </ng-template>\r\n      </p-tabPanel>\r\n      <p-tabPanel *ngIf=\"canViewTab(1)\" [header]=\"getTabName(1)\">\r\n        <ng-template pTemplate=\"header\">\r\n          {{getTabName(1)}}\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n          <app-awp-member  #awpmemberComponent></app-awp-member>\r\n        </ng-template>\r\n      </p-tabPanel>\r\n    </p-tabView>\r\n  </div>\r\n</div>\r\n<app-continue-dialog key=\"continueDialog\"></app-continue-dialog>\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { saveAs } from 'file-saver';\r\nimport { ProviderDetail } from '../../../services/models/provider-detail';\r\nimport { ReportType } from '../../../services/models/reportype';\r\nimport { ReportsService } from '../../../services/reports.service';\r\nimport { SessionService } from '../../../services/session.service';\r\nimport { UiUtility } from '../../../utils/ui-utility';\r\nimport { ReportsProviderSearchComponent } from '../../../app-components/reports-provider-search/reports-provider-search.component';\r\nimport { HIFMemberComponent } from '../hif-member/hif-member.component';\r\n\r\n@Component({\r\n  selector: 'app-hif-provider',\r\n  templateUrl: './hif-provider.component.html',\r\n  styleUrls: ['./hif-provider.component.scss']\r\n})\r\n\r\nexport class HIFProviderComponent implements OnInit {\r\n  public providers: ProviderDetail[] = [];\r\n  public displayedProviders: ProviderDetail[] = [];\r\n  public selected: ProviderDetail[] = [];\r\n  public selectedProvider: ProviderDetail;\r\n  public totalRecords: number;\r\n  public rowsPerPage: number = 10;\r\n  public pageNumber: number = 1;\r\n  public selectedCalProviderID: string;\r\n  public animationState: string = '';\r\n  public displayMembers = false;\r\n\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n\r\n  public columns: any = [\r\n    { field: '', header: '', width: '5%', classHeader: 'provider-reports-header', classContent: 'provider-reports-content-alt1', sort: false },\r\n    { field: 'name', header: 'Name', width: '60%', classHeader: 'provider-reports-header', classContent: 'provider-reports-content', sort: true },\r\n    { field: 'calProviderID', header: 'Provider ID', width: '40%', classHeader: 'provider-reports-header-alt1', classContent: 'provider-reports-content-alt1', sort: true }\r\n  ];\r\n\r\n  @ViewChild('providerSearch') providerSearch: ReportsProviderSearchComponent;\r\n  @ViewChild('hifmemberComponent') awpmemberComponent: HIFMemberComponent;\r\n\r\n  constructor(\r\n    private reportsService: ReportsService,\r\n    private sessionService: SessionService\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.initialize();\r\n  }\r\n\r\n  public initialize(resetComponent = false) {\r\n    \r\n    this.sortColumn = 'name';\r\n    this.selectedCalProviderID = '';\r\n\r\n    if (resetComponent) {    \r\n      this.displayMembers = false;\r\n      this.providers = [];\r\n      this.displayedProviders = [];\r\n\r\n      setTimeout(() => {\r\n        if(this.providerSearch) {\r\n          this.providerSearch.resetSearchFilters();\r\n        }      \r\n      }, 100);\r\n    }\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      //  Do nothing.\r\n    }\r\n    else {\r\n      this.reportsService.getProvidersForReportsHIF(this.sessionService.currentPermission.providerCollectionID, ReportType.HIF).subscribe(result => {\r\n        this.providers = result;\r\n\r\n        this.pageNumber = 1;\r\n        this.onProviderSearch(null);\r\n\r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetail) {\r\n    this.selectedCalProviderID = provider.calProviderID;\r\n    this.selectedProvider = provider;\r\n    this.displayMembers = true;\r\n    setTimeout(() => {\r\n      this.awpmemberComponent.setProviderId(this.selectedCalProviderID, this.selectedProvider.taxId);  \r\n    }, (500));    \r\n  }\r\n\r\n  public backToProvider() {\r\n    this.initialize(true);\r\n  }\r\n\r\n  public onProviderSearch(search) {\r\n    this.selectedCalProviderID = '';\r\n    if (search && (search.providerName || search.providerId || search.providerTin)) {\r\n\r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n        this.reportsService.searchProvidersForReportsHIF(search.providerId, search.providerName, search.providerTin, ReportType.HIF).subscribe(result => {\r\n          this.providers = result;\r\n          this.displayedProviders = this.providers.slice();\r\n        });\r\n      }\r\n      else {\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerTin)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.taxId.toLowerCase().indexOf(search.providerTin.trim().toLowerCase()) >= 0);\r\n        }        \r\n      }\r\n    }\r\n    else {\r\n      this.displayedProviders = this.providers.slice();\r\n    }\r\n    this.setPagedData();\r\n  }\r\n\r\n  private setPagedData(page: number = 0) {\r\n    if (page === 0) {\r\n      this.pageNumber = 1;\r\n    }\r\n    this.totalRecords = this.displayedProviders.length;\r\n    const start = (this.pageNumber - 1) * this.rowsPerPage;\r\n    let end = start + this.rowsPerPage;\r\n    if (end > this.displayedProviders.length) {\r\n      end = this.displayedProviders.length;\r\n    }\r\n\r\n    this.displayedProviders = this.displayedProviders.slice(start, end);\r\n  }\r\n\r\n  public onDownloadList() : void {\r\n\r\n    let selectedProviderIds: string[] = [];\r\n    this.selected.forEach(x=>{\r\n      selectedProviderIds.push(x.calProviderID);\r\n    });\r\n\r\n    this.reportsService.downloadHifMemberList(selectedProviderIds).subscribe(result => {\r\n      this.saveAsFile(result, 'hif-members-list.csv', 'text/csv');\r\n    })\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n}\r\n","<div class=\"hif-provider-container\">\r\n  <div class=\"hif-provider-provider-container\" *ngIf='!displayMembers'>\r\n    <div class=\"hif-provider-provider-search\">\r\n      <app-reports-provider-search (onProviderSearch)=\"onProviderSearch($event)\" #providerSearch></app-reports-provider-search>\r\n    </div>\r\n    <div class=\"hif-provider-provider-results\">\r\n      <p-table\r\n          [value]=\"displayedProviders\"\r\n          [paginator]=\"true\"\r\n          [rows]=\"10\"\r\n          [scrollable]=\"true\"\r\n          [(selection)]=\"selected\"\r\n          scrollHeight=\"400px\"\r\n          [responsive]=\"true\"\r\n          selectionMode=\"multiple\"\r\n          (onSort)=\"onSort($event)\"\r\n          [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n        <ng-template pTemplate=\"header\">\r\n          <tr>\r\n            <th pSortableColumn=\"{{col.field}}\" width=\"{{col.width}}\" class=\"{{col.classHeader}}\" *ngFor=\"let col of columns\">\r\n              <div *ngIf=\"col.header === ''\" class=\"hif-provider-provider-header-checkbox\">\r\n                <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n              </div>\r\n              <div *ngIf=\"col.header !== ''\">\r\n                {{col.header}}\r\n                <div *ngIf=\"col.sort\" class=\"{{sortClass(col.field)}}\">\r\n                </div>\r\n              </div>\r\n            </th>\r\n          </tr>\r\n        </ng-template>\r\n        <ng-template pTemplate=\"body\" let-provider>\r\n          <tr>\r\n            <td width=\"{{col.width}}\" class=\"{{col.classContent}}\" *ngFor=\"let col of columns\">\r\n              <div *ngIf=\"col.header === ''\">\r\n                <p-tableCheckbox [value]=\"provider\" (click)=\"$event.stopPropagation()\"></p-tableCheckbox>\r\n              </div>\r\n              <div *ngIf=\"col.header === 'Name'\">\r\n                <span><a href='javascript:void(0);' (click)=\"onProviderSelected(provider)\">{{provider[col.field]}}</a></span>\r\n              </div>              \r\n              <div *ngIf=\"col.header === 'Provider ID' || col.header === 'TIN'\">\r\n                <span>{{provider[col.field]}}</span>\r\n              </div>\r\n          </tr>\r\n        </ng-template>\r\n      </p-table>\r\n    </div>\r\n    <div class=\"hif-provider-provider-footer\">\r\n      <button class=\"btn btn-primary\" [disabled]=\"selected.length == 0\" type=\"button\" (click)=\"onDownloadList()\">Download List</button>\r\n    </div>\r\n   </div>\r\n   <div class=\"hif-provider-member-container\" *ngIf='displayMembers'>\r\n    <div class=\"hif-provider-member-container-header\" *ngIf=\"selectedProvider\">\r\n      <button class=\"btn btn-primary btn-back\" (click)=\"backToProvider()\">\r\n        <i class=\"fa fa-arrow-left\" aria-hidden=\"true\"></i>\r\n        <span>Back</span>\r\n      </button>\r\n      <p class=\"provider-name\">{{selectedProvider.name}}</p>\r\n    </div>\r\n    <div class=\"hif-provider-member-container\">\r\n      <app-hif-member #hifmemberComponent></app-hif-member>\r\n    </div>\r\n  </div>\r\n</div>\r\n","\r\nimport { Component, OnInit, ViewChild, Inject } from '@angular/core';\r\nimport { UserProfile } from '@caloptima/authentication';\r\nimport { ReportsService } from '../../../services/reports.service';\r\nimport { SessionService } from '../../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\nimport { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { ReportType } from '../../../services/models/reportype';\r\nimport { ReportsMemberSearchComponent } from '../../../app-components/reports-member-search/reports-member-search.component';\r\nimport { UiUtility } from '../../../utils/ui-utility';\r\nimport { ReportMemberDetails } from '../../../services/models/reportmemberdetails';\r\nimport { MemberAWPStatus } from '../../../services/models/awp-detail';\r\nimport { WellnessDetails } from '../../../services/models/wellness-details';\r\nimport { BusyService } from '../../../services/busy.service';\r\n\r\n\r\n@Component({\r\n  selector: 'app-hif-member',\r\n  templateUrl: './hif-member.component.html',\r\n  styleUrls: ['./hif-member.component.scss']\r\n})\r\nexport class HIFMemberComponent implements OnInit {\r\n\r\n  public userProfile: UserProfile;\r\n  public members:ReportMemberDetails[] = [];\r\n  public displayMembers:ReportMemberDetails[] = [];\r\n  public selectedMember: ReportMemberDetails;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public totalRecords: number;\r\n  public awpList: MemberAWPStatus[];\r\n  public searchCin: string;\r\n  public searchName: string;\r\n  public collectionId: number;\r\n  public calProviderId: string;\r\n  public providerTaxId: string;\r\n  public showHif: boolean;\r\n  public userFullName: string;\r\n  public wellnessDetails: WellnessDetails;\r\n  public selectedMemberAWPStatus:MemberAWPStatus;\r\n  public selectedCin: string;\r\n    \r\n\r\n  @ViewChild('memberSearch') memberSearch: ReportsMemberSearchComponent;\r\n\r\n  constructor(\r\n    private reportsService: ReportsService,\r\n    private sessionService: SessionService,\r\n    private datePipe: DatePipe,\r\n    private busyService: BusyService,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.collectionId = this.sessionService.currentPermission.providerCollectionID;\r\n    this.userFullName = '';\r\n\r\n    this.initialize();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n\r\n  }\r\n\r\n  public setProviderId(selectedCalProviderID: string, selectedProviderTaxId: string) {\r\n    this.awpList = [];\r\n    this.calProviderId = selectedCalProviderID;\r\n    this.providerTaxId = selectedProviderTaxId;\r\n    this.initialize(true);\r\n  }\r\n\r\n  public initialize(resetComponent = false) {\r\n    this.sortColumn = 'memberName';\r\n    this.sortAscending = true;\r\n    this.selectedCin = '';\r\n    this.searchCin = '';\r\n    this.searchName = '';\r\n    this.selectedMember = null;\r\n    this.displayMembers = [];\r\n    \r\n    if (resetComponent) {\r\n      this.memberSearch.resetSearchFilters();\r\n    }\r\n\r\n    if(!UiUtility.isNullUndefinedOrEmpty(this.calProviderId)) {\r\n\r\n      this.reportsService.getMembersForReportsHIF(this.collectionId, this.calProviderId, this.providerTaxId, ReportType.HIF).subscribe(result=>{\r\n\r\n        this.members = result;\r\n\r\n        this.totalRecords = this.members.length;\r\n\r\n        if(this.members)\r\n          this.displayMembers = this.members.slice();\r\n\r\n        let param: any = {\r\n          \"field\": \"memberName\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.displayMembers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public get displayText(): string {\r\n    if(this.selectedMember && this.selectedMember.cin) {\r\n\r\n      let memeberDetail: ReportMemberDetails = this.members.find(x=> x.cin === this.selectedMember.cin);\r\n\r\n      if(memeberDetail) {\r\n        let s = memeberDetail.memberName;\r\n        return s;\r\n      }\r\n      else {\r\n        return \"\"\r\n      }\r\n    }\r\n    else {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  public get enableBuildReport() : boolean {\r\n\r\n    return this.selectedMember != null;\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public onMemberSearch(search) : void {\r\n\r\n    this.selectedMember = null;\r\n    this.awpList = [];\r\n\r\n    if(!UiUtility.isNullUndefinedOrEmpty(this.calProviderId)) {\r\n      if(search.memberName === '' && search.memberId === '') {\r\n        this.displayMembers = this.members.slice();\r\n      }\r\n      else {\r\n        this.displayMembers = [];\r\n        this.members.forEach(x => {\r\n\r\n          let include: boolean = false;\r\n\r\n          if(search.memberName !== '') {\r\n            include = x.memberName.trim().toUpperCase().includes(search.memberName.trim().toUpperCase());\r\n          }\r\n          if(!include && search.memberId !== '') {\r\n            include = x.cin == search.memberId;\r\n          }\r\n          if(!include && search.memberId !== '') {\r\n            include = x.mbi == search.memberId;\r\n          }\r\n          if(!include && search.memberId !== '') {\r\n            include = x.medsId == search.memberId;\r\n          }                 \r\n          console.log(include + \",\" + search.memberId);\r\n          if(include){\r\n            this.displayMembers.push(x);\r\n          }\r\n        });\r\n      }\r\n    }\r\n    else {\r\n      this.reportsService.searchMembersForReportsHIF(ReportType.HIF, this.collectionId, search.memberName, search.memberId).subscribe(result=>{\r\n\r\n        this.members = result;\r\n\r\n        this.totalRecords = this.members.length;\r\n\r\n        if(this.members)\r\n          this.displayMembers = this.members.slice();\r\n\r\n          let param: any = {\r\n            \"field\": \"memberName\",\r\n            \"order\": 1\r\n          }\r\n          this.onSort(param)\r\n      });\r\n\r\n    }\r\n  }\r\n\r\n  public viewhif(reportMemberDetails:ReportMemberDetails) : void {\r\n    this.selectedMember = reportMemberDetails;\r\n    this.showHif = true;\r\n  }\r\n\r\n  public onDownloadList() : void {\r\n\r\n    this.reportsService.downloadHifMemberList([this.calProviderId]).subscribe(result => {\r\n      this.saveAsFile(result, 'hif-members-list.csv', 'text/csv');\r\n    })\r\n  }\r\n\r\n  public onCancelMemberHifData() {\r\n    this.showHif = false;\r\n  }\r\n}\r\n","<div class=\"reports-hif-member\">\r\n  <div class=\"report-search\">\r\n    <app-reports-member-search (onMemberSearch)=\"onMemberSearch($event)\" #memberSearch></app-reports-member-search>\r\n  </div>\r\n  <div class=\"report-parameter\">\r\n    <p-table #providerList\r\n    [value]=\"displayMembers\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\"\r\n    [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"40%\" pSortableColumn=\"memberName\">Name<div class=\"{{sortClass('memberName')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"cin\">Member ID<div class=\"{{sortClass('cin')}}\"></div></th>\r\n          <th width=\"35%\" pSortableColumn=\"providerid\">Provider ID<div class=\"{{sortClass('providerid')}}\"></div></th>\r\n          <th width=\"35%\" pSortableColumn=\"status\">Health Information</th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"40%\">\r\n            <div>{{row.memberName}}</div>\r\n          </td>\r\n          <td width=\"20%\">\r\n            <div>{{row.cin}}</div>\r\n          </td>\r\n          <td width=\"20%\">\r\n            <div>{{row.providerId}}</div>\r\n          </td>\r\n          <td width=\"20%\">\r\n            <div><a href='javascript:void(0);' (click)=\"viewhif(row)\">View</a></div>\r\n          </td>          \r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>\r\n  <div class=\"report-measurementlabel\">\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onDownloadList()\">Download List</button>\r\n  </div>\r\n</div>\r\n<hif-member-data-dialog #attachment *ngIf=\"showHif\" \r\n  [membercin]='selectedMember.cin' (cancelMemberHifData)=\"onCancelMemberHifData()\">\r\n</hif-member-data-dialog>\r\n","import { Component, OnInit, AfterViewInit, ViewChild, ElementRef, Output, EventEmitter } from '@angular/core';\r\nimport { UiUtility } from '../../utils/ui-utility';\r\nimport { TabView } from 'primeng/tabview';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { HIFProviderComponent } from './hif-provider/hif-provider.component';\r\nimport { HIFMemberComponent } from './hif-member/hif-member.component';\r\n\r\n@Component({\r\n  selector: 'app-reports-hif',\r\n  templateUrl: './reports-hif.component.html',\r\n  styleUrls: ['./reports-hif.component.scss']\r\n})\r\nexport class ReportsHIFComponent implements OnInit, AfterViewInit {\r\n  public displayConfirmContinue = false;\r\n  public activeindex:number = 0;\r\n\r\n  @ViewChild('tabView') tabview: TabView;\r\n  @ViewChild('hifproviderComponent') hifproviderComponent: HIFProviderComponent;\r\n  @ViewChild('hifmemberComponent') hifmemberComponent: HIFMemberComponent;\r\n\r\n  private tabs: any = [\r\n    { index: 0, id: 'hif-provider', label: 'Provider', enable: true },\r\n    { index: 1, id: 'hif-member', label: 'Member', enable: true }\r\n  ];\r\n\r\n  constructor(\r\n    private confirmationService: ConfirmationService,\r\n    private elementRef: ElementRef\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.setPcpReportAttestationTabs();\r\n  }\r\n\r\n  public canViewTab(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.enable : false;\r\n  }\r\n\r\n  public getTabName(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.label : '';\r\n  }\r\n\r\n  public getTabIndex(name: string) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.label === name);\r\n    return currentTab ? currentTab.index : 0;\r\n  }\r\n\r\n  public onTabChanged(e: any) {\r\n    this.displayConfirmContinue = true;\r\n    this.tabview.activeIndex = e.index === 1 ? 0 : 1;\r\n  }\r\n\r\n  public handleChange(selectedIndex:number, e:MouseEvent) {\r\n    const currentIndex = this.tabview.activeIndex;\r\n    e.stopPropagation();\r\n    if (currentIndex == selectedIndex){\r\n      return;\r\n    }\r\n    this.confirmationService.confirm({\r\n      header: 'Are you sure?',\r\n      message: 'Your search results will be cleared.',\r\n      key: 'continueDialog',\r\n      accept: () => {\r\n        this.tabview.activeIndex = selectedIndex;\r\n        if (selectedIndex === this.getTabIndex('Provider')) {\r\n          this.hifproviderComponent.initialize(true);\r\n        }\r\n        else if (selectedIndex === this.getTabIndex('Member')) {\r\n          if (this.hifmemberComponent) {\r\n            this.hifmemberComponent.setProviderId(null, null);\r\n          }\r\n        }\r\n      },\r\n      reject: () => {\r\n        this.tabview.activeIndex = currentIndex;\r\n      }\r\n    });\r\n  }\r\n\r\n  private setPcpReportAttestationTabs() {\r\n    const tabView = this.elementRef.nativeElement.querySelector('div.pcpattestation-tabview-styles  ul.p-tabview-nav');\r\n    UiUtility.SetTabsWidthDynamically(tabView, 0, 250);\r\n\r\n    const tabElements = tabView.querySelectorAll('li');\r\n    tabElements.forEach(element => {\r\n      const currentChild = element.firstChild;\r\n      const tabName = (element.querySelector(\"a\") as HTMLAnchorElement).innerText;\r\n      const tabIndex = this.getTabIndex(tabName.trim());\r\n\r\n      const newDiv = window.document.createElement(\"div\");\r\n      newDiv.addEventListener('click', this.handleChange.bind(this, tabIndex), false);\r\n      newDiv.style.cursor = 'pointer';\r\n      newDiv.appendChild(currentChild);\r\n\r\n      element.firstChild.remove();\r\n      element.appendChild(newDiv);\r\n    });\r\n  }\r\n\r\n  public confirmContinue(event) {\r\n    this.displayConfirmContinue = false;\r\n  }\r\n}\r\n","<div class=\"pcpattestation-container\">\r\n  <div class=\"pcpattestation-container-reporttype\">\r\n    <app-reports-type [reportType]=\"'hif'\"></app-reports-type>\r\n  </div>\r\n  <div class=\"pcpattestation-alert\">\r\n    <app-alert-info subjectMessage=\" \" uniqueID=\"reportshif\" contentMessage=\"Narrow your search using the known provider or member.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"pcpattestation-container-main\">\r\n    <p-tabView styleClass=\"pcpattestation-tabview-styles\" [activeIndex]=\"activeindex\" #tabView>\r\n      <p-tabPanel [header]=\"getTabName(0)\">\r\n        <ng-template pTemplate=\"header\">\r\n          {{getTabName(0)}}\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n          <app-hif-provider #hifproviderComponent></app-hif-provider>\r\n        </ng-template>\r\n      </p-tabPanel>\r\n      <p-tabPanel *ngIf=\"canViewTab(1)\" [header]=\"getTabName(1)\">\r\n        <ng-template pTemplate=\"header\">\r\n          {{getTabName(1)}}\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n          <app-hif-member  #hifmemberComponent></app-hif-member>\r\n        </ng-template>\r\n      </p-tabPanel>\r\n    </p-tabView>\r\n  </div>\r\n</div>\r\n<app-continue-dialog key=\"continueDialog\"></app-continue-dialog>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CollectionService } from '../../services/collection.service';\r\nimport { ProviderDetail } from '../../services/models/provider-detail';\r\nimport { ReportsService } from '../../services/reports.service';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\n\r\n@Component({\r\n  selector: 'app-reports-pcp-member-iha',\r\n  templateUrl: './reports-pcp-member-iha.component.html',\r\n  styleUrls: ['./reports-pcp-member-iha.component.scss']\r\n})\r\nexport class ReportsPcpMemberIHAComponent implements OnInit {\r\n\r\n  public providers:ProviderDetail[] = [];\r\n  public selected: ProviderDetail[] = [];\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  private enableBuildReport: boolean;\r\n  private threshold: number = 25000;\r\n  public showThresholdAlert: boolean = false;\r\n\r\n  constructor(\r\n    private sessionService: SessionService, \r\n    private collectionService: CollectionService,\r\n    private reportsService: ReportsService\r\n\r\n    ) {\r\n\r\n      this.sortColumn = 'name';\r\n      this.sortAscending = true;    \r\n      this.enableBuildReport = true;\r\n  }\r\n\r\n  ngOnInit() {\r\n    \r\n    this.reportsService.getProvidersForIHA(this.sessionService.currentPermission.providerCollectionID).subscribe(result=>{\r\n      this.providers = result;\r\n\r\n      let param: any = {\r\n        \"field\": \"name\",\r\n        \"order\": 1\r\n      }\r\n      this.onSort(param)\r\n\r\n      this.selected = result;\r\n    })\r\n  }\r\n\r\n  public onBuildReport() {\r\n\r\n    this.enableBuildReport = false;\r\n\r\n    let providerIds: string[] = [];\r\n    this.selected.forEach(x=> {\r\n      providerIds.push(x.calProviderID);\r\n    });\r\n\r\n    this.reportsService.downloadIHADueMembersUsingProviderIds(providerIds).subscribe(result => {\r\n      this.saveAsFile(result, 'iha-duemembers.csv', 'text/csv');\r\n      this.enableBuildReport = true;\r\n    })\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public get IsEnterpriseUser() : boolean {\r\n    return (this.sessionService.isEnterpriseAdmin || this.sessionService.isEnterpriseUser);\r\n  }\r\n\r\n  public onSearch(search) : void {\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      this.reportsService.searchProvidersForIHA(search.providerId, search.providerName, search.providerTin).subscribe(result => {\r\n        this.providers = result;\r\n       });\r\n    }          \r\n  }\r\n\r\n  public get totalCount() : number{\r\n    this.showThresholdAlert = false;\r\n    \r\n    let totalCount: number = 0;\r\n    this.selected.forEach(x=>{\r\n      totalCount += x.pcpMemberCount\r\n    });\r\n\r\n    if(totalCount > this.threshold)\r\n      this.showThresholdAlert = true;\r\n\r\n    return totalCount;\r\n  }\r\n}\r\n","<div>\r\n  <app-reports-type [reportType]=\"'iha'\"></app-reports-type>\r\n</div>\r\n<div class=\"reports-pcpmembershipiha\">\r\n  <div class=\"report-alert\" *ngIf=\"IsEnterpriseUser\">\r\n    <app-alert-info subjectMessage=\" \" uniqueID=\"reportsiha\" contentMessage=\"Narrow your search using the known provider name or ID.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"report-search\" *ngIf=\"IsEnterpriseUser\">\r\n    <app-reports-provider-search (onProviderSearch)=\"onSearch($event)\"></app-reports-provider-search>\r\n  </div>      \r\n  <div class=\"report-parameter\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList [value]=\"providers\" [paginator]=\"false\"\r\n      selectionMode=\"multiple\" [(selection)]=\"selected\" [scrollable]=\"true\" scrollHeight=\"315px\" (onSort)=\"onSort($event)\"  [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"10%\" class=\"header-check-column\">\r\n            <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n          </th>\r\n          <th width=\"30%\" pSortableColumn=\"name\" class=\"header-name-column\">Name<div class=\"{{sortClass('name')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"calProviderID\" class=\"header-provider-column\">Provider ID<div class=\"{{sortClass('calProviderID')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"pcpMemberCount\" class=\"header-pcpmembercount-column\">Member Count<div class=\"{{sortClass('pcpMemberCount')}}\"></div></th>\r\n          <th width=\"30%\" pSortableColumn=\"groupName\" class=\"header-group-column\">Medical Group<div class=\"{{sortClass('groupName')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"10%\" class=\"check-column\">\r\n            <p-tableCheckbox [value]=\"row\" (click)=\"$event.stopPropagation()\"></p-tableCheckbox>\r\n          </td>\r\n          <td width=\"30%\" class=\"name-column\">\r\n            <div>{{row.name}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.calProviderID}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"pcpmembercount-column\">\r\n            <div>{{row.pcpMemberCount}}</div>\r\n          </td>\r\n          <td width=\"30%\" class=\"group-column\">\r\n            <div>{{row.groupName}}</div>\r\n          </td>          \r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"summary\">\r\n        <div class=\"report-countsummary\">\r\n          <span>\r\n            Total Selected Members : {{totalCount}}.\r\n          </span>\r\n          <span *ngIf=\"showThresholdAlert\" style=\"color: red;\">\r\n            &nbsp;Too many members selected ({{threshold}}) MAX.\r\n          </span>\r\n        </div>\r\n        <div class=\"report-summary\">\r\n          <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" tabindex=\"2\" [disabled]='!enableBuildReport || selected.length == 0 || showThresholdAlert'>Get IHA Report</button>\r\n        </div>          \r\n      </ng-template>      \r\n    </p-table>\r\n  </div>\r\n</div>","\r\nimport { Component, OnInit, Provider, Inject, numberAttribute, ViewChild } from '@angular/core';\r\nimport { UserProfile } from '@caloptima/authentication';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DropDownObject } from '../../services/models/drop-down-object.interface';\r\nimport { ProviderDetail, ProviderDetailWithBHI } from '../../services/models/provider-detail';\r\nimport { ReportsService } from '../../services/reports.service';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\nimport { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { ReportType } from '../../services/models/reportype';\r\nimport { UiUtility } from '../../utils/ui-utility';\r\nimport { BHIMeasurementPeriod } from 'src/app/services/models/responses/bhi-measurement-period';\r\nimport { AttestationDetail } from 'src/app/services/models/attestation-detail';\r\nimport { AttestationStatus } from 'src/app/services/models/attestationstatus';\r\nimport { ReportsProviderSearchComponent } from 'src/app/app-components/reports-provider-search/reports-provider-search.component';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport { Constants } from 'src/app/app.constants';\r\nimport { ReportsMemberSearchComponent } from 'src/app/app-components/reports-member-search/reports-member-search.component';\r\nimport { AlertWarningComponent } from 'src/app/app-components/alerts/alert-warning/alert-warning.component';\r\n\r\n\r\n@Component({\r\n  selector: 'app-reports-bhi',\r\n  templateUrl: './reports-bhi.component.html',\r\n  styleUrls: ['./reports-bhi.component.scss']\r\n})\r\nexport class ReportsBHIComponent implements OnInit {\r\n  public providers:ProviderDetailWithBHI[] = [];\r\n  public displayProviders:ProviderDetailWithBHI[] = [];\r\n  public displayPrescribers:ProviderDetailWithBHI[] = [];\r\n  public selectedCalProviderID: string;\r\n  public selectedProvider: ProviderDetailWithBHI;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public totalRecords: number;\r\n  public measurementPeriods: BHIMeasurementPeriod[];\r\n  public searchProviderId: string;\r\n  public searchProviderName: string;\r\n  public overAllCheckUnCheckValue: boolean;\r\n  public showAttestation: boolean;\r\n  public userFullName: string;\r\n  public optionValue: string = \"1\";\r\n\r\n  @ViewChild('reportsprovidersearchcomponent') reportsprovidersearchcomponent: ReportsProviderSearchComponent\r\n  @ViewChild('reportsprescribersearchcomponent') reportsprescribersearchcomponent: ReportsMemberSearchComponent\r\n\r\n  constructor(\r\n    private sessionService: SessionService,\r\n    private reportsService: ReportsService,\r\n    private datePipe: DatePipe,\r\n    @Inject(DOCUMENT) private document: Document, private constants: Constants) {\r\n      this.sortColumn = 'name';\r\n      this.sortAscending = true;\r\n      this.searchProviderId = '';\r\n      this.searchProviderName = '';\r\n      this.selectedCalProviderID = '';\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      //  Nothing. \r\n    }\r\n    else {\r\n      this.reportsService.getProvidersForBHI(this.sessionService.currentPermission.providerCollectionID).subscribe(result=>{\r\n\r\n        this.providers = result;\r\n  \r\n        this.totalRecords = this.providers.length;\r\n  \r\n        if(this.providers)\r\n          this.displayProviders = this.providers.slice();\r\n  \r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": true\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.displayProviders.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == true;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public selectOption($event) {\r\n    if(this.optionValue == \"1\") {\r\n      this.reportsprovidersearchcomponent.setLabel(\"Provider Name\", \"Provider ID\", \"Provider TIN\", \"Search for Provider\");\r\n      this.displayProviders = this.providers.slice();\r\n      this.onProviderSelected(null);\r\n\r\n      let param: any = {\r\n        \"field\": \"name\",\r\n        \"order\": true\r\n      }\r\n      this.onSort(param)\r\n    }\r\n    else if(this.optionValue == \"2\") {\r\n      this.reportsprescribersearchcomponent.setLabel(\"\", \"Prescriber NPI\", \"Search for Prescriber\");\r\n      this.displayPrescribers = [];\r\n      this.onProviderSelected(null);\r\n      \r\n    }\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetailWithBHI): void {\r\n    this.selectedProvider = provider;\r\n\r\n    if(this.selectedProvider) {\r\n      this.selectedCalProviderID = provider.calProviderID;\r\n\r\n      this.measurementPeriods = [];\r\n      this.reportsService.getBHIMeasurementPeriods(this.selectedCalProviderID).subscribe(result=>{\r\n        this.measurementPeriods = result;\r\n  \r\n        if(this.measurementPeriods.length > 0) \r\n        {\r\n          this.measurementPeriods.forEach(x=>{\r\n            \r\n            var year:string = x.measurementPeriod.substring(0,4);\r\n            var month:string = x.measurementPeriod.substring(4,6);\r\n            var periodDate: Date = new Date(parseInt(year), parseInt(month) -1, 1);\r\n            const monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\",\r\n                          \"May\", \"Jun\", \"Jul\", \"Aug\",\r\n                          \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n  \r\n            x.measurementPeriodDisplay = monthNames[parseInt(month)-1] + \" \" + year;\r\n  \r\n            if(!x.attestationStatus) {\r\n              if(x.attestationDate) {\r\n                x.attestationStatus =\"Attested\";\r\n              }\r\n              else {  \r\n                var currentDate = new Date()\r\n                var diff = (currentDate.valueOf() - periodDate.valueOf())/(1000*60*60*24);\r\n    \r\n                if(diff >= 60) {\r\n                  x.attestationStatus = \"Overdue\";\r\n                }\r\n                else {\r\n                  x.attestationStatus = \"Pending\";\r\n                }\r\n              }\r\n            }\r\n          });\r\n  \r\n          UiUtility.scrollDown(this.document);\r\n        }      \r\n      });\r\n    }\r\n    else  {\r\n      this.selectedCalProviderID = \"\";\r\n    }\r\n  }\r\n\r\n  public get displayText(): string {\r\n    if(this.selectedCalProviderID) {\r\n\r\n      let providerDetail: ProviderDetail = this.providers.find(x=> x.calProviderID === this.selectedCalProviderID);\r\n\r\n      if(providerDetail) {\r\n        let s = providerDetail.name;\r\n        return s;\r\n      }\r\n      else {\r\n        return \"\"\r\n      }\r\n    }\r\n    else {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  public get enableBuildReport() : boolean {\r\n\r\n    if(this.measurementPeriods) {\r\n      var found = this.measurementPeriods.find(x=>x.selected);\r\n      if(found && this.selectedCalProviderID !== '')\r\n        return true;\r\n    }\r\n    \r\n    return false;\r\n  }\r\n\r\n  public onSubmitAttestation($event){\r\n    this.download();\r\n  }\r\n\r\n  public get isInternalUser(): boolean {\r\n    return this.sessionService.isEnterpriseAdmin || this.sessionService.isEnterpriseUser;\r\n  }\r\n\r\n  public download(){\r\n\r\n    var items:string[] = [];\r\n\r\n    this.measurementPeriods.forEach(x=>{\r\n      if(x.selected) {\r\n          items.push(x.measurementPeriod);\r\n        };\r\n    });    \r\n\r\n    this.reportsService.downloadbhimembers(this.selectedCalProviderID, items).subscribe(result=>{\r\n      var fileName:string = (items.length == 1 ? (this.selectedCalProviderID + \"_\" + items[0]) : this.selectedCalProviderID) + \".csv\";\r\n      this.saveAsFile(result, fileName, 'csv');\r\n      this.showAttestation = false;\r\n      this.onProviderSelected(this.selectedProvider);\r\n    });\r\n  }\r\n\r\n  public onCancelAttestation(): void {\r\n    this.showAttestation = false;\r\n  }\r\n\r\n  public onBuildReport() : void {\r\n    if(this.isInternalUser) {\r\n      this.download();\r\n    }\r\n    else \r\n    {\r\n      this.showAttestation = true;\r\n    }\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public get overAllCheckUnCheck() : boolean {\r\n    return this.overAllCheckUnCheckValue;\r\n  }\r\n\r\n  public set overAllCheckUnCheck(value:boolean) {\r\n\r\n    if(this.measurementPeriods) {\r\n      this.measurementPeriods.forEach(item =>{\r\n          item.selected = value;\r\n      });\r\n    }\r\n\r\n    this.overAllCheckUnCheckValue = value;\r\n  }\r\n\r\n  public onSearch(search) : void {\r\n    this.selectedCalProviderID = '';\r\n\r\n    if (search && (search.providerName || search.providerId || search.providerTin)) {\r\n\r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n\r\n        this.reportsService.searchProvidersForBHI(search.providerId, search.providerName, search.providerTin).subscribe(result => {\r\n          this.providers = result;\r\n          this.displayProviders = this.providers.slice();\r\n          });\r\n      }\r\n      else {\r\n          if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n            this.displayProviders = this.providers\r\n              .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n          }\r\n          else if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n            this.displayProviders = this.providers\r\n              .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n          }\r\n          else if (!UiUtility.isNullUndefinedOrEmpty(search.providerTin)) {\r\n            this.displayProviders = this.providers\r\n              .filter(p => p.taxId.toLowerCase().indexOf(search.providerTin.trim().toLowerCase()) >= 0);\r\n          }        \r\n      }\r\n    }\r\n    else {\r\n      this.displayProviders = this.providers.slice();\r\n    }\r\n  }\r\n\r\n  public onSearchPrescriber(search) : void {\r\n    this.selectedCalProviderID = '';\r\n    if (search && (search.memberId)) {\r\n\r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n\r\n        this.reportsService.searchPrescribersForBHI(search.memberId).subscribe(result => {\r\n          this.providers = result;\r\n          this.displayPrescribers = this.providers.slice();\r\n          });\r\n      }\r\n      else {\r\n          this.displayPrescribers = [];\r\n          this.providers.forEach(provider=>{\r\n\r\n            var candidate: boolean = false;\r\n            provider.bhiPrescriberNPI = \"\";\r\n            provider.bhiPrescriberTaxID = \"\";\r\n\r\n            provider.bhiPrescriberList.forEach(prescriber=>{              \r\n              if(!UiUtility.isNullOrUndefined(search.memberId) && \r\n                  prescriber.prescriberNPI.toLowerCase().indexOf(search.memberId.toLowerCase()) >= 0) {\r\n                    candidate = true;\r\n                    provider.bhiPrescriberNPI += prescriber.prescriberNPI + this.constants.stringSeparator;\r\n                    provider.bhiPrescriberTaxID += prescriber.prescriberTaxID + this.constants.stringSeparator;\r\n              }        \r\n            });\r\n\r\n            if(candidate){        \r\n              provider.bhiPrescriberTaxID = UiUtility.trimLastFromEnd(provider.bhiPrescriberTaxID);\r\n              provider.bhiPrescriberNPI = UiUtility.trimLastFromEnd(provider.bhiPrescriberNPI);\r\n\r\n              this.displayPrescribers.push(provider);\r\n            }              \r\n          });\r\n      }\r\n    }\r\n    else {\r\n      this.displayPrescribers = [];\r\n    }\r\n  }  \r\n}\r\n","<div class=\"reports-bhi-report-type\">\r\n    <app-reports-type [reportType]=\"'bhi'\"></app-reports-type>\r\n</div>\r\n<div class=\"reports-bhi-container\">\r\n  <div class=\"report-alert\">\r\n    <app-alert-info subjectMessage=\" \" uniqueID=\"reportsbhi\" contentMessage=\"Narrow your search using the known provider name or ID.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"report-option\">\r\n      <div class=\"report-option-provider\">\r\n        <p-radioButton name=\"optionname\" [inputId]=\"'optionid'\" [value]=\"'1'\" [(ngModel)]=\"optionValue\" (click)=\"selectOption('1')\"/>\r\n      </div>\r\n      <div class=\"report-option-provider-lbl\">\r\n        Search by Provider\r\n      </div>      \r\n      <div class=\"report-option-prescriber\">\r\n        <p-radioButton name=\"optionname\" [inputId]=\"'optionid'\" [value]=\"'2'\" [(ngModel)]=\"optionValue\" (click)=\"selectOption('2')\"/>\r\n      </div>\r\n      <div class=\"report-option-prescriber-lbl\">\r\n        Search by Prescriber\r\n      </div>            \r\n  </div>\r\n  <div class=\"report-search\" *ngIf=\"optionValue == '1'\">\r\n    <app-reports-provider-search #reportsprovidersearchcomponent (onProviderSearch)=\"onSearch($event)\"></app-reports-provider-search>\r\n  </div>\r\n  <div class=\"report-parameter\" *ngIf=\"optionValue == '1'\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"displayProviders\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\"\r\n    [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n    >\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"5%\"></th>\r\n          <th width=\"20%\" pSortableColumn=\"name\">Name<div class=\"{{sortClass('name')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"calProviderID\" class=\"header-provider-column\">Provider ID<div class=\"{{sortClass('calProviderID')}}\"></div></th>\r\n          <th width=\"15%\" pSortableColumn=\"groupName\" class=\"header-medicalgroup-column\">Medical Group<div class=\"{{sortClass('groupName')}}\"></div></th>          \r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"5%\" class=\"check-column\">\r\n            <p-radioButton name=\"providerid\" [inputId]=\"row.calProviderID\" [value]=\"row.calProviderID\" [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(row)\"></p-radioButton>\r\n          </td>\r\n          <td width=\"20%\">\r\n            <div>{{row.name}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.calProviderID}}</div>\r\n          </td>\r\n          <td width=\"15%\" class=\"medicalgroup-column\">\r\n            <div>{{row.groupName}}</div>\r\n          </td>                \r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>    \r\n  <div class=\"report-search\" *ngIf=\"optionValue == '2'\">\r\n    <app-reports-member-search #reportsprescribersearchcomponent (onMemberSearch)=\"onSearchPrescriber($event)\"></app-reports-member-search>\r\n  </div>    \r\n  <div class=\"report-parameter\" *ngIf=\"optionValue == '2'\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"displayPrescribers\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\"\r\n    [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n    >\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"5%\"></th>\r\n          <th width=\"20%\" pSortableColumn=\"name\">Provider Name<div class=\"{{sortClass('name')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"calProviderID\" class=\"header-provider-column\">Provider ID<div class=\"{{sortClass('calProviderID')}}\"></div></th>          \r\n          <th width=\"20%\" pSortableColumn=\"bhiPrescriberTaxID\" class=\"header-prescribertaxid-column\">Prescriber Tax ID<div class=\"{{sortClass('bhiPrescriberTaxID')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"bhiPrescriberNPI\" class=\"header-prescribernpi-column\">Prescriber NPI<div class=\"{{sortClass('bhiPrescriberNPI')}}\"></div></th>                    \r\n          <th width=\"15%\" pSortableColumn=\"groupName\" class=\"header-medicalgroup-column\">Medical Group<div class=\"{{sortClass('groupName')}}\"></div></th>          \r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"5%\" class=\"check-column\">\r\n            <p-radioButton name=\"providerid\" [inputId]=\"row.calProviderID\" [value]=\"row.calProviderID\" [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(row)\"></p-radioButton>\r\n          </td>\r\n          <td width=\"20%\">\r\n            <div>{{row.name}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.calProviderID}}</div>\r\n          </td>          \r\n          <td width=\"20%\" class=\"prescribertaxid-column\">\r\n            <div pTooltip=\"{{row.bhiPrescriberTaxID}}.\">\r\n              {{row.bhiPrescriberTaxID.length > 40 ? row.bhiPrescriberTaxID.substring(0,40) + '...' : row.bhiPrescriberTaxID}}\r\n            </div>\r\n          </td>\r\n          <td width=\"20%\" class=\"prescribernpi-column\">\r\n            <div pTooltip=\"{{row.bhiPrescriberNPI}}.\">\r\n              {{row.bhiPrescriberNPI.length > 40 ? row.bhiPrescriberNPI.substring(0,40) + '...' : row.bhiPrescriberNPI}}\r\n            </div>\r\n          </td>                                        \r\n          <td width=\"15%\" class=\"medicalgroup-column\">\r\n            <div>{{row.groupName}}</div>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>  \r\n  <div class=\"report-measurementlabel\" *ngIf=\"selectedCalProviderID != ''\">\r\n    <label>Measurement Period for {{displayText}}</label>\r\n  </div>\r\n  <div class=\"report-filelist\" *ngIf=\"selectedCalProviderID && selectedCalProviderID != ''\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"measurementPeriods\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"400px\"\r\n    (onSort)=\"onSort($event)\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"10%\">\r\n            <p-checkbox name='selectunselectall' [(ngModel)]=\"overAllCheckUnCheck\" title=\"\" binary=\"true\"></p-checkbox>\r\n          </th>\r\n          <th width=\"30%\">Measurement Period</th>\r\n          <th width=\"30%\">Status</th>\r\n          <th width=\"30%\">Received Date</th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"10%\" class=\"check-column\">\r\n            <div>\r\n              <p-checkbox name='{{row.MeasurementPeriod}}' [(ngModel)]=\"row.selected\" title=\"\" binary=\"true\"></p-checkbox>\r\n            </div>\r\n          </td>\r\n          <td width=\"30%\">{{row.measurementPeriodDisplay}}</td>\r\n          <td width=\"30%\">\r\n            <div *ngIf=\"row.attestationStatus == 'Attested'\" style=\"color:green\">{{row.attestationStatus}}</div>\r\n            <div *ngIf=\"row.attestationStatus == 'Pending'\" style=\"color:orange\">{{row.attestationStatus}}</div>            \r\n            <div *ngIf=\"row.attestationStatus == 'Past Due'\" style=\"color:red\">{{row.attestationStatus}}</div>\r\n          </td>\r\n          <td width=\"30%\">{{row.attestationDate}}</td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>        \r\n  </div>  \r\n  <div class=\"report-footer\" *ngIf=\"selectedCalProviderID && selectedCalProviderID != ''\">\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" [disabled]='!enableBuildReport'>Download</button>\r\n  </div>\r\n  <!--\r\n  <div class=\"report-filelist\" *ngIf=\"selectedCalProviderID != '' && fileList && fileList.length > 0\">\r\n    <p-dropdown name=\"providerfiles\" id=\"providerfiles\" [options]=\"fileList\" [(ngModel)]=\"selectedFile\">\r\n    </p-dropdown>\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" [disabled]='!enableBuildReport'>Download</button>\r\n  </div>\r\n  -->\r\n</div>\r\n<attestationbhi-dialog #attestation *ngIf=\"showAttestation\" [measurementPeriods]=\"measurementPeriods\" [selectedProvider]=\"selectedProvider\" (submitAttestation)=\"onSubmitAttestation($event)\" (cancelAttestation)=\"onCancelAttestation()\"></attestationbhi-dialog>","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { AuthenticationService, UserProfile } from '@caloptima/authentication';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { PortalConfig } from 'src/app/portal-config';\r\nimport { AttestationDetail } from 'src/app/services/models/attestation-detail';\r\nimport { AttestationStatus } from 'src/app/services/models/attestationstatus';\r\nimport { ProviderDetail } from 'src/app/services/models/provider-detail';\r\nimport { BHIMeasurementPeriod } from 'src/app/services/models/responses/bhi-measurement-period';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\n\r\nconst ATTESTATION_VERSION: string = \"1.0\"\r\n\r\n@Component({\r\n  selector: 'attestationbhi-dialog',\r\n  templateUrl: './attestationbhi-dialog.component.html',\r\n  styleUrls: ['./attestationbhi-dialog.component.scss']\r\n})\r\n\r\nexport class AttestationBHIDialogComponent implements OnInit {\r\n  @Output() submitAttestation = new EventEmitter();\r\n  @Output() cancelAttestation = new EventEmitter();\r\n  @Input() measurementPeriods: BHIMeasurementPeriod[];\r\n  @Input() selectedProvider: ProviderDetail;\r\n  public userProfile: UserProfile;\r\n  public userEmail: string = '';\r\n  public iagree:boolean = false;  \r\n  public validationError: boolean = false;\r\n  public validationMessage: string = \"\";\r\n\r\n  constructor(\r\n    private outhService: OAuthService,\r\n    private authenticationService: AuthenticationService,\r\n    private portalConfig: PortalConfig,\r\n    private reportsService: ReportsService) {\r\n      \r\n  }\r\n  ngOnInit() {\r\n    \r\n    const claims = this.outhService.getIdentityClaims();\r\n      if (claims) {\r\n        this.userEmail = claims['sub'];\r\n      }\r\n\r\n    this.authenticationService.findUsers(null, this.userEmail, this.portalConfig.ClientId,1, 1).subscribe(users=>{\r\n      if(users != null && users.length == 1) {\r\n        this.userProfile = users[0];\r\n      }\r\n    });\r\n  }\r\n\r\n  public get fullname(): string {\r\n    if(this.userProfile)\r\n      return this.userProfile.firstName + ' ' + this.userProfile.lastName;\r\n    else\r\n      return \"\";\r\n  }\r\n\r\n  public onSubmit() {\r\n    let item: any = {\r\n      'email': this.userProfile ? this.userProfile.email : this.userEmail,\r\n      'userID': this.userProfile ? this.userProfile.userID : this.userEmail,\r\n      'mobilePhone': this.userProfile ? this.userProfile.mobilePhone : \"\",\r\n      'version': ATTESTATION_VERSION\r\n    };\r\n    this.onSubmitAttestation();\r\n  }\r\n  \r\n  public onCancel() {\r\n    this.cancelAttestation.emit();\r\n  }\r\n\r\n  public onSubmitAttestation() {\r\n\r\n    this.validationError = false;\r\n\r\n    var list:AttestationDetail[] = [];\r\n\r\n    this.measurementPeriods.forEach(x=>{\r\n      if(x.selected) {\r\n\r\n        var attestionDetail: AttestationDetail = {\r\n          attestationDate : new Date(),\r\n          attestationDueDate : new Date(),\r\n          attestationEmail : this.userProfile ? this.userProfile.email : this.userEmail,\r\n          attestationName  : this.userProfile ? this.userProfile.userID : this.userEmail,\r\n          attestationPhone : this.userProfile ? this.userProfile.mobilePhone : \"\",\r\n          attestationStatus : AttestationStatus.Attested,\r\n          attestationVersion : ATTESTATION_VERSION,\r\n          collectionName : this.selectedProvider.name,\r\n          hasChecked : true,\r\n          pcpId : this.selectedProvider.calProviderID,\r\n          pcpName : this.selectedProvider.name,\r\n          pcpTIN : this.selectedProvider.taxId,        \r\n          reportAttestationID : 0,\r\n          reportPeriod : x.measurementPeriod,\r\n          reportTypeCode : \"BHI\",\r\n          measurementPeriodDisplay : x.measurementPeriod,     \r\n          reportPeriodDisplay : x.measurementPeriodDisplay\r\n        };\r\n\r\n        list.push(attestionDetail);\r\n      }\r\n    });\r\n\r\n    this.reportsService.ApplyAttestation(list).subscribe(result=> {\r\n\r\n      let item: any = {\r\n        'email': this.userProfile ? this.userProfile.email : this.userEmail,\r\n        'userID': this.userProfile ? this.userProfile.userID : this.userEmail,\r\n        'mobilePhone': this.userProfile ? this.userProfile.mobilePhone : \"\",\r\n        'version': ATTESTATION_VERSION\r\n      };\r\n            \r\n      this.submitAttestation.emit(item);\r\n    },\r\n    (error) => {\r\n      this.validationError = true;\r\n      this.validationMessage = \"Error occurred submitting Attestation. Please try again.\";\r\n    });\r\n  }\r\n\r\n  public get display(): boolean {\r\n    return true;\r\n  }\r\n\r\n  public set display(value: boolean) {\r\n    this.onCancel();\r\n  }\r\n}\r\n","<p-dialog header=\"Attestation\" [(visible)]=\"display\" [modal]=\"true\" width=\"600\">\r\n    <div class=\"bls-modal-wrapper\">\r\n\r\n        <div class=\"bls-modal-container\">\r\n    \r\n            <!-- <div class=\"bls-modal-title\">\r\n            Delegate Attestation\r\n            </div> -->\r\n    \r\n            <div class=\"bls-modal-table-wrapper\">\r\n            By agreeing to the terms below, I am attesting that I received and reviewed the CalOptima Health Behavioral Quality Health Measure Report.\r\n            </div>\r\n    \r\n            <div class=\"bls-modal-section\">\r\n                <div class=\"bls-modal-sig-box\">\r\n                    <div class=\"bls-modal-sig-label\">\r\n                    Your Full Name\r\n                    </div>\r\n                    <div class=\"bls-modal-sig-wrapper\">\r\n                        <div class=\"bls-modal-sig\">\r\n                        <input class=\"bls-modal-sig-input\" type=\"text\" placeholder=\"{{fullname}}\" readonly>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n    \r\n            <div class=\"bls-modal-section\">\r\n            <label>\r\n                <div class=\"bls-modal-check-wrapper\">\r\n                    <div class=\"bls-modal-check-left\">\r\n                        <input type=\"checkbox\" class=\"bls-modal-checkbox\" [(ngModel)]=\"iagree\">\r\n                    </div>\r\n                    <div class=\"bls-modal-agree\">\r\n                        By downloading this report I attest that I have received the CalOptima Health BHI Quality Measure Report.\r\n                    </div>\r\n                </div>\r\n            </label>\r\n            </div>\r\n    \r\n            <div class=\"bls-modal-section\">\r\n                <div class=\"bls-modal-button-wrapper\">\r\n                    <button type=\"button\" class=\"btn btn-primary btn-cancel\" (click)=\"onCancel()\">\r\n                        Maybe Later\r\n                    </button>\r\n                    <button id=\"btnSubmit\" type=\"button\" class=\"btn btn-primary btn-rename\" (click)=\"onSubmit()\" [disabled]='!iagree'>\r\n                        Submit\r\n                    </button>  \r\n                </div>\r\n            </div>\r\n    \r\n            <div class=\"bls-modal-section\">\r\n            &nbsp;\r\n            </div>\r\n    \r\n        </div>\r\n    \r\n        <div class=\"bls-modal-section\">\r\n        &nbsp;\r\n        </div>\r\n    \r\n    </div>\r\n    <ng-template pTemplate=\"footer\">\r\n        <app-alert-danger *ngIf='validationError'\r\n            [subjectMessage]=\"''\"\r\n            [contentMessage]=\"validationMessage\">\r\n        </app-alert-danger>\r\n    </ng-template>    \r\n</p-dialog>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CollectionService } from '../../services/collection.service';\r\nimport { ProviderDetail } from '../../services/models/provider-detail';\r\nimport { ReportsService } from '../../services/reports.service';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { saveAs } from 'file-saver';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DropDownObject } from 'src/app/services/models/drop-down-object.interface';\r\n\r\n@Component({\r\n  selector: 'app-reports-bhaba-referrals',\r\n  templateUrl: './reports-bhaba-referrals.component.html',\r\n  styleUrls: ['./reports-bhaba-referrals.component.scss']\r\n})\r\nexport class ReportsBHABAReferralsComponent implements OnInit {\r\n\r\n  public providers:ProviderDetail[] = [];\r\n  public selected: ProviderDetail[] = [];\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  private enableBuildReport: boolean;\r\n  private threshold: number = 25000;\r\n  public showThresholdAlert: boolean = false;\r\n  public fileList: SelectItem[];\r\n  public selectedFile: Date;\r\n\r\n  constructor(\r\n    private sessionService: SessionService, \r\n    private collectionService: CollectionService,\r\n    private reportsService: ReportsService\r\n\r\n    ) {\r\n\r\n      this.sortColumn = 'name';\r\n      this.sortAscending = true;    \r\n      this.enableBuildReport = true;\r\n  }\r\n\r\n  ngOnInit() {\r\n    \r\n    this.fileList = [];\r\n    this.selectedFile = null;\r\n\r\n    var iLoop:number = 1;\r\n    while(iLoop <= 12) {\r\n      var d = new Date();\r\n      d.setMonth(d.getMonth() - iLoop);\r\n      var year:number = d.getFullYear();\r\n      var month:number = d.getMonth() + 1;\r\n      var itemlabel: string = year.toString() + \"-\" + (month.toString().length == 1 ? \"0\" + month.toString() : month.toString());\r\n      var itemValue: Date = new Date(year, month-1);\r\n      \r\n      if(iLoop == 1)\r\n        this.selectedFile = itemValue;\r\n\r\n      this.fileList.push({\r\n        label: itemlabel,\r\n        value: itemValue        \r\n      });\r\n      iLoop++;\r\n    }\r\n\r\n    this.reportsService.getProvidersForBHABAReferrals(this.sessionService.currentPermission.providerCollectionID).subscribe(result=>{\r\n      this.providers = result;\r\n\r\n      let param: any = {\r\n        \"field\": \"name\",\r\n        \"order\": 1\r\n      }\r\n      this.onSort(param)\r\n\r\n      this.selected = result;\r\n    });\r\n  }\r\n\r\n  public onBuildReport() {\r\n\r\n    this.enableBuildReport = false;\r\n\r\n    let providerIds: string[] = [];\r\n    this.selected.forEach(x=> {\r\n      providerIds.push(x.calProviderID);\r\n    });\r\n    var startDate: Date = new Date(this.selectedFile);\r\n    this.reportsService.downloadBHABAReferrals(providerIds, startDate, null).subscribe(result => {\r\n      let fileName:string = \"bh-aba-referrals(\" + startDate.getFullYear() + \"_\" + (startDate.getMonth() + 1) + \").csv\";\r\n      this.saveAsFile(result, fileName, 'text/csv');\r\n      this.enableBuildReport = true;\r\n    })\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public get IsEnterpriseUser() : boolean {\r\n    return (this.sessionService.isEnterpriseAdmin || this.sessionService.isEnterpriseUser);\r\n  }\r\n\r\n  public onSearch(search) : void {\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      this.selected = [];\r\n      this.reportsService.searchProvidersForBHABAReferrals(search.providerId, search.providerName, search.providerTin).subscribe(result => {\r\n        this.providers = result;\r\n       });\r\n    }          \r\n  }\r\n\r\n  public get totalCount() : number{\r\n    this.showThresholdAlert = false;\r\n    \r\n    let totalCount: number = 0;\r\n    this.selected.forEach(x=>{\r\n      totalCount += x.pcpMemberCount\r\n    });\r\n\r\n    if(totalCount > this.threshold)\r\n      this.showThresholdAlert = true;\r\n\r\n    return totalCount;\r\n  }\r\n}\r\n","<div>\r\n  <app-reports-type [reportType]=\"'bhaba'\"></app-reports-type>\r\n</div>\r\n<div class=\"reports-bhabareferrals\">\r\n  <div class=\"report-alert\" *ngIf=\"IsEnterpriseUser\">\r\n    <app-alert-info subjectMessage=\" \" uniqueID=\"reportsbhabareferrals\" contentMessage=\"Narrow your search using the known provider name or ID.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"report-search\" *ngIf=\"IsEnterpriseUser\">\r\n    <app-reports-provider-search (onProviderSearch)=\"onSearch($event)\"></app-reports-provider-search>\r\n  </div>      \r\n  <div class=\"report-parameter\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList [value]=\"providers\" [paginator]=\"false\" \r\n      selectionMode=\"multiple\" [(selection)]=\"selected\" [scrollable]=\"true\" scrollHeight=\"315px\" (onSort)=\"onSort($event)\" [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"10%\" class=\"header-check-column\">\r\n            <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n          </th>\r\n          <th width=\"30%\" pSortableColumn=\"name\" class=\"header-name-column\">Name<div class=\"{{sortClass('name')}}\"></div></th>\r\n          <th width=\"20%\" pSortableColumn=\"calProviderID\" class=\"header-provider-column\">Provider ID<div class=\"{{sortClass('calProviderID')}}\"></div></th>\r\n          <!--<th width=\"20%\" pSortableColumn=\"pcpMemberCount\" class=\"header-pcpmembercount-column\">Member Count<div class=\"{{sortClass('pcpMemberCount')}}\"></div></th>-->\r\n          <th width=\"30%\" pSortableColumn=\"groupName\" class=\"header-group-column\">Medical Group<div class=\"{{sortClass('groupName')}}\"></div></th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"10%\" class=\"check-column\">\r\n            <p-tableCheckbox [value]=\"row\" (click)=\"$event.stopPropagation()\"></p-tableCheckbox>\r\n          </td>\r\n          <td width=\"30%\" class=\"name-column\">\r\n            <div>{{row.name}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.calProviderID}}</div>\r\n          </td>\r\n          <!--\r\n          <td width=\"20%\" class=\"pcpmembercount-column\">\r\n            <div>{{row.pcpMemberCount}}</div>\r\n          </td>\r\n          -->\r\n          <td width=\"30%\" class=\"group-column\">\r\n            <div>{{row.groupName}}</div>\r\n          </td>          \r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"summary\">\r\n        <!-- <div class=\"report-countsummary\">\r\n          <span>\r\n            Total Selected Members : {{totalCount}}.\r\n          </span>\r\n          <span *ngIf=\"showThresholdAlert\" style=\"color: red;\">\r\n            &nbsp;Too many members selected ({{threshold}}) MAX.\r\n          </span>\r\n        </div> \r\n        <div class=\"report-summary\">\r\n          <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\" tabindex=\"2\" [disabled]='!enableBuildReport || selected.length == 0 || showThresholdAlert'>Get BH ABA Referrals</button>\r\n        </div> -->         \r\n      </ng-template>      \r\n    </p-table>\r\n  </div>  \r\n  <div class=\"report-measurementlabel\">\r\n    <p><b>Measurement Period</b></p>\r\n  </div>\r\n  <div class=\"report-filelist\">\r\n    <p-dropdown name=\"taxfiles\" id=\"taxfiles\" [options]=\"fileList\" [(ngModel)]=\"selectedFile\">\r\n    </p-dropdown>\r\n  </div>\r\n  <div class=\"report-download\">\r\n    <button class=\"btn btn-primary\" type=\"button\" (click)=\"onBuildReport()\">Download BH ABA Referrals</button>\r\n  </div>\r\n</div>","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, InjectionToken, EventEmitter, Directive, Optional, Input, Output, NgModule } from '@angular/core';\n\n/**\n * A pending copy-to-clipboard operation.\n *\n * The implementation of copying text to the clipboard modifies the DOM and\n * forces a re-layout. This re-layout can take too long if the string is large,\n * causing the execCommand('copy') to happen too long after the user clicked.\n * This results in the browser refusing to copy. This object lets the\n * re-layout happen in a separate tick from copying by providing a copy function\n * that can be called later.\n *\n * Destroy must be called when no longer in use, regardless of whether `copy` is\n * called.\n */\nclass PendingCopy {\n  constructor(text, _document) {\n    this._document = _document;\n    const textarea = this._textarea = this._document.createElement('textarea');\n    const styles = textarea.style;\n    // Hide the element for display and accessibility. Set a fixed position so the page layout\n    // isn't affected. We use `fixed` with `top: 0`, because focus is moved into the textarea\n    // for a split second and if it's off-screen, some browsers will attempt to scroll it into view.\n    styles.position = 'fixed';\n    styles.top = styles.opacity = '0';\n    styles.left = '-999em';\n    textarea.setAttribute('aria-hidden', 'true');\n    textarea.value = text;\n    // Making the textarea `readonly` prevents the screen from jumping on iOS Safari (see #25169).\n    textarea.readOnly = true;\n    // The element needs to be inserted into the fullscreen container, if the page\n    // is in fullscreen mode, otherwise the browser won't execute the copy command.\n    (this._document.fullscreenElement || this._document.body).appendChild(textarea);\n  }\n  /** Finishes copying the text. */\n  copy() {\n    const textarea = this._textarea;\n    let successful = false;\n    try {\n      // Older browsers could throw if copy is not supported.\n      if (textarea) {\n        const currentFocus = this._document.activeElement;\n        textarea.select();\n        textarea.setSelectionRange(0, textarea.value.length);\n        successful = this._document.execCommand('copy');\n        if (currentFocus) {\n          currentFocus.focus();\n        }\n      }\n    } catch {\n      // Discard error.\n      // Initial setting of {@code successful} will represent failure here.\n    }\n    return successful;\n  }\n  /** Cleans up DOM changes used to perform the copy operation. */\n  destroy() {\n    const textarea = this._textarea;\n    if (textarea) {\n      textarea.remove();\n      this._textarea = undefined;\n    }\n  }\n}\n\n/**\n * A service for copying text to the clipboard.\n */\nlet Clipboard = /*#__PURE__*/(() => {\n  class Clipboard {\n    constructor(document) {\n      this._document = document;\n    }\n    /**\n     * Copies the provided text into the user's clipboard.\n     *\n     * @param text The string to copy.\n     * @returns Whether the operation was successful.\n     */\n    copy(text) {\n      const pendingCopy = this.beginCopy(text);\n      const successful = pendingCopy.copy();\n      pendingCopy.destroy();\n      return successful;\n    }\n    /**\n     * Prepares a string to be copied later. This is useful for large strings\n     * which take too long to successfully render and be copied in the same tick.\n     *\n     * The caller must call `destroy` on the returned `PendingCopy`.\n     *\n     * @param text The string to copy.\n     * @returns the pending copy operation.\n     */\n    beginCopy(text) {\n      return new PendingCopy(text, this._document);\n    }\n    static {\n      this.ɵfac = function Clipboard_Factory(t) {\n        return new (t || Clipboard)(i0.ɵɵinject(DOCUMENT));\n      };\n    }\n    static {\n      this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n        token: Clipboard,\n        factory: Clipboard.ɵfac,\n        providedIn: 'root'\n      });\n    }\n  }\n  return Clipboard;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Injection token that can be used to provide the default options to `CdkCopyToClipboard`. */\nconst CDK_COPY_TO_CLIPBOARD_CONFIG = /*#__PURE__*/new InjectionToken('CDK_COPY_TO_CLIPBOARD_CONFIG');\n/**\n * Provides behavior for a button that when clicked copies content into user's\n * clipboard.\n */\nlet CdkCopyToClipboard = /*#__PURE__*/(() => {\n  class CdkCopyToClipboard {\n    constructor(_clipboard, _ngZone, config) {\n      this._clipboard = _clipboard;\n      this._ngZone = _ngZone;\n      /** Content to be copied. */\n      this.text = '';\n      /**\n       * How many times to attempt to copy the text. This may be necessary for longer text, because\n       * the browser needs time to fill an intermediate textarea element and copy the content.\n       */\n      this.attempts = 1;\n      /**\n       * Emits when some text is copied to the clipboard. The\n       * emitted value indicates whether copying was successful.\n       */\n      this.copied = new EventEmitter();\n      /** Copies that are currently being attempted. */\n      this._pending = new Set();\n      if (config && config.attempts != null) {\n        this.attempts = config.attempts;\n      }\n    }\n    /** Copies the current text to the clipboard. */\n    copy(attempts = this.attempts) {\n      if (attempts > 1) {\n        let remainingAttempts = attempts;\n        const pending = this._clipboard.beginCopy(this.text);\n        this._pending.add(pending);\n        const attempt = () => {\n          const successful = pending.copy();\n          if (!successful && --remainingAttempts && !this._destroyed) {\n            // We use 1 for the timeout since it's more predictable when flushing in unit tests.\n            this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));\n          } else {\n            this._currentTimeout = null;\n            this._pending.delete(pending);\n            pending.destroy();\n            this.copied.emit(successful);\n          }\n        };\n        attempt();\n      } else {\n        this.copied.emit(this._clipboard.copy(this.text));\n      }\n    }\n    ngOnDestroy() {\n      if (this._currentTimeout) {\n        clearTimeout(this._currentTimeout);\n      }\n      this._pending.forEach(copy => copy.destroy());\n      this._pending.clear();\n      this._destroyed = true;\n    }\n    static {\n      this.ɵfac = function CdkCopyToClipboard_Factory(t) {\n        return new (t || CdkCopyToClipboard)(i0.ɵɵdirectiveInject(Clipboard), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(CDK_COPY_TO_CLIPBOARD_CONFIG, 8));\n      };\n    }\n    static {\n      this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n        type: CdkCopyToClipboard,\n        selectors: [[\"\", \"cdkCopyToClipboard\", \"\"]],\n        hostBindings: function CdkCopyToClipboard_HostBindings(rf, ctx) {\n          if (rf & 1) {\n            i0.ɵɵlistener(\"click\", function CdkCopyToClipboard_click_HostBindingHandler() {\n              return ctx.copy();\n            });\n          }\n        },\n        inputs: {\n          text: [i0.ɵɵInputFlags.None, \"cdkCopyToClipboard\", \"text\"],\n          attempts: [i0.ɵɵInputFlags.None, \"cdkCopyToClipboardAttempts\", \"attempts\"]\n        },\n        outputs: {\n          copied: \"cdkCopyToClipboardCopied\"\n        },\n        standalone: true\n      });\n    }\n  }\n  return CdkCopyToClipboard;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ClipboardModule = /*#__PURE__*/(() => {\n  class ClipboardModule {\n    static {\n      this.ɵfac = function ClipboardModule_Factory(t) {\n        return new (t || ClipboardModule)();\n      };\n    }\n    static {\n      this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n        type: ClipboardModule\n      });\n    }\n    static {\n      this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n    }\n  }\n  return ClipboardModule;\n})();\n/*#__PURE__*/(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_COPY_TO_CLIPBOARD_CONFIG, CdkCopyToClipboard, Clipboard, ClipboardModule, PendingCopy };\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { OAuthService } from 'angular-oauth2-oidc';\r\nimport { Subscription } from 'rxjs';\r\nimport { AlertInfoComponent } from 'src/app/app-components/alerts/alert-info/alert-info.component';\r\nimport { Messages } from 'src/app/app.messages';\r\nimport { ProviderResource } from 'src/app/services/models/portal-resource';\r\nimport { ProviderDetailsWithTrainingAttestation } from 'src/app/services/models/provider-detail';\r\nimport { ProviderTaxDetailsWithTrainingAttestation, ProviderTaxNetwork } from 'src/app/services/models/provider-tax-details';\r\nimport { ProviderTrainingAttestationDetail } from 'src/app/services/models/provider-training-attestation-detail';\r\nimport { ProviderTrainingAttestationApplyRequest } from 'src/app/services/models/requests/provider-training-attestation-apply-request';\r\nimport { TrainingAttestationStatus } from 'src/app/services/models/training-attestation-status';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport { Clipboard } from '@angular/cdk/clipboard';\r\nimport { UiUtility } from 'src/app/utils/ui-utility';\r\n\r\n@Component({\r\n  selector: 'app-attestation-provider-training-dialog',\r\n  templateUrl: './attestation-provider-training-dialog.component.html',\r\n  styleUrl: './attestation-provider-training-dialog.component.scss'\r\n})\r\nexport class AttestationProviderTrainingDialogComponent implements OnInit, OnDestroy {\r\n  public trainingAttestationStatusDisplay: string;\r\n  public providerName: string;\r\n  public attestationConfirmation: boolean = false;\r\n  public attendees: string;\r\n  public providerTaxNetwork: ProviderTaxNetwork[] = [];\r\n  public trainingAttestationResources: ProviderResource[] = [];\r\n  public isPending: boolean = true;\r\n  public headerTitle: string = 'Annual Provider Training Attestation Submission';\r\n  public attestationName: string = 'Annual Provider Training';\r\n  public resourceGeneralMessage: string = '';\r\n  public resourceDetailMessage: string = '';\r\n  public errorMessage: string = '';\r\n  public attendeesInvalid: boolean;\r\n  public attendeesPlaceholder: string = \"Enter attendees. Characters only, separated by comma (,) if necessary\";\r\n  public attendeesErrorMessage: string = \"Please enter characters only and separate attendees with comma (,) if necessary.\"\r\n  private attendeesRegex: string = \"^([a-zA-Z , *]*)$\";\r\n\r\n  public get enableSubmitAttestation(): boolean {\r\n    return this.trainingAttestationResources && this.trainingAttestationResources.length \r\n      && this.attendees && !UiUtility.isNullUndefinedOrEmpty(this.attendees.trim()) && !this.attendeesInvalid\r\n      && this.trainingAttestationResources.find(r => r.resourceTrained === null || r.resourceTrained === false) === undefined\r\n            && this.attestationConfirmation;\r\n  }\r\n\r\n  private providerTaxId: string;\r\n  private displayDialog: boolean = true;\r\n  private providerTrainingAttestationSubscription: Subscription;\r\n  private currentUser: string;\r\n  \r\n  @Input() taxDetail: ProviderTaxDetailsWithTrainingAttestation = null;\r\n  @Input() providerDetail: ProviderDetailsWithTrainingAttestation = null;\r\n  @Output() onAttestationSubmission = new EventEmitter<any>();\r\n\r\n  public get display() : boolean {\r\n    return this.displayDialog\r\n  }\r\n\r\n  public set display(value:boolean) {\r\n    this.displayDialog = value;\r\n  }\r\n\r\n  constructor (\r\n    private reportService: ReportsService,\r\n    private oAuthService: OAuthService,\r\n    private sessionService: SessionService,\r\n    private messages: Messages,\r\n    private clipboard: Clipboard\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n    const claims = this.oAuthService.getIdentityClaims();\r\n    this.currentUser = claims['sub'];\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.providerTrainingAttestationSubscription != null) {\r\n      this.providerTrainingAttestationSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  public onClose(): void {\r\n    this.onAttestationSubmission.emit();\r\n    this.display = false;\r\n  }\r\n\r\n  public onShow() {\r\n    let trainingCompleted: string = '';\r\n    this.errorMessage = '';\r\n    this.attendeesInvalid = false;\r\n\r\n    if (this.taxDetail && this.providerDetail) {\r\n      this.onAttestationSubmission.emit('error');\r\n      this.display = false;\r\n      throw new Error('only pass either one of the object: taxDetail or providerDetail.');\r\n    }\r\n\r\n    if (this.taxDetail) {\r\n      this.providerTaxId = this.taxDetail.providerTaxId;\r\n      this.providerName = this.taxDetail.providerTaxName;\r\n      this.trainingAttestationStatusDisplay = this.taxDetail.trainingAttestationStatusDisplay;\r\n      this.attendees = this.taxDetail.attendees;\r\n      this.isPending = this.taxDetail.trainingAttestationStatusDisplay !== 'Submitted' && !(this.sessionService.isEnterpriseAdmin || this.sessionService.isEnterpriseUser);\r\n      this.attestationName = 'Annual Provider Training';\r\n      trainingCompleted = this.taxDetail.trainingCompleted ? this.taxDetail.trainingCompleted : '';\r\n\r\n      if (!this.taxDetail.attestationDate) {\r\n        this.taxDetail.attestationDate = new Date();\r\n      }\r\n      this.resourceGeneralMessage = 'Per CalOptima Health Policy EE.1103: Provider Network Training: Newly Contracted Provider and annual training must be provided by CalOptima Health and its Health Networks to medical, behavioral health, and Long-Term Services and Support (LTSS) Providers (hereinafter referred to as “Network Providers”), any Provider that interacts with CalOptima Health Members and Subcontractors who serve CalOptima Health’s Members participating in CalOptima Health Medi-Cal, OneCare and Program of All-Inclusive Care for the Elderly (PACE) programs, in accordance with applicable Department of Health Care Services (DHCS) and the Centers for Medicare & Medicaid Services (CMS) requirements.';\r\n      this.resourceDetailMessage = 'Annually, Providers participating with CalOptima Health and Health Networks, have completed, attested, and retained such records of Newly Contracted Provider and Annual Training located on CalOptima Health’s website';\r\n    }\r\n    else {\r\n      this.providerTaxId = this.providerDetail.taxId;\r\n      this.providerName = this.providerDetail.name;\r\n      this.trainingAttestationStatusDisplay = this.providerDetail.trainingAttestationStatusDisplay;\r\n      this.attendees = this.providerDetail.attendees;\r\n      this.isPending = this.providerDetail.trainingAttestationStatusDisplay !== 'Submitted' && !(this.sessionService.isEnterpriseAdmin || this.sessionService.isEnterpriseUser);\r\n      this.attestationName = 'Initial Provider Training';\r\n      trainingCompleted = this.providerDetail.trainingCompleted ? this.providerDetail.trainingCompleted : '';\r\n\r\n      if (!this.providerDetail.attestationDate) {\r\n        this.providerDetail.attestationDate = new Date();\r\n      }\r\n\r\n      this.resourceGeneralMessage = 'Per CalOptima Health Policy EE.1103: Provider Network Training: Newly Contracted Provider and annual training must be provided by CalOptima Health and its Health Networks to medical, behavioral health, and Long-Term Services and Support (LTSS) Providers (hereinafter referred to as “Network Providers”), any Provider that interacts with CalOptima Health Members and Subcontractors who serve CalOptima Health’s Members participating in CalOptima Health Medi-Cal, OneCare and Program of All-Inclusive Care for the Elderly (PACE) programs, in accordance with applicable Department of Health Care Services (DHCS) and the Centers for Medicare & Medicaid Services (CMS) requirements.';\r\n      this.resourceDetailMessage = 'Providers participating with CalOptima Health and Health Networks must have completed, attested, and retained such records of Newly Contracted Providers within 30 days of their contract, located on CalOptima Health’s website';\r\n    }\r\n\r\n    if (!this.isPending) {\r\n      this.attendeesPlaceholder = \"\";\r\n    }\r\n    this.providerTrainingAttestationSubscription = this.reportService.getProviderTrainingAttestationDetail(this.providerTaxId)\r\n    .subscribe(result => {\r\n        this.providerTaxNetwork = result.providerTaxNetwork;\r\n        let row = 1;\r\n        const colCount = 2;\r\n        for (let i=1; i <= this.providerTaxNetwork.length; i++) {\r\n          this.providerTaxNetwork[i-1].rowNum = row;\r\n          if (i%colCount === 0) {  \r\n            row++;\r\n          }\r\n        };\r\n\r\n        this.trainingAttestationResources = result.trainingAttestationResources;\r\n        this.trainingAttestationResources.forEach(t => {\r\n          t.resourceTrained = trainingCompleted.indexOf(t.providerResourcesID.toString()) !== -1 ? true : false;\r\n        });\r\n\r\n        if (!this.isPending) {\r\n          this.attestationConfirmation = true;\r\n          this.headerTitle = this.taxDetail ? 'Annual Provider Training Attestation Detail' : 'Initial Provider Training Attestation Detail';\r\n        }\r\n        else {\r\n          this.headerTitle = this.taxDetail ? 'Annual Provider Training Attestation Submission' : 'Initial Provider Training Attestation Submission';\r\n        }\r\n    }, () => {\r\n      this.errorMessage = this.messages.MessageGenericError;\r\n    });\r\n  }\r\n\r\n  public onAttestResource(event: any, resource: ProviderResource, index: number) {\r\n    if (event) {\r\n      event.preventDefault();\r\n    }\r\n    const width = document.documentElement.clientWidth * 0.8;\r\n    const height = document.documentElement.clientHeight * 0.8;\r\n    const windowProps = 'resizable=yes, scrollbars=yes, titlebar=yes, width=' + width + ',height=' + height;\r\n\r\n    if (this.isPending) {\r\n      setTimeout(() => {\r\n        resource.resourceTrained = true; // used this to mark a resource has been viewed with \"1\"\r\n      }, 1000);\r\n    }\r\n    window.open(resource.resourceSource, '_blank', windowProps);\r\n  }\r\n\r\n  public onCancel() {\r\n    this.onAttestationSubmission.emit('cancel');\r\n    this.display = false;\r\n  }\r\n\r\n  public onSubmit() {\r\n    const re = new RegExp(this.attendeesRegex);\r\n    if (UiUtility.isNullUndefinedOrEmpty(this.attendees) || !this.isValidForm()) {\r\n      this.attendeesInvalid = true;\r\n      return;\r\n    }\r\n    else {\r\n      this.attendeesInvalid = false;\r\n    }\r\n\r\n    let request: ProviderTrainingAttestationApplyRequest[] = [];\r\n    let trainingCompleted: string = '';\r\n    this.errorMessage = '';\r\n\r\n    for(var i = 0; i < this.trainingAttestationResources.length; i++) {\r\n      trainingCompleted += this.trainingAttestationResources[i].providerResourcesID.toString();\r\n      if (i >= 0 &&  i < this.trainingAttestationResources.length-1)\r\n        trainingCompleted += '|';\r\n    }\r\n\r\n    if (this.taxDetail) {\r\n      var attestationYear:number = new Date().getFullYear();\r\n      if(this.taxDetail.trainingDueDate){\r\n        const temp = new Date(this.taxDetail.trainingDueDate);\r\n        attestationYear = temp.getFullYear();\r\n      }\r\n\r\n      request.push({\r\n        providerIdOrTaxId : this.taxDetail.providerTaxId,\r\n        providerNPI: \"\",\r\n        attestationBy : this.currentUser,\r\n        attendees: this.attendees.trim(),\r\n        validationBy : null,\r\n        attestationYear:  attestationYear,     \r\n        trainingCompleted: trainingCompleted   \r\n      });\r\n      this.reportService.applyProviderTrainingAttestationAnnual(request).subscribe(p => {\r\n        this.taxDetail.trainingAttestationStatus = TrainingAttestationStatus.Submitted;\r\n        this.taxDetail.trainingAttestationStatusDisplay = \"Submitted\";\r\n        this.taxDetail.attestationDate = new Date();\r\n        this.taxDetail.trainingCompleted = trainingCompleted;\r\n        this.taxDetail.attendees = this.attendees ? this.attendees.trim() : this.attendees;\r\n        this.onAttestationSubmission.emit(this.taxDetail);\r\n        this.display = false;\r\n      }, error => {\r\n          console.log(error);\r\n          this.errorMessage = this.messages.MessageGenericError;\r\n      });\r\n    }\r\n    else {\r\n      request.push({\r\n        providerIdOrTaxId : this.providerDetail.calProviderID,\r\n        providerNPI: this.providerDetail.providerNPI,\r\n        attestationBy : this.currentUser,\r\n        attendees: this.attendees.trim(),\r\n        validationBy : null,\r\n        attestationYear : null,\r\n        trainingCompleted: trainingCompleted  \r\n      });\r\n      this.reportService.applyProviderTrainingAttestationIndividual(request).subscribe(p => {\r\n        this.providerDetail.trainingAttestationStatus = TrainingAttestationStatus.Submitted;\r\n        this.providerDetail.trainingAttestationStatusDisplay = \"Submitted\";\r\n        this.providerDetail.attestationDate = new Date();\r\n        this.providerDetail.trainingCompleted = trainingCompleted;\r\n        this.providerDetail.attendees = this.attendees ? this.attendees.trim() : this.attendees;\r\n        this.onAttestationSubmission.emit(this.providerDetail);\r\n        this.display = false;\r\n      }, error => {\r\n          console.log(error);\r\n          this.errorMessage = this.messages.MessageGenericError;\r\n      });\r\n    }\r\n  }\r\n\r\n  public onConfirmationChanged(event) {\r\n    if (this.isPending) {\r\n      this.attestationConfirmation = this.attestationConfirmation ? false : true;\r\n    }\r\n  }\r\n\r\n  public copyToClipboard(event: any, value: string): void {\r\n    if (event) {\r\n      event.preventDefault();\r\n    }\r\n    const successful = this.clipboard.copy(value);\r\n  }\r\n\r\n  public onKeyPress() {\r\n    return this.isValidForm();\r\n  }\r\n\r\n  private isValidForm() {\r\n    const re = new RegExp(this.attendeesRegex);\r\n    const valid = re.test(this.attendees);\r\n    this.attendeesInvalid = !valid ? true : false;\r\n    return valid;\r\n  }\r\n}\r\n","<p-dialog class=\"provider-training-attestation-detail-dialog\" \r\n    header=\"{{headerTitle}}\"  \r\n    [style]=\"{width: '85%', height: '85%'}\"  \r\n    [(visible)]=\"display\" \r\n    [modal]=\"true\" \r\n    (onHide)=\"onClose()\"\r\n    (onShow)=\"onShow()\" \r\n    [draggable]=\"false\"\r\n    [baseZIndex]=\"10000\"\r\n    [closeOnEscape]=\"false\"\r\n>\r\n    <div class=\"provider-training-attestation-detail-container\">\r\n        <div class=\"attestation-detail-error\" *ngIf=\"errorMessage.length\">\r\n            {{errorMessage}}\r\n        </div>\r\n        <div class=\"attestation-detail-header\">\r\n            <div class=\"report-alert\">\r\n                <app-alert-info uniqueID=\"attestation-detail\" subjectMessage=\"Provider Training Attestation\" contentMessage=\" -  You must review all of the listed training materials in order to complete the attestation.\"></app-alert-info>\r\n            </div>\r\n            <h3>{{providerName}}</h3>\r\n            <hr class=\"header-underline\"/>\r\n        </div>\r\n        <div *ngIf=\"taxDetail\" class=\"attestation-detail-tin-info\"> \r\n            <div class=\"info-attendees-l\">\r\n                Attendees\r\n                <span *ngIf=\"isPending\" class=\"required-field-star\">*</span> \r\n            </div>\r\n            <div class=\"info-attendees-v\">\r\n                <input class=\"form-control\" type=\"text\" name=\"txtAttendees\" id=\"txtAttendees\"\r\n                  [readonly]=\"!isPending\" [(ngModel)]=\"attendees\" maxlength=\"2000\" width=\"200px\"\r\n                  pattern=\"[a-zA-Z , *]*\" [placeholder]=\"attendeesPlaceholder\" \r\n                  [ngClass]=\"{'invalid-input': attendeesInvalid}\" (keyup)=\"onKeyPress($event)\" required>   \r\n                <div class=\"alert-error\" *ngIf=\"attendeesInvalid\">{{attendeesErrorMessage}}</div>\r\n            </div>\r\n            <div class=\"info-tin-l\">TIN</div>\r\n            <div class=\"info-tin-v\">{{taxDetail.providerTaxId}}</div>\r\n            <div class=\"info-training-date-l\">Training Date</div>\r\n            <div class=\"info-training-date-v\">{{taxDetail.attestationDate | date:'MM/dd/yy'}}</div>\r\n            <div class=\"info-training-status-l\">Status</div>\r\n            <div class=\"info-training-status-v\">{{taxDetail.trainingAttestationStatusDisplay}}</div>\r\n        </div>\r\n        <div *ngIf=\"providerDetail\" class=\"attestation-detail-provider-info\">\r\n            <div class=\"info-attendees-l\">\r\n                Attendees\r\n                <span *ngIf=\"isPending\" class=\"required-field-star\">*</span> \r\n            </div>\r\n            <div class=\"info-attendees-v\">\r\n                <input class=\"form-control\" type=\"text\" name=\"txtAttendees\" id=\"txtAttendees\"\r\n                  [readonly]=\"!isPending\" [(ngModel)]=\"attendees\" maxlength=\"2000\" width=\"200px\"\r\n                  pattern=\"[a-zA-Z , *]*\" [placeholder]=\"attendeesPlaceholder\" \r\n                  [ngClass]=\"{'invalid-input': attendeesInvalid}\" (keyup)=\"onKeyPress()\" required>   \r\n                <div class=\"alert-error\" *ngIf=\"attendeesInvalid\">{{attendeesErrorMessage}}</div>\r\n            </div>\r\n            <div class=\"info-provider-l\">Provider ID</div>\r\n            <div class=\"info-provider-v\">{{providerDetail.calProviderID}}</div>\r\n            <div class=\"info-npi-l\">NPI</div>\r\n            <div class=\"info-npi-v\">{{providerDetail.providerNPI}}</div>\r\n            <div class=\"info-tin-l\">TIN</div>\r\n            <div class=\"info-tin-v\">{{providerDetail.taxId}}</div>\r\n            <div class=\"info-training-date-l\">Training Date</div>\r\n            <div class=\"info-training-date-v\">{{providerDetail.attestationDate | date:'MM/dd/yy'}}</div>\r\n            <div class=\"info-training-status-l\">Status</div>\r\n            <div class=\"info-training-status-v\">\r\n                <span *ngIf=\"trainingAttestationStatusDisplay === 'Verified' || trainingAttestationStatusDisplay === 'Submitted'\" style=\"color:green\">{{trainingAttestationStatusDisplay}}</span>\r\n                <span *ngIf=\"trainingAttestationStatusDisplay === 'Pending'\" style=\"color:orange\">{{trainingAttestationStatusDisplay}}</span>            \r\n                <span *ngIf=\"trainingAttestationStatusDisplay === 'Past Due'\" style=\"color:red\">{{trainingAttestationStatusDisplay}}</span>\r\n            </div>\r\n        </div>\r\n        <div class=\"info-network-l\">\r\n            <i class=\"fa fa-circle\" aria-hidden=\"true\" class=\"list-dot\"></i><p>Health Network Affiliation</p>\r\n            <div class=\"info-network-list\">\r\n                <div class=\"grid-item\" *ngFor=\"let network of providerTaxNetwork;\"> \r\n                    <div class=\"even\" *ngIf=\"network.rowNum%2 !== 0\">{{network.networkName}}</div>\r\n                    <div class=\"odd\" *ngIf=\"network.rowNum%2 === 0\">{{network.networkName}}</div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"attestation-detail-training-material\">\r\n            <div class=\"training-info\">\r\n                <p>\r\n                    <span>{{resourceGeneralMessage}}</span>\r\n                </p>\r\n                <p>\r\n                    <span>{{resourceDetailMessage}}</span>&nbsp;\r\n                    <a href=\"https://www.caloptima.org\" target=\"_blank\">www.caloptima.org</a>.\r\n                </p>\r\n                <p class=\"training-header\">\r\n                    <span>TRAINING MATERIALS</span>\r\n                    <span *ngIf=\"isPending\" class=\"required-field-star\">*</span>\r\n                </p>\r\n                <div class=\"training-materials\">\r\n                    <div *ngFor=\"let resource of trainingAttestationResources; let currentIndex = index\">\r\n                        <div  *ngIf=\"!resource.resourceTrained\">\r\n                            <i class=\"fa fa-arrow-circle-right pending-color\" aria-hidden=\"true\" id=icon-{{currentIndex}}></i>\r\n                            <a href=\"javascript:void(0);\" (click)=\"onAttestResource($event, resource, currentIndex)\" title=\"{{resource.resourceDesc}}\" id=link-{{currentIndex}} class=\"pending-color\">{{resource.resourceDesc}}</a>\r\n                            <button \r\n                                pTooltip=\"Link copied. People accessing the link can view training content.\"\r\n                                tooltipEvent=\"focus\"\r\n                                tooltipPosition=\"right\"\r\n                                tooltipStyleClass=\"blue-theme provider-help-tooltip\">\r\n                                <i class=\"fa fa fa-clipboard copy-url pending-color\" \r\n                                    title=\"Copy link\" \r\n                                    aria-hidden=\"true\" \r\n                                    id=icon-{{currentIndex}} \r\n                                    (click)=\"copyToClipboard($event, resource.resourceSource)\">\r\n                                </i>\r\n                            </button>\r\n                        </div>\r\n                        <div *ngIf=\"resource.resourceTrained\">\r\n                            <i class=\"fa fa-check-circle attested-color\" aria-hidden=\"true\" id=icon-{{currentIndex}}></i>\r\n                            <a href=\"javascript:void(0);\" (click)=\"onAttestResource($event, resource, currentIndex)\" title=\"{{resource.resourceDesc}}\" id=link-{{currentIndex}} class=\"attested-color\">{{resource.resourceDesc}}</a>\r\n                            <button \r\n                                pTooltip=\"Link copied. People accessing the link can view training content.\"\r\n                                tooltipEvent=\"focus\"\r\n                                tooltipPosition=\"right\"\r\n                                tooltipStyleClass=\"blue-theme provider-help-tooltip\">\r\n                                <i class=\"fa fa fa-clipboard copy-url pending-color\" \r\n                                    title=\"Copy link\" \r\n                                    aria-hidden=\"true\" \r\n                                    id=icon-{{currentIndex}} \r\n                                    (click)=\"copyToClipboard($event, resource.resourceSource)\">\r\n                                </i>\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"attestation-detail-footer\">\r\n            <div class=\"header\">\r\n                <span class=\"header\">ATTESTATION</span>\r\n                <span *ngIf=\"isPending\" class=\"required-field-star\">*</span>\r\n            </div>\r\n            <p>CalOptima Health provided training on the above information and the resources available on CalOptima Health's website.</p>\r\n            <div class=\"confirm\">\r\n                <p-checkbox name=\"confirm-attestation\" id=\"confirm-attestation\" [(ngModel)]=\"attestationConfirmation\" title=\"I attest that I have completed the Annual Provider Training.\" binary=\"true\" [disabled]=\"!isPending\"></p-checkbox>\r\n                <span class=\"confirm-label\">I attest that I have completed the {{attestationName}}.</span>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <p-footer>\r\n        <div class=\"attestation-detail-footer-action\">\r\n            <span *ngIf=\"isPending\" class=\"required-field\">* Required field</span>\r\n            <div class=\"action-buttons\">\r\n                <button type=\"button\" class=\"btn btn-secondary btn-cancel\" (click)=\"onCancel()\">Cancel</button>                     \r\n                <button *ngIf=\"isPending\" type=\"button\"  class=\"btn btn-primary btn-submit\" [disabled]=\"!enableSubmitAttestation\" (click)=\"onSubmit()\" >Submit Attestation</button>\r\n            </div>\r\n        </div>\r\n    </p-footer>\r\n</p-dialog>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Messages } from 'src/app/app.messages';\r\nimport { ProviderTaxDetails, ProviderTaxDetailsWithTrainingAttestation } from 'src/app/services/models/provider-tax-details';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport { UiUtility } from 'src/app/utils/ui-utility';\r\n\r\n@Component({\r\n  selector: 'app-attestation-provider-training-annual',\r\n  templateUrl: './attestation-provider-training-annual.component.html',\r\n  styleUrl: './attestation-provider-training-annual.component.scss'\r\n})\r\nexport class AttestationProviderTrainingAnnualComponent implements OnInit {\r\n  private userCollectionSubscription: Subscription;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n\r\n  public displayProviderAttestationTraining: boolean;\r\n  public displayTins: ProviderTaxDetailsWithTrainingAttestation[];\r\n  public tins: ProviderTaxDetailsWithTrainingAttestation[];\r\n  public selectedTin: string;\r\n  public selectedTaxDetail: ProviderTaxDetailsWithTrainingAttestation;\r\n  public totalRecords: number;\r\n  public displayMessage = false;\r\n  public isEnterpriseUser = false;\r\n  public errorMessage: string = '';\r\n\r\n  constructor(\r\n    private sessionService: SessionService,\r\n    private reportService: ReportsService,\r\n    private messages: Messages\r\n  ) {\r\n    this.sortColumn = 'name';\r\n    this.sortAscending = true;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.isEnterpriseUser = this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser\r\n    if(this.isEnterpriseUser ) {\r\n      // Do nothing, let internal user to search\r\n    }\r\n    else {\r\n      const currentCollectionId = this.sessionService.currentPermission.providerCollectionID;\r\n      this.searchProviders(currentCollectionId);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.userCollectionSubscription != null) {\r\n      this.userCollectionSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.tins.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  \r\n  public onSearch(search: any) : void {\r\n    this.selectedTin = '';\r\n\r\n    if (search && !UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n      if(this.isEnterpriseUser) {\r\n        this.searchProviders(0, search.providerId);\r\n      }\r\n      else {\r\n        this.displayTins = this.tins\r\n          .filter(p => p.providerTaxId.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n      }\r\n    }\r\n    else {\r\n      this.displayTins = this.tins.slice();\r\n    }\r\n  }\r\n\r\n  public onTinSelected(tin: ProviderTaxDetailsWithTrainingAttestation, isRadioButton: boolean = false) {\r\n    if (tin.trainingAttestationStatusDisplay === 'Submitted' && isRadioButton) {\r\n      return; //disable radio button\r\n    }\r\n    \r\n    this.selectedTaxDetail = this.displayTins.find(t => t.trainingAttestationId === tin.trainingAttestationId);\r\n    this.displayProviderAttestationTraining = true;\r\n  }\r\n\r\n  public onProcessAttestation(event: any) {\r\n    this.displayProviderAttestationTraining = false;\r\n    if (event != null && event !== 'cancel') {\r\n      this.selectedTaxDetail = event;\r\n\r\n      if (!this.isEnterpriseUser && this.selectedTaxDetail.attendees && this.selectedTaxDetail.attendees.length > 0) {\r\n        this.selectedTaxDetail.attendees = \"*****\";\r\n      }\r\n    }\r\n  }\r\n\r\n  private searchProviders(collectionId: number, providerTaxId: string = null) {\r\n    this.errorMessage = '';\r\n    this.userCollectionSubscription = this.reportService.getProvidersForTrainingAttestationAnnual(collectionId, providerTaxId).subscribe(result=>{\r\n      this.tins = result !== null ? result : [];\r\n      this.totalRecords = this.tins.length;\r\n\r\n      if(this.tins && this.tins.length) {\r\n        this.tins.forEach(t => {\r\n          t.trainingAttestationStatusDisplay = this.reportService.providerTrainingStatusMapping(t.trainingAttestationStatus);\r\n          t.trainingAttestationId = t.providerTaxId + '-' + new Date(t.trainingDueDate).getFullYear().toString();\r\n        });\r\n        this.displayTins = this.tins.slice();\r\n      }\r\n      else {\r\n        this.displayTins = [];\r\n      }\r\n      this.displayMessage = this.tins.length === 0;\r\n      let param: any = {\r\n        \"field\": \"providerTaxName\",\r\n        \"order\": 1\r\n      }\r\n      this.onSort(param)\r\n    }, (error) => {\r\n      console.log(error);\r\n      this.errorMessage = this.messages.MessageGenericError;\r\n    });\r\n  }\r\n}\r\n","\r\n<div class=\"attestation-provider-training-container\">\r\n  <div class=\"report-search\">\r\n    <app-reports-tin-search [dialogType]=\"2\" (onProviderSearch)=\"onSearch($event)\"></app-reports-tin-search>\r\n  </div>\r\n  <div class=\"report-error\" *ngIf=\"errorMessage.length\">\r\n    {{errorMessage}}\r\n  </div>\r\n  <div class=\"report-result\" *ngIf=\"displayTins && displayTins.length\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"displayTins\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    scrollHeight=\"325px\"\r\n    [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"50px\">&nbsp;</th>\r\n          <th width=\"40%\" pSortableColumn=\"providerTaxName\">Name</th>\r\n          <th width=\"20%\" pSortableColumn=\"providerTaxId\" class=\"header-provider-column\">TIN</th>\r\n          <th width=\"20%\" pSortableColumn=\"trainingDueDate\" class=\"header-provider-column\">Due Date</th>\r\n          <th width=\"15%\" pSortableColumn=\"trainingAttestationStatusDisplay\" class=\"header-provider-column\">Attestation Status</th>\r\n          <th width=\"20px\">&nbsp;</th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"50px\" class=\"check-column\">\r\n            <p-radioButton [inputId]=\"row\" [value]=\"row.trainingAttestationId\" [(ngModel)]=\"selectedTin\" (click)=\"onTinSelected(row, true)\"  *ngIf=\"(row.providerTaxId != '' && row.trainingAttestationStatusDisplay !== 'Submitted') && !isEnterpriseUser\"></p-radioButton>\r\n          </td>\r\n          <td width=\"40%\">\r\n            <div *ngIf=\"row.trainingAttestationStatusDisplay !== 'Submitted' && !isEnterpriseUser\">{{row.providerTaxName}}</div>\r\n            <div *ngIf=\"row.trainingAttestationStatusDisplay === 'Submitted' || isEnterpriseUser\"><a href=\"javascript:void(0);\" (click)=\"onTinSelected(row)\">{{row.providerTaxName}}</a></div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.providerTaxId}}</div>\r\n          </td>\r\n          <td width=\"20%\" class=\"provider-column\">\r\n            <div>{{row.trainingDueDate}}</div>\r\n          </td>\r\n          <td width=\"15%\" class=\"provider-column\">\r\n            <div *ngIf=\"row.trainingAttestationStatusDisplay === 'Verified' || row.trainingAttestationStatusDisplay === 'Submitted'\" style=\"color:green\">{{row.trainingAttestationStatusDisplay}}</div>\r\n            <div *ngIf=\"row.trainingAttestationStatusDisplay === 'Pending'\" style=\"color:orange\">{{row.trainingAttestationStatusDisplay}}</div>            \r\n            <div *ngIf=\"row.trainingAttestationStatusDisplay === 'Past Due'\" style=\"color:red\">{{row.trainingAttestationStatusDisplay}}</div>\r\n          </td>\r\n          <td width=\"20px\" class=\"provider-column\">\r\n            <button type=\"button\" class=\"view-button fa fa-search\" title=\"View\" (click)=\"onTinSelected(row)\"></button>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table> \r\n  </div>\r\n  <div class=\"report-message\" *ngIf=\"displayMessage\">\r\n    <span class=\"no-results-message\">No results found.</span>\r\n  </div>\r\n</div>\r\n\r\n<app-attestation-provider-training-dialog\r\n  *ngIf=\"displayProviderAttestationTraining\"\r\n  [taxDetail] = \"selectedTaxDetail\"\r\n  (onAttestationSubmission)=\"onProcessAttestation($event)\">\r\n</app-attestation-provider-training-dialog>\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Messages } from 'src/app/app.messages';\r\nimport { ProviderDetailsWithTrainingAttestation } from 'src/app/services/models/provider-detail';\r\nimport { TrainingAttestationStatus } from 'src/app/services/models/training-attestation-status';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport { UiUtility } from 'src/app/utils/ui-utility';\r\n\r\n@Component({\r\n  selector: 'app-attestation-provider-training-individual',\r\n  templateUrl: './attestation-provider-training-individual.component.html',\r\n  styleUrl: './attestation-provider-training-individual.component.scss'\r\n})\r\nexport class AttestationProviderTrainingIndividualComponent  implements OnInit, OnDestroy {\r\n  private userCollectionSubscription: Subscription;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n\r\n  public displayProviderAttestationTraining: boolean;\r\n  public displayProviders: ProviderDetailsWithTrainingAttestation[];\r\n  public providers: ProviderDetailsWithTrainingAttestation[];\r\n  public selectedProvider: ProviderDetailsWithTrainingAttestation;\r\n  public selectedTin: string;\r\n  public totalRecords: number;\r\n  public displayMessage = false;\r\n  public isEnterpriseUser = false;\r\n  public errorMessage: string = '';\r\n  public first: number = 0;\r\n\r\n  constructor(\r\n    private sessionService: SessionService,\r\n    private reportService: ReportsService,\r\n    private messages: Messages\r\n  ) {\r\n    this.sortColumn = 'name';\r\n    this.sortAscending = true;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.userCollectionSubscription != null) {\r\n      this.userCollectionSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.isEnterpriseUser = this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser;\r\n    if(this.isEnterpriseUser) {\r\n       // Do nothing, let internal user to search\r\n    }\r\n    else {\r\n      const currentCollectionId = this.sessionService.currentPermission.providerCollectionID;\r\n      this.searchProviders(currentCollectionId);\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {    \r\n\r\n    this.displayProviders.sort((data1, data2) => \r\n      {\r\n        let value1 = data1[e.field];\r\n        let value2 = data2[e.field];\r\n        let result = null;\r\n\r\n        if (value1 == null && value2 != null) {\r\n          result = -1;\r\n        }\r\n        else if (value1 != null && value2 == null) {\r\n          result = 1;\r\n        }\r\n        else if (value1 == null && value2 == null) {\r\n          result = 0;\r\n        }           \r\n        else if (typeof value1 === 'string' && typeof value2 === 'string') {\r\n          result = value1.localeCompare(value2);\r\n        }\r\n        else {\r\n          result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n        }\r\n\r\n        return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onSearch(search: any) : void {\r\n    this.selectedTin = '';\r\n\r\n    if (search && (search.providerName || search.providerId || search.providerTin)) {\r\n      if(this.isEnterpriseUser) {\r\n        this.searchProviders(0, search.providerId, search.providerName, search.providerTin);\r\n      }\r\n      else {\r\n\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerTin)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.taxId.toLowerCase().indexOf(search.providerTin.trim().toLowerCase()) >= 0);\r\n        }        \r\n\r\n        /*\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName) && !UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0 || p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else {\r\n          this.displayProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        */\r\n      }\r\n    }\r\n    else {\r\n      this.displayProviders = this.providers.slice();\r\n    }\r\n    let param: any = {\r\n      \"field\": \"name\",\r\n      \"order\": 1\r\n    }\r\n    this.onSort(param);\r\n    this.first = 0;\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetailsWithTrainingAttestation, isRadioButton: boolean = false) {\r\n    if (provider.trainingAttestationStatusDisplay === 'Submitted' && isRadioButton) {\r\n      return; //disable radio button\r\n    }\r\n\r\n    this.selectedProvider = provider;\r\n    this.displayProviderAttestationTraining = true;\r\n  }\r\n\r\n  public onProcessAttestation(event: any) {\r\n    this.displayProviderAttestationTraining = false;\r\n    if (event != null && event !== 'cancel') {\r\n      this.selectedProvider = event;\r\n\r\n      for (var i = 0; i < this.displayProviders.length; i++) {\r\n        if (this.displayProviders[i].providerNPI === this.selectedProvider.providerNPI) {\r\n          this.displayProviders[i].trainingAttestationStatus = TrainingAttestationStatus.Submitted;\r\n          this.displayProviders[i].trainingAttestationStatusDisplay = \"Submitted\";\r\n          this.displayProviders[i].attestationDate = new Date();\r\n          this.displayProviders[i].attendees = this.selectedProvider.attendees;\r\n\r\n          if (!this.isEnterpriseUser && this.selectedProvider.attendees && this.selectedProvider.attendees.length > 0) {\r\n            this.displayProviders[i].attendees = \"*****\";\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  private searchProviders(collectionId: number, providerId: string = null, providerName: string = null, providerTin: string = null) {\r\n    this.errorMessage = '';\r\n    this.userCollectionSubscription = this.reportService.getProvidersForTrainingAttestationIndividual(collectionId, providerId, providerName, providerTin).subscribe(result=>{\r\n      this.providers = result !== null ? result : [];\r\n      this.totalRecords = this.providers.length;\r\n\r\n      if(this.providers) {\r\n        this.providers.forEach(p => {\r\n          p.trainingAttestationStatusDisplay = this.reportService.providerTrainingStatusMapping(p.trainingAttestationStatus);\r\n          p.trainingDueDate = (new Date(p.trainingDueDate)).getTime();\r\n        });\r\n        this.displayProviders = this.providers.slice();\r\n      }\r\n\r\n      this.displayMessage = this.providers.length === 0;\r\n      \r\n      let param: any = {\r\n        \"field\": \"name\",\r\n        \"order\": 1\r\n      }\r\n      this.onSort(param)\r\n    }, (error) => {\r\n      console.log(error);\r\n      this.errorMessage = this.messages.MessageGenericError;\r\n    });\r\n  }\r\n}\r\n","\r\n<div class=\"attestation-provider-training-container\">\r\n  <div class=\"report-search\">\r\n    <app-reports-provider-search (onProviderSearch)=\"onSearch($event)\"></app-reports-provider-search>\r\n  </div>\r\n  <div class=\"report-error\" *ngIf=\"errorMessage.length\">\r\n    {{errorMessage}}\r\n  </div>\r\n  <div class=\"report-result\">\r\n    <p-table tableStyleClass=\"table-data\" #providerList\r\n    [value]=\"displayProviders\"\r\n    [paginator]=\"true\"\r\n    [rows]=\"10\"\r\n    [scrollable]=\"true\"\r\n    [(first)]=\"first\"\r\n    scrollHeight=\"325px\"\r\n    (onSort)=\"onSort($event)\"\r\n    [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th width=\"50px\">&nbsp;</th>\r\n          <th width=\"35%\" pSortableColumn=\"name\">Name</th>\r\n          <th width=\"15%\" pSortableColumn=\"calProviderID\" class=\"header-provider-column\">Provider ID</th>\r\n          <th width=\"15%\" pSortableColumn=\"taxId\" class=\"header-provider-column\">TIN</th>\r\n          <th width=\"15%\" pSortableColumn=\"trainingDueDate\" class=\"header-provider-column\">Due Date</th>\r\n          <th width=\"15%\" pSortableColumn=\"trainingAttestationStatusDisplay\">Attestation Status</th>\r\n          <th width=\"20px\">&nbsp;</th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-row>\r\n        <tr>\r\n          <td width=\"50px\" class=\"check-column\">\r\n            <p-radioButton name=\"providerid\" [inputId]=\"row.calProviderID\" [value]=\"row.calProviderID\" [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(row, true)\" *ngIf=\"row.trainingAttestationStatusDisplay !== 'Submitted' && !isEnterpriseUser\"></p-radioButton>\r\n          </td>\r\n          <td width=\"35%\">\r\n            <div *ngIf=\"row.trainingAttestationStatusDisplay !== 'Submitted' && !isEnterpriseUser\">{{row.name}}</div>\r\n            <div *ngIf=\"row.trainingAttestationStatusDisplay === 'Submitted' || isEnterpriseUser\"><a href=\"javascript:void(0);\" (click)=\"onProviderSelected(row)\">{{row.name}}</a></div>\r\n          </td>\r\n          <td width=\"15%\" class=\"provider-column\">\r\n            <div>{{row.calProviderID}}</div>\r\n          </td>\r\n          <td width=\"15%\" class=\"provider-column\">\r\n            <div>{{row.taxId}}</div>\r\n          </td>\r\n          <td width=\"15%\" class=\"provider-column\">\r\n            <div>{{row.trainingDueDate | date:'MM/dd/yyyy'}}</div>\r\n          </td>\r\n          <td width=\"15%\" class=\"provider-column\">\r\n            <div *ngIf=\"row.trainingAttestationStatusDisplay === 'Verified' || row.trainingAttestationStatusDisplay === 'Submitted'\" style=\"color:green\">{{row.trainingAttestationStatusDisplay}}</div>\r\n            <div *ngIf=\"row.trainingAttestationStatusDisplay === 'Pending'\" style=\"color:orange\">{{row.trainingAttestationStatusDisplay}}</div>            \r\n            <div *ngIf=\"row.trainingAttestationStatusDisplay === 'Past Due'\" style=\"color:red\">{{row.trainingAttestationStatusDisplay}}</div>\r\n          </td>\r\n          <td width=\"20px\" class=\"provider-column\">\r\n            <button type=\"button\" class=\"view-button fa fa-search\" title=\"View\" (click)=\"onProviderSelected(row)\"></button>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>\r\n  <div class=\"report-message\" *ngIf=\"displayMessage\">\r\n      <span class=\"no-results-message\">No results found.</span>\r\n  </div>\r\n</div>\r\n<app-attestation-provider-training-dialog\r\n  *ngIf=\"displayProviderAttestationTraining\"\r\n  [providerDetail] = \"selectedProvider\"\r\n  (onAttestationSubmission)=\"onProcessAttestation($event)\">\r\n</app-attestation-provider-training-dialog>\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { TabView } from 'primeng/tabview';\r\nimport { Subscription } from 'rxjs';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport { UserAdminService } from 'src/app/services/user-admin.service';\r\nimport { UiUtility } from 'src/app/utils/ui-utility';\r\n\r\n@Component({\r\n  selector: 'app-attestation-provider-training',\r\n  templateUrl: './attestation-provider-training.component.html',\r\n  styleUrl: './attestation-provider-training.component.scss'\r\n})\r\nexport class AttestationProviderTrainingComponent implements OnInit {\r\n  private userCollectionSubscription: Subscription;\r\n  public activeindex:number = 0;\r\n\r\n  private tabs: any = [\r\n    { index: 0, id: 'training-attestation-individual', label: 'Initial', enable: true },\r\n    { index: 1, id: 'training-attestation-annual', label: 'Annual', enable: true }\r\n  ];\r\n\r\n  @ViewChild('tabView') tabview: TabView;\r\n  \r\n  constructor(\r\n    private sessionService: SessionService,\r\n    private userAdminService: UserAdminService,\r\n    private elementRef: ElementRef\r\n  ) {}\r\n  \r\n  ngOnInit(): void {\r\n\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.setPcpReportAttestationTabs();\r\n  }\r\n\r\n  public canViewTab(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.enable : false;\r\n  }\r\n\r\n  public getTabName(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.label : '';\r\n  }\r\n\r\n  public getTabIndex(name: string) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.label === name);\r\n    return currentTab ? currentTab.index : 0;\r\n  }\r\n\r\n  public onTabChanged(e: any) {\r\n    this.tabview.activeIndex = e.index === 1 ? 0 : 1;\r\n  }\r\n\r\n  public handleChange(selectedIndex:number, e:MouseEvent) {\r\n    const currentIndex = this.tabview.activeIndex;\r\n    e.stopPropagation();\r\n    if (currentIndex == selectedIndex){\r\n      return;\r\n    }\r\n  }\r\n\r\n  private setPcpReportAttestationTabs() {\r\n    const tabView = this.elementRef.nativeElement.querySelector('div.training-attestation-tabview-styles  ul.p-tabview-nav');\r\n    UiUtility.SetTabsWidthDynamically(tabView, 0, 250);\r\n\r\n    const tabElements = tabView.querySelectorAll('li');\r\n    tabElements.forEach(element => {\r\n      const currentChild = element.firstChild;\r\n      const tabElement = (element.querySelector(\"a\") as HTMLAnchorElement);\r\n      if (tabElement) {\r\n        const tabName = tabElement.innerText;\r\n        const tabIndex = this.getTabIndex(tabName.trim());\r\n  \r\n        const newDiv = window.document.createElement(\"div\");\r\n        newDiv.addEventListener('click', this.handleChange.bind(this, tabIndex), false);\r\n        newDiv.style.cursor = 'pointer';\r\n        newDiv.appendChild(currentChild);\r\n  \r\n        element.firstChild.remove();\r\n        element.appendChild(newDiv);\r\n      }\r\n    });\r\n  }\r\n}\r\n","<div class=\"training-attestation-container\">\r\n  <div class=\"training-attestation-container-reporttype\">\r\n    <app-attestation-type [attestationType]=\"'providertrainingattestation'\"></app-attestation-type>\r\n  </div>\r\n  <div class=\"training-attestation-alert\">\r\n    <app-alert-info subjectMessage=\" \" uniqueID=\"providertrainingattestation\" contentMessage=\"Narrow your search using the known provider or TIN.\"></app-alert-info>\r\n  </div>\r\n  <div class=\"training-attestation-container-main\">\r\n    <p-tabView styleClass=\"training-attestation-tabview-styles\" [activeIndex]=\"activeindex\" #tabView>\r\n      <p-tabPanel [header]=\"getTabName(0)\">\r\n        <ng-template pTemplate=\"header\">\r\n          {{getTabName(0)}}\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n          <app-attestation-provider-training-individual></app-attestation-provider-training-individual>\r\n        </ng-template>\r\n      </p-tabPanel>\r\n      <p-tabPanel *ngIf=\"canViewTab(1)\" [header]=\"getTabName(1)\">\r\n        <ng-template pTemplate=\"header\">\r\n          {{getTabName(1)}}\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n          <app-attestation-provider-training-annual></app-attestation-provider-training-annual>\r\n        </ng-template>\r\n      </p-tabPanel>\r\n    </p-tabView>\r\n  </div>\r\n</div>\r\n<app-continue-dialog key=\"continueDialog\"></app-continue-dialog>\r\n","import { DatePipe, DOCUMENT } from '@angular/common';\r\nimport { Component, Inject, ViewChild } from '@angular/core';\r\nimport { UserProfile } from '@caloptima/authentication';\r\nimport { BusyService } from '@caloptima/portal-foundation';\r\nimport saveAs from 'file-saver';\r\nimport { ReportsMemberSearchComponent } from 'src/app/app-components/reports-member-search/reports-member-search.component';\r\nimport { CollectionService } from 'src/app/services/collection.service';\r\nimport { MemberAWPStatus } from 'src/app/services/models/awp-detail';\r\nimport { BHABAReferralAttestation } from 'src/app/services/models/bh-aba-referral-attestation';\r\nimport { ProviderDetail } from 'src/app/services/models/provider-detail';\r\nimport { ReportMemberDetails } from 'src/app/services/models/reportmemberdetails';\r\nimport { ReportType } from 'src/app/services/models/reportype';\r\nimport { WellnessDetails } from 'src/app/services/models/wellness-details';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { SessionService } from 'src/app/services/session.service';\r\n\r\n@Component({\r\n  selector: 'app-attestation-bh-aba-referrals-member',\r\n  templateUrl: './attestation-bh-aba-referrals-member.component.html',\r\n  styleUrl: './attestation-bh-aba-referrals-member.component.scss'\r\n})\r\nexport class AttestationBhAbaReferralsMemberComponent {\r\n  public userProfile: UserProfile;\r\n  public members:ReportMemberDetails[] = [];\r\n  public displayMembers:ReportMemberDetails[] = [];\r\n  public selectedMember: ReportMemberDetails;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public totalRecords: number;\r\n  public attestationList: BHABAReferralAttestation[];\r\n  public searchCin: string;\r\n  public searchName: string;\r\n  public collectionId: number;\r\n  public selectedProvider: ProviderDetail;\r\n  public fromProviderTab: boolean;\r\n  public showAttachment: boolean;\r\n  public userFullName: string;\r\n  public wellnessDetails: WellnessDetails;\r\n  public selectedReferral:BHABAReferralAttestation;\r\n  public lastSelectedMemberCin: string;\r\n  public lastMemberSearch: any;\r\n  public selectedCin: ReportMemberDetails;\r\n  public first: number =0;\r\n    \r\n\r\n  @ViewChild('memberSearch') memberSearch: ReportsMemberSearchComponent;\r\n\r\n  constructor(\r\n    private reportsService: ReportsService,\r\n    private sessionService: SessionService,\r\n    private collectionService: CollectionService,\r\n    private datePipe: DatePipe,\r\n    private busyService: BusyService,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.collectionId = this.sessionService.currentPermission.providerCollectionID;\r\n    this.userFullName = '';\r\n    this.fromProviderTab = false;\r\n\r\n    this.initialize();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n\r\n  }\r\n\r\n  public setProviderId(providerDetail: ProviderDetail) {\r\n    this.attestationList = [];\r\n    this.selectedProvider = providerDetail;\r\n    this.lastMemberSearch = null;\r\n    this.lastSelectedMemberCin = null;\r\n    this.fromProviderTab = (providerDetail != null);\r\n    this.initialize(true);\r\n  }\r\n\r\n  public initialize(resetComponent = false) {\r\n    this.sortColumn = 'memberName';\r\n    this.sortAscending = true;\r\n    this.selectedCin = null;\r\n    this.searchCin = '';\r\n    this.searchName = '';\r\n    this.selectedMember = null;\r\n    this.displayMembers = [];\r\n    \r\n    if (resetComponent) {\r\n      this.memberSearch.resetSearchFilters();\r\n    }\r\n\r\n    if(this.selectedProvider) {\r\n\r\n      this.reportsService.getMembersForBHABAReferralAttestation(this.collectionId, this.selectedProvider.calProviderID, this.selectedProvider.taxId, ReportType.AWV).subscribe(result=>{\r\n\r\n        this.members = result;\r\n\r\n        this.totalRecords = this.members.length;\r\n\r\n        if(this.members)\r\n          this.displayMembers = this.members.slice();\r\n\r\n        let param: any = {\r\n          \"field\": \"memberName\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n\r\n        if(this.lastSelectedMemberCin) {\r\n          let lastselectedMember = this.displayMembers.find(x=>x.cin == this.lastSelectedMemberCin);\r\n          this.lastSelectedMemberCin= null;\r\n          if(lastselectedMember)\r\n            this.onMemberSelected(lastselectedMember);          \r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {    \r\n    this.displayMembers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onMemberSelected(member: ReportMemberDetails): void {\r\n    this.selectedMember = member;    \r\n    this.attestationList = [];\r\n    \r\n    this.reportsService.getBHABAReferralAttestation(null, this.selectedMember.cin, this.selectedMember.providerId).subscribe(result=>{\r\n\r\n      if(!this.selectedProvider) {\r\n        this.collectionService.GetProvider2(this.selectedMember.providerId).subscribe(prov=>{\r\n\r\n          this.selectedProvider = new ProviderDetail();\r\n          this.selectedProvider.providerID = prov.providerID.toString();\r\n          this.selectedProvider.calProviderID = prov.calProviderId;\r\n          this.selectedProvider.taxId = prov.providerTaxId;\r\n          this.selectedProvider.name = prov.providerName;\r\n\r\n          if (!this.selectedMember.providerTaxId) \r\n            this.selectedMember.providerTaxId = prov.providerTaxId;\r\n\r\n          this.attestationList = result;      \r\n        });\r\n      }\r\n      else {\r\n        if (!this.selectedMember.providerTaxId)\r\n          this.selectedMember.providerTaxId = this.selectedProvider.taxId;\r\n\r\n        this.attestationList = result;\r\n      }\r\n    });\r\n  }\r\n\r\n  public get displayText(): string {\r\n    if(this.selectedMember && this.selectedMember.cin) {\r\n\r\n      let memeberDetail: ReportMemberDetails = this.members.find(x=> x.cin === this.selectedMember.cin);\r\n\r\n      if(memeberDetail) {\r\n        let s = memeberDetail.memberName;\r\n        return s;\r\n      }\r\n      else {\r\n        return \"\"\r\n      }\r\n    }\r\n    else {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  public get enableBuildReport() : boolean {\r\n\r\n    return this.selectedMember != null;\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    saveAs(data, fileName);\r\n  }\r\n\r\n  public onMemberSearch(search) : void {\r\n\r\n    this.lastMemberSearch = search;\r\n    this.selectedMember = null;\r\n    this.attestationList = [];\r\n\r\n    if(this.fromProviderTab) {\r\n      if(search.memberId === '') {\r\n        this.displayMembers = this.members.slice();\r\n        this.first = 0;\r\n        this.selectedCin = null;\r\n\r\n        let param: any = {\r\n          \"field\": \"memberName\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)        \r\n      }\r\n      else {\r\n\r\n        this.displayMembers.splice(0);\r\n\r\n        var items = this.members.find(x=>\r\n          x.cin == search.memberId || \r\n          x.medsId == search.memberId || \r\n          x.mbi == search.memberId\r\n        );\r\n\r\n        this.displayMembers.push(items);\r\n        this.selectedCin = null;\r\n        this.first = 0;\r\n      }      \r\n    }\r\n    else {\r\n\r\n      if(search.memberId === '')\r\n      {\r\n          //  Do nothing.\r\n      }\r\n      else {\r\n        this.reportsService.searchMembersForBHABAReferralAttestation(ReportType.AWV, this.collectionId, search.memberName, search.memberId).subscribe(result=>{\r\n\r\n          this.members = result;\r\n  \r\n          this.totalRecords = this.members.length;\r\n  \r\n          if(this.members)\r\n            this.displayMembers = this.members.slice();\r\n  \r\n            let param: any = {\r\n              \"field\": \"memberName\",\r\n              \"order\": 1\r\n            }\r\n            this.onSort(param)\r\n  \r\n            if(this.lastSelectedMemberCin) {\r\n              let lastselectedMember = this.displayMembers.find(x=>x.cin == this.lastSelectedMemberCin);\r\n              this.lastSelectedMemberCin = null;\r\n              if(lastselectedMember)\r\n                this.onMemberSelected(lastselectedMember);          \r\n            }\r\n        });\r\n      }\r\n    }\r\n  }  \r\n\r\n  public showDialog(referral:BHABAReferralAttestation) : void {\r\n\r\n    this.selectedReferral = referral;\r\n    this.showAttachment = true;\r\n  }\r\n\r\n  public onCancel() {\r\n    this.showAttachment = false;\r\n  }\r\n\r\n  public onSubmit() {\r\n    this.lastSelectedMemberCin = this.selectedMember.cin;  \r\n    if(this.fromProviderTab) {\r\n      var temp = this.selectedCin;\r\n      this.initialize(true);\r\n      this.selectedCin = temp;\r\n    }\r\n    else {\r\n      this.onMemberSearch(this.lastMemberSearch);\r\n    }\r\n\r\n    this.showAttachment = false;\r\n  }\r\n}\r\n","<div class=\"reports-awp-member\">\r\n    <div class=\"report-search\">\r\n        <app-reports-member-search (onMemberSearch)=\"onMemberSearch($event)\" #memberSearch></app-reports-member-search>\r\n    </div>\r\n    <div class=\"report-parameter\">\r\n        <p-table\r\n        [value]=\"displayMembers\"\r\n        [paginator]=\"true\"\r\n        [rows]=\"10\"\r\n        [scrollable]=\"true\"\r\n        scrollHeight=\"400px\"\r\n        (onSort)=\"onSort($event)\"\r\n        [(first)]=\"first\"\r\n        [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n        >\r\n        <ng-template pTemplate=\"header\">\r\n            <tr>\r\n            <th width=\"5%\"></th>\r\n            <th width=\"35%\" pSortableColumn=\"memberName\">Name<div class=\"{{sortClass('memberName')}}\"></div></th>\r\n            <th width=\"20%\" pSortableColumn=\"cin\">Member ID<div class=\"{{sortClass('cin')}}\"></div></th>\r\n            <th width=\"20%\" pSortableColumn=\"providerId\">Provider ID<div class=\"{{sortClass('providerId')}}\"></div></th>\r\n            <th width=\"20%\" pSortableColumn=\"status\">Status<div class=\"{{sortClass('status')}}\"></div></th>\r\n            </tr>\r\n        </ng-template>\r\n        <ng-template pTemplate=\"body\" let-row>\r\n            <tr>\r\n            <td width=\"5%\" class=\"check-column\">\r\n                <p-radioButton name=\"cin\" [inputId]=\"row.cin\" [value]=\"row\" [(ngModel)]=\"selectedCin\" (click)=\"onMemberSelected(row)\"></p-radioButton>\r\n            </td>\r\n            <td width=\"35%\">\r\n                <div>{{row.memberName}}</div>\r\n            </td>\r\n            <td width=\"20%\">\r\n                <div>{{row.cin}}</div>\r\n            </td>\r\n            <td width=\"20%\">\r\n                <div>{{row.providerId}}</div>\r\n            </td>\r\n            <td width=\"20%\">\r\n                <div *ngIf=\"row.status == 'Attested'\" style=\"color:green\">{{row.status}}</div>\r\n                <div *ngIf=\"row.status == 'Not Attested'\" style=\"color:red\">{{row.status}}</div>                                    \r\n            </td>          \r\n            </tr>\r\n        </ng-template>\r\n        </p-table>\r\n    </div>\r\n    <div class=\"report-measurementlabel\" *ngIf=\"selectedMember != null\">\r\n        <label>Measurement Period for {{displayText}}</label>\r\n    </div>\r\n    <div class=\"report-filelist\" *ngIf=\"selectedMember != null\">\r\n        <p-table tableStyleClass=\"table-data\" #providerList\r\n        [value]=\"attestationList\"\r\n        [paginator]=\"true\"\r\n        [rows]=\"10\"\r\n        [scrollable]=\"true\"\r\n        scrollHeight=\"400px\"\r\n        (onSort)=\"onSort($event)\">\r\n        <ng-template pTemplate=\"header\">\r\n            <tr>\r\n            <th width=\"15%\">Referral Id</th>\r\n            <th width=\"15%\">Status</th>\r\n            <th width=\"15%\">Action</th>\r\n            </tr>\r\n        </ng-template>\r\n        <ng-template pTemplate=\"body\" let-row>\r\n            <tr>\r\n            <td width=\"15%\"><div>{{row.referralId}}</div></td>\r\n            <td width=\"15%\">\r\n                <div *ngIf=\"row.attestationDate\" style=\"color:green\">Attested</div>\r\n                <div *ngIf=\"!row.attestationDate\" style=\"color:red\">{{row.status}}</div>\r\n            </td>\r\n            <td width=\"15%\"><div><a href='javascript:void(0);' (click)=\"showDialog(row)\">{{row.attestationDate ? 'View' : 'Attest'}}</a></div></td>\r\n            </tr>\r\n        </ng-template>\r\n        </p-table>    \r\n    </div>\r\n</div>\r\n<app-attestation-bh-aba-referrals-dialog #attachment \r\n    *ngIf=\"showAttachment && selectedMember && selectedReferral\" \r\n    [bhabareferral]=\"selectedReferral\" \r\n    (cancelAttestation)=\"onCancel()\"\r\n    (submitAttestation)=\"onSubmit()\"\r\n/>\r\n","export class BHABAReferralAttestation {\r\n    public id: number;\r\n    public calProviderId: string;\r\n    public memberCIN: string;\r\n    public referralId: string;\r\n    public startDate: Date;\r\n    public endDate: Date;\r\n    public servicesAuthorized: number;\r\n    public assignedUnits: number;\r\n    public assessmentGoals: number;\r\n    public assessmentGoalsCompleted: number;\r\n    public comment: string;\r\n    public reason: string;\r\n    public assessmentGoalsRate: number;\r\n    public attestationBy: string;\r\n    public attestationDate: Date;\r\n    public createdBy: string;\r\n    public created: Date;\r\n    public modifiedBy: string;\r\n    public modified: Date;\r\n    public memberFirstName: string;\r\n    public memberLastName: string;\r\n    public status: string;\r\n\r\n}","import { BHABAReferralAttestation } from \"./bh-aba-referral-attestation\";\r\n\r\nexport class BHABAReferral {\r\n    public autH_SVC_IDN: number;\r\n    public procedurE_CD: string;\r\n    public procedurE_DESC: string;\r\n    public assigneD_UNITS: number;\r\n    public starT_DATE: Date;\r\n    public enD_DATE: Date;\r\n}\r\n\r\nexport class BHABAReferral2 extends BHABAReferral {\r\n    public attestationId: number;\r\n    public attestationServiceId: number;\r\n    public directServiceCompleted: number;\r\n    public directServicePercentage: number;\r\n}\r\n\r\nexport class BHABAReferralAttestationWithServices extends  BHABAReferralAttestation {\r\n    public services: BHABAReferral2[] = []\r\n}","export class ResourceRequest {\r\n    \r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { OAuthService } from \"angular-oauth2-oidc\";\r\nimport { PortalConfig } from \"../portal-config\";\r\nimport { AppConfig, HttpResponseHelper } from \"@caloptima/portal-foundation\";\r\nimport { Constants } from \"../app.constants\";\r\nimport { SessionService } from \"./session.service\";\r\nimport { ResourceRequest } from \"./models/requests/resource-request\";\r\nimport { catchError, map, Observable } from \"rxjs\";\r\nimport { HttpHeaders } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { BHABAReferralAttestationPortalResources } from \"./models/bh-aba-referral-attestation-portal-resources\";\r\n\r\nconst httpOptions = {\r\n    headers: new HttpHeaders({ 'Content-Type': 'application/json' }),\r\n    withCredentials: true\r\n  };\r\n  \r\n  @Injectable({\r\n    providedIn: 'root'\r\n  })\r\n\r\n  export class ResourcesService {\r\n    \r\n    private currentUser: string;\r\n    private baseProviderReportServiceUrl: string;\r\n    private bhabareferralinstructionUrl: string;\r\n\r\n    constructor(\r\n        private oAuthService: OAuthService,\r\n        private http: HttpClient,\r\n        private portalConfig: PortalConfig,\r\n        private appConfig: AppConfig,\r\n        private constants:Constants,\r\n        private sessionService: SessionService) {\r\n    \r\n          const claims = this.oAuthService.getIdentityClaims();\r\n          this.currentUser = claims['sub'];\r\n          this.baseProviderReportServiceUrl = appConfig.getConfig('BaseProviderServicesApiUrl');\r\n          if (this.baseProviderReportServiceUrl == null) {\r\n            const config$ = appConfig.subscribe(() => {\r\n              this.baseProviderReportServiceUrl = appConfig.getConfig('BaseProviderServicesApiUrl');\r\n              this.checkUrls();\r\n              config$.unsubscribe();\r\n            });\r\n          }\r\n    }\r\n\r\n    private checkUrls(): void {\r\n      const baseUrl = this.baseProviderReportServiceUrl + 'api/resource/';\r\n      if(this.bhabareferralinstructionUrl == null) {\r\n          this.bhabareferralinstructionUrl = baseUrl + 'bhabareferralinstruction';\r\n      }\r\n    }\r\n\r\n    public getBHABAReferralAttestationResources():Observable<BHABAReferralAttestationPortalResources> {      \r\n      \r\n      this.checkUrls();\r\n  \r\n      try{\r\n        const request = new ResourceRequest();\r\n      \r\n        return this.http\r\n          .post<BHABAReferralAttestationPortalResources>(this.bhabareferralinstructionUrl, request, httpOptions)\r\n          .pipe(\r\n            map((result) => {            \r\n              console.log(result);\r\n              return result;\r\n            }),\r\n            catchError(error => HttpResponseHelper.handleError(error))\r\n          );\r\n  \r\n      }\r\n      catch(ex) {\r\n  \r\n      }\r\n    }\r\n  }","import { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component } from '@angular/core';\nimport { BaseIcon } from 'primeng/baseicon';\nlet MinusIcon = /*#__PURE__*/(() => {\n  class MinusIcon extends BaseIcon {\n    static ɵfac = /* @__PURE__ */(() => {\n      let ɵMinusIcon_BaseFactory;\n      return function MinusIcon_Factory(t) {\n        return (ɵMinusIcon_BaseFactory || (ɵMinusIcon_BaseFactory = i0.ɵɵgetInheritedFactory(MinusIcon)))(t || MinusIcon);\n      };\n    })();\n    static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n      type: MinusIcon,\n      selectors: [[\"MinusIcon\"]],\n      standalone: true,\n      features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n      decls: 2,\n      vars: 5,\n      consts: [[\"width\", \"14\", \"height\", \"14\", \"viewBox\", \"0 0 14 14\", \"fill\", \"none\", \"xmlns\", \"http://www.w3.org/2000/svg\"], [\"d\", \"M13.2222 7.77778H0.777778C0.571498 7.77778 0.373667 7.69584 0.227806 7.54998C0.0819442 7.40412 0 7.20629 0 7.00001C0 6.79373 0.0819442 6.5959 0.227806 6.45003C0.373667 6.30417 0.571498 6.22223 0.777778 6.22223H13.2222C13.4285 6.22223 13.6263 6.30417 13.7722 6.45003C13.9181 6.5959 14 6.79373 14 7.00001C14 7.20629 13.9181 7.40412 13.7722 7.54998C13.6263 7.69584 13.4285 7.77778 13.2222 7.77778Z\", \"fill\", \"currentColor\"]],\n      template: function MinusIcon_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵnamespaceSVG();\n          i0.ɵɵelementStart(0, \"svg\", 0);\n          i0.ɵɵelement(1, \"path\", 1);\n          i0.ɵɵelementEnd();\n        }\n        if (rf & 2) {\n          i0.ɵɵclassMap(ctx.getClassNames());\n          i0.ɵɵattribute(\"aria-label\", ctx.ariaLabel)(\"aria-hidden\", ctx.ariaHidden)(\"role\", ctx.role);\n        }\n      },\n      dependencies: [CommonModule],\n      encapsulation: 2\n    });\n  }\n  return MinusIcon;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MinusIcon };\n","import { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { MinusIcon } from 'primeng/icons/minus';\nimport { PlusIcon } from 'primeng/icons/plus';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { UniqueComponentId } from 'primeng/utils';\n\n/**\n * Panel is a container with the optional content toggle feature.\n * @group Components\n */\nfunction Panel_div_1_span_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 10);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext(2);\n    i0.ɵɵattribute(\"id\", ctx_r3.id + \"_header\");\n    i0.ɵɵadvance();\n    i0.ɵɵtextInterpolate(ctx_r3.header);\n  }\n}\nfunction Panel_div_1_ng_container_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\nfunction Panel_div_1_5_ng_template_0_Template(rf, ctx) {}\nfunction Panel_div_1_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵtemplate(0, Panel_div_1_5_ng_template_0_Template, 0, 0, \"ng-template\");\n  }\n}\nfunction Panel_div_1_button_6_ng_container_1_ng_container_1_span_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"span\", 16);\n  }\n  if (rf & 2) {\n    const ctx_r12 = i0.ɵɵnextContext(5);\n    i0.ɵɵclassMap(ctx_r12.expandIcon);\n    i0.ɵɵproperty(\"ngClass\", ctx_r12.iconClass);\n  }\n}\nfunction Panel_div_1_button_6_ng_container_1_ng_container_1_MinusIcon_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"MinusIcon\", 17);\n  }\n  if (rf & 2) {\n    const ctx_r13 = i0.ɵɵnextContext(5);\n    i0.ɵɵproperty(\"styleClass\", ctx_r13.iconClass);\n  }\n}\nfunction Panel_div_1_button_6_ng_container_1_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, Panel_div_1_button_6_ng_container_1_ng_container_1_span_1_Template, 1, 3, \"span\", 14)(2, Panel_div_1_button_6_ng_container_1_ng_container_1_MinusIcon_2_Template, 1, 1, \"MinusIcon\", 15);\n    i0.ɵɵelementContainerEnd();\n  }\n  if (rf & 2) {\n    const ctx_r10 = i0.ɵɵnextContext(4);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", ctx_r10.expandIcon);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", !ctx_r10.expandIcon);\n  }\n}\nfunction Panel_div_1_button_6_ng_container_1_ng_container_2_span_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"span\", 16);\n  }\n  if (rf & 2) {\n    const ctx_r14 = i0.ɵɵnextContext(5);\n    i0.ɵɵclassMap(ctx_r14.collapseIcon);\n    i0.ɵɵproperty(\"ngClass\", ctx_r14.iconClass);\n  }\n}\nfunction Panel_div_1_button_6_ng_container_1_ng_container_2_PlusIcon_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"PlusIcon\", 17);\n  }\n  if (rf & 2) {\n    const ctx_r15 = i0.ɵɵnextContext(5);\n    i0.ɵɵproperty(\"styleClass\", ctx_r15.iconClass);\n  }\n}\nfunction Panel_div_1_button_6_ng_container_1_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, Panel_div_1_button_6_ng_container_1_ng_container_2_span_1_Template, 1, 3, \"span\", 14)(2, Panel_div_1_button_6_ng_container_1_ng_container_2_PlusIcon_2_Template, 1, 1, \"PlusIcon\", 15);\n    i0.ɵɵelementContainerEnd();\n  }\n  if (rf & 2) {\n    const ctx_r11 = i0.ɵɵnextContext(4);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", ctx_r11.collapseIcon);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", !ctx_r11.collapseIcon);\n  }\n}\nfunction Panel_div_1_button_6_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, Panel_div_1_button_6_ng_container_1_ng_container_1_Template, 3, 2, \"ng-container\", 12)(2, Panel_div_1_button_6_ng_container_1_ng_container_2_Template, 3, 2, \"ng-container\", 12);\n    i0.ɵɵelementContainerEnd();\n  }\n  if (rf & 2) {\n    const ctx_r8 = i0.ɵɵnextContext(3);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", !ctx_r8.collapsed);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", ctx_r8.collapsed);\n  }\n}\nfunction Panel_div_1_button_6_2_ng_template_0_Template(rf, ctx) {}\nfunction Panel_div_1_button_6_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵtemplate(0, Panel_div_1_button_6_2_ng_template_0_Template, 0, 0, \"ng-template\");\n  }\n}\nconst _c0 = a0 => ({\n  $implicit: a0\n});\nfunction Panel_div_1_button_6_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r18 = i0.ɵɵgetCurrentView();\n    i0.ɵɵelementStart(0, \"button\", 11);\n    i0.ɵɵlistener(\"click\", function Panel_div_1_button_6_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r18);\n      const ctx_r17 = i0.ɵɵnextContext(2);\n      return i0.ɵɵresetView(ctx_r17.onIconClick($event));\n    })(\"keydown\", function Panel_div_1_button_6_Template_button_keydown_0_listener($event) {\n      i0.ɵɵrestoreView(_r18);\n      const ctx_r19 = i0.ɵɵnextContext(2);\n      return i0.ɵɵresetView(ctx_r19.onKeyDown($event));\n    });\n    i0.ɵɵtemplate(1, Panel_div_1_button_6_ng_container_1_Template, 3, 2, \"ng-container\", 12)(2, Panel_div_1_button_6_2_Template, 1, 0, null, 13);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const ctx_r6 = i0.ɵɵnextContext(2);\n    i0.ɵɵattribute(\"id\", ctx_r6.id + \"_header\")(\"aria-label\", ctx_r6.buttonAriaLabel)(\"aria-controls\", ctx_r6.id + \"_content\")(\"aria-expanded\", !ctx_r6.collapsed);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", !ctx_r6.headerIconTemplate);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r6.headerIconTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(7, _c0, ctx_r6.collapsed));\n  }\n}\nconst _c1 = (a0, a1, a2) => ({\n  \"p-panel-icons-start\": a0,\n  \"p-panel-icons-end\": a1,\n  \"p-panel-icons-center\": a2\n});\nfunction Panel_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r21 = i0.ɵɵgetCurrentView();\n    i0.ɵɵelementStart(0, \"div\", 6);\n    i0.ɵɵlistener(\"click\", function Panel_div_1_Template_div_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r21);\n      const ctx_r20 = i0.ɵɵnextContext();\n      return i0.ɵɵresetView(ctx_r20.onHeaderClick($event));\n    });\n    i0.ɵɵtemplate(1, Panel_div_1_span_1_Template, 2, 2, \"span\", 7);\n    i0.ɵɵprojection(2, 1);\n    i0.ɵɵtemplate(3, Panel_div_1_ng_container_3_Template, 1, 0, \"ng-container\", 4);\n    i0.ɵɵelementStart(4, \"div\", 8);\n    i0.ɵɵtemplate(5, Panel_div_1_5_Template, 1, 0, null, 4)(6, Panel_div_1_button_6_Template, 3, 9, \"button\", 9);\n    i0.ɵɵelementEnd()();\n  }\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵattribute(\"id\", ctx_r0.id + \"-titlebar\");\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.header);\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.headerTemplate);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction3(6, _c1, ctx_r0.iconPos === \"start\", ctx_r0.iconPos === \"end\", ctx_r0.iconPos === \"center\"));\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.iconTemplate);\n    i0.ɵɵadvance();\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.toggleable);\n  }\n}\nfunction Panel_ng_container_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\nfunction Panel_div_6_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\nfunction Panel_div_6_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 18);\n    i0.ɵɵprojection(1, 2);\n    i0.ɵɵtemplate(2, Panel_div_6_ng_container_2_Template, 1, 0, \"ng-container\", 4);\n    i0.ɵɵelementEnd();\n  }\n  if (rf & 2) {\n    const ctx_r2 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.footerTemplate);\n  }\n}\nconst _c2 = [\"*\", [[\"p-header\"]], [[\"p-footer\"]]];\nconst _c3 = (a1, a2) => ({\n  \"p-panel p-component\": true,\n  \"p-panel-toggleable\": a1,\n  \"p-panel-expanded\": a2\n});\nconst _c4 = a0 => ({\n  transitionParams: a0,\n  height: \"0\",\n  opacity: \"0\"\n});\nconst _c5 = a1 => ({\n  value: \"hidden\",\n  params: a1\n});\nconst _c6 = a0 => ({\n  transitionParams: a0,\n  height: \"*\",\n  opacity: \"1\"\n});\nconst _c7 = a1 => ({\n  value: \"visible\",\n  params: a1\n});\nconst _c8 = [\"*\", \"p-header\", \"p-footer\"];\nlet Panel = /*#__PURE__*/(() => {\n  class Panel {\n    el;\n    /**\n     * Defines if content of panel can be expanded and collapsed.\n     * @group Props\n     */\n    toggleable;\n    /**\n     * Header text of the panel.\n     * @group Props\n     */\n    header;\n    /**\n     * Defines the initial state of panel content, supports one or two-way binding as well.\n     * @group Props\n     */\n    collapsed;\n    /**\n     * Inline style of the component.\n     * @group Props\n     */\n    style;\n    /**\n     * Style class of the component.\n     * @group Props\n     */\n    styleClass;\n    /**\n     * Position of the icons.\n     * @group Props\n     */\n    iconPos = 'end';\n    /**\n     * Expand icon of the toggle button.\n     * @group Props\n     * @deprecated since v15.4.2, use `headericons` template instead.\n     */\n    expandIcon;\n    /**\n     * Collapse icon of the toggle button.\n     * @group Props\n     * @deprecated since v15.4.2, use `headericons` template instead.\n     */\n    collapseIcon;\n    /**\n     * Specifies if header of panel cannot be displayed.\n     * @group Props\n     * @deprecated since v15.4.2, use `headericons` template instead.\n     */\n    showHeader = true;\n    /**\n     * Specifies the toggler element to toggle the panel content.\n     * @group Props\n     */\n    toggler = 'icon';\n    /**\n     * Transition options of the animation.\n     * @group Props\n     */\n    transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n    /**\n     * Emitted when the collapsed changes.\n     * @param {boolean} value - New Value.\n     * @group Emits\n     */\n    collapsedChange = new EventEmitter();\n    /**\n     * Callback to invoke before panel toggle.\n     * @param {PanelBeforeToggleEvent} event - Custom panel toggle event\n     * @group Emits\n     */\n    onBeforeToggle = new EventEmitter();\n    /**\n     * Callback to invoke after panel toggle.\n     * @param {PanelAfterToggleEvent} event - Custom panel toggle event\n     * @group Emits\n     */\n    onAfterToggle = new EventEmitter();\n    footerFacet;\n    templates;\n    iconTemplate;\n    animating;\n    headerTemplate;\n    contentTemplate;\n    footerTemplate;\n    headerIconTemplate;\n    id = UniqueComponentId();\n    get buttonAriaLabel() {\n      return this.header;\n    }\n    constructor(el) {\n      this.el = el;\n    }\n    ngAfterContentInit() {\n      this.templates.forEach(item => {\n        switch (item.getType()) {\n          case 'header':\n            this.headerTemplate = item.template;\n            break;\n          case 'content':\n            this.contentTemplate = item.template;\n            break;\n          case 'footer':\n            this.footerTemplate = item.template;\n            break;\n          case 'icons':\n            this.iconTemplate = item.template;\n            break;\n          case 'headericons':\n            this.headerIconTemplate = item.template;\n            break;\n          default:\n            this.contentTemplate = item.template;\n            break;\n        }\n      });\n    }\n    onHeaderClick(event) {\n      if (this.toggler === 'header') {\n        this.toggle(event);\n      }\n    }\n    onIconClick(event) {\n      if (this.toggler === 'icon') {\n        this.toggle(event);\n      }\n    }\n    toggle(event) {\n      if (this.animating) {\n        return false;\n      }\n      this.animating = true;\n      this.onBeforeToggle.emit({\n        originalEvent: event,\n        collapsed: this.collapsed\n      });\n      if (this.toggleable) {\n        if (this.collapsed) this.expand();else this.collapse();\n      }\n      event.preventDefault();\n    }\n    expand() {\n      this.collapsed = false;\n      this.collapsedChange.emit(this.collapsed);\n    }\n    collapse() {\n      this.collapsed = true;\n      this.collapsedChange.emit(this.collapsed);\n    }\n    getBlockableElement() {\n      return this.el.nativeElement.children[0];\n    }\n    onKeyDown(event) {\n      if (event.code === 'Enter' || event.code === 'Space') {\n        this.toggle(event);\n        event.preventDefault();\n      }\n    }\n    onToggleDone(event) {\n      this.animating = false;\n      this.onAfterToggle.emit({\n        originalEvent: event,\n        collapsed: this.collapsed\n      });\n    }\n    static ɵfac = function Panel_Factory(t) {\n      return new (t || Panel)(i0.ɵɵdirectiveInject(i0.ElementRef));\n    };\n    static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n      type: Panel,\n      selectors: [[\"p-panel\"]],\n      contentQueries: function Panel_ContentQueries(rf, ctx, dirIndex) {\n        if (rf & 1) {\n          i0.ɵɵcontentQuery(dirIndex, Footer, 5);\n          i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n        }\n        if (rf & 2) {\n          let _t;\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerFacet = _t.first);\n          i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n        }\n      },\n      hostAttrs: [1, \"p-element\"],\n      inputs: {\n        toggleable: \"toggleable\",\n        header: \"header\",\n        collapsed: \"collapsed\",\n        style: \"style\",\n        styleClass: \"styleClass\",\n        iconPos: \"iconPos\",\n        expandIcon: \"expandIcon\",\n        collapseIcon: \"collapseIcon\",\n        showHeader: \"showHeader\",\n        toggler: \"toggler\",\n        transitionOptions: \"transitionOptions\"\n      },\n      outputs: {\n        collapsedChange: \"collapsedChange\",\n        onBeforeToggle: \"onBeforeToggle\",\n        onAfterToggle: \"onAfterToggle\"\n      },\n      ngContentSelectors: _c8,\n      decls: 7,\n      vars: 25,\n      consts: [[3, \"ngClass\", \"ngStyle\"], [\"class\", \"p-panel-header\", 3, \"click\", 4, \"ngIf\"], [\"role\", \"region\", 1, \"p-toggleable-content\", 3, \"id\"], [1, \"p-panel-content\"], [4, \"ngTemplateOutlet\"], [\"class\", \"p-panel-footer\", 4, \"ngIf\"], [1, \"p-panel-header\", 3, \"click\"], [\"class\", \"p-panel-title\", 4, \"ngIf\"], [1, \"p-panel-icons\", 3, \"ngClass\"], [\"pRipple\", \"\", \"type\", \"button\", \"role\", \"button\", \"class\", \"p-panel-header-icon p-panel-toggler p-link\", 3, \"click\", \"keydown\", 4, \"ngIf\"], [1, \"p-panel-title\"], [\"pRipple\", \"\", \"type\", \"button\", \"role\", \"button\", 1, \"p-panel-header-icon\", \"p-panel-toggler\", \"p-link\", 3, \"click\", \"keydown\"], [4, \"ngIf\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"class\", \"ngClass\", 4, \"ngIf\"], [3, \"styleClass\", 4, \"ngIf\"], [3, \"ngClass\"], [3, \"styleClass\"], [1, \"p-panel-footer\"]],\n      template: function Panel_Template(rf, ctx) {\n        if (rf & 1) {\n          i0.ɵɵprojectionDef(_c2);\n          i0.ɵɵelementStart(0, \"div\", 0);\n          i0.ɵɵtemplate(1, Panel_div_1_Template, 7, 10, \"div\", 1);\n          i0.ɵɵelementStart(2, \"div\", 2);\n          i0.ɵɵlistener(\"@panelContent.done\", function Panel_Template_div_animation_panelContent_done_2_listener($event) {\n            return ctx.onToggleDone($event);\n          });\n          i0.ɵɵelementStart(3, \"div\", 3);\n          i0.ɵɵprojection(4);\n          i0.ɵɵtemplate(5, Panel_ng_container_5_Template, 1, 0, \"ng-container\", 4);\n          i0.ɵɵelementEnd();\n          i0.ɵɵtemplate(6, Panel_div_6_Template, 3, 1, \"div\", 5);\n          i0.ɵɵelementEnd()();\n        }\n        if (rf & 2) {\n          i0.ɵɵclassMap(ctx.styleClass);\n          i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(14, _c3, ctx.toggleable, !ctx.collapsed && ctx.toggleable))(\"ngStyle\", ctx.style);\n          i0.ɵɵattribute(\"id\", ctx.id)(\"data-pc-name\", \"panel\");\n          i0.ɵɵadvance();\n          i0.ɵɵproperty(\"ngIf\", ctx.showHeader);\n          i0.ɵɵadvance();\n          i0.ɵɵproperty(\"id\", ctx.id + \"_content\")(\"@panelContent\", ctx.collapsed ? i0.ɵɵpureFunction1(19, _c5, i0.ɵɵpureFunction1(17, _c4, ctx.animating ? ctx.transitionOptions : \"0ms\")) : i0.ɵɵpureFunction1(23, _c7, i0.ɵɵpureFunction1(21, _c6, ctx.animating ? ctx.transitionOptions : \"0ms\")));\n          i0.ɵɵattribute(\"aria-labelledby\", ctx.id + \"_header\")(\"aria-hidden\", ctx.collapsed)(\"tabindex\", ctx.collapsed ? \"-1\" : undefined);\n          i0.ɵɵadvance(3);\n          i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.contentTemplate);\n          i0.ɵɵadvance();\n          i0.ɵɵproperty(\"ngIf\", ctx.footerFacet || ctx.footerTemplate);\n        }\n      },\n      dependencies: () => [i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.Ripple, PlusIcon, MinusIcon],\n      styles: [\"@layer primeng{.p-panel-header{display:flex;align-items:center}.p-panel-title{line-height:1;order:1}.p-panel-header-icon{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative}.p-panel-toggleable.p-panel-expanded>.p-toggleable-content:not(.ng-animating){overflow:visible}.p-panel-toggleable .p-toggleable-content{overflow:hidden}}\\n\"],\n      encapsulation: 2,\n      data: {\n        animation: [trigger('panelContent', [state('hidden', style({\n          height: '0'\n        })), state('void', style({\n          height: '{{height}}'\n        }), {\n          params: {\n            height: '0'\n          }\n        }), state('visible', style({\n          height: '*'\n        })), transition('visible <=> hidden', [animate('{{transitionParams}}')]), transition('void => hidden', animate('{{transitionParams}}')), transition('void => visible', animate('{{transitionParams}}'))])]\n      },\n      changeDetection: 0\n    });\n  }\n  return Panel;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet PanelModule = /*#__PURE__*/(() => {\n  class PanelModule {\n    static ɵfac = function PanelModule_Factory(t) {\n      return new (t || PanelModule)();\n    };\n    static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n      type: PanelModule\n    });\n    static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n      imports: [CommonModule, SharedModule, RippleModule, PlusIcon, MinusIcon, SharedModule]\n    });\n  }\n  return PanelModule;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Panel, PanelModule };\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BHABAReferral2, BHABAReferralAttestationWithServices } from 'src/app/services/models/bh-aba-referral';\r\nimport { BHABAReferralAttestation } from 'src/app/services/models/bh-aba-referral-attestation';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport { InstructionItem } from './instruction-item';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { PortalResource } from 'src/app/services/models/portal-resource';\r\nimport { forkJoin } from 'rxjs';\r\nimport { BHABAReferralAttestationPortalResources } from 'src/app/services/models/bh-aba-referral-attestation-portal-resources';\r\nimport { SelectItem } from 'primeng/api';\r\n\r\n@Component({\r\n  selector: 'app-attestation-bh-aba-referrals-dialog',\r\n  templateUrl: './attestation-bh-aba-referrals-dialog.component.html',\r\n  styleUrl: './attestation-bh-aba-referrals-dialog.component.scss'\r\n})\r\nexport class AttestationBhAbaReferralsDialogComponent {\r\n\r\n  @Input() bhabareferral: BHABAReferralAttestation;\r\n  @Output() cancelAttestation = new EventEmitter();\r\n  @Output() submitAttestation = new EventEmitter();\r\n  public comment: string = \"\";\r\n  public bhReferral2: BHABAReferral2[];\r\n  public resources: BHABAReferralAttestationPortalResources;  \r\n  public reasonList: SelectItem[] = [];\r\n  public reasonRequired: boolean = false;\r\n  public hasErrorDateofService: boolean = false;\r\n  public hasErrorReason: boolean = false;\r\n  public hasErrorProposedGoals: boolean = false;\r\n  public hasErrorCompletedGoals: boolean = false;\r\n  public errorMessage: string = 'no';\r\n  public numberPattern: string =\"^[0-9]{1,7}$\";\r\n\r\n  constructor(private reportService: ReportsService, private resourceService: ResourcesService, private sessionService: SessionService){\r\n    \r\n  }\r\n\r\n  public ngOnInit(){\r\n\r\n    this.reasonList.push(\r\n      { label: 'Family Request for Reduced Hours or Service Pause', value: 'Family Request for Reduced Hours or Service Pause' },\r\n      { label: 'Agency Staffing Issues', value: 'Agency Staffing Issues' },\r\n      { label: 'Staff Cancellations', value: 'Staff Cancellations' },\r\n      { label: 'Service Termination During Authorization Period', value: 'Service Termination During Authorization Period' },\r\n      { label: 'Mid-Authorization Increase Request (Unable to Accommodate)', value: 'Mid-Authorization Increase Request (Unable to Accommodate)' },\r\n      { label: 'Client Absences or Frequent Cancellations', value: 'Client Absences or Frequent Cancellations' },\r\n      { label: 'Unforeseen Circumstances', value: 'Unforeseen Circumstances' },\r\n      { label: 'Select One', value: null }\r\n    )  \r\n\r\n    if(this.bhabareferral.assessmentGoals && this.bhabareferral.assessmentGoalsCompleted)\r\n      this.bhabareferral.assessmentGoalsRate = isNaN(this.bhabareferral.assessmentGoals) || isNaN(this.bhabareferral.assessmentGoalsCompleted) ? 0 : Math.round((this.bhabareferral.assessmentGoalsCompleted / this.bhabareferral.assessmentGoals ) * 100);\r\n    else\r\n      this.bhabareferral.assessmentGoalsRate = 0;\r\n\r\n      forkJoin([\r\n        this.resourceService.getBHABAReferralAttestationResources(),   \r\n        this.reportService.getBHABAReferrals2(this.bhabareferral.referralId, this.bhabareferral.memberCIN, this.bhabareferral.calProviderId)\r\n      ]).subscribe(\r\n        (result)=>{\r\n          if(result && result.length > 1) {\r\n            this.resources = result[0];\r\n            this.bhReferral2 = result[1];\r\n            \r\n            this.resources.instruction2.forEach(x=>{\r\n              if(x.resourceDesc.trim().startsWith(\"-\")) {\r\n                x.resourceDesc = \"\\u00A0\\u00A0\\u00A0\\u00A0\" + x.resourceDesc;\r\n              }\r\n              if(x.resourceDesc.trim().startsWith(\"--\")) {\r\n                x.resourceDesc = \"\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\\u00A0\" + x.resourceDesc;\r\n              }              \r\n            })\r\n\r\n            this.bhReferral2.forEach(x=>{\r\n              x.directServicePercentage = Math.round((x.directServiceCompleted / x.assigneD_UNITS ) * 100);\r\n            });           \r\n            \r\n            this.updateReasonRequired();\r\n          }\r\n      });\r\n  }\r\n\r\n  public get display():boolean {\r\n    return true;\r\n  }\r\n\r\n  public set display(value:boolean) {\r\n    this.onCancel();\r\n  }\r\n  \r\n  public get caption(): string {\r\n      return \"BH ABA P4V Attestation\";\r\n  }\r\n\r\n  public onCancel() {\r\n    this.cancelAttestation.emit();\r\n  }\r\n\r\n  public get tooltip1(): string {\r\n    return 'Indicate rationale if authorized hours for either direct service (i.e., H2019 or H2014) fell below 80% utilization';\r\n  }\r\n\r\n  public performValidation(): void{\r\n\r\n    this.hasErrorDateofService = false;\r\n    this.hasErrorReason = false;\r\n    this.hasErrorProposedGoals = false;\r\n    this.hasErrorCompletedGoals = false;\r\n\r\n    this.errorMessage = '';\r\n\r\n    this.bhReferral2.forEach(x=>{\r\n      if(x.directServiceCompleted == null || x.directServiceCompleted.toString().trim() == '') {\r\n        this.hasErrorDateofService = true;\r\n        this.errorMessage = 'Date of serives completed required.';        \r\n      }\r\n    });\r\n\r\n    if(this.reasonRequired) {\r\n      if(this.bhabareferral.reason && this.bhabareferral.reason.trim() == 'Unforeseen Circumstances' && (!this.bhabareferral.comment || this.bhabareferral.comment.trim() == '')){\r\n        this.hasErrorReason = true;\r\n        this.errorMessage = 'Unforseen Circumstances reason required explaination.';\r\n      }\r\n    }\r\n\r\n    if(this.bhabareferral.assessmentGoals == null || this.bhabareferral.assessmentGoals.toString() == ''){\r\n      this.hasErrorProposedGoals = true;\r\n      this.errorMessage = '# of Proposed Goals required.';\r\n    }\r\n\r\n    if(this.bhabareferral.assessmentGoalsCompleted == null || this.bhabareferral.assessmentGoalsCompleted.toString() == '') {\r\n      this.hasErrorCompletedGoals = true;\r\n      this.errorMessage = '# of Advanced Goals.';\r\n    }\r\n  }\r\n\r\n  public onAttest() {\r\n    \r\n    this.performValidation();\r\n    if(this.hasErrorDateofService || this.hasErrorReason || this.hasErrorProposedGoals || this.hasErrorCompletedGoals) {\r\n      return;\r\n    }\r\n\r\n\r\n    let data:BHABAReferralAttestationWithServices = new BHABAReferralAttestationWithServices();\r\n    data.calProviderId = this.bhabareferral.calProviderId;\r\n    data.memberCIN = this.bhabareferral.memberCIN;\r\n    data.referralId = this.bhabareferral.referralId;\r\n    data.assessmentGoals = this.bhabareferral.assessmentGoals;\r\n    data.assessmentGoalsCompleted = this.bhabareferral.assessmentGoalsCompleted;\r\n    data.assessmentGoalsRate = this.bhabareferral.assessmentGoalsRate;\r\n    data.reason = this.bhabareferral.reason;\r\n    data.comment = this.bhabareferral.comment;\r\n    data.attestationBy = this.sessionService.currentPermission.secureAuthUserName;\r\n    data.services = this.bhReferral2;\r\n\r\n    this.reportService.ApplyBHABAReferralAttestation(data).subscribe(x=>{\r\n      this.submitAttestation.emit();\r\n    });    \r\n  }\r\n\r\n  public onDirectServiceCompleted(item: BHABAReferral2) {\r\n    item.directServiceCompleted = Math.round(item.directServiceCompleted)\r\n    item.directServicePercentage = Math.round((item.directServiceCompleted/item.assigneD_UNITS)*100);\r\n    this.updateReasonRequired();\r\n  }\r\n\r\n  public updateAssessmentRate() {\r\n    if(this.bhabareferral.assessmentGoalsCompleted && this.bhabareferral.assessmentGoals) {\r\n      this.bhabareferral.assessmentGoalsCompleted = Math.round(this.bhabareferral.assessmentGoalsCompleted);\r\n      this.bhabareferral.assessmentGoals = Math.round(this.bhabareferral.assessmentGoals);\r\n      this.bhabareferral.assessmentGoalsRate = Math.round((this.bhabareferral.assessmentGoalsCompleted/this.bhabareferral.assessmentGoals)*100);\r\n    }\r\n    else {\r\n      this.bhabareferral.assessmentGoalsRate = 0;\r\n    }\r\n  }\r\n\r\n  public updateReasonRequired()  {\r\n    this.reasonRequired = false;\r\n\r\n    if(this.bhReferral2) {\r\n      var item = this.bhReferral2.find(x=> x.directServicePercentage < 80)\r\n      if(item)\r\n        this.reasonRequired = true;\r\n    }\r\n  }\r\n}\r\n","<p-dialog header=\"{{caption}}\" [(visible)]=\"display\" [modal]=\"true\" (onHide)=\"onCancel()\" width=\"800\" [draggable]=\"false\">\r\n    <!--\r\n    <div>\r\n        <p>attestation-bh-aba-referrals-dialog works!</p>\r\n        <div>\r\n            {{data}}\r\n        </div>        \r\n    </div>    \r\n    -->\r\n    <div class=\"bh\">\r\n        <div class=\"bh-header\">\r\n            <app-alert-info [subjectMessage]=\"'Attestation Instructions:'\" [contentMessage]=\"'Input the Direct Services Hours and Assessment.  Expand instructions for definitions.'\" [uniqueID]=\"'bh-header-alert'\"></app-alert-info>\r\n        </div>\r\n        <div class=\"bh-memberheader\">\r\n            Member Details\r\n        </div>    \r\n        <div class=\"bh-memberdetails\">\r\n            <div class=\"bh-memberdetailsheader\">\r\n                <div class=\"bh-memberdetailsheader-lblmname\">Member name</div>\r\n                <div class=\"bh-memberdetailsheader-lblmid\">Member ID</div>\r\n                <div class=\"bh-memberdetailsheader-lblrid\">Referral ID</div>\r\n                <div class=\"bh-memberdetailsheader-lblmauthperiod\">Authorization Period</div>\r\n            </div>\r\n            <div class=\"bh-memberdetailsvalues\">\r\n                <div class=\"bh-memberdetailsvalues-mname\">{{bhabareferral.memberFirstName}} {{bhabareferral.memberLastName}}</div>\r\n                <div class=\"bh-memberdetailsvalues-mid\">{{bhabareferral.memberCIN}}</div>\r\n                <div class=\"bh-memberdetailsvalues-rid\">{{bhabareferral.referralId}}</div>\r\n                <div class=\"bh-memberdetailsvalues-mauthperiod\">{{bhabareferral.startDate}} - {{bhabareferral.endDate}}</div>\r\n            </div>            \r\n        </div>     \r\n        <div class=\"bh-dsheader\">\r\n            Direct Services Attestation\r\n        </div>         \r\n        <div class=\"bh-dsdetails\">\r\n            <div class=\"bh-dsdetailsheader\">\r\n                <div class=\"bh-dsdetailsheader-lblsvc\">\r\n                    Services\r\n                </div>                \r\n                <div class=\"bh-dsdetailsheader-lbldsa\">\r\n                    Direct Services Authorized (Units)\r\n                </div>\r\n                <div class=\"bh-dsdetailsheader-lbldsc\">\r\n                    <span title=\"If units represent 15 minutes, multiply the number of hours worked by 4 to calculate the correct number of units.\">Direct Services Completed (Units)</span>\r\n                </div>\r\n                <div class=\"bh-dsdetailsheader-lblper\">\r\n                    % of Direct Services Completed\r\n                </div>                                \r\n            </div>\r\n            <div class=\"bh-dsdetailsvalues\">\r\n                <div class=\"bh-dsdetailsvalues-row\" *ngFor=\"let ds of bhReferral2\">\r\n                    <div class=\"bh-dsdetailsvalues-row-dsvc\">\r\n                        <input class=\"form-control\" type=\"text\" readonly required=\"false\"  name=\"dsvc{{ds.autH_SVC_IDN}}\" id=\"dsvc{{ds.autH_SVC_IDN}}id\" [value]=\"ds.procedurE_DESC\">               \r\n                    </div>                    \r\n                    <div class=\"bh-dsdetailsvalues-row-dsa\">\r\n                        <input                             \r\n                            class=\"form-control\" \r\n                            type=\"text\" readonly required=\"false\" \r\n                            name=\"dsa{{ds.autH_SVC_IDN}}\" \r\n                            id=\"dsa{{ds.autH_SVC_IDN}}id\"\r\n                            [value]=\"ds.assigneD_UNITS\">               \r\n                    </div>\r\n                    <div class=\"bh-dsdetailsvalues-row-dsc\">\r\n                        <input\r\n                            title=\"If units represent 15 minutes, multiply the number of hours worked by 4 to calculate the correct number of units.\"  \r\n                            class=\"form-control\" \r\n                            maxlength=\"19\" \r\n                            type=\"number\" required=\"true\"  \r\n                            name=\"dsc{{ds.autH_SVC_IDN}}\" \r\n                            id=\"dsc{{ds.autH_SVC_IDN}}id\"\r\n                            pattern=\"{{numberPattern}}\" \r\n                            [(ngModel)]=\"ds.directServiceCompleted\" \r\n                            (change)=\"onDirectServiceCompleted(ds)\"\r\n                            (keyup)=\"onDirectServiceCompleted(ds)\">                           \r\n                    </div>\r\n                    <div class=\"bh-dsdetailsvalues-row-per\">\r\n                        <input class=\"form-control\" maxlength=\"19\" readonly type=\"text\" required=\"false\"  name=\"per{{ds.autH_SVC_IDN}}\" id=\"per{{ds.autH_SVC_IDN}}id\"  [value]=\"ds.directServicePercentage\">   \r\n                    </div>\r\n                </div>\r\n            </div>  \r\n            <p-panel style=\"margin-top: 5px;\" header=\"Instructions\" [toggleable]=\"true\" [collapsed]=\"'true'\">\r\n                <div class=\"bh-dsdetailsinstruction\">\r\n                    <div class=\"bh-dsdetailsinstruction-row\" *ngFor=\"let inst of resources.instruction1\">\r\n                        <div class=\"bh-dsdetailsinstruction-text1\">\r\n                            {{inst.resourceDesc}}\r\n                        </div>\r\n                        <div class=\"bh-dsdetailsinstruction-text2\">\r\n                            {{inst.resourceValue}}\r\n                        </div>                        \r\n                    </div>\r\n                </div>\r\n            </p-panel>\r\n        </div>         \r\n        <div class=\"bh-commentheader\" *ngIf=\"reasonRequired == true\">\r\n            <span style=\"font-weight: normal;\">Reason&nbsp;</span>\r\n            <i class=\"fa fa-question-circle-o\"\r\n                pTooltip=\"{{tooltip1}}\"\r\n                tooltipPosition=\"left\"\r\n                tooltipStyleClass=\"blue-theme\"\r\n                [escape]=\"false\">\r\n            </i>\r\n        </div>         \r\n        <div class=\"bh-commentdetails\" *ngIf=\"reasonRequired == true\">\r\n            <div class=\"bh-commentdetails-reasonlbl\">\r\n                Select the reason\r\n            </div>\r\n            <div class=\"bh-commentdetails-reasonvalue\">\r\n                <p-dropdown name=\"txtreasonname\" id=\"txtreasonid\" [options]=\"reasonList\" [(ngModel)]=\"bhabareferral.reason\">\r\n                </p-dropdown>\r\n            </div>\r\n            <div class=\"bh-commentdetails-comment\">\r\n                <textarea class=\"form-control\" type=\"text\"required=\"false\" placeholder=\"Input comments here\" name=\"txtcomments\" id=\"txtcomments\" [(ngModel)]=\"bhabareferral.comment\" maxlength=\"500\" rows=\"2\" cols=\"89\"></textarea>\r\n            </div>\r\n        </div>         \r\n        \r\n        <div class=\"bh-ahheader\">\r\n            Treatment Goal Advancement Attestation\r\n        </div>         \r\n        <div class=\"bh-ahdetails\">\r\n            <div class=\"bh-ahdetailsheader\">\r\n                <div class=\"bh-ahdetailsheader-lbldsa\"># of Proposed Goals</div>\r\n                <div class=\"bh-ahdetailsheader-lbldsc\"># of Advanced Goals</div>\r\n                <div class=\"bh-ahdetailsheader-lblper\">Treatment Progress Rate</div>\r\n            </div>\r\n            <div class=\"bh-ahdetailsvalues\">\r\n                <div class=\"bh-ahdetailsvalues-aha\">\r\n                    <input class=\"form-control\" \r\n                    type=\"number\" \r\n                    required=\"true\"  \r\n                    name=\"noofassessmentgoal\" \r\n                    id=\"noofassessmentgoal\" \r\n                    pattern=\"{{numberPattern}}\" \r\n                    [(ngModel)]=\"bhabareferral.assessmentGoals\"                     \r\n                    (change)=\"updateAssessmentRate()\"\r\n                    (keyup)=\"updateAssessmentRate()\">               \r\n                </div>\r\n                <div class=\"bh-ahdetailsvalues-ahc\">\r\n                    <input class=\"form-control\" \r\n                    type=\"number\" \r\n                    required=\"true\"  \r\n                    name=\"goalsinprogress\" \r\n                    id=\"goalsinprogress\" \r\n                    pattern=\"{{numberPattern}}\" \r\n                    [(ngModel)]=\"bhabareferral.assessmentGoalsCompleted\" \r\n                    (change)=\"updateAssessmentRate()\"\r\n                    (keyup)=\"updateAssessmentRate()\">               \r\n                </div>\r\n                <div class=\"bh-ahdetailsvalues-ahper\">\r\n                    <input class=\"form-control\" type=\"text\" readonly required=\"false\"  name=\"assessmentrate\" id=\"assessmentrate\" [value]=\"bhabareferral.assessmentGoalsRate\">               \r\n                </div>\r\n            </div>\r\n            <p-panel style=\"margin-top: 5px;\" header=\"Instructions\" [toggleable]=\"true\" [collapsed]=\"'true'\">\r\n                <div class=\"bh-ahdetailsinstruction\">\r\n                    <div class=\"bh-ahdetailsinstruction-row\" *ngFor=\"let inst of resources.instruction2\">\r\n                        <div class=\"bh-ahdetailsinstruction-text1\">\r\n                            {{inst.resourceDesc}}\r\n                        </div>\r\n                        <div class=\"bh-ahdetailsinstruction-text2\">\r\n                            {{inst.resourceValue}}\r\n                        </div>                        \r\n                    </div>\r\n                </div>\r\n            </p-panel>\r\n        </div>            \r\n    </div>\r\n    <p-footer>\r\n        <div class=\"bh-footer\" *ngIf=\"hasErrorDateofService == true\">\r\n            <app-alert-danger [subjectMessage]=\"'Error : '\" [contentMessage]=\"'Direct Services Completed (Units) required.'\" [uniqueID]=\"'ErrorDateofService'\"></app-alert-danger>\r\n        </div>                \r\n        <div class=\"bh-footer\" *ngIf=\"hasErrorReason == true && reasonRequired == true\">\r\n            <app-alert-danger [subjectMessage]=\"'Error : '\" [contentMessage]=\"'Unforseen Circumstances reason require explanation.'\" [uniqueID]=\"'ErrorReason'\"></app-alert-danger>\r\n        </div>                \r\n        <div class=\"bh-footer\" *ngIf=\"hasErrorProposedGoals == true\">\r\n            <app-alert-danger [subjectMessage]=\"'Error : '\" [contentMessage]=\"'# of Proposed Goals required.'\" [uniqueID]=\"'ErrorProposedGoals'\"></app-alert-danger>\r\n        </div>                \r\n        <div class=\"bh-footer\" *ngIf=\"hasErrorCompletedGoals == true\">\r\n            <app-alert-danger [subjectMessage]=\"'Error : '\" [contentMessage]=\"'# of Advanced Goals required.'\" [uniqueID]=\"'ErrorCompletedGoals'\"></app-alert-danger>\r\n        </div>                                \r\n        <div>\r\n          <button type=\"button\" class=\"btn btn-secondary btn-cancel\" (click)=\"onCancel()\">Maybe Later</button>\r\n          <button type=\"button\" class=\"btn btn-primary btn-create\" (click)=\"onAttest()\" [disabled]=\"bhabareferral.attestationDate != null\">Attest</button>      \r\n        </div>\r\n      </p-footer>    \r\n</p-dialog>\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport { ReportsProviderSearchComponent } from 'src/app/app-components/reports-provider-search/reports-provider-search.component';\r\nimport { ProviderDetail } from 'src/app/services/models/provider-detail';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport { UiUtility } from 'src/app/utils/ui-utility';\r\nimport { AttestationBhAbaReferralsMemberComponent } from '../attestation-bh-aba-referrals-member/attestation-bh-aba-referrals-member.component';\r\nimport { ReportType } from 'src/app/services/models/reportype';\r\n\r\n@Component({\r\n  selector: 'app-attestation-bh-aba-referrals-provider',\r\n  templateUrl: './attestation-bh-aba-referrals-provider.component.html',\r\n  styleUrl: './attestation-bh-aba-referrals-provider.component.scss'\r\n})\r\nexport class AttestationBhAbaReferralsProviderComponent {\r\n  public providers: ProviderDetail[] = [];\r\n  public displayedProviders: ProviderDetail[] = [];\r\n  public selectedProvider: ProviderDetail;\r\n  public totalRecords: number;\r\n  public rowsPerPage: number = 10;\r\n  public pageNumber: number = 1;\r\n  public selectedCalProviderID: string;\r\n  public animationState: string = '';\r\n  public displayMembers = false;\r\n\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n\r\n  public columns: any = [\r\n    { field: '', header: '', width: '5%', classHeader: 'provider-reports-header', classContent: 'provider-reports-content-alt1', sort: false },\r\n    { field: 'name', header: 'Name', width: '40%', classHeader: 'provider-reports-header', classContent: 'provider-reports-content', sort: true },\r\n    { field: 'taxId', header: 'TIN', width: '25%', classHeader: 'provider-reports-header-alt1', classContent: 'provider-reports-content-alt1', sort: true },\r\n    { field: 'calProviderID', header: 'Provider ID', width: '25%', classHeader: 'provider-reports-header-alt1', classContent: 'provider-reports-content-alt1', sort: true }\r\n  ];\r\n\r\n  @ViewChild('providerSearch') providerSearch: ReportsProviderSearchComponent;\r\n  @ViewChild('awpmemberComponent') awpmemberComponent: AttestationBhAbaReferralsMemberComponent;\r\n\r\n  constructor(\r\n    private reportsService: ReportsService,\r\n    private sessionService: SessionService\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.initialize();\r\n  }\r\n\r\n  public initialize(resetComponent = false) {\r\n    \r\n    this.sortColumn = 'name';\r\n    this.selectedCalProviderID = '';\r\n\r\n    if (resetComponent) {    \r\n      this.displayMembers = false;\r\n      this.providers = [];\r\n      this.displayedProviders = [];\r\n\r\n      setTimeout(() => {\r\n        if(this.providerSearch) {\r\n          this.providerSearch.resetSearchFilters();\r\n        }      \r\n      }, 100);\r\n    }\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      //  Do nothing.\r\n    }\r\n    else {\r\n      this.reportsService.getProvidersForBHABAReferralAttestation(this.sessionService.currentPermission.providerCollectionID, ReportType.AWV).subscribe(result => {\r\n        this.providers = result;\r\n\r\n        this.pageNumber = 1;\r\n        this.onProviderSearch(null);\r\n\r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetail) {\r\n    this.selectedCalProviderID = provider.calProviderID;\r\n    this.selectedProvider = provider;\r\n    this.displayMembers = true;\r\n    setTimeout(() => {\r\n      this.awpmemberComponent.setProviderId(this.selectedProvider);  \r\n    }, (500));    \r\n  }\r\n\r\n  public backToProvider() {\r\n    this.initialize(true);\r\n  }\r\n\r\n  public onProviderSearch(search) {\r\n    this.selectedCalProviderID = '';\r\n    if (search && (search.providerName || search.providerId || search.providerTin)) {\r\n\r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n        this.reportsService.searchProvidersForBHABAReferralAttestation(search.providerId, search.providerName, search.providerTin, ReportType.AWV).subscribe(result => {\r\n          this.providers = result;\r\n          this.displayedProviders = this.providers.slice();\r\n        });\r\n      }\r\n      else {\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerTin)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.taxId.toLowerCase().indexOf(search.providerTin.trim().toLowerCase()) >= 0);\r\n        }        \r\n      }\r\n    }\r\n    else {\r\n      this.displayedProviders = this.providers.slice();\r\n    }\r\n  }\r\n\r\n  private setPagedData(page: number = 0) {\r\n    if (page === 0) {\r\n      this.pageNumber = 1;\r\n    }\r\n    this.totalRecords = this.displayedProviders.length;\r\n    const start = (this.pageNumber - 1) * this.rowsPerPage;\r\n    let end = start + this.rowsPerPage;\r\n    if (end > this.displayedProviders.length) {\r\n      end = this.displayedProviders.length;\r\n    }\r\n\r\n    this.displayedProviders = this.displayedProviders.slice(start, end);\r\n  }\r\n}\r\n","<div class=\"awp-provider-container\">\r\n    <div class=\"awp-provider-provider-container\" *ngIf='!displayMembers'>\r\n      <div class=\"awp-provider-provider-search\">\r\n        <app-reports-provider-search (onProviderSearch)=\"onProviderSearch($event)\" #providerSearch></app-reports-provider-search>\r\n      </div>\r\n      <div class=\"awp-provider-provider-results\">\r\n        <p-table\r\n            [value]=\"displayedProviders\"\r\n            [paginator]=\"true\"\r\n            [rows]=\"10\"\r\n            [scrollable]=\"true\"\r\n            scrollHeight=\"450px\"\r\n            selectionMode=\"single\"\r\n            (onSort)=\"onSort($event)\"\r\n            [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n            >\r\n          <ng-template pTemplate=\"header\">\r\n            <tr>\r\n              <th pSortableColumn=\"{{col.field}}\" width=\"{{col.width}}\" class=\"{{col.classHeader}}\" *ngFor=\"let col of columns\">\r\n                <span class=\"p-column-title\">{{col.header}}</span>\r\n                <div *ngIf=\"col.sort\" class=\"{{sortClass(col.field)}}\">\r\n                </div>\r\n              </th>\r\n            </tr>\r\n          </ng-template>\r\n          <ng-template pTemplate=\"body\" let-provider>\r\n            <tr>\r\n              <td width=\"{{col.width}}\" class=\"{{col.classContent}}\" *ngFor=\"let col of columns\">\r\n                <div *ngIf=\"col.header === ''\">\r\n                  <p-radioButton name='providerid' id='{{provider.calProviderID}}' value='{{provider.calProviderID}}' [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(provider)\"></p-radioButton>\r\n                </div>\r\n                <div *ngIf=\"col.header === 'Name' || col.header === 'Provider ID' || col.header === 'TIN'\">\r\n                  <div>\r\n                    <span>{{provider[col.field]}}</span>\r\n                  </div>\r\n                </div>\r\n            </tr>\r\n          </ng-template>\r\n        </p-table>\r\n      </div>\r\n     </div>\r\n     <div class=\"awp-provider-member-container\" *ngIf='displayMembers'>\r\n      <div class=\"awp-provider-member-container-header\" *ngIf=\"selectedProvider\">\r\n        <button class=\"btn btn-primary btn-back\" (click)=\"backToProvider()\">\r\n          <i class=\"fa fa-arrow-left\" aria-hidden=\"true\"></i>\r\n          <span>Back</span>\r\n        </button>\r\n        <p class=\"provider-name\">{{selectedProvider.name}}</p>\r\n      </div>\r\n      <div class=\"awp-provider-member-container\">\r\n        <app-attestation-bh-aba-referrals-member #awpmemberComponent></app-attestation-bh-aba-referrals-member>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  ","import { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { AttestationBhAbaReferralsProviderComponent } from './attestation-bh-aba-referrals-provider/attestation-bh-aba-referrals-provider.component';\r\nimport { AttestationBhAbaReferralsMemberComponent } from './attestation-bh-aba-referrals-member/attestation-bh-aba-referrals-member.component';\r\nimport { TabView } from 'primeng/tabview';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { UiUtility } from 'src/app/utils/ui-utility';\r\n\r\n@Component({\r\n  selector: 'app-attestation-bh-aba-referrals',\r\n  templateUrl: './attestation-bh-aba-referrals.component.html',\r\n  styleUrl: './attestation-bh-aba-referrals.component.scss'\r\n})\r\nexport class AttestationBhAbaReferralsComponent {\r\n  public displayConfirmContinue = false;\r\n  public activeindex:number = 0;\r\n\r\n  @ViewChild('tabView') tabview: TabView;\r\n  @ViewChild('providerComponent') providerComponent: AttestationBhAbaReferralsProviderComponent;\r\n  @ViewChild('memberComponent') memberComponent: AttestationBhAbaReferralsMemberComponent;\r\n\r\n  private tabs: any = [\r\n    { index: 0, id: 'awp-provider', label: 'Provider', enable: true },\r\n    { index: 1, id: 'awp-member', label: 'Member', enable: true }\r\n  ];\r\n\r\n  constructor(\r\n    private confirmationService: ConfirmationService,\r\n    private elementRef: ElementRef\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.setPcpReportAttestationTabs();\r\n  }\r\n\r\n  public canViewTab(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.enable : false;\r\n  }\r\n\r\n  public getTabName(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.label : '';\r\n  }\r\n\r\n  public getTabIndex(name: string) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.label === name);\r\n    return currentTab ? currentTab.index : 0;\r\n  }\r\n\r\n  public onTabChanged(e: any) {\r\n    this.displayConfirmContinue = true;\r\n    this.tabview.activeIndex = e.index === 1 ? 0 : 1;\r\n  }\r\n\r\n  public handleChange(selectedIndex:number, e:MouseEvent) {\r\n    const currentIndex = this.tabview.activeIndex;\r\n    e.stopPropagation();\r\n    if (currentIndex == selectedIndex){\r\n      return;\r\n    }\r\n    this.confirmationService.confirm({\r\n      header: 'Are you sure?',\r\n      message: 'Your search results will be cleared.',\r\n      key: 'continueDialog',\r\n      accept: () => {\r\n        this.tabview.activeIndex = selectedIndex;\r\n        if (selectedIndex === this.getTabIndex('Provider')) {\r\n          this.providerComponent.initialize(true);\r\n        }\r\n        else if (selectedIndex === this.getTabIndex('Member')) {\r\n          if (this.memberComponent) {\r\n            this.memberComponent.setProviderId(null);\r\n          }\r\n        }\r\n      },\r\n      reject: () => {\r\n        this.tabview.activeIndex = currentIndex;\r\n      }\r\n    });\r\n  }\r\n\r\n  private setPcpReportAttestationTabs() {\r\n    const tabView = this.elementRef.nativeElement.querySelector('div.pcpattestation-tabview-styles  ul.p-tabview-nav');\r\n    UiUtility.SetTabsWidthDynamically(tabView, 0, 250);\r\n\r\n    const tabElements = tabView.querySelectorAll('li');\r\n    tabElements.forEach(element => {\r\n      const currentChild = element.firstChild;\r\n      const anchorelement = (element.querySelector(\"a\") as HTMLAnchorElement);\r\n      const tabName = (anchorelement) ? anchorelement.innerText : \"\";\r\n\r\n      const tabIndex = this.getTabIndex(tabName.trim());\r\n\r\n      const newDiv = window.document.createElement(\"div\");\r\n      newDiv.addEventListener('click', this.handleChange.bind(this, tabIndex), false);\r\n      newDiv.style.cursor = 'pointer';\r\n      newDiv.appendChild(currentChild);\r\n\r\n      element.firstChild.remove();\r\n      element.appendChild(newDiv);\r\n    });\r\n  }\r\n\r\n  public confirmContinue(event) {\r\n    this.displayConfirmContinue = false;\r\n  }\r\n}\r\n","<div class=\"pcpattestation-container\">\r\n    <div class=\"pcpattestation-container-reporttype\">\r\n      <app-attestation-type [attestationType]=\"'bhabareferralattestation'\"></app-attestation-type>\r\n    </div>\r\n    <div class=\"pcpattestation-alert\">\r\n      <app-alert-info subjectMessage=\" \" uniqueID=\"bhabareferralattestation\" contentMessage=\"Narrow your search using the known provider or member.\"></app-alert-info>\r\n    </div>\r\n    <div class=\"pcpattestation-container-main\">\r\n      <p-tabView styleClass=\"pcpattestation-tabview-styles\" [activeIndex]=\"activeindex\" #tabView>\r\n        <p-tabPanel [header]=\"getTabName(0)\">\r\n          <ng-template pTemplate=\"header\">\r\n            {{getTabName(0)}}\r\n          </ng-template>\r\n          <ng-template pTemplate=\"content\">\r\n            <app-attestation-bh-aba-referrals-provider #providerComponent></app-attestation-bh-aba-referrals-provider>\r\n          </ng-template>\r\n        </p-tabPanel>\r\n        <p-tabPanel *ngIf=\"canViewTab(1)\" [header]=\"getTabName(1)\">\r\n          <ng-template pTemplate=\"header\">\r\n            {{getTabName(1)}}\r\n          </ng-template>\r\n          <ng-template pTemplate=\"content\">\r\n            <app-attestation-bh-aba-referrals-member  #memberComponent></app-attestation-bh-aba-referrals-member>\r\n          </ng-template>\r\n        </p-tabPanel>\r\n      </p-tabView>\r\n    </div>\r\n  </div>\r\n  <app-continue-dialog key=\"continueDialog\"></app-continue-dialog>\r\n  ","\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ProviderNetwork } from 'src/app/services/models/provider-tax-details';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport FileSaver, { saveAs } from 'file-saver';\r\nimport { LazyLoadEvent } from 'primeng/api/lazyloadevent';\r\n\r\n@Component({\r\n  selector: 'app-pdc-health-network',\r\n  templateUrl: './pdc-health-network.component.html',\r\n  styleUrl: './pdc-health-network.component.scss'\r\n})\r\nexport class PdcHealthNetworkComponent implements OnInit, OnDestroy {\r\n  public healthPlans: ProviderNetwork[];\r\n  public displayMessage: boolean = false;\r\n  public totalRecords: number;\r\n  public rowsPerPage: number = 10;\r\n  public pageNumber: number = 1;\r\n\r\n\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n\r\n  public columns: any = [\r\n    { field: 'networkName', header: 'Health Network Plan Name', width: '40%', classHeader: 'header-name-column', classContent: 'name-column', sort: true },\r\n    { field: 'networkId', header: 'Health Network Plan Code', width: '40%', classHeader: 'header-name-column', classContent: 'name-column', sort: true },\r\n    { field: '', header: 'Action', width: '20%', classHeader: 'header-action-column', classContent: 'action-column', sort: false }\r\n  ];\r\n  \r\n  constructor (\r\n    private reportsService: ReportsService,\r\n    private sessionService: SessionService\r\n  ) {}\r\n\r\n  ngOnDestroy(): void {\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.loadData();\r\n  }\r\n\r\n  public onGetLatest(providerNetwork: ProviderNetwork, isExcel: boolean = false) {\r\n    this.reportsService.downloadHealthNetworkPlanPDCReport(providerNetwork.networkId, 'healthnetwork', [], [], isExcel).subscribe(result=>{\r\n      if (result) {\r\n        const currentDate = new Date();\r\n        const year = currentDate.getFullYear();\r\n        const month = (currentDate.getMonth() + 1).toString().padStart(2, '0'); \r\n        const day = currentDate.getDate().toString().padStart(2, '0');\r\n      \r\n        if (isExcel) {\r\n          const fileName = `${providerNetwork.networkId.substring(3,5)}550${year}${month}${day}.xlsx`;\r\n          this.saveAsFile(result, fileName, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\r\n        }\r\n        else {\r\n          const fileName = `${providerNetwork.networkId.substring(3,5)}550${year}${month}${day}.csv`;\r\n          this.saveAsFile(result, fileName, 'text/csv');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    FileSaver.saveAs(data, fileName);\r\n  }\r\n\r\n  public onGetLatestExcel(providerNetwork: ProviderNetwork) {\r\n    this.onGetLatest(providerNetwork, true);\r\n  }\r\n  \r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.healthPlans.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  lazyLoadData(event: LazyLoadEvent) {\r\n    if (event.sortField !== undefined) {\r\n      this.sortAscending = event.sortOrder === 1;\r\n      this.sortColumn = event.sortField;\r\n      this.loadData();\r\n    }\r\n  }\r\n\r\n  private loadData() {\r\n    const currentCollectionId = this.sessionService.currentPermission.providerCollectionID;\r\n    const healthNetworkPlanCodes = this.sessionService.currentPermission.healthNetworkPlanCodes;\r\n    this.reportsService.getProviderHealthNetworkPlanForPDC(currentCollectionId, healthNetworkPlanCodes).subscribe(result => {\r\n      this.healthPlans = result;\r\n      this.totalRecords = this.healthPlans.length;\r\n      this.displayMessage = this.healthPlans && this.totalRecords === 0;\r\n\r\n      let param: any = {\r\n        \"field\": \"networkName\",\r\n        \"order\": 1\r\n      }\r\n      this.onSort(param)\r\n    });\r\n  }\r\n}\r\n","<div class=\"reports-pdc-healthnetwork-report-container\">\r\n    <div class=\"report-pdc-alert\">\r\n        <app-alert-info subjectMessage=\" \" uniqueID=\"reportspdchealthnetwork\" contentMessage=\"Select from search results to download the PDC report.\"></app-alert-info>\r\n    </div>\r\n    <div class=\"report-pdc-body-container\">\r\n      <p-table tableStyleClass=\"table-data\" \r\n          [value]=\"healthPlans\" \r\n          [paginator]=\"true\" \r\n          [rows]=\"10\"\r\n          [scrollable]=\"true\" \r\n          scrollHeight=\"550px\"\r\n          (onSort)=\"onSort($event)\" \r\n          [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n        <ng-template pTemplate=\"header\">\r\n          <tr>\r\n            <th pSortableColumn=\"{{col.field}}\" width=\"{{col.width}}\" class=\"{{col.classHeader}}\" *ngFor=\"let col of columns\">\r\n              <span class=\"p-column-title\">{{col.header}}</span>\r\n              <div *ngIf=\"col.sort\" class=\"{{sortClass(col.field)}}\">\r\n              </div>\r\n            </th>\r\n          </tr>\r\n        </ng-template>\r\n        <ng-template pTemplate=\"body\" let-row>\r\n          <tr>\r\n            <td width=\"{{col.width}}\" class=\"{{col.classContent}}\" *ngFor=\"let col of columns\">\r\n              <div *ngIf=\"col.header === 'Action'\">\r\n                <div>\r\n                  <button type=\"button\" class=\"download fa fa-download\" title=\"Get Latest\" (click)=\"onGetLatestExcel(row)\">\r\n                    <span>Get Latest</span>\r\n                  </button>\r\n                </div>\r\n              </div>\r\n              <div *ngIf=\"col.header !== 'Action'\">\r\n                <div>\r\n                  <span>{{row[col.field]}}</span>\r\n                </div>\r\n              </div>\r\n            </td>\r\n          </tr>\r\n        </ng-template>\r\n      </p-table>\r\n    </div>\r\n    <div class=\"report-message\" *ngIf=\"displayMessage\">\r\n      <span class=\"no-results-message\">No results found.</span>\r\n    </div>\r\n  </div>\r\n  ","import { Component, Provider } from '@angular/core';\r\nimport FileSaver from 'file-saver';\r\nimport { ProviderDetail } from 'src/app/services/models/provider-detail';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { SessionService } from 'src/app/services/session.service';\r\n\r\n@Component({\r\n  selector: 'app-pdc-provider',\r\n  templateUrl: './pdc-provider.component.html',\r\n  styleUrl: './pdc-provider.component.scss'\r\n})\r\nexport class PdcProviderComponent {\r\n  public isInternalUser: boolean = false;\r\n  public displayMessage: boolean = false;\r\n  public providers: ProviderDetail[] = [];\r\n  public totalRecords: number;\r\n  public rowsPerPage: number = 10;\r\n  public pageNumber: number = 1;\r\n  public first: number = 0;\r\n  public displayDownload: boolean = false;\r\n  public columns: any = [\r\n    { field: 'name', header: 'Name', width: '60%', classHeader: 'header-name-column', classContent: 'name-column', sort: true },\r\n    { field: 'taxId', header: 'TIN', width: '20%', classHeader: 'header-name-column', classContent: 'name-column', sort: true },\r\n    { field: 'providerNPI', header: 'NPI', width: '20%', classHeader: 'header-name-column', classContent: 'name-column', sort: true }\r\n  ];\r\n\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  private providerIds: string[] = [];\r\n  private providerNPIs: string[] = [];\r\n  private searchType: string = 'prescriber';\r\n  private collectionName: string; \r\n\r\n  constructor (\r\n    private reportsService: ReportsService,\r\n    private sessionService: SessionService\r\n  ) {}\r\n\r\n  ngOnDestroy(): void {\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.isInternalUser = this.sessionService.isEnterpriseAdmin || this.sessionService.isEnterpriseUser;\r\n    this.collectionName = this. sessionService.currentPermission.collectionName;\r\n\r\n    if (!this.isInternalUser) {\r\n      this.onProviderSearch({ \r\n        selectionType: 'prescriber', \r\n        providerName: null, \r\n        providerNPI: null, \r\n        providerTaxId: null\r\n      });\r\n    }\r\n  }\r\n\r\n  public onDownload() {\r\n    var isExcel = true;\r\n\r\n    this.providerIds = [];\r\n    this.providerNPIs = [];\r\n    this.providers.forEach(p => {\r\n      if (this.providerIds.indexOf(p.calProviderID) === -1) {\r\n        this.providerIds.push(p.calProviderID);\r\n      }\r\n      if (this.providerNPIs.indexOf(p.providerNPI) === -1) {\r\n        this.providerNPIs.push(p.providerNPI);\r\n      }\r\n    }); \r\n\r\n    this.reportsService.downloadHealthNetworkPlanPDCReport(null, this.searchType, this.providerIds, this.providerNPIs, true).subscribe(result=>{\r\n      if (result) {\r\n        const currentDate = new Date();\r\n        const year = currentDate.getFullYear();\r\n        const month = (currentDate.getMonth() + 1).toString().padStart(2, '0'); \r\n        const day = currentDate.getDate().toString().padStart(2, '0');\r\n      \r\n        if (isExcel) {\r\n          const fileName = `${this.isInternalUser ? \"CalOptima\" : this.collectionName}550${year}${month}${day}.xlsx`;\r\n          this.saveAsFile(result, fileName, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\r\n        }\r\n        else {\r\n          const fileName = `$Caloptima550${year}${month}${day}.csv`;\r\n          this.saveAsFile(result, fileName, 'text/csv');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, fileType: string): void {\r\n    const data: Blob = new Blob([buffer], { type: fileType });\r\n    FileSaver.saveAs(data, fileName);\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onSelectionFilterChange(event: any) {\r\n    this.searchType = event ? event  : \"prescriber\";\r\n  }\r\n\r\n  public onProviderSearch(event: any) {\r\n    if (event === null) {\r\n      //reset the search\r\n      this.providers = [];\r\n      this.displayDownload = false;\r\n      this.displayMessage = false;\r\n\r\n      return;\r\n    }\r\n\r\n    this.searchType = event ? event.selectionType  : \"prescriber\";\r\n    const currentCollectionId = this.sessionService.currentPermission.providerCollectionID;\r\n    this.reportsService.getPDCReportForProviders( currentCollectionId, \r\n                                                  event ? event.providerName : null, \r\n                                                  event ? event.providerNPI : null, \r\n                                                  event ? event.providerTaxId : null, \r\n                                                  this.searchType).subscribe(result => {\r\n      this.providers = result;\r\n      this.pageNumber = 1;\r\n      this.first = 0;\r\n      this.totalRecords =  this.providers.length;\r\n\r\n      if (this.isInternalUser) {\r\n        //internal user can only download single NPI\r\n        const seenValues = new Set();\r\n        this.providers.filter(item => {\r\n          const value = item['providerNPI'];\r\n          if (seenValues.has(value)) {\r\n            return false;\r\n          }\r\n          seenValues.add(value);\r\n          return true;\r\n        });\r\n\r\n        this.displayDownload = seenValues.size === 1;\r\n      }\r\n      else {\r\n        this.displayDownload = this.providers && this.providers.length > 0;\r\n      }\r\n\r\n      this.displayMessage = !this.providers || this.providers.length === 0;\r\n\r\n      let param: any = {\r\n        \"field\": \"name\",\r\n        \"order\": 1\r\n      }\r\n      this.onSort(param)\r\n    });\r\n  }\r\n}\r\n","<div class=\"reports-pdc-provider-container\">\r\n    <div class=\"reports-pdc-provider-alert\">\r\n        <app-alert-info subjectMessage=\" \" uniqueID=\"reportspdcprovider\" contentMessage=\"Filter the search results below.  Select the button at the bottom of the page to generate and download your PDC Report.\"></app-alert-info>\r\n    </div>\r\n    <div class=\"reports-pdc-provider-search\">\r\n        <app-pdc-provider-search (onSelectionFilterChange)=\"onSelectionFilterChange($event)\" (onProviderFilterSearch)=\"onProviderSearch($event)\"></app-pdc-provider-search>\r\n    </div>\r\n    <div class=\"reports-pdc-provider-body-container\">\r\n      <p-table tableStyleClass=\"table-data\" \r\n          [value]=\"providers\" \r\n          [paginator]=\"true\" \r\n          [rows]=\"10\"\r\n          [scrollable]=\"true\" \r\n          [(first)]=\"first\"\r\n          scrollHeight=\"550px\"\r\n          (onSort)=\"onSort($event)\" \r\n          [styleClass]=\"'p-datatable-striped p-datatable-lg'\">\r\n        <ng-template pTemplate=\"header\">\r\n          <tr>\r\n            <th pSortableColumn=\"{{col.field}}\" width=\"{{col.width}}\" class=\"{{col.classHeader}}\" *ngFor=\"let col of columns\">\r\n              <span class=\"p-column-title\">{{col.header}}</span>\r\n              <div *ngIf=\"col.sort\" class=\"{{sortClass(col.field)}}\">\r\n              </div>\r\n            </th>\r\n          </tr>\r\n        </ng-template>\r\n        <ng-template pTemplate=\"body\" let-row>\r\n          <tr>\r\n            <td width=\"{{col.width}}\" class=\"{{col.classContent}}\" *ngFor=\"let col of columns\">\r\n                <div>\r\n                  <span>{{row[col.field]}}</span>\r\n                </div>\r\n            </td>\r\n          </tr>\r\n        </ng-template>\r\n      </p-table>\r\n    </div>\r\n    <div class=\"reports-pdc-provider-message\" *ngIf=\"displayMessage\">\r\n      <span class=\"no-results-message\">No results found.</span>\r\n    </div>\r\n    <div class=\"reports-pdc-provider-download\" *ngIf=\"displayDownload\">\r\n      <button id=\"btnSearchForProvider\" class=\"btn-search-submit btn btn-primary\" (click)=\"onDownload()\" type=\"submit\">\r\n        Download PDC Report\r\n      </button>\r\n    </div>\r\n  </div>\r\n  ","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport { UiUtility } from 'src/app/utils/ui-utility';\r\n\r\n@Component({\r\n  selector: 'app-pdc-provider-search',\r\n  templateUrl: './pdc-provider-search.component.html',\r\n  styleUrl: './pdc-provider-search.component.scss'\r\n})\r\nexport class PdcProviderSearchComponent implements OnInit {\r\n  public providerName: string = \"\";\r\n  public providerNPI: string = \"\";\r\n  public providerTaxId: string = \"\";\r\n  public pdcProviderSearchOption: string[] = ['prescriber'];\r\n\r\n  private isInternalUser: boolean = false;\r\n\r\n  @Output() onProviderFilterSearch: EventEmitter<any> = new EventEmitter(null);\r\n  @Output() onSelectionFilterChange: EventEmitter<any> = new EventEmitter(null);\r\n\r\n  constructor(\r\n    private sessionService: SessionService) \r\n  {}\r\n\r\n  public get enableReset(): boolean {\r\n    return (this.providerName && !UiUtility.isNullUndefinedOrEmpty(this.providerName.trim())) || \r\n           (this.providerTaxId && !UiUtility.isNullUndefinedOrEmpty(this.providerTaxId.trim())) || \r\n           (this.providerNPI && !UiUtility.isNullUndefinedOrEmpty(this.providerNPI.trim()));\r\n  }\r\n  public get disableProviderName(): boolean {\r\n    return !UiUtility.isNullUndefinedOrEmpty(this.providerNPI) || !UiUtility.isNullUndefinedOrEmpty(this.providerTaxId);     \r\n  }\r\n  public get disableProviderNPI(): boolean {\r\n    return !UiUtility.isNullUndefinedOrEmpty(this.providerName) || !UiUtility.isNullUndefinedOrEmpty(this.providerTaxId);   \r\n  }  \r\n  public get disableProviderTaxId(): boolean {\r\n    return !UiUtility.isNullUndefinedOrEmpty(this.providerName) || !UiUtility.isNullUndefinedOrEmpty(this.providerNPI);   \r\n  } \r\n\r\n  ngOnInit(): void {\r\n    this.isInternalUser = this.sessionService.isEnterpriseAdmin || this.sessionService.isEnterpriseUser;\r\n  }\r\n\r\n  public findProviders(reset: boolean = false) {\r\n    if (reset) {\r\n      this.onProviderFilterSearch.emit(null);\r\n    }\r\n\r\n    if (this.isInternalUser && \r\n        UiUtility.isNullUndefinedOrEmpty(this.providerName.trim()) && \r\n        UiUtility.isNullUndefinedOrEmpty(this.providerNPI.trim()) &&  \r\n        UiUtility.isNullUndefinedOrEmpty(this.providerTaxId.trim())\r\n      ) {\r\n      //internal user needs to search using params\r\n      return;\r\n    }\r\n\r\n    // for external user, no need to use these params.\r\n    this.onProviderFilterSearch.emit({ \r\n      selectionType: this.pdcProviderSearchOption.length === 2 ? 'both' : this.pdcProviderSearchOption[0], \r\n      providerName: this.providerName.trim(), \r\n      providerNPI: this.providerNPI.trim(), \r\n      providerTaxId: this.providerTaxId.trim()\r\n    });\r\n  }\r\n\r\n  public onSelectFilterSearch(event: any) {\r\n    if (this.pdcProviderSearchOption.length === 0) {\r\n      this.pdcProviderSearchOption = ['prescriber'];\r\n    }\r\n    this.onSelectionFilterChange.emit(this.pdcProviderSearchOption.length === 2 ? 'both' : this.pdcProviderSearchOption[0]);\r\n  }\r\n\r\n  public onReset() {\r\n    this.providerName = \"\";\r\n    this.providerNPI = \"\";\r\n    this.providerTaxId = \"\";\r\n    this.findProviders(true);\r\n  }\r\n}","<form class=\"reports-provider-search-container\" #providerLookupForm=\"ngForm\" (ngSubmit)=\"findProviders()\">\r\n    <div class=\"reports-pdc-provider-search-container\">\r\n        <div class=\"search-options\">\r\n            <span class=\"custom-checkbox\">\r\n                <p-checkbox id=\"prescriberSearch\" tabindex=\"1\"\r\n                    name=\"pdcProviderSearchOption\"  inputId=\"prescriberSearch\" [(ngModel)]=\"pdcProviderSearchOption\" value=\"prescriber\"\r\n                    label=\"Filter by Prescriber\" (onChange)=\"onSelectFilterSearch($event)\">\r\n                </p-checkbox>\r\n            </span>\r\n            <span class=\"custom-checkbox\">\r\n                <p-checkbox id=\"pcpSearch\" tabindex=\"2\"\r\n                    name=\"pdcProviderSearchOption\"  inputId=\"pcpSearch\" [(ngModel)]=\"pdcProviderSearchOption\" value=\"pcp\"\r\n                    label=\"Filter by PCP\" (onChange)=\"onSelectFilterSearch($event)\">\r\n                </p-checkbox>\r\n            </span>\r\n        </div>\r\n        <div class=\"title-provider-name\">\r\n            <label for=\"providerName\">Name</label>\r\n        </div>\r\n        <div class=\"filter-provider-name\">\r\n            <input class=\"form-control\" type=\"text\" required=\"false\" name=\"txtProviderName\"\r\n                id=\"txtProviderName\" [(ngModel)]=\"providerName\" maxlength=\"50\" disabled=\"{{disableProviderName}}\">\r\n        </div>\r\n        <div class=\"title-provider-tin\">\r\n            <label for=\"provoiderId\">TIN</label>\r\n        </div>\r\n        <div class=\"filter-provider-tin\">\r\n            <input class=\"form-control\" type=\"text\" required=\"false\" name=\"txtProviderTaxId\"\r\n                id=\"txtProviderTaxId\" [(ngModel)]=\"providerTaxId\" maxlength=\"9\" pattern=\"^\\w{4,12}$\" disabled=\"{{disableProviderTaxId}}\">\r\n        </div>\r\n        <div class=\"title-provider-npi\">\r\n            <label for=\"provoiderNPI\">NPI</label>\r\n        </div>\r\n        <div class=\"filter-provider-npi\">\r\n            <input class=\"form-control\" type=\"text\" required=\"false\" name=\"txtProviderNPI\"\r\n                id=\"txtProviderNPI\" [(ngModel)]=\"providerNPI\" maxlength=\"10\" pattern=\"^\\w{4,12}$\" disabled=\"{{disableProviderNPI}}\">\r\n        </div>\r\n        <div class=\"search-provider-button\">\r\n            <button id=\"btnSearchForProvider\" class=\"btn-search-submit btn btn-primary\" type=\"submit\">\r\n                Search\r\n            </button>\r\n            <button id=\"btnResetProviderSearch\" class=\"btn-search-reset btn btn-primary\" [disabled]=\"!enableReset\" (click)=\"onReset()\" type=\"button\">\r\n                Reset\r\n            </button>\r\n        </div>\r\n    </div>\r\n</form>\r\n","import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { TabView } from 'primeng/tabview';\r\nimport { UiUtility } from 'src/app/utils/ui-utility';\r\n\r\n@Component({\r\n  selector: 'app-reports-pdc',\r\n  templateUrl: './reports-pdc.component.html',\r\n  styleUrl: './reports-pdc.component.scss'\r\n})\r\nexport class ReportsPdcComponent implements OnInit, OnDestroy {\r\n  public activeindex:number = 0;\r\n\r\n  private tabs: any = [\r\n    { index: 0, id: 'pdc-report-provider', label: 'PCP / Prescriber', enable: true },\r\n    { index: 1, id: 'pdc-report-member', label: 'Health Network', enable: true }\r\n  ];\r\n\r\n  @ViewChild('tabView') tabview: TabView;\r\n  \r\n  constructor (\r\n    private elementRef: ElementRef\r\n  ) {}\r\n\r\n  ngOnDestroy(): void {\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.setPdcReportTabs();\r\n  }\r\n\r\n  \r\n  public canViewTab(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.enable : false;\r\n  }\r\n\r\n  public getTabName(index: number) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.index === index);\r\n    return currentTab ? currentTab.label : '';\r\n  }\r\n\r\n  public getTabIndex(name: string) {\r\n    const currentTab = this.tabs.find((tab: any) => tab.label === name);\r\n    return currentTab ? currentTab.index : 0;\r\n  }\r\n\r\n  public onTabChanged(e: any) {\r\n    this.tabview.activeIndex = e.index === 1 ? 0 : 1;\r\n  }\r\n\r\n  public handleChange(selectedIndex:number, e:MouseEvent) {\r\n    const currentIndex = this.tabview.activeIndex;\r\n    e.stopPropagation();\r\n    if (currentIndex == selectedIndex){\r\n      return;\r\n    }\r\n  }\r\n\r\n  private setPdcReportTabs() {\r\n    const tabView = this.elementRef.nativeElement.querySelector('div.report-pdc-tabview-styles  ul.p-tabview-nav');\r\n    if (tabView) {\r\n      UiUtility.SetTabsWidthDynamically(tabView, 0, 250);\r\n\r\n      const tabElements = tabView.querySelectorAll('li');\r\n      tabElements.forEach(element => {\r\n        const currentChild = element.firstChild;\r\n        const tabName = (element.querySelector(\"a\") as HTMLAnchorElement).innerText;\r\n        const tabIndex = this.getTabIndex(tabName.trim());\r\n  \r\n        const newDiv = window.document.createElement(\"div\");\r\n        newDiv.addEventListener('click', this.handleChange.bind(this, tabIndex), false);\r\n        newDiv.style.cursor = 'pointer';\r\n        newDiv.appendChild(currentChild);\r\n  \r\n        element.firstChild.remove();\r\n        element.appendChild(newDiv);\r\n      });\r\n    }\r\n  }\r\n}\r\n","<div class=\"reports-pdc-report-container\">\r\n  <div class=\"reports-pdc-report-type\">\r\n    <app-reports-type [reportType]=\"'pdc'\"></app-reports-type>\r\n  </div>\r\n  <div class=\"report-pdc-body-container\">\r\n    <p-tabView styleClass=\"report-pdc-tabview-styles\" [activeIndex]=\"activeindex\" #tabView>\r\n      <p-tabPanel [header]=\"getTabName(0)\">\r\n        <ng-template pTemplate=\"header\">\r\n          {{getTabName(0)}}\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n          <app-pdc-provider></app-pdc-provider>\r\n        </ng-template>\r\n      </p-tabPanel>\r\n      <p-tabPanel *ngIf=\"canViewTab(1)\" [header]=\"getTabName(1)\">\r\n        <ng-template pTemplate=\"header\">\r\n          {{getTabName(1)}}\r\n        </ng-template>\r\n        <ng-template pTemplate=\"content\">\r\n          <app-pdc-health-network></app-pdc-health-network>\r\n        </ng-template>\r\n      </p-tabPanel>\r\n    </p-tabView>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit, Output, EventEmitter, Provider } from '@angular/core';\r\nimport { ProviderDetail } from 'src/app/services/models/provider-detail';\r\nimport { ReportType } from 'src/app/services/models/reportype';\r\nimport { ReportsService } from 'src/app/services/reports.service';\r\nimport { SessionService } from 'src/app/services/session.service';\r\nimport { UiUtility } from 'src/app/utils/ui-utility';\r\n\r\n\r\n@Component({\r\n  selector: 'app-reports-roster-provider',\r\n  templateUrl: './reports-roster-provider.component.html',\r\n  styleUrl: './reports-roster-provider.component.scss'\r\n})\r\nexport class ReportsRosterProviderComponent implements OnInit {\r\n\r\n  @Output() selectedprovider = new EventEmitter<ProviderDetail>();\r\n\r\n  public providers: ProviderDetail[] = [];\r\n  public displayedProviders: ProviderDetail[] = [];\r\n  public rowsPerPage: number = 10;\r\n  public pageNumber: number = 1;\r\n  public animationState: string = '';\r\n\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  \r\n  public columns: any = [\r\n    { field: '', header: '', width: '5%', classHeader: 'provider-reports-header', classContent: 'provider-reports-content-alt1', sort: false },\r\n    { field: 'name', header: 'Name', width: '40%', classHeader: 'provider-reports-header', classContent: 'provider-reports-content', sort: true },\r\n    { field: 'taxId', header: 'TIN', width: '25%', classHeader: 'provider-reports-header-alt1', classContent: 'provider-reports-content-alt1', sort: true },\r\n    { field: 'calProviderID', header: 'Provider ID', width: '25%', classHeader: 'provider-reports-header-alt1', classContent: 'provider-reports-content-alt1', sort: true }\r\n  ];\r\n\r\n  constructor(private sessionService: SessionService, private reportsService: ReportsService) {\r\n\r\n  }\r\n\r\n  public ngOnInit(): void  {\r\n    \r\n    this.sortColumn = 'name';\r\n\r\n    if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n      //  Do nothing.\r\n    }\r\n    else {\r\n      this.reportsService.getProvidersForPCPMemberRoster(this.sessionService.currentPermission.providerCollectionID).subscribe(result => {\r\n        this.providers = result;\r\n\r\n        this.pageNumber = 1;\r\n        this.onProviderSearch(null);\r\n\r\n        let param: any = {\r\n          \"field\": \"name\",\r\n          \"order\": 1\r\n        }\r\n        this.onSort(param)\r\n      });\r\n    }\r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {\r\n    this.providers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public onProviderSelected(provider: ProviderDetail) {\r\n    this.selectedprovider.emit(provider);\r\n  }\r\n\r\n  public onProviderSearch(search) {\r\n    if (search && (search.providerName || search.providerId || search.providerTin)) {\r\n\r\n      if(this.sessionService.currentPermission.isEnterpriseAdmin || this.sessionService.currentPermission.isEnterpriseUser) {\r\n        this.reportsService.searchProvidersForPCPMemberRoster(search.providerId, search.providerName, search.providerTin).subscribe(result => {\r\n          this.providers = result;\r\n          this.displayedProviders = this.providers.slice();\r\n        });\r\n      }\r\n      else {\r\n        if (!UiUtility.isNullUndefinedOrEmpty(search.providerName)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.name.toLowerCase().indexOf(search.providerName.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerId)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.calProviderID.toLowerCase().indexOf(search.providerId.trim().toLowerCase()) >= 0);\r\n        }\r\n        else if (!UiUtility.isNullUndefinedOrEmpty(search.providerTin)) {\r\n          this.displayedProviders = this.providers\r\n            .filter(p => p.taxId.toLowerCase().indexOf(search.providerTin.trim().toLowerCase()) >= 0);\r\n        }        \r\n      }\r\n    }\r\n    else {\r\n      this.displayedProviders = this.providers.slice();\r\n    }\r\n  }\r\n}\r\n","<div class=\"roster\">\r\n    <div class=\"roster-search\">\r\n        <app-reports-provider-search (onProviderSearch)=\"onProviderSearch($event)\"></app-reports-provider-search>\r\n    </div>\r\n    <div class=\"roster-result\">\r\n        <p-table\r\n        [value]=\"displayedProviders\"\r\n        [paginator]=\"true\"\r\n        [rows]=\"10\"\r\n        [scrollable]=\"true\"\r\n        scrollHeight=\"450px\"\r\n        selectionMode=\"single\"\r\n        (onSort)=\"onSort($event)\"\r\n        [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n        >\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th pSortableColumn=\"{{col.field}}\" width=\"{{col.width}}\" class=\"{{col.classHeader}}\" *ngFor=\"let col of columns\">\r\n            <span class=\"p-column-title\">{{col.header}}</span>\r\n            <div *ngIf=\"col.sort\" class=\"{{sortClass(col.field)}}\">\r\n            </div>\r\n          </th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template pTemplate=\"body\" let-provider>\r\n        <tr>\r\n          <td width=\"{{col.width}}\" class=\"{{col.classContent}}\" *ngFor=\"let col of columns\">\r\n            <div *ngIf=\"col.header === ''\">\r\n              <p-radioButton name='providerid' id='{{provider.calProviderID}}' value='{{provider.calProviderID}}' [(ngModel)]=\"selectedCalProviderID\" (click)=\"onProviderSelected(provider)\"></p-radioButton>\r\n            </div>\r\n            <div *ngIf=\"col.header === 'Name' || col.header === 'Provider ID' || col.header === 'TIN'\">\r\n              <div>\r\n                <span>{{provider[col.field]}}</span>\r\n              </div>\r\n            </div>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n    </div>    \r\n</div>","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { PortalMenuItem } from '../../shared/portal-menu-item';\r\n\r\n\r\n@Component({\r\n  selector: 'app-reports-roster-menu',\r\n  templateUrl: './reports-roster-menu.component.html',\r\n  styleUrl: './reports-roster-menu.component.scss'\r\n})\r\nexport class ReportsRosterMenuComponent implements OnInit {\r\n\r\n  @Output() itemclicked = new EventEmitter<any>();\r\n  @Input() tag: any;\r\n  @Input() menuItems: PortalMenuItem[];\r\n\r\n  public visible: boolean = false;\r\n\r\n\r\n  public onView() {\r\n    this.visible = !this.visible\r\n  }  \r\n\r\n  ngOnInit(): void {\r\n    \r\n  }  \r\n\r\n  public get menuCount() : number{\r\n    return this.menuItems.length;\r\n  }\r\n\r\n  itemclick(item: PortalMenuItem) {\r\n\r\n    var itemreturn: any = {\r\n      \"item\": item,\r\n      \"tag\": this.tag\r\n    }\r\n\r\n    this.itemclicked.emit(itemreturn);\r\n  }\r\n}\r\n","<div>\r\n    <div *ngIf=\"menuCount > 1\">\r\n        <a href=\"javascript:void(0);\" (click)=\"onView()\">...</a>\r\n    </div>\r\n    <div *ngIf=\"visible || menuCount == 1\">\r\n        <div *ngFor=\"let item of menuItems\">\r\n            <div>\r\n                <a href=\"javascript:void(0);\" (click)=\"itemclick(item)\">{{item.label}}</a>\r\n            </div>\r\n        </div>    \r\n    </div>\r\n</div>\r\n\r\n","import { Component, Output, EventEmitter, OnInit, Input } from '@angular/core';\r\nimport { MemberInfoService } from 'src/app/services/member-info.service';\r\nimport { PortalMember } from 'src/app/services/models/portal-resource';\r\n\r\n@Component({\r\n  selector: 'app-reports-roster-member-dialog',\r\n  templateUrl: './reports-roster-member-dialog.component.html',\r\n  styleUrl: './reports-roster-member-dialog.component.scss'\r\n})\r\nexport class ReportsRosterMemberDialogComponent implements OnInit {\r\n\r\n  @Input() member: PortalMember;\r\n  @Output() onCancel = new EventEmitter();\r\n  public display: boolean = true;\r\n\r\n  constructor(private memberService: MemberInfoService) {\r\n\r\n  }\r\n  \r\n  ngOnInit(): void {\r\n    \r\n  }\r\n\r\n  public get caption() : string {\r\n    if(this.member)\r\n      return this.member.lastName + \", \" + this.member.firstName + \" => \" + this.member.cin;\r\n    else\r\n      return \"\";\r\n  }\r\n\r\n  public cancelClick() {\r\n    this.display = false;\r\n\r\n    this.onCancel.emit(false);\r\n  }\r\n}\r\n","<p-dialog [style]=\"{width: '1200px', height:'1500px'}\" header=\"{{caption}}\" [(visible)]=\"display\" [modal]=\"true\" (onHide)=\"cancelClick()\" [draggable]=\"false\">\r\n    <app-member-details></app-member-details>\r\n</p-dialog>\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Component, Inject, OnInit, Output, EventEmitter } from '@angular/core';\r\nimport { UserProfile } from '@caloptima/authentication';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { MemberRosterService } from 'src/app/services/member.roster.service';\r\nimport { PortalMember } from 'src/app/services/models/portal-resource';\r\nimport { ProviderDetail } from 'src/app/services/models/provider-detail';\r\nimport { RosterType } from 'src/app/services/models/request-status';\r\nimport { RosterItem } from 'src/app/services/models/roster-item';\r\nimport { Menu } from 'primeng/menu';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { PortalMenuItem } from '../../shared/portal-menu-item';\r\nimport { MemberInfoService } from 'src/app/services/member-info.service';\r\nimport { SessionService } from 'src/app/services/session.service';\r\n\r\n@Component({\r\n  selector: 'app-reports-roster-member',\r\n  templateUrl: './reports-roster-member.component.html',\r\n  styleUrl: './reports-roster-member.component.scss'\r\n})\r\nexport class ReportsRosterMemberComponent implements OnInit {\r\n\r\n  public userProfile: UserProfile;\r\n  public members:PortalMember[] = [];\r\n  public displayMembers:PortalMember[] = [];\r\n  public selectedMember: PortalMember;\r\n  private sortColumn: string;\r\n  private sortAscending: boolean;\r\n  public searchCin: string;\r\n  public searchName: string;\r\n  private selectedProvider: ProviderDetail;\r\n  public rosterItems: RosterItem[];\r\n  public selectedrosterItem: RosterItem;\r\n  public menuItems: PortalMenuItem[] = [];\r\n  public showDialog: boolean = false;\r\n  public showDatePickerDialog: boolean = false;\r\n  public errormessage: string = \"\";\r\n  public successmessage: string = \"\";\r\n  public showSuccess: boolean = false;\r\n  public showError: boolean = false;\r\n\r\n  @Output() back = new EventEmitter();\r\n\r\n  constructor(private memberRosterService: MemberRosterService,\r\n    private memberService: MemberInfoService,\r\n    private sessionService: SessionService,\r\n    @Inject(DOCUMENT) private document: Document) {\r\n    \r\n  }\r\n  ngOnInit(): void {\r\n\r\n    var itemExists = this.sessionService.currentPermission.userPermissionCodes.find(x=>x.trim().toLocaleUpperCase() === \"PRVBRM\");\r\n\r\n    if(itemExists || this.sessionService.isInternalUser) {\r\n      this.menuItems = [\r\n        {\r\n          key: 'view',\r\n          label: 'View Member Details',\r\n          icon: ''\r\n        },\r\n        {\r\n          key: 'delete',\r\n          label: 'Remove from Roster',\r\n          icon: ''\r\n        }      \r\n      ];\r\n    }\r\n    else {\r\n      this.menuItems = [\r\n        {\r\n          key: 'view',\r\n          label: 'View Member Details',\r\n          icon: ''\r\n        }\r\n      ];\r\n    }\r\n    \r\n\r\n    this.memberRosterService.getRosterItems().subscribe(x=>{\r\n      this.rosterItems = x;\r\n      this.selectedrosterItem = x[0];\r\n\r\n      this.onChange(this.selectedrosterItem);\r\n    });\r\n  }\r\n\r\n  public onMemberSearch(search) : void {\r\n    if(search.memberId && search.memberId.trim() != '') {\r\n      this.displayMembers = this.members.filter(x=> x.cin.trim().toUpperCase() === search.memberId.trim().toUpperCase());\r\n    }\r\n    else {\r\n      this.displayMembers = this.members.slice();\r\n    }    \r\n  }\r\n\r\n  public get selectedProviderName() : string {\r\n    if(this.selectedProvider)\r\n      return this.selectedProvider.name;\r\n    else\r\n      return \"null\";\r\n  }\r\n\r\n  public initialize(resetComponent = false) {\r\n    this.sortColumn = 'memberName';\r\n    this.sortAscending = true;\r\n    this.searchCin = '';\r\n    this.searchName = '';\r\n    this.selectedMember = null;\r\n    this.displayMembers = [];\r\n    \r\n  }\r\n\r\n  public sortClass(column: string): string {\r\n    let cls: string;\r\n    if (column == this.sortColumn) {\r\n      cls = this.sortAscending ? \"fa fa-chevron-up\" : \"fa fa-chevron-down\";\r\n    }\r\n    else {\r\n      cls = \"fa fa-chevron-up\";\r\n    }\r\n    return cls;\r\n  }\r\n\r\n  public onPage(e: any) {\r\n    let s = JSON.stringify(e);\r\n  }\r\n\r\n  public onSort(e: any): void {    \r\n    this.displayMembers.sort((data1, data2) => {\r\n      let value1 = data1[e.field];\r\n      let value2 = data2[e.field];\r\n      let result = null;\r\n\r\n      if (value1 == null && value2 != null)\r\n        result = -1;\r\n      else if (value1 != null && value2 == null)\r\n        result = 1;\r\n      else if (value1 == null && value2 == null)\r\n        result = 0;\r\n      else if (typeof value1 === 'string' && typeof value2 === 'string')\r\n        result = value1.localeCompare(value2);\r\n      else\r\n        result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\r\n\r\n      return (e.order * result);\r\n    });\r\n    this.sortAscending = e.order == 1;\r\n    this.sortColumn = e.field;\r\n  }\r\n\r\n  public setProvider(provider: ProviderDetail) {\r\n    if(provider) {\r\n      this.selectedProvider = provider;\r\n\r\n      if(this.selectedrosterItem) {\r\n        this.memberRosterService.getProviderMemberRoster(provider.calProviderID, this.selectedrosterItem.rosterTypeID).subscribe(res=>{\r\n          this.members = res;\r\n          this.displayMembers = res.slice();\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  public deleteMember(member: PortalMember) {\r\n    this.selectedMember = member;\r\n    this.showDatePickerDialog = true;    \r\n  }\r\n\r\n  public onChange(rosterItem: RosterItem) {\r\n    this.resetMessage();\r\n    this.setProvider(this.selectedProvider);\r\n  }\r\n\r\n  public onBack() {\r\n    this.resetMessage();\r\n    this.back.emit();\r\n  }\r\n\r\n  public itemclick($event) {\r\n    var itemx = $event;\r\n    var portalmember: PortalMember = itemx.tag;\r\n    var menuItem: PortalMenuItem = itemx.item;\r\n\r\n    if(menuItem.key.trim().toUpperCase() === \"DELETE\") {\r\n      this.resetMessage();\r\n      this.deleteMember(portalmember);\r\n    }\r\n    else if(menuItem.key.trim().toUpperCase() === \"VIEW\") {\r\n      this.resetMessage();\r\n      this.showDialog = true;\r\n      this.selectedMember = portalmember; \r\n\r\n      setTimeout(()=>{\r\n        this.memberService.getMembersById(portalmember.cin).subscribe(x=>{\r\n          this.memberService.setSelectMember(x[0]);\r\n        });\r\n      }, 100);\r\n    }\r\n  }\r\n\r\n  public cancelMemberDialog() {\r\n    this.showDialog = false;\r\n  }\r\n\r\n  public cancelDateDialog() {\r\n    this.showDatePickerDialog = false;\r\n  }\r\n\r\n  public resetMessage() {\r\n    this.showError = false;\r\n    this.showSuccess = false;\r\n    this.errormessage = \"\";\r\n    this.successmessage = \"\";\r\n  }\r\n\r\n  public continueDateDialog($event) {\r\n    var relationshipDate: Date = $event;\r\n    var providerIds : string[] = [];\r\n    providerIds.push(this.selectedProvider.calProviderID);\r\n        \r\n    this.memberRosterService.removeMemberFromProviderRoster(this.selectedMember.cin, this.selectedrosterItem.rosterTypeID, relationshipDate, providerIds)\r\n    .subscribe(x=>{\r\n      this.setProvider(this.selectedProvider);\r\n      this.successmessage = \"Memeber removed from roster successfully.\";\r\n      this.showSuccess = true;\r\n    },\r\n    (error)=>{\r\n      this.successmessage = \"Failed to remove member from the roster.\";\r\n      this.showError = true;\r\n    });\r\n  }\r\n}\r\n","<div class=\"roster\">\r\n    <div class=\"roster-back\">\r\n      <div class=\"roster-back-btn\">\r\n        <button type=\"button\" class=\"btn btn-primary btn-create\" (click)=\"onBack()\">\r\n          <i class=\"fa fa-arrow-left\" aria-hidden=\"true\"></i>\r\n          Back\r\n        </button>  \r\n      </div>\r\n      <div class=\"roster-back-hdr\">\r\n        {{selectedProviderName}}\r\n      </div>      \r\n    </div>\r\n    <div class=\"roster-type\">\r\n      <div class=\"roster-type-label\">\r\n        Roster Type\r\n      </div>\r\n      <div class=\"roster-type-input\">\r\n        <p-dropdown name=\"rostertypename\" id=\"rostertypeid\" [options]=\"rosterItems\" optionLabel=\"rosterTypeDesc\" [(ngModel)]=\"selectedrosterItem\" (onChange)=\"onChange($event)\">\r\n        </p-dropdown>\r\n      </div>\r\n    </div>    \r\n    <div class=\"roster-search\">\r\n        <app-reports-member-search (onMemberSearch)=\"onMemberSearch($event)\" #memberSearch></app-reports-member-search>\r\n    </div>\r\n    <div class=\"roster-result\">\r\n        <p-table\r\n        [value]=\"displayMembers\"\r\n        [paginator]=\"true\"\r\n        [rows]=\"10\"\r\n        [scrollable]=\"true\"\r\n        scrollHeight=\"400px\"\r\n        (onSort)=\"onSort($event)\"\r\n        [styleClass]=\"'p-datatable-striped p-datatable-lg'\"\r\n        >\r\n        <ng-template pTemplate=\"header\">\r\n          <tr>\r\n            <th width=\"25%\" pSortableColumn=\"memberName\">Name<div class=\"{{sortClass('memberName')}}\"></div></th>\r\n            <th width=\"25%\" pSortableColumn=\"cin\">Member ID<div class=\"{{sortClass('cin')}}\"></div></th>\r\n            <th width=\"25%\" pSortableColumn=\"rosterEffDate\">Start Date<div class=\"{{sortClass('rosterEffDate')}}\"></div></th>\r\n            <th width=\"25%\">Action</th>\r\n          </tr>\r\n        </ng-template>\r\n        <ng-template pTemplate=\"body\" let-row>\r\n          <tr>\r\n            <td width=\"25%\">\r\n              <div>{{row.memberName}}</div>\r\n            </td>\r\n            <td width=\"25%\">\r\n              <div>{{row.cin}}</div>\r\n            </td>           \r\n            <td width=\"25%\">\r\n              <div>{{row.rosterEffDate}}</div>\r\n            </td>             \r\n            <td width=\"25%\">\r\n              <app-reports-roster-menu [tag]=\"row\" [menuItems]=\"menuItems\" (itemclicked)=\"itemclick($event)\"></app-reports-roster-menu>              \r\n            </td>            \r\n          </tr>\r\n        </ng-template>\r\n        </p-table>\r\n    </div>   \r\n    <div class=\"roster-message\">\r\n      <div *ngIf=\"showSuccess\">\r\n        <app-alert-success uniqueID='success' [subjectMessage]=\"'Success.'\" [contentMessage]=\"successmessage\"></app-alert-success>\r\n      </div>        \r\n      <div *ngIf=\"showError\">\r\n        <app-alert-danger uniqueID='fail' [subjectMessage]=\"'Error.'\" [contentMessage]=\"errormessage\"></app-alert-danger>\r\n      </div> \r\n    </div> \r\n</div>\r\n<app-reports-roster-member-dialog [member]=\"selectedMember\" *ngIf=\"showDialog\" (onCancel)=\"cancelMemberDialog()\"></app-reports-roster-member-dialog>\r\n<app-choose-date-dialog *ngIf=\"showDatePickerDialog\" [caption]=\"'Date'\" [label]=\"'Relationship end Date'\" (onContinue)=\"continueDateDialog($event)\" (onCancel)=\"cancelDateDialog()\"></app-choose-date-dialog>\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport { ReportsRosterProviderComponent } from './reports-roster-provider/reports-roster-provider.component';\r\nimport { ReportsRosterMemberComponent } from './reports-roster-member/reports-roster-member.component';\r\nimport { ProviderDetail } from 'src/app/services/models/provider-detail';\r\n\r\n@Component({\r\n  selector: 'app-reports-provider-member-roster',\r\n  templateUrl: './reports-provider-member-roster.component.html',\r\n  styleUrl: './reports-provider-member-roster.component.scss'\r\n})\r\nexport class ReportsProviderMemberRosterComponent {\r\n  @ViewChild('providercomponent') providerComponent: ReportsRosterProviderComponent;\r\n  @ViewChild('membercomponent') memberComponent: ReportsRosterMemberComponent;\r\n\r\n  public displayProvider: boolean = true;\r\n  public displayMember: boolean = false; \r\n\r\n  constructor() {\r\n\r\n  }\r\n\r\n  public onProviderSelected(val: ProviderDetail)  {\r\n    \r\n\r\n    this.displayProvider = false;\r\n    this.displayMember = true;\r\n\r\n    setTimeout(()=>{\r\n      this.memberComponent.setProvider(val);\r\n    }, 100);\r\n  }\r\n\r\n  public onBack() {\r\n    this.displayMember =false;\r\n    this.displayProvider = true;\r\n  }\r\n}\r\n","<div class=\"roster\">\r\n    <div class=\"roster-type\">\r\n        <!-- <app-reports-type [reportType]=\"'roster'\"></app-reports-type> -->\r\n    </div>\r\n    <div class=\"roster-provider\" *ngIf=\"displayProvider\">\r\n        <app-reports-roster-provider (selectedprovider)=\"onProviderSelected($event)\" #providercomponent></app-reports-roster-provider>\r\n    </div>\r\n    <div class=\"roster-member\">\r\n        <app-reports-roster-member (back)=\"onBack()\" #membercomponent *ngIf=\"displayMember\"></app-reports-roster-member>\r\n    </div>    \r\n</div>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, provideRoutes, Routes } from '@angular/router';\r\nimport { ReportsBloodleadScreeningComponent } from './reports-bloodlead-screening/reports-bloodlead-screening.component';\r\nimport { ReportsHomeComponent } from './reports-home/reports-home.component';\r\nimport { ReportsMemberEligibilityRosterComponent } from './reports-member-eligibility-roster/reports-member-eligibility-roster.component';\r\nimport { ReportsPayForValueComponent } from './reports-pay-for-value/reports-pay-for-value.component';\r\nimport { ReportsPcpMemberRosterComponent } from './reports-pcp-member-roster/reports-pcp-member-roster.component';\r\nimport { ReportsPcpAttestationComponent } from './reports-pcp-attestation/reports-pcp-attestation.component';\r\nimport { ReportsDHCSBloodleadScreeningComponent } from './reports-dhcs-bloodlead-screening/reports-dhcs-bloodlead-screening.component';\r\nimport { ReportsPayForValueManualComponent } from './reports-pay-for-value-manual/reports-pay-for-value-manual.component';\r\nimport { AttestationHomeComponent } from './attestation/attestation-home/attestation-home.component';\r\nimport { AttestationBloodleadScreeningComponent } from './attestation/attestation-bloodlead-screening/attestation-bloodlead-screening.component';\r\nimport { ReportsBHPayForValueComponent } from './reports-BH-pay-for-value/reports-bh-pay-for-value.component';\r\nimport { ReportsAWPComponent } from './reports-awp/reports-awp.component';\r\nimport { ReportsHIFComponent } from './reports-hif/reports-hif.component';\r\nimport { ReportsPcpMemberIHAComponent } from './reports-pcp-member-iha/reports-pcp-member-iha.component';\r\nimport { ReportsBHIComponent } from './reports-bhi/reports-bhi.component';\r\nimport { ReportsBHABAReferralsComponent } from './reports-bhaba-referrals/reports-bhaba-referrals.component';\r\nimport { AttestationProviderTrainingComponent } from './attestation/attestation-provider-training/attestation-provider-training.component';\r\nimport { AttestationBhAbaReferralsProviderComponent } from './attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals-provider/attestation-bh-aba-referrals-provider.component';\r\nimport { AttestationBhAbaReferralsComponent } from './attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals.component';\r\nimport { ReportsPdcComponent } from './reports-pdc/reports-pdc.component';\r\nimport { ReportsProviderMemberRosterComponent } from './reports-provider-member-roster/reports-provider-member-roster.component';\r\n\r\nconst routes: Routes = [\r\n  {\r\n    path: '',\r\n    redirectTo: '/reports/home',\r\n    pathMatch: 'full'\r\n  },\r\n  {\r\n    path: 'home',\r\n    component: ReportsHomeComponent\r\n  },\r\n  {\r\n    path: 'pcpmembershiproster',\r\n    component: ReportsPcpMemberRosterComponent\r\n  },\r\n  {\r\n    path: 'membereligibilityroster',\r\n    component: ReportsMemberEligibilityRosterComponent\r\n  },\r\n  {\r\n    path: 'payforvalue',\r\n    component: ReportsPayForValueComponent\r\n  },\r\n  {\r\n    path: 'bhpayforvalue',\r\n    component: ReportsBHPayForValueComponent\r\n  },  \r\n  {\r\n    path: 'bloodleadscreening',\r\n    component: ReportsBloodleadScreeningComponent\r\n  },\r\n  {\r\n    path: 'pcpattestation',\r\n    component: ReportsPcpAttestationComponent\r\n  },\r\n  {\r\n    path: 'dhcsbloodleadscreening',\r\n    component: ReportsDHCSBloodleadScreeningComponent\r\n  },\r\n  {\r\n    path: 'payforvaluemanual',\r\n    component: ReportsPayForValueManualComponent\r\n  },\r\n  {\r\n    path: 'attestationhome',\r\n    component: AttestationHomeComponent,\r\n  },\r\n  {\r\n    path: 'attestationbloodleadscreening',\r\n    component: AttestationBloodleadScreeningComponent\r\n  },\r\n  {\r\n    path: 'providertrainingattestation',\r\n    component: AttestationProviderTrainingComponent\r\n  },\r\n  {\r\n    path: 'bhabareferralattestation',\r\n    component: AttestationBhAbaReferralsComponent\r\n  },\r\n  {\r\n    path: 'awp',\r\n    component: ReportsAWPComponent\r\n  },\r\n  {\r\n    path: 'hif',\r\n    component: ReportsHIFComponent\r\n  },\r\n  {\r\n    path: 'iha',\r\n    component: ReportsPcpMemberIHAComponent\r\n  },\r\n  {\r\n    path: 'bhi',\r\n    component: ReportsBHIComponent\r\n  },\r\n  {\r\n    path: 'bhaba',\r\n    component: ReportsBHABAReferralsComponent\r\n  },\r\n  {\r\n    path: 'pdc',\r\n    component: ReportsPdcComponent\r\n  },\r\n  {\r\n    path: 'roster',\r\n    component: ReportsProviderMemberRosterComponent\r\n  }\r\n];\r\n\r\nexport const routedComponents = [\r\n  ReportsHomeComponent\r\n];\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forChild(routes)],\r\n  exports: [RouterModule]\r\n})\r\nexport class ReportsRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReportsHomeComponent } from './reports-home/reports-home.component';\r\nimport { routedComponents, ReportsRoutingModule } from './reports-routing';\r\nimport { ReportsTypeComponent } from './reports-type/reports-type.component';\r\nimport { ReportsPcpMemberRosterComponent } from './reports-pcp-member-roster/reports-pcp-member-roster.component';\r\nimport { ReportsPcpMemberIHAComponent } from './reports-pcp-member-iha/reports-pcp-member-iha.component';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { TableModule } from 'primeng/table';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ReportsMemberEligibilityRosterComponent } from './reports-member-eligibility-roster/reports-member-eligibility-roster.component';\r\nimport { ReportsPayForValueComponent } from './reports-pay-for-value/reports-pay-for-value.component';\r\nimport { AppComponentsModule } from '../app-components/app-components.module';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ReportsBloodleadScreeningComponent } from './reports-bloodlead-screening/reports-bloodlead-screening.component';\r\nimport { ReportsPcpAttestationComponent } from './reports-pcp-attestation/reports-pcp-attestation.component';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { PcpAttestationProviderComponent } from './reports-pcp-attestation/pcp-attestation-provider/pcp-attestation-provider.component';\r\nimport { PcpAttestationMemberComponent } from './reports-pcp-attestation/pcp-attestation-member/pcp-attestation-member.component';\r\nimport { ReportsMemberSearchComponent } from '../app-components/reports-member-search/reports-member-search.component';\r\nimport { ReportsDHCSBloodleadScreeningComponent } from './reports-dhcs-bloodlead-screening/reports-dhcs-bloodlead-screening.component';\r\nimport { ReportsPayForValueManualComponent } from './reports-pay-for-value-manual/reports-pay-for-value-manual.component';\r\nimport { AttestationBloodleadScreeningComponent } from './attestation/attestation-bloodlead-screening/attestation-bloodlead-screening.component';\r\nimport { AttestationHomeComponent } from './attestation/attestation-home/attestation-home.component';\r\nimport { AttestationTypeComponent } from './attestation/attestation-type/attestation-type.component';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { AttestationDialogComponent } from './attestation/attestation-bloodlead-screening/attestation-dialog/attestation-dialog.component';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ReportsBHPayForValueComponent } from './reports-BH-pay-for-value/reports-bh-pay-for-value.component';\r\nimport { ReportsTinSearchComponent } from '../app-components/reports-tin-search/reports-tin-search.component';\r\nimport { ReportsAWPComponent } from './reports-awp/reports-awp.component';\r\nimport { AWPProviderComponent } from './reports-awp/awp-provider/awp-provider.component';\r\nimport { AWPMemberComponent } from './reports-awp/awp-member/awp-member.component';\r\nimport { ReportsHIFComponent } from './reports-hif/reports-hif.component';\r\nimport { HIFProviderComponent } from './reports-hif/hif-provider/hif-provider.component';\r\nimport { HIFMemberComponent } from './reports-hif/hif-member/hif-member.component';\r\nimport { ReportsBHIComponent } from './reports-bhi/reports-bhi.component';\r\nimport { AttestationBHIDialogComponent } from './attestation/attestation-bhi/attestationbhi-dialog.component';\r\nimport { ReportsBHABAReferralsComponent } from './reports-bhaba-referrals/reports-bhaba-referrals.component';\r\nimport { AttestationProviderTrainingComponent } from './attestation/attestation-provider-training/attestation-provider-training.component';\r\nimport { AttestationProviderTrainingDialogComponent } from './attestation/attestation-provider-training/attestation-provider-training-dialog/attestation-provider-training-dialog.component';\r\nimport { AttestationProviderTrainingAnnualComponent } from './attestation/attestation-provider-training/attestation-provider-training-annual/attestation-provider-training-annual.component';\r\nimport { AttestationProviderTrainingIndividualComponent } from './attestation/attestation-provider-training/attestation-provider-training-individual/attestation-provider-training-individual.component';\r\nimport { AttestationBhAbaReferralsProviderComponent } from './attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals-provider/attestation-bh-aba-referrals-provider.component';\r\nimport { AttestationBhAbaReferralsMemberComponent } from './attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals-member/attestation-bh-aba-referrals-member.component';\r\nimport { AttestationBhAbaReferralsComponent } from './attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals.component';\r\nimport { AttestationBhAbaReferralsDialogComponent } from './attestation/attestation-bh-aba-referrals/attestation-bh-aba-referrals-dialog/attestation-bh-aba-referrals-dialog.component';\r\nimport { ReportWellnessAttachmentDialogComponent } from './reports-awp/awp-dialogs/report-wellness-attachment-dialog/report-wellness-attachment-dialog.component';\r\nimport { ReportWellnessSurveyComponent } from './reports-awp/awp-components/report-wellness-survey/report-wellness-survey.component';\r\nimport { ReportWellnessAttachmentsComponent } from './reports-awp/awp-components/report-wellness-attachments/report-wellness-attachments.component';\r\nimport { ReportWellnessDetailsDialogComponent } from './reports-awp/awp-dialogs/report-wellness-details-dialog/report-wellness-details-dialog.component';\r\nimport { ReportWellnessDetailsComponent } from './reports-awp/awp-components/report-wellness-details/report-wellness-details.component';\r\nimport { ReportsPdcComponent } from './reports-pdc/reports-pdc.component';\r\nimport { ReportsProviderMemberRosterComponent } from './reports-provider-member-roster/reports-provider-member-roster.component';\r\nimport { ReportsRosterProviderComponent } from './reports-provider-member-roster/reports-roster-provider/reports-roster-provider.component';\r\nimport { ReportsRosterMemberComponent } from './reports-provider-member-roster/reports-roster-member/reports-roster-member.component';\r\nimport { ReportsRosterMenuComponent } from './reports-provider-member-roster/reports-roster-menu/reports-roster-menu.component';\r\nimport { ReportsRosterMemberDialogComponent } from './reports-provider-member-roster/reports-roster-member-dialog/reports-roster-member-dialog.component';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { PdcHealthNetworkComponent } from './reports-pdc/pdc-health-network/pdc-health-network.component';\r\nimport { PdcProviderComponent } from './reports-pdc/pdc-provider/pdc-provider.component';\r\nimport { PdcProviderSearchComponent } from './reports-pdc/pdc-provider-search/pdc-provider-search.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    routedComponents,\r\n    ReportsHomeComponent,\r\n    ReportsTypeComponent,\r\n    ReportsPcpMemberRosterComponent,\r\n    ReportsPcpMemberIHAComponent,\r\n    ReportsBHABAReferralsComponent,\r\n    ReportsBHIComponent,\r\n    ReportsMemberEligibilityRosterComponent,\r\n    ReportsPayForValueComponent,\r\n    ReportsBloodleadScreeningComponent,\r\n    ReportsPcpAttestationComponent,\r\n    PcpAttestationProviderComponent,\r\n    PcpAttestationMemberComponent,\r\n    ReportsTinSearchComponent,\r\n    ReportsMemberSearchComponent,\r\n    ReportsDHCSBloodleadScreeningComponent,\r\n    ReportsPayForValueManualComponent,\r\n    AttestationBloodleadScreeningComponent,\r\n    AttestationProviderTrainingComponent,\r\n    AttestationProviderTrainingDialogComponent,\r\n    AttestationProviderTrainingAnnualComponent,\r\n    AttestationProviderTrainingIndividualComponent,\r\n    AttestationHomeComponent,\r\n    AttestationTypeComponent,\r\n    AttestationDialogComponent,\r\n    AttestationBHIDialogComponent,\r\n    ReportsBHPayForValueComponent,\r\n    ReportsAWPComponent,\r\n    AWPProviderComponent,\r\n    AWPMemberComponent,\r\n    ReportsHIFComponent,\r\n    HIFProviderComponent,\r\n    HIFMemberComponent,\r\n    ReportsPdcComponent,\r\n    PdcHealthNetworkComponent,\r\n    PdcProviderComponent,\r\n    PdcProviderSearchComponent,\r\n    ReportWellnessDetailsComponent,\r\n    ReportWellnessAttachmentsComponent,\r\n    ReportWellnessDetailsDialogComponent,\r\n    ReportWellnessSurveyComponent,\r\n    ReportWellnessAttachmentDialogComponent,\r\n    AttestationBhAbaReferralsComponent,\r\n    AttestationBhAbaReferralsProviderComponent,\r\n    AttestationBhAbaReferralsMemberComponent,  \r\n    AttestationBhAbaReferralsDialogComponent,\r\n    ReportsProviderMemberRosterComponent,\r\n    ReportsRosterProviderComponent,\r\n    ReportsRosterMemberComponent,\r\n    ReportsRosterMenuComponent,\r\n    ReportsRosterMemberDialogComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    ReportsRoutingModule,\r\n    AppComponentsModule,\r\n    ToastModule,\r\n    TableModule,\r\n    FormsModule,\r\n    PanelModule,\r\n    TooltipModule,\r\n    DropdownModule,\r\n    RadioButtonModule,\r\n    TabViewModule,\r\n    CheckboxModule,\r\n    DialogModule,\r\n    ConfirmDialogModule,\r\n    FileUploadModule,\r\n    DialogModule,\r\n    CalendarModule\r\n  ]\r\n})\r\nexport class ReportsModule { }\r\n"],"mappings":"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","names":["ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ReportsTypeComponent","constructor","router","route","sessionService","paramsviaState","isInternalUser","getCurrentNavigation","extras","state","showDHCSBLS","lastdate","Date","valueOf","todayDate","now","showPDC","result","UiUtility","isNullUndefinedOrEmpty","currentUserPermission","healthNetworkPlanCodes","ngOnInit","currentPermission","isEnterpriseAdmin","isEnterpriseUser","extractStateParam","params","subscribe","value","onChange","navigate","reportType","redirectToAttestation","onContinue","rname","reportName","isNullOrUndefined","ɵɵdirectiveInject","Router","ActivatedRoute","SessionService","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","ɵɵlistener","ɵɵtemplate","ReportsTypeComponent_option_14_Template","ɵɵadvance","ɵɵtwoWayProperty","ɵɵproperty","ReportsHomeComponent","constructor","ngOnInit","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵadvance","ɵɵproperty","import_file_saver","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵclassMap","ctx_r1","sortClass","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r8","ctx_r7","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCalProviderID","ɵɵresetView","ɵɵlistener","row_r6","$implicit","ctx_r9","onProviderSelected","ɵɵproperty","calProviderID","ɵɵtwoWayProperty","ctx_r2","ɵɵtextInterpolate","name","groupName","ɵɵpropertyInterpolate","ctx_r3","attestationMessage","ɵɵtextInterpolate1","ctx_r4","displayText","_r11","ctx_r10","selectedFile","ctx_r12","onBuildReport","ctx_r5","fileList","enableBuildReport","ReportsBloodleadScreeningComponent","constructor","sessionService","reportsService","datePipe","router","document","providers","displayProviders","sortColumn","sortAscending","searchProviderId","searchProviderName","ngOnInit","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getProvidersWithAttestationForReports","providerCollectionID","collectionName","ReportType","BLS","subscribe","result","totalRecords","length","slice","param","onSort","column","cls","onPage","e","s","JSON","stringify","sort","data1","data2","value1","field","value2","localeCompare","order","provider","selectedCalProvider","getReportFilesForProvider","forEach","x","push","label","transform","yearMonth","value","UiUtility","scrollDown","providerDetail","find","temp","fileName","filePath","fileType","split","pop","downloadReportFileForProvider","saveAsFile","buffer","data","Blob","type","saveAs","isAdminUser","onSearch","search","providerName","providerId","providerTin","searchProvidersWithAttestationForReports","isNullUndefinedOrEmpty","filter","p","taxId","toLowerCase","indexOf","trim","scrollToNext","el","getElementsByClassName","scrollTop","scrollHeight","ɵɵdirectiveInject","SessionService","ReportsService","DatePipe","Router","DOCUMENT","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ReportsBloodleadScreeningComponent_ng_template_10_Template","ReportsBloodleadScreeningComponent_ng_template_11_Template","ReportsBloodleadScreeningComponent_div_12_Template","ReportsBloodleadScreeningComponent_div_13_Template","ReportsBloodleadScreeningComponent_div_14_Template","attestationStatus","import_file_saver","ReportsMemberEligibilityRosterComponent","constructor","sessionService","collectionService","reportsService","ngOnInit","onBuildReport","saveAsFile","buffer","fileName","fileType","data","Blob","type","saveAs","ɵɵdirectiveInject","SessionService","CollectionService","ReportsService","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵadvance","ɵɵproperty","import_file_saver","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵclassMap","ctx_r1","sortClass","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r7","ctx_r6","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCalProviderID","ɵɵresetView","ɵɵlistener","row_r5","$implicit","ctx_r8","onProviderSelected","ɵɵproperty","calProviderID","ɵɵtwoWayProperty","ctx_r2","ɵɵtextInterpolate","name","groupName","ɵɵtextInterpolate1","ctx_r3","displayText","_r10","ctx_r9","selectedFile","ctx_r11","onBuildReport","ctx_r4","fileList","enableBuildReport","ReportsPayForValueComponent","constructor","sessionService","reportsService","datePipe","document","providers","displayProviders","sortColumn","sortAscending","searchProviderId","searchProviderName","ngOnInit","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getProvidersForReports","providerCollectionID","ReportType","P4V","subscribe","result","totalRecords","length","slice","param","onSort","column","cls","onPage","e","s","JSON","stringify","sort","data1","data2","value1","field","value2","localeCompare","order","provider","getReportFilesForProvider","forEach","x","push","label","transform","yearMonth","value","UiUtility","scrollDown","providerDetail","find","temp","fileName","downloadReportFileForProvider","saveAsFile","buffer","fileType","data","Blob","type","saveAs","onSearch","search","providerName","providerId","providerTin","searchProvidersForReports","isNullUndefinedOrEmpty","filter","p","taxId","toLowerCase","indexOf","trim","ɵɵdirectiveInject","SessionService","ReportsService","DatePipe","DOCUMENT","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ReportsPayForValueComponent_ng_template_10_Template","ReportsPayForValueComponent_ng_template_11_Template","ReportsPayForValueComponent_div_12_Template","ReportsPayForValueComponent_div_13_Template","import_file_saver","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵlistener","$event","ɵɵrestoreView","_r7","ctx_r6","ɵɵnextContext","ɵɵresetView","onSearch","ɵɵtext","ɵɵadvance","ɵɵclassMap","ctx_r3","sortClass","stopPropagation","ɵɵproperty","row_r8","ɵɵtextInterpolate","name","calProviderID","pcpMemberCount","groupName","ɵɵtextInterpolate1","ctx_r10","threshold","ɵɵtemplate","ReportsPcpMemberRosterComponent_ng_template_10_span_3_Template","_r12","ctx_r11","onBuildReport","ctx_r5","totalCount","showThresholdAlert","enableBuildReport","selected","length","ReportsPcpMemberRosterComponent","constructor","sessionService","collectionService","reportsService","providers","sortColumn","sortAscending","ngOnInit","getProvidersForPCPMemberRoster","currentPermission","providerCollectionID","subscribe","result","param","onSort","providerIds","forEach","x","push","downloadMemberPcpRosterUsingProviderIds","saveAsFile","buffer","fileName","fileType","data","Blob","type","saveAs","column","cls","e","sort","data1","data2","value1","field","value2","localeCompare","order","IsEnterpriseUser","isEnterpriseAdmin","isEnterpriseUser","search","searchProvidersForPCPMemberRoster","providerId","providerName","providerTin","ɵɵdirectiveInject","SessionService","CollectionService","ReportsService","selectors","decls","vars","consts","template","rf","ctx","ReportsPcpMemberRosterComponent_div_3_Template","ReportsPcpMemberRosterComponent_div_4_Template","ɵɵtwoWayListener","i0","ɵɵtwoWayBindingSet","ReportsPcpMemberRosterComponent_ng_template_8_Template","ReportsPcpMemberRosterComponent_ng_template_9_Template","ReportsPcpMemberRosterComponent_ng_template_10_Template","ɵɵtwoWayProperty","import_file_saver","ReportsMemberSearchComponent","constructor","searchLabel","idLabel","instructionLabel","onMemberSearch","EventEmitter","ngOnInit","findMembers","emit","memberName","memberId","resetSearchFilters","setLabel","instructionlabel","id","search","selectors","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵtext","ɵɵelementEnd","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","ɵɵadvance","ɵɵtextInterpolate","ɵɵtwoWayProperty","ɵɵtextInterpolate1","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵclassMap","ctx_r2","sortClass","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r8","ctx_r7","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCin","ɵɵresetView","ɵɵlistener","row_r6","$implicit","ctx_r9","onMemberSelected","ɵɵproperty","cin","ɵɵtwoWayProperty","ctx_r3","ɵɵtextInterpolate","memberName","providerId","ɵɵtextInterpolate1","ctx_r4","displayText","_r11","ctx_r10","selectedFile","ctx_r12","onBuildReport","ctx_r5","fileList","enableBuildReport","PcpAttestationMemberComponent","constructor","reportsService","sessionService","datePipe","document","members","displayMembers","ngOnInit","collectionId","currentPermission","providerCollectionID","initialize","setProviderId","calProviderId","resetComponent","sortColumn","sortAscending","searchCin","searchName","memberSearch","resetSearchFilters","UiUtility","isNullUndefinedOrEmpty","getMembersForReports","ReportType","PCPDocAttest","subscribe","result","totalRecords","length","slice","param","onSort","column","cls","onPage","e","s","JSON","stringify","sort","data1","data2","value1","field","value2","localeCompare","order","member","getReportFilesForMember","forEach","x","push","label","transform","yearMonth","value","scrollDown","memeberDetail","find","temp","fileName","downloadReportFileForMember","saveAsFile","buffer","fileType","data","Blob","type","saveAs","onMemberSearch","search","searchMembersForReports","memberId","include","trim","toUpperCase","includes","medsId","mbi","ɵɵdirectiveInject","ReportsService","SessionService","DatePipe","DOCUMENT","selectors","viewQuery","rf","ctx","ɵɵtemplate","PcpAttestationMemberComponent_ng_template_7_Template","PcpAttestationMemberComponent_ng_template_8_Template","PcpAttestationMemberComponent_div_9_Template","PcpAttestationMemberComponent_div_10_Template","ɵɵelement","ɵɵclassMap","ctx_r7","sortClass","col_r6","field","ɵɵelementStart","ɵɵtext","ɵɵtemplate","PcpAttestationProviderComponent_ng_template_7_th_1_div_2_Template","ɵɵelementEnd","classHeader","ɵɵpropertyInterpolate","width","ɵɵadvance","ɵɵtextInterpolate1","header","ɵɵproperty","sort","PcpAttestationProviderComponent_ng_template_7_th_1_Template","ctx_r1","columns","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r15","ctx_r14","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCalProviderID","ɵɵresetView","ɵɵlistener","provider_r9","$implicit","ctx_r16","onProviderSelected","calProviderID","ɵɵtwoWayProperty","ctx_r12","ɵɵtextInterpolate","col_r11","PcpAttestationProviderComponent_ng_template_8_td_1_div_1_Template","PcpAttestationProviderComponent_ng_template_8_td_1_div_2_Template","classContent","PcpAttestationProviderComponent_ng_template_8_td_1_Template","ctx_r2","_r22","ctx_r21","backToProvider","ctx_r3","selectedProvider","name","PcpAttestationProviderComponent","constructor","reportsService","sessionService","providers","displayedProviders","rowsPerPage","pageNumber","animationState","displayMembers","ngOnInit","initialize","resetComponent","sortColumn","providerSearch","resetSearchFilters","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getProvidersForReports","providerCollectionID","ReportType","PCPDocAttest","subscribe","result","onProviderSearch","param","onSort","column","cls","sortAscending","onPage","e","s","JSON","stringify","data1","data2","value1","value2","localeCompare","order","provider","memberComponent","setProviderId","search","providerName","providerId","providerTin","searchProvidersForReports","slice","UiUtility","isNullUndefinedOrEmpty","filter","p","taxId","toLowerCase","indexOf","trim","setPagedData","page","totalRecords","length","start","end","ɵɵdirectiveInject","ReportsService","SessionService","selectors","viewQuery","rf","ctx","PcpAttestationProviderComponent_ng_template_7_Template","PcpAttestationProviderComponent_ng_template_8_Template","PcpAttestationProviderComponent_div_10_Template","trigger","state","style","opacity","transform","display","transition","animate","ɵɵtext","ɵɵtextInterpolate1","ctx_r1","getTabName","ɵɵelement","ctx_r5","ɵɵelementStart","ɵɵtemplate","ReportsPcpAttestationComponent_p_tabPanel_11_ng_template_1_Template","ReportsPcpAttestationComponent_p_tabPanel_11_ng_template_2_Template","ɵɵelementEnd","ɵɵproperty","ctx_r3","ReportsPcpAttestationComponent","constructor","confirmationService","elementRef","displayConfirmContinue","activeindex","tabs","index","id","label","enable","ngOnInit","ngAfterViewInit","setPcpReportAttestationTabs","canViewTab","currentTab","find","tab","getTabIndex","name","onTabChanged","e","tabview","activeIndex","handleChange","selectedIndex","currentIndex","stopPropagation","confirm","header","message","key","accept","providerComponent","initialize","memberComponent","setProviderId","reject","tabView","nativeElement","querySelector","UiUtility","SetTabsWidthDynamically","querySelectorAll","forEach","element","currentChild","firstChild","tabName","innerText","tabIndex","trim","newDiv","window","document","createElement","addEventListener","bind","style","cursor","appendChild","remove","confirmContinue","event","ɵɵdirectiveInject","ConfirmationService","ElementRef","selectors","viewQuery","rf","ctx","ReportsPcpAttestationComponent_ng_template_9_Template","ReportsPcpAttestationComponent_ng_template_10_Template","ReportsPcpAttestationComponent_p_tabPanel_11_Template","ɵɵadvance","import_file_saver","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵclassMap","ctx_r1","sortClass","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r7","ctx_r6","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCalProviderID","ɵɵresetView","ɵɵlistener","row_r5","$implicit","ctx_r8","onProviderSelected","ɵɵproperty","calProviderID","ɵɵtwoWayProperty","ctx_r2","ɵɵtextInterpolate","name","groupName","ɵɵtextInterpolate1","ctx_r3","displayText","_r10","ctx_r9","selectedFile","ctx_r11","onBuildReport","ctx_r4","fileList","enableBuildReport","ReportsDHCSBloodleadScreeningComponent","constructor","sessionService","reportsService","datePipe","document","providers","displayProviders","sortColumn","sortAscending","searchProviderId","searchProviderName","ngOnInit","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getProvidersForReports","providerCollectionID","ReportType","DHCS_BLS","subscribe","result","totalRecords","length","slice","param","onSort","column","cls","onPage","e","s","JSON","stringify","sort","data1","data2","value1","field","value2","localeCompare","order","provider","getReportFilesForProvider","forEach","x","push","label","transform","yearMonth","value","UiUtility","scrollDown","providerDetail","find","temp","fileName","filePath","fileType","split","pop","downloadReportFileForProvider","saveAsFile","buffer","data","Blob","type","saveAs","onSearch","search","providerName","providerId","providerTin","searchProvidersForReports","isNullUndefinedOrEmpty","filter","p","taxId","toLowerCase","indexOf","trim","scrollToNext","el","getElementsByClassName","scrollTop","scrollHeight","ɵɵdirectiveInject","SessionService","ReportsService","DatePipe","DOCUMENT","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ReportsDHCSBloodleadScreeningComponent_ng_template_10_Template","ReportsDHCSBloodleadScreeningComponent_ng_template_11_Template","ReportsDHCSBloodleadScreeningComponent_div_12_Template","ReportsDHCSBloodleadScreeningComponent_div_13_Template","import_file_saver","ɵɵelementStart","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r3","ctx_r2","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedFile","ɵɵresetView","ɵɵelementEnd","ɵɵlistener","ctx_r4","onBuildReport","ɵɵtext","ɵɵadvance","ɵɵproperty","ctx_r0","fileList","ɵɵtwoWayProperty","enableBuildReport","ReportsPayForValueManualComponent","constructor","sessionService","reportsService","datePipe","document","ngOnInit","onShowPeriod","getReportFilesForProvider","ReportType","P4V_Manual","subscribe","result","forEach","x","push","label","transform","yearMonth","value","length","UiUtility","scrollDown","temp","fileName","downloadReportFileForProvider","saveAsFile","buffer","fileType","data","Blob","type","saveAs","ɵɵdirectiveInject","SessionService","ReportsService","DatePipe","DOCUMENT","selectors","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵtemplate","ReportsPayForValueManualComponent_div_6_Template","ReportsPayForValueManualComponent_div_7_Template","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","AttestationTypeComponent","constructor","router","route","sessionService","reportsService","appConfig","showProviderTrainingAttestation","paramsviaState","getCurrentNavigation","extras","state","ngOnInit","extractStateParam","params","subscribe","value","getConfig","trim","toLowerCase","attestationType","isAdmin","accessProviderTrainingAttestation","currentPermission","providerCollectionID","result","isEnterpriseAdmin","isEnterpriseUser","onChange","navigate","onContinue","rname","UiUtility","isNullOrUndefined","ɵɵdirectiveInject","Router","ActivatedRoute","SessionService","ReportsService","AppConfig","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","ɵɵlistener","ɵɵtemplate","AttestationTypeComponent_option_10_Template","ɵɵadvance","ɵɵtwoWayProperty","ɵɵproperty","AttestationHomeComponent","constructor","ngOnInit","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵadvance","ɵɵproperty","AttestationStatus","ATTESTATION_VERSION","AttestationDialogComponent","constructor","submitAttestation","EventEmitter","cancelAttestation","iagree","ngOnInit","onSubmit","emit","onCancel","display","value","selectors","inputs","fullname","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","ɵɵtwoWayProperty","ɵɵproperty","ɵɵadvance","ɵɵpropertyInterpolate","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵclassMap","ctx_r1","sortClass","ɵɵtextInterpolate","ctx_r9","attestationStatusDisplay","row_r8","attestationStatus","ctx_r10","ctx_r11","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r16","ctx_r15","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCalProviderID","ɵɵresetView","ɵɵlistener","$implicit","ctx_r17","onProviderSelected","ɵɵtemplate","AttestationBloodleadScreeningComponent_ng_template_11_div_13_Template","AttestationBloodleadScreeningComponent_ng_template_11_div_14_Template","AttestationBloodleadScreeningComponent_ng_template_11_div_15_Template","ɵɵpropertyInterpolate","calProviderID","ɵɵtwoWayProperty","ctx_r2","name","taxId","ɵɵproperty","ɵɵtextInterpolate1","ctx_r3","displayText","_r23","ctx_r22","overAllCheckUnCheck","ctx_r21","AttestationBloodleadScreeningComponent_div_13_ng_template_3_p_checkbox_2_Template","ctx_r19","anyAttestationAvailableToSelect","visibleAttest","_r31","row_r24","hasChecked","attestationId","ctx_r26","ctx_r27","ctx_r28","AttestationBloodleadScreeningComponent_div_13_ng_template_4_p_checkbox_2_Template","AttestationBloodleadScreeningComponent_div_13_ng_template_4_div_10_Template","AttestationBloodleadScreeningComponent_div_13_ng_template_4_div_11_Template","AttestationBloodleadScreeningComponent_div_13_ng_template_4_div_12_Template","ctx_r20","measurementPeriodDisplay","reportPeriodDisplay","ɵɵpipeBind2","attestationDueDate","_r37","ctx_r36","onSort","AttestationBloodleadScreeningComponent_div_13_ng_template_3_Template","AttestationBloodleadScreeningComponent_div_13_ng_template_4_Template","ctx_r4","attestationList","_r39","ctx_r38","onAttest","ctx_r6","enableAttest","_r42","ctx_r41","onSubmitAttestation","ctx_r43","onCancelAttestation","ctx_r7","userFullName","AttestationBloodleadScreeningComponent","constructor","sessionService","reportsService","outhService","datePipe","authenticationService","portalConfig","document","providers","displayProviders","sortColumn","sortAscending","searchProviderId","searchProviderName","selectedProviderID","ngOnInit","userEmail","claims","getIdentityClaims","findUsers","ClientId","subscribe","users","length","userProfile","selectedProvider","loadProviders","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getProvidersWithAttestationForReports","providerCollectionID","collectionName","ReportType","BLS","result","filter","x","AttestationStatus","NotAvailable","totalRecords","slice","param","column","cls","onPage","e","s","JSON","stringify","sort","data1","data2","value1","field","value2","localeCompare","order","provider","overAllCheckUnCheckValue","getAttestationListForProvider","forEach","item","getReportPeriodDisplay","reportPeriod","getMeasurementPeriodDisplay","PastDue","Pending","providerDetail","find","onSearch","search","providerName","providerId","searchProvidersWithAttestationForReports","providerTin","UiUtility","isNullUndefinedOrEmpty","p","toLowerCase","indexOf","trim","Attested","quarter","substring","year","month","numMonth","Number","numYear","toString","showAttestation","event","list","attestationDetail","attestationName","userID","attestationEmail","email","attestationPhone","mobilePhone","attestationVersion","ApplyAttestation","firstName","lastName","value","ɵɵdirectiveInject","SessionService","ReportsService","OAuthService","DatePipe","AuthenticationService","PortalConfig","DOCUMENT","selectors","decls","vars","consts","template","rf","ctx","AttestationBloodleadScreeningComponent_ng_template_10_Template","AttestationBloodleadScreeningComponent_ng_template_11_Template","AttestationBloodleadScreeningComponent_div_12_Template","AttestationBloodleadScreeningComponent_div_13_Template","AttestationBloodleadScreeningComponent_div_14_Template","AttestationBloodleadScreeningComponent_div_15_Template","AttestationBloodleadScreeningComponent_attestation_dialog_16_Template","import_file_saver","ReportsTinSearchComponent","constructor","onProviderSearch","EventEmitter","ngOnInit","findProviders","emit","providerId","resetSearchFilters","nameLabel","dialogType","idLabel","requiredName","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵtext","ɵɵelementEnd","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","ɵɵadvance","ɵɵtextInterpolate","ɵɵtwoWayProperty","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵclassMap","ctx_r1","sortClass","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r8","ctx_r7","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedtaxid","ɵɵresetView","ɵɵlistener","row_r5","$implicit","ctx_r9","onTaxSelected","ɵɵproperty","providerTaxId","ɵɵtwoWayProperty","ctx_r6","ɵɵtemplate","ReportsBHPayForValueComponent_ng_template_11_p_radioButton_2_Template","ɵɵtextInterpolate","providerTaxName","ɵɵtextInterpolate1","ctx_r3","displayText","_r13","ctx_r12","selectedFile","ctx_r14","onBuildReport","ctx_r4","fileList","enableBuildReport","ReportsBHPayForValueComponent","constructor","sessionService","reportsService","datePipe","document","taxes","displaytaxes","sortColumn","sortAscending","searchTaxId","searchTaxName","ngOnInit","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getTaxesForReports","providerCollectionID","ReportType","BHP4V","subscribe","result","totalRecords","length","slice","fixDisplayTaxes","param","onSort","norecordfound","ProviderTaxDetails","push","column","cls","onPage","e","s","JSON","stringify","sort","data1","data2","value1","field","value2","localeCompare","order","provider","getReportFilesForTax","forEach","x","label","transform","yearMonth","value","UiUtility","scrollDown","taxdetails","find","temp","fileName","downloadReportFileForProvider","saveAsFile","buffer","fileType","data","Blob","type","saveAs","onSearch","search","providerId","searchTaxForReports","isNullUndefinedOrEmpty","filter","p","toLowerCase","indexOf","trim","ɵɵdirectiveInject","SessionService","ReportsService","DatePipe","DOCUMENT","selectors","decls","vars","consts","template","rf","ctx","ReportsBHPayForValueComponent_ng_template_10_Template","ReportsBHPayForValueComponent_ng_template_11_Template","ReportsBHPayForValueComponent_div_12_Template","ReportsBHPayForValueComponent_div_13_Template","import_file_saver","WellnessDetails","WellnessDetailsOtherDiagnosis","import_file_saver","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtwoWayListener","$event","screen_r11","ɵɵrestoreView","_r15","$implicit","i0","ɵɵtwoWayBindingSet","screening","ɵɵresetView","ɵɵlistener","ctx_r16","ɵɵnextContext","completionDate","onChange","status","ctx_r18","ɵɵtemplate","ReportWellnessDetailsComponent_div_57_span_11_Template","ɵɵadvance","ɵɵpropertyInterpolate1","ɵɵtwoWayProperty","ɵɵproperty","ɵɵpipeBind2","ctx_r1","screeningStatusList","diag_r19","_r21","description","diagCode","ctx_r24","ctx_r3","diagnosisStatusList","diag_r25","_r27","ctx_r30","ctx_r5","diag_r31","_r33","ctx_r36","ctx_r37","removeDiagnosis","ɵɵelement","index","ctx_r7","statusList","ɵɵtextInterpolate1","ctx_r9","additionalComments","length","_r39","ctx_r38","diagnosisAdded","ctx_r40","diagnosisCancelled","ctx_r10","wellnessDetails","otherDiagnosis","ReportWellnessDetailsComponent","constructor","busyService","onItemChange","EventEmitter","chronicDiagnosis","nonChronicDiagnosis","showAddDiagnosis","ngOnInit","push","label","value","LoadData","ngOnDestroy","diagnosisReCaptured","forEach","diag","isChronic","trim","toUpperCase","x","val","notes","showData","JSON","stringify","temp","WellnessDetailsOtherDiagnosis","name","id","documentId","memberCin","selectedMember","cin","emit","getAddress","providerDetail","address1","address2","city","state","zipCode","dateOfService","$value","indexOf","splice","onAddDiagnostic","maxIndex","ɵɵdirectiveInject","BusyService","selectors","inputs","selectedMemberAWPStatus","memberDetail","outputs","decls","vars","consts","template","rf","ctx","ReportWellnessDetailsComponent_div_57_Template","ReportWellnessDetailsComponent_span_71_Template","ReportWellnessDetailsComponent_div_73_Template","ReportWellnessDetailsComponent_span_87_Template","ReportWellnessDetailsComponent_div_89_Template","ReportWellnessDetailsComponent_span_103_Template","ReportWellnessDetailsComponent_div_107_Template","ReportWellnessDetailsComponent_div_119_Template","ReportWellnessDetailsComponent_span_121_Template","ReportWellnessDetailsComponent_add_diagnosis_dialog_122_Template","memberCIN","memberDOB","providerName","import_file_saver","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵlistener","ɵɵrestoreView","_r18","file_r6","ɵɵnextContext","$implicit","ctx_r16","ɵɵresetView","onDownload","name","ɵɵadvance","ɵɵtextInterpolate","ɵɵtextInterpolate1","_r22","ctx_r21","onRemove2","event","ɵɵtemplate","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_li_1_div_2_Template","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_li_1_div_3_Template","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_li_1_div_4_Template","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_li_1_div_5_Template","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_li_1_div_6_Template","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_li_1_div_7_Template","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_li_1_div_8_Template","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_li_1_div_9_Template","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_li_1_div_15_Template","ɵɵproperty","ctx_r5","fileType","doesExists","fileSize","ɵɵpipeBind2","fileUploadDateTime","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_li_1_Template","ctx_r4","attachments2","ReportWellnessAttachmentsComponent_ng_template_6_div_0_Template","ReportWellnessAttachmentsComponent_ng_template_6_ul_1_Template","ctx_r1","length","ReportWellnessAttachmentsComponent","constructor","busyService","fileService","onFileAdded","EventEmitter","onFileRemoved","attachmentProgress","maxUploadFilesSupported2","totalFilesSize","maxFileNameLength","attachmentError","ngOnInit","ngOnDestroy","setAttachments","attachments","setTimeout","fileUpload2","files","onSelect","totalSize","filesRemove","hasUploadError","validate","index","validFiles","removeOnError","addedFiles","moreThanMaxfiles","file","findDuplicateInCurrentList","msgs","push","detail","severity","summary","wellnessFileList","find","x","originalFileName","trim","toUpperCase","isWellnessForm","getFileName","test","size","i","remove","emit","enableUpload","indexOf","hasUploadError2","fileName","item","created","toString","newFile","newFileName","temp","formatSize","item1","bytes","k","dm","sizes","Math","floor","log","parseFloat","pow","toFixed","split","pop","toLowerCase","filename","getWellnessAttachmentFile","wellnessAttachmentID","subscribe","result","bytesArray","UiUtility","convertBase64ToArrayBuffer","fileStreamData","saveAsFile","fileContentType","buffer","data","Blob","type","saveAs","ɵɵdirectiveInject","BusyService","FileService","selectors","viewQuery","rf","ctx","$event","ReportWellnessAttachmentsComponent_ng_template_6_Template","ReportWellnessAttachmentsComponent_div_9_Template","ɵɵpropertyInterpolate","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r9","ctx_r8","ɵɵnextContext","ɵɵresetView","onChangeType","type","ɵɵtwoWayListener","wellnessSurvey_r1","$implicit","i0","ɵɵtwoWayBindingSet","answer","ɵɵelementEnd","ɵɵadvance","ɵɵpropertyInterpolate1","id","ɵɵpropertyInterpolate","item_r7","ɵɵtwoWayProperty","ɵɵtemplate","ReportWellnessSurveyComponent_div_5_div_5_div_1_span_1_Template","ɵɵproperty","options","_r17","ctx_r16","item_r15","ReportWellnessSurveyComponent_div_5_div_5_div_2_div_1_Template","ReportWellnessSurveyComponent_div_5_div_5_div_1_Template","ReportWellnessSurveyComponent_div_5_div_5_div_2_Template","align","_r29","checkedAnswer","ctx_r30","checkvalue","item_r26","ReportWellnessSurveyComponent_div_5_div_6_div_1_span_1_Template","_r38","ctx_r39","item_r35","ReportWellnessSurveyComponent_div_5_div_6_div_2_div_1_Template","ReportWellnessSurveyComponent_div_5_div_6_div_1_Template","ReportWellnessSurveyComponent_div_5_div_6_div_2_Template","ɵɵtext","ReportWellnessSurveyComponent_div_5_div_5_Template","ReportWellnessSurveyComponent_div_5_div_6_Template","ɵɵtextInterpolate","question","ReportWellnessSurveyComponent","constructor","wellnessSurveys","onItemChange","EventEmitter","ngOnInit","optionList","item","wellnessSurvey","checked","forEach","x","trim","toUpperCase","includes","push","endsWith","slice","length","emit","event","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ReportWellnessSurveyComponent_div_5_Template","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r9","ctx_r8","ɵɵnextContext","ɵɵresetView","onWellnessFormChanges","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r0","selectedMemberAWPStatus","selectedMember","wellnessDetails","providerDetail","memberDetail","_r12","ctx_r11","fileAdded","ctx_r13","fileRemoved","ctx_r1","wellnessFileList","_r16","ctx_r15","ctx_r2","wellnessSurveys","ɵɵtext","ɵɵelement","ctx_r17","validationerror","errorMessage","ɵɵtemplate","ReportWellnessDetailsDialogComponent_div_6_app_alert_danger_1_Template","ctx_r4","hasUploadError2","_r20","ctx_r19","onSkip","_r22","ctx_r21","onPrintToPdf","ReportWellnessDetailsDialogComponent","constructor","reportService","fileService","memberService","collectionService","busyService","oauth","cancelWellness","EventEmitter","applyWellness","currentView","attachmentProgress","attachments2","maxUploadFilesSupported2","totalFilesSize","maxFileNameLength","isLoaded","wellnessFormChanged","wellnessAttachmentChanged","isskipped","ngOnInit","LoadData","forkJoin","getWellnessAttachment","cin","selectedProvider","calProviderID","taxId","period","getReportWellnessDetails","documentId","getReportWellnessSurvey","providerId","grgr_ck","providerTaxId","ReportType","AWV","GetProvider2","subscribe","result","length","forEach","x","content","data","Blob","type","arrayOfBlob","push","tempFile","File","originalFileName","isWellnessForm","claims","getIdentityClaims","currentUser","error","emit","ngOnDestroy","event","display","value","onCancel","onCancelWellness","setTimeout","wellnessattachmentcomponent","setAttachments","diagnosisReCaptured","status","otherDiagnosis","splice","screening","completionDate","additionalComments","notes","dateOfService","onSaveAndContinueLater","fixDates","modifiedBy","ApplyWellness2Save","ApplyWellnessSurveyAnswers","wellnessYear","uploadWellnessForm","performWellnessFormValidation","toString","trim","toUpperCase","element","isChronic","alertDangerComponent","contentMessage","setContentMessages","performAttachmentValidation","fileExists","onApplyWellness","Date","ApplyWellness2","isFromSubmit","wellnessFormExits","find","downloadAWPDetailPdf","wellnessForm","uploadSupportingDocuments","formData","getFormData","uploadWellnessAttachments","getSubmitButtonText","getCancelButtonText","getHeaderText","memberName","wellnessFormFileName","fileName","pcpId","memberCIN","getNewWellnessFormFileName","temp","iloop","doesExists","doesExists2","mainWellnessFormFile","wellnessFormFiles","fileToUpload","FormData","wellnewFile","name","totalSize","Array","from","map","file","index","size","append","saveAs","isSubmitted","ɵɵdirectiveInject","ReportsService","FileService","MemberInfoService","CollectionService","BusyService","OAuthService","selectors","viewQuery","rf","ctx","ɵɵtwoWayListener","i0","ɵɵtwoWayBindingSet","ReportWellnessDetailsDialogComponent_div_1_Template","ReportWellnessDetailsDialogComponent_div_2_Template","ReportWellnessDetailsDialogComponent_div_3_Template","ReportWellnessDetailsDialogComponent_div_5_Template","ReportWellnessDetailsDialogComponent_div_6_Template","ReportWellnessDetailsDialogComponent_button_8_Template","ReportWellnessDetailsDialogComponent_button_9_Template","ɵɵstyleMap","ɵɵpureFunction0","_c4","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","ɵɵtextInterpolate","import_file_saver","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵlistener","ɵɵrestoreView","_r21","file_r9","ɵɵnextContext","$implicit","ctx_r19","ɵɵresetView","onDownload","name","ɵɵadvance","ɵɵtextInterpolate","ɵɵtextInterpolate1","_r25","ctx_r24","onRemove1","event","ɵɵtemplate","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_li_1_div_2_Template","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_li_1_div_3_Template","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_li_1_div_4_Template","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_li_1_div_5_Template","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_li_1_div_6_Template","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_li_1_div_7_Template","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_li_1_div_8_Template","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_li_1_div_9_Template","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_li_1_div_12_Template","ɵɵproperty","ctx_r8","fileType","doesExists","fileSize","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_li_1_Template","ctx_r7","attachments1","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_div_0_Template","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_ul_1_Template","ctx_r3","length","ɵɵtwoWayListener","$event","_r29","ctx_r28","i0","ɵɵtwoWayBindingSet","selectedMemberAWPStatus","notes","ɵɵtwoWayProperty","ctx_r4","_r32","ctx_r31","ctx_r5","_r34","ctx_r33","onSelect1","ReportWellnessAttachmentDialogComponent_div_1_ng_template_5_Template","ReportWellnessAttachmentDialogComponent_div_1_div_6_Template","ReportWellnessAttachmentDialogComponent_div_1_div_7_Template","ɵɵpropertyInterpolate","ctx_r0","maxUploadFilesSupported1","enableUpload","editComment","_r53","file_r41","ctx_r51","_r57","ctx_r56","onRemove2","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_li_1_div_2_Template","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_li_1_div_3_Template","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_li_1_div_4_Template","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_li_1_div_5_Template","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_li_1_div_6_Template","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_li_1_div_7_Template","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_li_1_div_8_Template","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_li_1_div_9_Template","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_li_1_div_12_Template","ctx_r40","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_li_1_Template","ctx_r39","attachments2","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_div_0_Template","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_ul_1_Template","ctx_r36","_r60","ctx_r59","onSelect2","ReportWellnessAttachmentDialogComponent_div_2_ng_template_5_Template","ReportWellnessAttachmentDialogComponent_div_2_div_8_Template","ctx_r1","maxUploadFilesSupported2","attachmentError","ReportWellnessAttachmentDialogComponent","constructor","collectionService","busyService","fileService","reportService","currentView","totalFilesSize","maxFileNameLength","attachmentProgress","cancelWellness","EventEmitter","applyWellness","ngOnInit","getWellnessAttachment","selectedMember","cin","providerId","providerTaxId","period","subscribe","results","wellnessFileList","forEach","x","content","data","Blob","type","arrayOfBlob","push","tempFile","File","originalFileName","isWellnessForm","fileUpload1","files","ngOnDestroy","ngAfterViewInit","display","caption","value","onCancel","emit","onContinue","setTimeout","fileUpload2","wellnessDetails","WellnessDetails","grgr_ck","memberCIN","pcpId","pcpTIN","wellnessYear","documentId","completionDate","Date","status","ApplyWellness","formData","getFormData","uploadWellnessAttachments","error","submitText","hasUploadError1","onSelect","hasUploadError2","filename","temp","find","trim","toUpperCase","getWellnessAttachmentFile","wellnessAttachmentID","result","bytesArray","UiUtility","convertBase64ToArrayBuffer","fileStreamData","saveAsFile","fileContentType","buffer","fileName","saveAs","fileUpload","attachments","maxUploadFilesSupported","totalSize","filesRemove","hasUploadError","validate","index","validFiles","removeOnError","addedFiles","duplicateAdded","moreThanMaxfiles","newFiles","Array","from","file","findDuplicateInCurrentList","msgs","detail","severity","summary","findDuplicateInOtherList","getFileName","test","size","i","remove","indexOf","findDuplicate","filter","newFile","newFileName","item","formatSize","item1","bytes","k","dm","sizes","Math","floor","log","parseFloat","pow","toFixed","split","pop","toLowerCase","enableSubmit","currentYear","returnValue","getFullYear","getMonth","wellnessFormFiles","fileToUpload","wellnessFormAttached","element","FormData","map","append","toString","ɵɵdirectiveInject","CollectionService","BusyService","FileService","ReportsService","selectors","viewQuery","rf","ctx","ReportWellnessAttachmentDialogComponent_div_1_Template","ReportWellnessAttachmentDialogComponent_div_2_Template","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵclassMap","ctx_r1","sortClass","ɵɵtextInterpolate","row_r7","status","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r13","ctx_r12","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCin","ɵɵresetView","ɵɵlistener","$implicit","ctx_r14","onMemberSelected","ɵɵtemplate","AWPMemberComponent_ng_template_7_div_13_Template","AWPMemberComponent_ng_template_7_div_14_Template","ɵɵproperty","cin","ɵɵtwoWayProperty","ctx_r2","memberName","providerId","ɵɵtextInterpolate1","ctx_r3","displayText","row_r18","ctx_r20","pendingCaption","AWPMemberComponent_div_9_ng_template_4_div_8_Template","AWPMemberComponent_div_9_ng_template_4_div_9_Template","_r24","ctx_r23","download","ctx_r25","upload","period","signed","ctx_r17","downloadCaption","uploadCaption","_r27","ctx_r26","onSort","AWPMemberComponent_div_9_ng_template_3_Template","AWPMemberComponent_div_9_ng_template_4_Template","ctx_r4","awpList","_r30","ctx_r29","onApplyWellness","ctx_r31","onCancelWellness","ctx_r5","selectedMemberAWPStatus","selectedMember","_r34","ctx_r33","ctx_r35","ctx_r6","selectedProvider","AWPMemberComponent","constructor","reportsService","sessionService","collectionService","datePipe","busyService","document","members","displayMembers","first","ngOnInit","collectionId","currentPermission","providerCollectionID","userFullName","fromProviderTab","initialize","ngAfterViewInit","setProviderId","providerDetail","lastMemberSearch","lastSelectedMemberCin","resetComponent","sortColumn","sortAscending","searchCin","searchName","memberSearch","resetSearchFilters","getMembersForReportsAWP2","calProviderID","taxId","ReportType","AWV","subscribe","result","totalRecords","length","slice","param","lastselectedMember","find","x","column","cls","onPage","e","s","JSON","stringify","sort","data1","data2","value1","field","value2","localeCompare","order","member","getReportFilesForMemberAWP2","grgr_ck","providerTaxId","GetProvider2","prov","ProviderDetail","providerID","toString","calProviderId","name","providerName","memeberDetail","enableBuildReport","saveAsFile","buffer","fileName","fileType","data","Blob","type","saveAs","onMemberSearch","search","memberId","splice","items","medsId","mbi","push","searchMembersForReportsAWP2","awpDetail","isNewWellness","downloadUnansweredAWPDetailPdf","documentId","downloadReportFileForMember","downloadFileName","wellnessDetails","WellnessDetails","memberCIN","pcpTIN","wellnessYear","showAttachment","canShowAttachmentDialog","newWellnessForm","usedDocument","canShowDetailsDialog","temp","item","currentYear","Date","applicable","getFullYear","getMonth","trim","toUpperCase","ɵɵdirectiveInject","ReportsService","SessionService","CollectionService","DatePipe","BusyService","DOCUMENT","selectors","viewQuery","rf","ctx","AWPMemberComponent_ng_template_6_Template","AWPMemberComponent_ng_template_7_Template","AWPMemberComponent_div_8_Template","AWPMemberComponent_div_9_Template","AWPMemberComponent_report_wellness_attachment_dialog_10_Template","AWPMemberComponent_report_wellness_details_dialog_11_Template","ɵɵelement","ɵɵclassMap","ctx_r7","sortClass","col_r6","field","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtemplate","AWPProviderComponent_div_1_ng_template_6_th_1_div_3_Template","classHeader","ɵɵpropertyInterpolate","width","ɵɵadvance","ɵɵtextInterpolate","header","ɵɵproperty","sort","AWPProviderComponent_div_1_ng_template_6_th_1_Template","ctx_r3","columns","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r15","ctx_r14","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCalProviderID","ɵɵresetView","ɵɵlistener","provider_r9","$implicit","ctx_r16","onProviderSelected","calProviderID","ɵɵtwoWayProperty","ctx_r12","col_r11","AWPProviderComponent_div_1_ng_template_7_td_1_div_1_Template","AWPProviderComponent_div_1_ng_template_7_td_1_div_2_Template","classContent","AWPProviderComponent_div_1_ng_template_7_td_1_Template","ctx_r4","_r22","ctx_r21","onProviderSearch","ctx_r23","onSort","AWPProviderComponent_div_1_ng_template_6_Template","AWPProviderComponent_div_1_ng_template_7_Template","ctx_r0","displayedProviders","_r27","ctx_r26","backToProvider","ctx_r24","selectedProvider","name","AWPProviderComponent_div_2_div_1_Template","ctx_r1","AWPProviderComponent","constructor","reportsService","sessionService","providers","rowsPerPage","pageNumber","animationState","displayMembers","ngOnInit","initialize","resetComponent","sortColumn","setTimeout","providerSearch","resetSearchFilters","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getProvidersForReportsAWP","providerCollectionID","ReportType","AWV","subscribe","result","param","column","cls","sortAscending","onPage","e","s","JSON","stringify","data1","data2","value1","value2","localeCompare","order","provider","awpmemberComponent","setProviderId","search","providerName","providerId","providerTin","searchProvidersForReportsAWP","slice","UiUtility","isNullUndefinedOrEmpty","filter","p","taxId","toLowerCase","indexOf","trim","setPagedData","page","totalRecords","length","start","end","ɵɵdirectiveInject","ReportsService","SessionService","selectors","viewQuery","rf","ctx","AWPProviderComponent_div_1_Template","AWPProviderComponent_div_2_Template","ɵɵtext","ɵɵtextInterpolate1","ctx_r1","getTabName","ɵɵelement","ctx_r5","ɵɵelementStart","ɵɵtemplate","ReportsAWPComponent_p_tabPanel_11_ng_template_1_Template","ReportsAWPComponent_p_tabPanel_11_ng_template_2_Template","ɵɵelementEnd","ɵɵproperty","ctx_r3","ReportsAWPComponent","constructor","confirmationService","elementRef","displayConfirmContinue","activeindex","tabs","index","id","label","enable","ngOnInit","ngAfterViewInit","setPcpReportAttestationTabs","canViewTab","currentTab","find","tab","getTabIndex","name","onTabChanged","e","tabview","activeIndex","handleChange","selectedIndex","currentIndex","stopPropagation","confirm","header","message","key","accept","awpproviderComponent","initialize","awpmemberComponent","setProviderId","reject","tabView","nativeElement","querySelector","UiUtility","SetTabsWidthDynamically","querySelectorAll","forEach","element","currentChild","firstChild","anchorelement","tabName","innerText","tabIndex","trim","newDiv","window","document","createElement","addEventListener","bind","style","cursor","appendChild","remove","confirmContinue","event","ɵɵdirectiveInject","ConfirmationService","ElementRef","selectors","viewQuery","rf","ctx","ReportsAWPComponent_ng_template_9_Template","ReportsAWPComponent_ng_template_10_Template","ReportsAWPComponent_p_tabPanel_11_Template","ɵɵadvance","import_file_saver","import_file_saver","ɵɵelementStart","ɵɵtext","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵclassMap","ctx_r2","sortClass","ɵɵlistener","row_r5","ɵɵrestoreView","_r7","$implicit","ctx_r6","ɵɵnextContext","ɵɵresetView","viewhif","ɵɵtextInterpolate","memberName","cin","providerId","_r10","ctx_r9","onCancelMemberHifData","ɵɵproperty","ctx_r4","selectedMember","HIFMemberComponent","constructor","reportsService","sessionService","datePipe","busyService","document","members","displayMembers","ngOnInit","collectionId","currentPermission","providerCollectionID","userFullName","initialize","ngAfterViewInit","setProviderId","selectedCalProviderID","selectedProviderTaxId","awpList","calProviderId","providerTaxId","resetComponent","sortColumn","sortAscending","selectedCin","searchCin","searchName","memberSearch","resetSearchFilters","UiUtility","isNullUndefinedOrEmpty","getMembersForReportsHIF","ReportType","HIF","subscribe","result","totalRecords","length","slice","param","onSort","column","cls","onPage","e","s","JSON","stringify","sort","data1","data2","value1","field","value2","localeCompare","order","displayText","memeberDetail","find","x","enableBuildReport","saveAsFile","buffer","fileName","fileType","data","Blob","type","saveAs","onMemberSearch","search","searchMembersForReportsHIF","memberId","forEach","include","trim","toUpperCase","includes","mbi","medsId","console","log","push","reportMemberDetails","showHif","onDownloadList","downloadHifMemberList","ɵɵdirectiveInject","ReportsService","SessionService","DatePipe","BusyService","DOCUMENT","selectors","viewQuery","rf","ctx","$event","ɵɵtemplate","HIFMemberComponent_ng_template_7_Template","HIFMemberComponent_ng_template_8_Template","HIFMemberComponent_hif_member_data_dialog_12_Template","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵclassMap","ctx_r9","sortClass","col_r6","field","ɵɵtext","ɵɵtemplate","HIFProviderComponent_div_1_ng_template_6_th_1_div_2_div_2_Template","ɵɵadvance","ɵɵtextInterpolate1","header","ɵɵproperty","sort","HIFProviderComponent_div_1_ng_template_6_th_1_div_1_Template","HIFProviderComponent_div_1_ng_template_6_th_1_div_2_Template","classHeader","ɵɵpropertyInterpolate","width","HIFProviderComponent_div_1_ng_template_6_th_1_Template","ctx_r3","columns","ɵɵlistener","$event","stopPropagation","provider_r12","ɵɵrestoreView","_r22","ɵɵnextContext","$implicit","ctx_r20","ɵɵresetView","onProviderSelected","ɵɵtextInterpolate","col_r14","HIFProviderComponent_div_1_ng_template_7_td_1_div_1_Template","HIFProviderComponent_div_1_ng_template_7_td_1_div_2_Template","HIFProviderComponent_div_1_ng_template_7_td_1_div_3_Template","classContent","HIFProviderComponent_div_1_ng_template_7_td_1_Template","ctx_r4","_r28","ctx_r27","onProviderSearch","ɵɵtwoWayListener","ctx_r29","i0","ɵɵtwoWayBindingSet","selected","ctx_r30","onSort","HIFProviderComponent_div_1_ng_template_6_Template","HIFProviderComponent_div_1_ng_template_7_Template","ctx_r31","onDownloadList","ctx_r0","displayedProviders","ɵɵtwoWayProperty","length","_r35","ctx_r34","backToProvider","ctx_r32","selectedProvider","name","HIFProviderComponent_div_2_div_1_Template","ctx_r1","HIFProviderComponent","constructor","reportsService","sessionService","providers","rowsPerPage","pageNumber","animationState","displayMembers","ngOnInit","initialize","resetComponent","sortColumn","selectedCalProviderID","setTimeout","providerSearch","resetSearchFilters","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getProvidersForReportsHIF","providerCollectionID","ReportType","HIF","subscribe","result","param","column","cls","sortAscending","onPage","e","s","JSON","stringify","data1","data2","value1","value2","localeCompare","order","provider","calProviderID","awpmemberComponent","setProviderId","taxId","search","providerName","providerId","providerTin","searchProvidersForReportsHIF","slice","UiUtility","isNullUndefinedOrEmpty","filter","p","toLowerCase","indexOf","trim","setPagedData","page","totalRecords","start","end","selectedProviderIds","forEach","x","push","downloadHifMemberList","saveAsFile","buffer","fileName","fileType","data","Blob","type","saveAs","ɵɵdirectiveInject","ReportsService","SessionService","selectors","viewQuery","rf","ctx","HIFProviderComponent_div_1_Template","HIFProviderComponent_div_2_Template","ɵɵtext","ɵɵtextInterpolate1","ctx_r1","getTabName","ɵɵelement","ctx_r5","ɵɵelementStart","ɵɵtemplate","ReportsHIFComponent_p_tabPanel_11_ng_template_1_Template","ReportsHIFComponent_p_tabPanel_11_ng_template_2_Template","ɵɵelementEnd","ɵɵproperty","ctx_r3","ReportsHIFComponent","constructor","confirmationService","elementRef","displayConfirmContinue","activeindex","tabs","index","id","label","enable","ngOnInit","ngAfterViewInit","setPcpReportAttestationTabs","canViewTab","currentTab","find","tab","getTabIndex","name","onTabChanged","e","tabview","activeIndex","handleChange","selectedIndex","currentIndex","stopPropagation","confirm","header","message","key","accept","hifproviderComponent","initialize","hifmemberComponent","setProviderId","reject","tabView","nativeElement","querySelector","UiUtility","SetTabsWidthDynamically","querySelectorAll","forEach","element","currentChild","firstChild","tabName","innerText","tabIndex","trim","newDiv","window","document","createElement","addEventListener","bind","style","cursor","appendChild","remove","confirmContinue","event","ɵɵdirectiveInject","ConfirmationService","ElementRef","selectors","viewQuery","rf","ctx","ReportsHIFComponent_ng_template_9_Template","ReportsHIFComponent_ng_template_10_Template","ReportsHIFComponent_p_tabPanel_11_Template","ɵɵadvance","import_file_saver","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵlistener","$event","ɵɵrestoreView","_r7","ctx_r6","ɵɵnextContext","ɵɵresetView","onSearch","ɵɵtext","ɵɵadvance","ɵɵclassMap","ctx_r3","sortClass","stopPropagation","ɵɵproperty","row_r8","ɵɵtextInterpolate","name","calProviderID","pcpMemberCount","groupName","ɵɵtextInterpolate1","ctx_r10","threshold","ɵɵtemplate","ReportsPcpMemberIHAComponent_ng_template_10_span_3_Template","_r12","ctx_r11","onBuildReport","ctx_r5","totalCount","showThresholdAlert","enableBuildReport","selected","length","ReportsPcpMemberIHAComponent","constructor","sessionService","collectionService","reportsService","providers","sortColumn","sortAscending","ngOnInit","getProvidersForIHA","currentPermission","providerCollectionID","subscribe","result","param","onSort","providerIds","forEach","x","push","downloadIHADueMembersUsingProviderIds","saveAsFile","buffer","fileName","fileType","data","Blob","type","saveAs","column","cls","e","sort","data1","data2","value1","field","value2","localeCompare","order","IsEnterpriseUser","isEnterpriseAdmin","isEnterpriseUser","search","searchProvidersForIHA","providerId","providerName","providerTin","ɵɵdirectiveInject","SessionService","CollectionService","ReportsService","selectors","decls","vars","consts","template","rf","ctx","ReportsPcpMemberIHAComponent_div_3_Template","ReportsPcpMemberIHAComponent_div_4_Template","ɵɵtwoWayListener","i0","ɵɵtwoWayBindingSet","ReportsPcpMemberIHAComponent_ng_template_8_Template","ReportsPcpMemberIHAComponent_ng_template_9_Template","ReportsPcpMemberIHAComponent_ng_template_10_Template","ɵɵtwoWayProperty","import_file_saver","ɵɵelement","ɵɵproperty","ctx_r1","validationMessage","ɵɵtemplate","AttestationBHIDialogComponent_ng_template_29_app_alert_danger_0_Template","ctx_r0","validationError","ATTESTATION_VERSION","AttestationBHIDialogComponent","constructor","outhService","authenticationService","portalConfig","reportsService","submitAttestation","EventEmitter","cancelAttestation","userEmail","iagree","ngOnInit","claims","getIdentityClaims","findUsers","ClientId","subscribe","users","length","userProfile","fullname","firstName","lastName","onSubmit","item","email","userID","mobilePhone","onSubmitAttestation","onCancel","emit","list","measurementPeriods","forEach","x","selected","attestionDetail","attestationDate","Date","attestationDueDate","attestationEmail","attestationName","attestationPhone","attestationStatus","AttestationStatus","Attested","attestationVersion","collectionName","selectedProvider","name","hasChecked","pcpId","calProviderID","pcpName","pcpTIN","taxId","reportAttestationID","reportPeriod","measurementPeriod","reportTypeCode","measurementPeriodDisplay","reportPeriodDisplay","push","ApplyAttestation","result","error","display","value","ɵɵdirectiveInject","OAuthService","AuthenticationService","PortalConfig","ReportsService","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","ɵɵtext","ɵɵelementEnd","ɵɵlistener","AttestationBHIDialogComponent_ng_template_29_Template","ɵɵtwoWayProperty","ɵɵadvance","ɵɵpropertyInterpolate","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r10","ctx_r9","ɵɵnextContext","ɵɵresetView","onSearch","ɵɵelementEnd","ɵɵelement","ɵɵtext","ɵɵadvance","ɵɵclassMap","ctx_r12","sortClass","ɵɵtwoWayListener","_r16","ctx_r15","i0","ɵɵtwoWayBindingSet","selectedCalProviderID","row_r14","$implicit","ctx_r17","onProviderSelected","ɵɵproperty","calProviderID","ɵɵtwoWayProperty","ctx_r13","ɵɵtextInterpolate","name","groupName","_r19","ctx_r18","onSort","ɵɵtemplate","ReportsBHIComponent_div_15_ng_template_3_Template","ReportsBHIComponent_div_15_ng_template_4_Template","ctx_r1","displayProviders","_r22","ctx_r21","onSearchPrescriber","ctx_r24","_r28","ctx_r27","row_r26","ctx_r29","ctx_r25","ɵɵpropertyInterpolate1","bhiPrescriberTaxID","ɵɵtextInterpolate1","length","substring","bhiPrescriberNPI","_r31","ctx_r30","ReportsBHIComponent_div_17_ng_template_3_Template","ReportsBHIComponent_div_17_ng_template_4_Template","ctx_r3","displayPrescribers","ctx_r4","displayText","_r36","ctx_r35","overAllCheckUnCheck","ctx_r33","row_r37","attestationStatus","_r45","selected","ReportsBHIComponent_div_19_ng_template_4_div_7_Template","ReportsBHIComponent_div_19_ng_template_4_div_8_Template","ReportsBHIComponent_div_19_ng_template_4_div_9_Template","ɵɵpropertyInterpolate","MeasurementPeriod","measurementPeriodDisplay","attestationDate","_r47","ctx_r46","ReportsBHIComponent_div_19_ng_template_3_Template","ReportsBHIComponent_div_19_ng_template_4_Template","ctx_r5","measurementPeriods","_r49","ctx_r48","onBuildReport","ctx_r6","enableBuildReport","_r52","ctx_r51","onSubmitAttestation","ctx_r53","onCancelAttestation","ctx_r7","selectedProvider","ReportsBHIComponent","constructor","sessionService","reportsService","datePipe","document","constants","providers","optionValue","sortColumn","sortAscending","searchProviderId","searchProviderName","ngOnInit","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getProvidersForBHI","providerCollectionID","subscribe","result","totalRecords","slice","param","column","cls","onPage","e","s","JSON","stringify","sort","data1","data2","value1","field","value2","localeCompare","order","selectOption","reportsprovidersearchcomponent","setLabel","reportsprescribersearchcomponent","provider","getBHIMeasurementPeriods","forEach","x","year","measurementPeriod","month","periodDate","Date","parseInt","monthNames","currentDate","diff","valueOf","UiUtility","scrollDown","providerDetail","find","found","download","isInternalUser","items","push","downloadbhimembers","fileName","saveAsFile","showAttestation","buffer","fileType","data","Blob","type","saveAs","overAllCheckUnCheckValue","value","item","search","providerName","providerId","providerTin","searchProvidersForBHI","isNullUndefinedOrEmpty","filter","p","taxId","toLowerCase","indexOf","trim","memberId","searchPrescribersForBHI","candidate","bhiPrescriberList","prescriber","isNullOrUndefined","prescriberNPI","stringSeparator","prescriberTaxID","trimLastFromEnd","ɵɵdirectiveInject","SessionService","ReportsService","DatePipe","DOCUMENT","Constants","selectors","viewQuery","rf","ctx","ReportsBHIComponent_div_14_Template","ReportsBHIComponent_div_15_Template","ReportsBHIComponent_div_16_Template","ReportsBHIComponent_div_17_Template","ReportsBHIComponent_div_18_Template","ReportsBHIComponent_div_19_Template","ReportsBHIComponent_div_20_Template","ReportsBHIComponent_attestationbhi_dialog_21_Template","import_file_saver","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵlistener","$event","ɵɵrestoreView","_r7","ctx_r6","ɵɵnextContext","ɵɵresetView","onSearch","ɵɵtext","ɵɵadvance","ɵɵclassMap","ctx_r3","sortClass","stopPropagation","ɵɵproperty","row_r8","ɵɵtextInterpolate","name","calProviderID","groupName","ReportsBHABAReferralsComponent","constructor","sessionService","collectionService","reportsService","providers","selected","threshold","showThresholdAlert","sortColumn","sortAscending","enableBuildReport","ngOnInit","fileList","selectedFile","iLoop","d","Date","setMonth","getMonth","year","getFullYear","month","itemlabel","toString","length","itemValue","push","label","value","getProvidersForBHABAReferrals","currentPermission","providerCollectionID","subscribe","result","param","onSort","onBuildReport","providerIds","forEach","x","startDate","downloadBHABAReferrals","fileName","saveAsFile","buffer","fileType","data","Blob","type","saveAs","column","cls","e","sort","data1","data2","value1","field","value2","localeCompare","order","IsEnterpriseUser","isEnterpriseAdmin","isEnterpriseUser","search","searchProvidersForBHABAReferrals","providerId","providerName","providerTin","totalCount","pcpMemberCount","ɵɵdirectiveInject","SessionService","CollectionService","ReportsService","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ReportsBHABAReferralsComponent_div_3_Template","ReportsBHABAReferralsComponent_div_4_Template","ɵɵtwoWayListener","i0","ɵɵtwoWayBindingSet","ReportsBHABAReferralsComponent_ng_template_8_Template","ReportsBHABAReferralsComponent_ng_template_9_Template","ReportsBHABAReferralsComponent_ng_template_10_Template","ɵɵtwoWayProperty","PendingCopy","text","_document","textarea","styles","successful","currentFocus","Clipboard","document","pendingCopy","ɵɵinject","DOCUMENT","ɵɵdefineInjectable","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","errorMessage","ɵɵtextInterpolate","ctx_r10","attendeesErrorMessage","ɵɵtemplate","AttestationProviderTrainingDialogComponent_div_9_span_3_Template","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r12","ctx_r11","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","attendees","ɵɵresetView","ɵɵlistener","ctx_r13","onKeyPress","AttestationProviderTrainingDialogComponent_div_9_div_6_Template","ɵɵproperty","ctx_r1","isPending","ɵɵtwoWayProperty","attendeesPlaceholder","ɵɵpureFunction1","_c0","attendeesInvalid","taxDetail","providerTaxId","ɵɵpipeBind2","attestationDate","trainingAttestationStatusDisplay","ctx_r15","ctx_r16","ctx_r17","ctx_r18","AttestationProviderTrainingDialogComponent_div_10_span_3_Template","_r20","ctx_r19","ctx_r21","AttestationProviderTrainingDialogComponent_div_10_div_6_Template","AttestationProviderTrainingDialogComponent_div_10_span_27_Template","AttestationProviderTrainingDialogComponent_div_10_span_28_Template","AttestationProviderTrainingDialogComponent_div_10_span_29_Template","ctx_r2","providerDetail","calProviderID","providerNPI","taxId","network_r22","networkName","AttestationProviderTrainingDialogComponent_div_16_div_1_Template","AttestationProviderTrainingDialogComponent_div_16_div_2_Template","rowNum","ɵɵelement","_r33","ctx_r32","resource_r27","$implicit","currentIndex_r28","index","ctx_r31","onAttestResource","ctx_r34","copyToClipboard","resourceSource","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate","resourceDesc","_r39","ctx_r38","ctx_r37","ctx_r40","AttestationProviderTrainingDialogComponent_div_34_div_1_Template","AttestationProviderTrainingDialogComponent_div_34_div_2_Template","resourceTrained","_r44","ctx_r43","onSubmit","ctx_r8","enableSubmitAttestation","AttestationProviderTrainingDialogComponent","trainingAttestationResources","length","UiUtility","isNullUndefinedOrEmpty","trim","find","r","undefined","attestationConfirmation","display","displayDialog","value","constructor","reportService","oAuthService","sessionService","messages","clipboard","providerTaxNetwork","headerTitle","attestationName","resourceGeneralMessage","resourceDetailMessage","attendeesRegex","onAttestationSubmission","EventEmitter","ngOnInit","claims","getIdentityClaims","currentUser","ngOnDestroy","providerTrainingAttestationSubscription","unsubscribe","onClose","emit","onShow","trainingCompleted","Error","providerName","providerTaxName","isEnterpriseAdmin","isEnterpriseUser","Date","name","getProviderTrainingAttestationDetail","subscribe","result","row","colCount","i","forEach","t","indexOf","providerResourcesID","toString","MessageGenericError","event","resource","preventDefault","width","document","documentElement","clientWidth","height","clientHeight","windowProps","setTimeout","window","open","onCancel","re","RegExp","isValidForm","request","attestationYear","getFullYear","trainingDueDate","push","providerIdOrTaxId","attestationBy","validationBy","applyProviderTrainingAttestationAnnual","p","trainingAttestationStatus","TrainingAttestationStatus","Submitted","error","console","log","applyProviderTrainingAttestationIndividual","onConfirmationChanged","successful","copy","valid","test","ɵɵdirectiveInject","ReportsService","OAuthService","SessionService","Messages","Clipboard","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","AttestationProviderTrainingDialogComponent_div_2_Template","AttestationProviderTrainingDialogComponent_div_9_Template","AttestationProviderTrainingDialogComponent_div_10_Template","AttestationProviderTrainingDialogComponent_div_16_Template","AttestationProviderTrainingDialogComponent_span_32_Template","AttestationProviderTrainingDialogComponent_div_34_Template","AttestationProviderTrainingDialogComponent_span_39_Template","AttestationProviderTrainingDialogComponent_span_48_Template","AttestationProviderTrainingDialogComponent_button_52_Template","ɵɵstyleMap","ɵɵpureFunction0","_c1","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","errorMessage","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r15","ctx_r14","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedTin","ɵɵresetView","ɵɵlistener","row_r7","$implicit","ctx_r16","onTinSelected","ɵɵproperty","trainingAttestationId","ɵɵtwoWayProperty","ctx_r8","ɵɵtextInterpolate","providerTaxName","_r22","ctx_r20","trainingAttestationStatusDisplay","ɵɵtemplate","AttestationProviderTrainingAnnualComponent_div_4_ng_template_4_p_radioButton_2_Template","AttestationProviderTrainingAnnualComponent_div_4_ng_template_4_div_4_Template","AttestationProviderTrainingAnnualComponent_div_4_ng_template_4_div_5_Template","AttestationProviderTrainingAnnualComponent_div_4_ng_template_4_div_13_Template","AttestationProviderTrainingAnnualComponent_div_4_ng_template_4_div_14_Template","AttestationProviderTrainingAnnualComponent_div_4_ng_template_4_div_15_Template","_r28","ctx_r27","providerTaxId","ctx_r6","isEnterpriseUser","trainingDueDate","AttestationProviderTrainingAnnualComponent_div_4_ng_template_3_Template","AttestationProviderTrainingAnnualComponent_div_4_ng_template_4_Template","ctx_r1","displayTins","_r30","ctx_r29","onProcessAttestation","ctx_r3","selectedTaxDetail","AttestationProviderTrainingAnnualComponent","constructor","sessionService","reportService","messages","displayMessage","sortColumn","sortAscending","ngOnInit","currentPermission","isEnterpriseAdmin","currentCollectionId","providerCollectionID","searchProviders","ngOnDestroy","userCollectionSubscription","unsubscribe","sortClass","column","cls","onPage","e","s","JSON","stringify","onSort","tins","sort","data1","data2","value1","field","value2","result","localeCompare","order","onSearch","search","UiUtility","isNullUndefinedOrEmpty","providerId","filter","p","toLowerCase","indexOf","trim","slice","tin","isRadioButton","find","t","displayProviderAttestationTraining","event","attendees","length","collectionId","getProvidersForTrainingAttestationAnnual","subscribe","totalRecords","forEach","providerTrainingStatusMapping","trainingAttestationStatus","Date","getFullYear","toString","param","error","console","log","MessageGenericError","ɵɵdirectiveInject","SessionService","ReportsService","Messages","selectors","decls","vars","consts","template","rf","ctx","AttestationProviderTrainingAnnualComponent_div_3_Template","AttestationProviderTrainingAnnualComponent_div_4_Template","AttestationProviderTrainingAnnualComponent_div_5_Template","AttestationProviderTrainingAnnualComponent_app_attestation_provider_training_dialog_6_Template","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","errorMessage","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r14","ctx_r13","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCalProviderID","ɵɵresetView","ɵɵlistener","row_r6","$implicit","ctx_r15","onProviderSelected","ɵɵproperty","calProviderID","ɵɵtwoWayProperty","ctx_r7","ɵɵtextInterpolate","name","_r21","ctx_r19","trainingAttestationStatusDisplay","ɵɵtemplate","AttestationProviderTrainingIndividualComponent_ng_template_8_p_radioButton_2_Template","AttestationProviderTrainingIndividualComponent_ng_template_8_div_4_Template","AttestationProviderTrainingIndividualComponent_ng_template_8_div_5_Template","AttestationProviderTrainingIndividualComponent_ng_template_8_div_17_Template","AttestationProviderTrainingIndividualComponent_ng_template_8_div_18_Template","AttestationProviderTrainingIndividualComponent_ng_template_8_div_19_Template","_r27","ctx_r26","ctx_r3","isEnterpriseUser","taxId","ɵɵpipeBind2","trainingDueDate","_r29","ctx_r28","onProcessAttestation","ctx_r5","selectedProvider","AttestationProviderTrainingIndividualComponent","constructor","sessionService","reportService","messages","displayMessage","first","sortColumn","sortAscending","ngOnDestroy","userCollectionSubscription","unsubscribe","ngOnInit","currentPermission","isEnterpriseAdmin","currentCollectionId","providerCollectionID","searchProviders","sortClass","column","cls","onPage","e","s","JSON","stringify","onSort","displayProviders","sort","data1","data2","value1","field","value2","result","localeCompare","order","onSearch","search","selectedTin","providerName","providerId","providerTin","UiUtility","isNullUndefinedOrEmpty","providers","filter","p","toLowerCase","indexOf","trim","slice","param","provider","isRadioButton","displayProviderAttestationTraining","event","i","length","providerNPI","trainingAttestationStatus","TrainingAttestationStatus","Submitted","attestationDate","Date","attendees","collectionId","getProvidersForTrainingAttestationIndividual","subscribe","totalRecords","forEach","providerTrainingStatusMapping","getTime","error","console","log","MessageGenericError","ɵɵdirectiveInject","SessionService","ReportsService","Messages","selectors","decls","vars","consts","template","rf","ctx","AttestationProviderTrainingIndividualComponent_div_3_Template","AttestationProviderTrainingIndividualComponent_ng_template_7_Template","AttestationProviderTrainingIndividualComponent_ng_template_8_Template","AttestationProviderTrainingIndividualComponent_div_9_Template","AttestationProviderTrainingIndividualComponent_app_attestation_provider_training_dialog_10_Template","ɵɵtext","ɵɵtextInterpolate1","ctx_r1","getTabName","ɵɵelement","ctx_r4","ɵɵelementStart","ɵɵtemplate","AttestationProviderTrainingComponent_p_tabPanel_11_ng_template_1_Template","AttestationProviderTrainingComponent_p_tabPanel_11_ng_template_2_Template","ɵɵelementEnd","ɵɵproperty","ctx_r3","AttestationProviderTrainingComponent","constructor","sessionService","userAdminService","elementRef","activeindex","tabs","index","id","label","enable","ngOnInit","ngAfterViewInit","setPcpReportAttestationTabs","canViewTab","currentTab","find","tab","getTabIndex","name","onTabChanged","e","tabview","activeIndex","handleChange","selectedIndex","currentIndex","stopPropagation","tabView","nativeElement","querySelector","UiUtility","SetTabsWidthDynamically","querySelectorAll","forEach","element","currentChild","firstChild","tabElement","tabName","innerText","tabIndex","trim","newDiv","window","document","createElement","addEventListener","bind","style","cursor","appendChild","remove","ɵɵdirectiveInject","SessionService","UserAdminService","ElementRef","selectors","viewQuery","rf","ctx","AttestationProviderTrainingComponent_ng_template_9_Template","AttestationProviderTrainingComponent_ng_template_10_Template","AttestationProviderTrainingComponent_p_tabPanel_11_Template","ɵɵadvance","import_file_saver","BHABAReferralAttestation","BHABAReferralAttestationWithServices","BHABAReferralAttestation","constructor","services","ResourceRequest","httpOptions","headers","HttpHeaders","withCredentials","ResourcesService","constructor","oAuthService","http","portalConfig","appConfig","constants","sessionService","claims","getIdentityClaims","currentUser","baseProviderReportServiceUrl","getConfig","config$","subscribe","checkUrls","unsubscribe","baseUrl","bhabareferralinstructionUrl","getBHABAReferralAttestationResources","request","ResourceRequest","post","pipe","map","result","console","log","catchError","error","HttpResponseHelper","handleError","ɵɵinject","OAuthService","HttpClient","PortalConfig","AppConfig","Constants","SessionService","factory","ɵfac","providedIn","MinusIcon","BaseIcon","ɵMinusIcon_BaseFactory","t","ɵɵgetInheritedFactory","ɵɵdefineComponent","ɵɵInheritDefinitionFeature","ɵɵStandaloneFeature","rf","ctx","ɵɵnamespaceSVG","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵclassMap","ɵɵattribute","CommonModule","Panel_div_1_span_1_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ctx_r3","ɵɵnextContext","ɵɵattribute","ɵɵadvance","ɵɵtextInterpolate","Panel_div_1_ng_container_3_Template","ɵɵelementContainer","Panel_div_1_5_ng_template_0_Template","Panel_div_1_5_Template","ɵɵtemplate","Panel_div_1_button_6_ng_container_1_ng_container_1_span_1_Template","ɵɵelement","ctx_r12","ɵɵclassMap","ɵɵproperty","Panel_div_1_button_6_ng_container_1_ng_container_1_MinusIcon_2_Template","ctx_r13","Panel_div_1_button_6_ng_container_1_ng_container_1_Template","ɵɵelementContainerStart","ɵɵelementContainerEnd","ctx_r10","Panel_div_1_button_6_ng_container_1_ng_container_2_span_1_Template","ctx_r14","Panel_div_1_button_6_ng_container_1_ng_container_2_PlusIcon_2_Template","ctx_r15","Panel_div_1_button_6_ng_container_1_ng_container_2_Template","ctx_r11","Panel_div_1_button_6_ng_container_1_Template","ctx_r8","Panel_div_1_button_6_2_ng_template_0_Template","Panel_div_1_button_6_2_Template","_c0","a0","Panel_div_1_button_6_Template","_r18","ɵɵgetCurrentView","ɵɵlistener","$event","ɵɵrestoreView","ctx_r17","ɵɵresetView","ctx_r19","ctx_r6","ɵɵpureFunction1","_c1","a1","a2","Panel_div_1_Template","_r21","ctx_r20","ɵɵprojection","ctx_r0","ɵɵpureFunction3","Panel_ng_container_5_Template","Panel_div_6_ng_container_2_Template","Panel_div_6_Template","ctx_r2","_c2","_c3","_c4","_c5","_c6","_c7","_c8","Panel","EventEmitter","UniqueComponentId","el","item","event","ɵɵdirectiveInject","ElementRef","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","Footer","PrimeTemplate","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵprojectionDef","ɵɵpureFunction2","NgClass","NgIf","NgTemplateOutlet","NgStyle","Ripple","PlusIcon","MinusIcon","trigger","state","style","transition","animate","PanelModule","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","SharedModule","RippleModule","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtwoWayListener","$event","ds_r9","ɵɵrestoreView","_r11","$implicit","i0","ɵɵtwoWayBindingSet","directServiceCompleted","ɵɵresetView","ɵɵlistener","ctx_r12","ɵɵnextContext","onDirectServiceCompleted","ctx_r13","ɵɵadvance","ɵɵpropertyInterpolate1","autH_SVC_IDN","ɵɵproperty","procedurE_DESC","assigneD_UNITS","ɵɵpropertyInterpolate","ctx_r0","numberPattern","ɵɵtwoWayProperty","directServicePercentage","ɵɵtext","ɵɵtextInterpolate1","inst_r14","resourceDesc","resourceValue","ctx_r2","tooltip1","_r16","ctx_r15","bhabareferral","reason","ctx_r17","comment","ctx_r3","reasonList","inst_r18","AttestationBhAbaReferralsDialogComponent","constructor","reportService","resourceService","sessionService","cancelAttestation","EventEmitter","submitAttestation","reasonRequired","hasErrorDateofService","hasErrorReason","hasErrorProposedGoals","hasErrorCompletedGoals","errorMessage","ngOnInit","push","label","value","assessmentGoals","assessmentGoalsCompleted","assessmentGoalsRate","isNaN","Math","round","forkJoin","getBHABAReferralAttestationResources","getBHABAReferrals2","referralId","memberCIN","calProviderId","subscribe","result","length","resources","bhReferral2","instruction2","forEach","x","trim","startsWith","updateReasonRequired","display","onCancel","caption","emit","performValidation","toString","onAttest","data","BHABAReferralAttestationWithServices","attestationBy","currentPermission","secureAuthUserName","services","ApplyBHABAReferralAttestation","item","updateAssessmentRate","find","ɵɵdirectiveInject","ReportsService","ResourcesService","SessionService","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","AttestationBhAbaReferralsDialogComponent_div_39_Template","AttestationBhAbaReferralsDialogComponent_div_42_Template","AttestationBhAbaReferralsDialogComponent_div_43_Template","AttestationBhAbaReferralsDialogComponent_div_44_Template","AttestationBhAbaReferralsDialogComponent_div_64_Template","AttestationBhAbaReferralsDialogComponent_div_66_Template","AttestationBhAbaReferralsDialogComponent_div_67_Template","AttestationBhAbaReferralsDialogComponent_div_68_Template","AttestationBhAbaReferralsDialogComponent_div_69_Template","ɵɵtextInterpolate2","memberFirstName","memberLastName","ɵɵtextInterpolate","startDate","endDate","instruction1","attestationDate","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵclassMap","ctx_r1","sortClass","ɵɵtextInterpolate","row_r6","status","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r12","ctx_r11","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCin","ɵɵresetView","ɵɵlistener","$implicit","ctx_r13","onMemberSelected","ɵɵtemplate","AttestationBhAbaReferralsMemberComponent_ng_template_7_div_13_Template","AttestationBhAbaReferralsMemberComponent_ng_template_7_div_14_Template","ɵɵproperty","cin","ɵɵtwoWayProperty","ctx_r2","memberName","providerId","ɵɵtextInterpolate1","ctx_r3","displayText","row_r17","AttestationBhAbaReferralsMemberComponent_div_9_ng_template_4_div_5_Template","AttestationBhAbaReferralsMemberComponent_div_9_ng_template_4_div_6_Template","_r22","ctx_r21","showDialog","referralId","attestationDate","_r24","ctx_r23","onSort","AttestationBhAbaReferralsMemberComponent_div_9_ng_template_3_Template","AttestationBhAbaReferralsMemberComponent_div_9_ng_template_4_Template","ctx_r4","attestationList","_r27","ctx_r26","onCancel","ctx_r28","onSubmit","ctx_r5","selectedReferral","AttestationBhAbaReferralsMemberComponent","constructor","reportsService","sessionService","collectionService","datePipe","busyService","document","members","displayMembers","first","ngOnInit","collectionId","currentPermission","providerCollectionID","userFullName","fromProviderTab","initialize","ngAfterViewInit","setProviderId","providerDetail","selectedProvider","lastMemberSearch","lastSelectedMemberCin","resetComponent","sortColumn","sortAscending","searchCin","searchName","selectedMember","memberSearch","resetSearchFilters","getMembersForBHABAReferralAttestation","calProviderID","taxId","ReportType","AWV","subscribe","result","totalRecords","length","slice","param","lastselectedMember","find","x","column","cls","onPage","e","s","JSON","stringify","sort","data1","data2","value1","field","value2","localeCompare","order","member","getBHABAReferralAttestation","providerTaxId","GetProvider2","prov","ProviderDetail","providerID","toString","calProviderId","name","providerName","memeberDetail","enableBuildReport","saveAsFile","buffer","fileName","fileType","data","Blob","type","saveAs","onMemberSearch","search","memberId","splice","items","medsId","mbi","push","searchMembersForBHABAReferralAttestation","referral","showAttachment","temp","ɵɵdirectiveInject","ReportsService","SessionService","CollectionService","DatePipe","BusyService","DOCUMENT","selectors","viewQuery","rf","ctx","AttestationBhAbaReferralsMemberComponent_ng_template_6_Template","AttestationBhAbaReferralsMemberComponent_ng_template_7_Template","AttestationBhAbaReferralsMemberComponent_div_8_Template","AttestationBhAbaReferralsMemberComponent_div_9_Template","AttestationBhAbaReferralsMemberComponent_app_attestation_bh_aba_referrals_dialog_10_Template","ɵɵelement","ɵɵclassMap","ctx_r7","sortClass","col_r6","field","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtemplate","AttestationBhAbaReferralsProviderComponent_div_1_ng_template_6_th_1_div_3_Template","classHeader","ɵɵpropertyInterpolate","width","ɵɵadvance","ɵɵtextInterpolate","header","ɵɵproperty","sort","AttestationBhAbaReferralsProviderComponent_div_1_ng_template_6_th_1_Template","ctx_r3","columns","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r15","ctx_r14","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCalProviderID","ɵɵresetView","ɵɵlistener","provider_r9","$implicit","ctx_r16","onProviderSelected","calProviderID","ɵɵtwoWayProperty","ctx_r12","col_r11","AttestationBhAbaReferralsProviderComponent_div_1_ng_template_7_td_1_div_1_Template","AttestationBhAbaReferralsProviderComponent_div_1_ng_template_7_td_1_div_2_Template","classContent","AttestationBhAbaReferralsProviderComponent_div_1_ng_template_7_td_1_Template","ctx_r4","_r22","ctx_r21","onProviderSearch","ctx_r23","onSort","AttestationBhAbaReferralsProviderComponent_div_1_ng_template_6_Template","AttestationBhAbaReferralsProviderComponent_div_1_ng_template_7_Template","ctx_r0","displayedProviders","_r27","ctx_r26","backToProvider","ctx_r24","selectedProvider","name","AttestationBhAbaReferralsProviderComponent_div_2_div_1_Template","ctx_r1","AttestationBhAbaReferralsProviderComponent","constructor","reportsService","sessionService","providers","rowsPerPage","pageNumber","animationState","displayMembers","ngOnInit","initialize","resetComponent","sortColumn","setTimeout","providerSearch","resetSearchFilters","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getProvidersForBHABAReferralAttestation","providerCollectionID","ReportType","AWV","subscribe","result","param","column","cls","sortAscending","onPage","e","s","JSON","stringify","data1","data2","value1","value2","localeCompare","order","provider","awpmemberComponent","setProviderId","search","providerName","providerId","providerTin","searchProvidersForBHABAReferralAttestation","slice","UiUtility","isNullUndefinedOrEmpty","filter","p","taxId","toLowerCase","indexOf","trim","setPagedData","page","totalRecords","length","start","end","ɵɵdirectiveInject","ReportsService","SessionService","selectors","viewQuery","rf","ctx","AttestationBhAbaReferralsProviderComponent_div_1_Template","AttestationBhAbaReferralsProviderComponent_div_2_Template","ɵɵtext","ɵɵtextInterpolate1","ctx_r1","getTabName","ɵɵelement","ctx_r5","ɵɵelementStart","ɵɵtemplate","AttestationBhAbaReferralsComponent_p_tabPanel_11_ng_template_1_Template","AttestationBhAbaReferralsComponent_p_tabPanel_11_ng_template_2_Template","ɵɵelementEnd","ɵɵproperty","ctx_r3","AttestationBhAbaReferralsComponent","constructor","confirmationService","elementRef","displayConfirmContinue","activeindex","tabs","index","id","label","enable","ngOnInit","ngAfterViewInit","setPcpReportAttestationTabs","canViewTab","currentTab","find","tab","getTabIndex","name","onTabChanged","e","tabview","activeIndex","handleChange","selectedIndex","currentIndex","stopPropagation","confirm","header","message","key","accept","providerComponent","initialize","memberComponent","setProviderId","reject","tabView","nativeElement","querySelector","UiUtility","SetTabsWidthDynamically","querySelectorAll","forEach","element","currentChild","firstChild","anchorelement","tabName","innerText","tabIndex","trim","newDiv","window","document","createElement","addEventListener","bind","style","cursor","appendChild","remove","confirmContinue","event","ɵɵdirectiveInject","ConfirmationService","ElementRef","selectors","viewQuery","rf","ctx","AttestationBhAbaReferralsComponent_ng_template_9_Template","AttestationBhAbaReferralsComponent_ng_template_10_Template","AttestationBhAbaReferralsComponent_p_tabPanel_11_Template","ɵɵadvance","import_file_saver","ɵɵelement","ɵɵclassMap","ctx_r5","sortClass","col_r4","field","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtemplate","PdcHealthNetworkComponent_ng_template_5_th_1_div_3_Template","classHeader","ɵɵpropertyInterpolate","width","ɵɵadvance","ɵɵtextInterpolate","header","ɵɵproperty","sort","PdcHealthNetworkComponent_ng_template_5_th_1_Template","ctx_r0","columns","ɵɵlistener","ɵɵrestoreView","_r14","row_r7","ɵɵnextContext","$implicit","ctx_r12","ɵɵresetView","onGetLatestExcel","col_r9","PdcHealthNetworkComponent_ng_template_6_td_1_div_1_Template","PdcHealthNetworkComponent_ng_template_6_td_1_div_2_Template","classContent","PdcHealthNetworkComponent_ng_template_6_td_1_Template","ctx_r1","PdcHealthNetworkComponent","constructor","reportsService","sessionService","displayMessage","rowsPerPage","pageNumber","ngOnDestroy","ngOnInit","loadData","onGetLatest","providerNetwork","isExcel","downloadHealthNetworkPlanPDCReport","networkId","subscribe","result","currentDate","Date","year","getFullYear","month","getMonth","toString","padStart","day","getDate","fileName","substring","saveAsFile","buffer","fileType","data","Blob","type","FileSaver","saveAs","column","cls","sortColumn","sortAscending","onPage","e","s","JSON","stringify","onSort","healthPlans","data1","data2","value1","value2","localeCompare","order","lazyLoadData","event","sortField","undefined","sortOrder","currentCollectionId","currentPermission","providerCollectionID","healthNetworkPlanCodes","getProviderHealthNetworkPlanForPDC","totalRecords","length","param","ɵɵdirectiveInject","ReportsService","SessionService","selectors","decls","vars","consts","template","rf","ctx","$event","PdcHealthNetworkComponent_ng_template_5_Template","PdcHealthNetworkComponent_ng_template_6_Template","PdcHealthNetworkComponent_div_7_Template","import_file_saver","PdcProviderSearchComponent","constructor","sessionService","providerName","providerNPI","providerTaxId","pdcProviderSearchOption","isInternalUser","onProviderFilterSearch","EventEmitter","onSelectionFilterChange","enableReset","UiUtility","isNullUndefinedOrEmpty","trim","disableProviderName","disableProviderNPI","disableProviderTaxId","ngOnInit","isEnterpriseAdmin","isEnterpriseUser","findProviders","reset","emit","selectionType","length","onSelectFilterSearch","event","onReset","ɵɵdirectiveInject","SessionService","selectors","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","ɵɵelementEnd","ɵɵtext","ɵɵadvance","ɵɵtwoWayProperty","ɵɵpropertyInterpolate","ɵɵproperty","ɵɵelement","ɵɵclassMap","ctx_r6","sortClass","col_r5","field","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtemplate","PdcProviderComponent_ng_template_7_th_1_div_3_Template","classHeader","ɵɵpropertyInterpolate","width","ɵɵadvance","ɵɵtextInterpolate","header","ɵɵproperty","sort","PdcProviderComponent_ng_template_7_th_1_Template","ctx_r0","columns","col_r10","classContent","row_r8","PdcProviderComponent_ng_template_8_td_1_Template","ctx_r1","ɵɵlistener","ɵɵrestoreView","_r13","ctx_r12","ɵɵnextContext","ɵɵresetView","onDownload","PdcProviderComponent","constructor","reportsService","sessionService","isInternalUser","displayMessage","providers","rowsPerPage","pageNumber","first","displayDownload","providerIds","providerNPIs","searchType","ngOnDestroy","ngOnInit","isEnterpriseAdmin","isEnterpriseUser","collectionName","currentPermission","onProviderSearch","selectionType","providerName","providerNPI","providerTaxId","isExcel","forEach","p","indexOf","calProviderID","push","downloadHealthNetworkPlanPDCReport","subscribe","result","currentDate","Date","year","getFullYear","month","getMonth","toString","padStart","day","getDate","fileName","saveAsFile","buffer","fileType","data","Blob","type","FileSaver","saveAs","column","cls","sortColumn","sortAscending","onPage","e","s","JSON","stringify","onSort","data1","data2","value1","value2","localeCompare","order","onSelectionFilterChange","event","currentCollectionId","providerCollectionID","getPDCReportForProviders","totalRecords","length","seenValues","Set","filter","item","value","has","add","size","param","ɵɵdirectiveInject","ReportsService","SessionService","selectors","decls","vars","consts","template","rf","ctx","$event","ɵɵtwoWayListener","i0","ɵɵtwoWayBindingSet","PdcProviderComponent_ng_template_7_Template","PdcProviderComponent_ng_template_8_Template","PdcProviderComponent_div_9_Template","PdcProviderComponent_div_10_Template","ɵɵtwoWayProperty","ɵɵtext","ɵɵtextInterpolate1","ctx_r1","getTabName","ɵɵelement","ctx_r4","ɵɵelementStart","ɵɵtemplate","ReportsPdcComponent_p_tabPanel_9_ng_template_1_Template","ReportsPdcComponent_p_tabPanel_9_ng_template_2_Template","ɵɵelementEnd","ɵɵproperty","ctx_r3","ReportsPdcComponent","constructor","elementRef","activeindex","tabs","index","id","label","enable","ngOnDestroy","ngOnInit","setPdcReportTabs","canViewTab","currentTab","find","tab","getTabIndex","name","onTabChanged","e","tabview","activeIndex","handleChange","selectedIndex","currentIndex","stopPropagation","tabView","nativeElement","querySelector","UiUtility","SetTabsWidthDynamically","querySelectorAll","forEach","element","currentChild","firstChild","tabName","innerText","tabIndex","trim","newDiv","window","document","createElement","addEventListener","bind","style","cursor","appendChild","remove","ɵɵdirectiveInject","ElementRef","selectors","viewQuery","rf","ctx","ReportsPdcComponent_ng_template_7_Template","ReportsPdcComponent_ng_template_8_Template","ReportsPdcComponent_p_tabPanel_9_Template","ɵɵadvance","ɵɵelement","ɵɵclassMap","ctx_r4","sortClass","col_r3","field","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtemplate","ReportsRosterProviderComponent_ng_template_5_th_1_div_3_Template","classHeader","ɵɵpropertyInterpolate","width","ɵɵadvance","ɵɵtextInterpolate","header","ɵɵproperty","sort","ReportsRosterProviderComponent_ng_template_5_th_1_Template","ctx_r0","columns","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r12","ctx_r11","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedCalProviderID","ɵɵresetView","ɵɵlistener","provider_r6","$implicit","ctx_r13","onProviderSelected","calProviderID","ɵɵtwoWayProperty","ctx_r9","col_r8","ReportsRosterProviderComponent_ng_template_6_td_1_div_1_Template","ReportsRosterProviderComponent_ng_template_6_td_1_div_2_Template","classContent","ReportsRosterProviderComponent_ng_template_6_td_1_Template","ctx_r1","ReportsRosterProviderComponent","constructor","sessionService","reportsService","selectedprovider","EventEmitter","providers","displayedProviders","rowsPerPage","pageNumber","animationState","ngOnInit","sortColumn","currentPermission","isEnterpriseAdmin","isEnterpriseUser","getProvidersForPCPMemberRoster","providerCollectionID","subscribe","result","onProviderSearch","param","onSort","column","cls","sortAscending","onPage","e","s","JSON","stringify","data1","data2","value1","value2","localeCompare","order","provider","emit","search","providerName","providerId","providerTin","searchProvidersForPCPMemberRoster","slice","UiUtility","isNullUndefinedOrEmpty","filter","p","taxId","toLowerCase","indexOf","trim","name","ɵɵdirectiveInject","SessionService","ReportsService","selectors","outputs","decls","vars","consts","template","rf","ctx","ReportsRosterProviderComponent_ng_template_5_Template","ReportsRosterProviderComponent_ng_template_6_Template","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ctx_r2","ɵɵnextContext","ɵɵresetView","onView","ɵɵtext","ɵɵelementEnd","item_r5","_r7","$implicit","ctx_r6","itemclick","ɵɵadvance","ɵɵtextInterpolate","label","ɵɵtemplate","ReportsRosterMenuComponent_div_2_div_1_Template","ɵɵproperty","ctx_r1","menuItems","ReportsRosterMenuComponent","constructor","itemclicked","EventEmitter","visible","ngOnInit","menuCount","length","item","itemreturn","tag","emit","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ReportsRosterMenuComponent_div_1_Template","ReportsRosterMenuComponent_div_2_Template","ReportsRosterMemberDialogComponent","constructor","memberService","onCancel","EventEmitter","display","ngOnInit","caption","member","lastName","firstName","cin","cancelClick","emit","ɵɵdirectiveInject","MemberInfoService","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","ɵɵlistener","ɵɵelement","ɵɵelementEnd","ɵɵstyleMap","ɵɵpureFunction0","_c0","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","ɵɵproperty","ɵɵelementStart","ɵɵtext","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵclassMap","ctx_r1","sortClass","ɵɵlistener","$event","ɵɵrestoreView","_r9","ctx_r8","ɵɵnextContext","ɵɵresetView","itemclick","ɵɵtextInterpolate","row_r7","memberName","cin","rosterEffDate","ɵɵproperty","ctx_r2","menuItems","ctx_r3","successmessage","ctx_r4","errormessage","_r11","ctx_r10","cancelMemberDialog","ctx_r5","selectedMember","_r13","ctx_r12","continueDateDialog","ctx_r14","cancelDateDialog","ReportsRosterMemberComponent","constructor","memberRosterService","memberService","sessionService","document","members","displayMembers","showDialog","showDatePickerDialog","showSuccess","showError","back","EventEmitter","ngOnInit","itemExists","currentPermission","userPermissionCodes","find","x","trim","toLocaleUpperCase","isInternalUser","key","label","icon","getRosterItems","subscribe","rosterItems","selectedrosterItem","onChange","onMemberSearch","search","memberId","filter","toUpperCase","slice","selectedProviderName","selectedProvider","name","initialize","resetComponent","sortColumn","sortAscending","searchCin","searchName","column","cls","onPage","e","s","JSON","stringify","onSort","sort","data1","data2","value1","field","value2","result","localeCompare","order","setProvider","provider","getProviderMemberRoster","calProviderID","rosterTypeID","res","deleteMember","member","rosterItem","resetMessage","onBack","emit","itemx","portalmember","tag","menuItem","item","setTimeout","getMembersById","setSelectMember","relationshipDate","providerIds","push","removeMemberFromProviderRoster","error","ɵɵdirectiveInject","MemberRosterService","MemberInfoService","SessionService","DOCUMENT","selectors","outputs","decls","vars","consts","template","rf","ctx","ɵɵtwoWayListener","i0","ɵɵtwoWayBindingSet","ɵɵtemplate","ReportsRosterMemberComponent_ng_template_18_Template","ReportsRosterMemberComponent_ng_template_19_Template","ReportsRosterMemberComponent_div_21_Template","ReportsRosterMemberComponent_div_22_Template","ReportsRosterMemberComponent_app_reports_roster_member_dialog_23_Template","ReportsRosterMemberComponent_app_choose_date_dialog_24_Template","ɵɵtextInterpolate1","ɵɵtwoWayProperty","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r4","ctx_r3","ɵɵnextContext","ɵɵresetView","onProviderSelected","ɵɵelementEnd","_r7","ctx_r6","onBack","ReportsProviderMemberRosterComponent","constructor","displayProvider","displayMember","val","setTimeout","memberComponent","setProvider","selectors","viewQuery","rf","ctx","ɵɵelement","ɵɵtemplate","ReportsProviderMemberRosterComponent_div_2_Template","ReportsProviderMemberRosterComponent_app_reports_roster_member_4_Template","ɵɵadvance","ɵɵproperty","routes","path","redirectTo","pathMatch","component","ReportsHomeComponent","ReportsPcpMemberRosterComponent","ReportsMemberEligibilityRosterComponent","ReportsPayForValueComponent","ReportsBHPayForValueComponent","ReportsBloodleadScreeningComponent","ReportsPcpAttestationComponent","ReportsDHCSBloodleadScreeningComponent","ReportsPayForValueManualComponent","AttestationHomeComponent","AttestationBloodleadScreeningComponent","AttestationProviderTrainingComponent","AttestationBhAbaReferralsComponent","ReportsAWPComponent","ReportsHIFComponent","ReportsPcpMemberIHAComponent","ReportsBHIComponent","ReportsBHABAReferralsComponent","ReportsPdcComponent","ReportsProviderMemberRosterComponent","ReportsRoutingModule","RouterModule","forChild","routes","ReportsModule","CommonModule","ReportsRoutingModule","AppComponentsModule","ToastModule","TableModule","FormsModule","PanelModule","TooltipModule","DropdownModule","RadioButtonModule","TabViewModule","CheckboxModule","DialogModule","ConfirmDialogModule","FileUploadModule","CalendarModule"],"x_google_ignoreList":[68,83,84]}