{"version":3,"sources":["Services/Config/ConfigService.ts","Services/AbpnClient.ts","Services/Auth/AuthService.ts","Components/Shared/Components/AbpnSpinner.tsx","Components/Physician/Models/Certificate.ts","Components/Auth/AuthProvider.tsx","Components/Shared/Utility/DeepCopy.ts","Components/Shared/Utility/GetDateWithOffset.ts","Components/Dashboard/Certificates/Components/CertificateRow.tsx","Components/Shared/ValidatorHelper.ts","Components/Dashboard/Certificates/Components/RequestCertificationVerification.tsx","Components/Dashboard/Certificates/Components/CertificatesCard.tsx","Components/Shared/Enums/CountryId.ts","Components/Shared/Components/MedicalLicenseCard.tsx","Components/Shared/Components/MedicalLicenseList.tsx","Components/Physician/Models/MedicalLicense.ts","Components/Dashboard/ContinuingCertification/Components/MedicalLicensure.tsx","Components/Dashboard/CertificationRequirements/Components/Activities.tsx","Components/Dashboard/CertificationRequirements/Components/CertificationRequirements.tsx","Components/Physician/Models/CCEnrollment.ts","Components/Dashboard/ContinuingCertification/Components/CCEnrollmentSummary.tsx","Components/Physician/Models/CCBlock.ts","Services/PaymentProcessor/PaymentType.ts","Services/AppInsights.ts","Services/PaymentProcessor/Payment.ts","Services/PaymentProcessor/FattPayClient.ts","Services/PaymentProcessor/PaymentProcessor.ts","Components/Dashboard/ContinuingCertification/Models/CCAnnualFeePayment.ts","Services/PaymentProcessor/FattPayCreditCard.tsx","Services/PaymentProcessor/FattPayBank.tsx","Services/PaymentProcessor/FattPayContainer.tsx","Components/Shared/Utility/Booleanify.ts","Components/Dashboard/ContinuingCertification/Components/AnnualFees.tsx","Components/Physician/Models/CCAttestation.ts","Components/Dashboard/ContinuingCertification/Components/CCActivityRequirements.tsx","Components/Dashboard/ContinuingCertification/Components/AbccAssessmentCertificationCard.tsx","Components/Dashboard/ContinuingCertification/Components/ArticleResultList.tsx","Components/Dashboard/ContinuingCertification/Components/AbccAssessmentCard.tsx","Components/Dashboard/ContinuingCertification/Components/ExamAssessmentCard.tsx","Components/Dashboard/ContinuingCertification/Components/NonAbpnAssessmentCard.tsx","Components/Dashboard/ContinuingCertification/Components/CCAssessments.tsx","Components/Dashboard/ContinuingCertification/Components/CCBlockCard.tsx","Components/Dashboard/ContinuingCertification/Components/CCEnrollmentCard.tsx","Components/Apply/Models/ApplicationModel.ts","Components/Dashboard/Exams/Models/AppliedToExamination.ts","Components/Dashboard/Assessments/ReEntryAssessmentCertificationCard.tsx","Components/Dashboard/Assessments/ReEntryAssessmentCard.tsx","Components/Dashboard/Exams/Components/ArticleReentryExaminationCard.tsx","Components/Dashboard/Assessments/AssessmentCard.tsx","Components/Dashboard/Exams/Components/ArticleExaminationCard.tsx","Components/Dashboard/Exams/Components/ExaminationsCard.tsx","Components/Shared/Components/Banner.tsx","Components/Shared/Components/HeaderWithTitle.tsx","Components/Account/Models/DemographicPromptResponseModel.ts","Components/Auth/ProfileProvider.tsx","Components/Home.tsx","Services/Auth/AuthConstants.ts","Components/Auth/Callback.tsx","Components/Auth/LogoutCallback.tsx","Components/Auth/Logout.tsx","Components/Auth/Login.tsx","Components/ApiAuthorizationRoutes.tsx","Components/Auth/OnBehalfOf.tsx","Components/Footer.tsx","Components/NavItems.tsx","Components/NavMenu.tsx","Components/Layout.tsx","Components/ErrorPage.tsx","Components/Dashboard/Applications/Components/AvailableExaminationCard.tsx","Components/Dashboard/Applications/Components/AvailableExaminationGroup.tsx","Components/Dashboard/Applications/Components/AvailableApplicationGrid.tsx","Components/Apply/Models/Examination.ts","Components/Auth/AuthorizeRoute.tsx","Components/Auth/StaffOnlyRoute.tsx","Components/Shared/Enums/AddressType.ts","Components/Shared/Enums/AddressVerificationStatus.ts","Components/Physician/Models/Address.ts","Components/Shared/Components/AddressValidation.tsx","Components/Shared/Components/AddressForm.tsx","Components/Shared/Components/ApplicantInformation.tsx","Components/Apply/Models/Fee.ts","Components/Apply/Components/PaymentCard.tsx","Components/Apply/Components/MedicalLicenseInformation.tsx","Components/Apply/Components/AttestationStatement.tsx","Components/Apply/Components/TestingOptions.tsx","Components/Physician/Models/SubspecialtyTraining.ts","Components/Physician/Models/PathwayMethod.ts","Components/Apply/Components/TrainingRequirements.tsx","Components/Apply/Components/ApplicationReceived.tsx","Components/Apply/Models/CnpTypes.ts","Components/Apply/Components/CnpOptions.tsx","Components/Apply/Components/Modules.tsx","Components/Apply/Components/CnpSection.tsx","Components/Shared/Components/ActionResultMessage.tsx","Components/Shared/Enums/InvoiceStatus.ts","Components/Shared/Models/InvoiceLineItemModel.ts","Components/Shared/Models/InvoiceModel.ts","Components/Apply/Components/InvoicePaymentCard.tsx","Components/Apply/Components/InvoiceApplicationReceived.tsx","Components/Apply/Components/Application.tsx","Components/Examination/ExaminationReport.tsx","Components/Dashboard/Exams/Models/ExaminationHistory.ts","Components/Examination/ExamHistory.tsx","Components/Unauthorized.tsx","Components/Physician/Models/CCActivity.ts","Components/ManageActivities/SelfReportedActivityRow.tsx","Components/ManageActivities/ManageActivities.tsx","Components/Auth/EmailNotFound.tsx","Components/Shared/Components/PasswordControl.tsx","Components/Account/SecurityCard.tsx","Components/Account/PersonalCard.tsx","Components/Account/AddressesCard.tsx","Components/Account/Models/PhysicianDemographicModel.ts","Components/Account/PhysicianDemographicCard.tsx","Components/Account/AccountInformation.tsx","Components/Shared/Models/ActionResult.ts","Components/Auth/AccountAssistance.tsx","Components/Auth/Models/SearchPhysicianModel.ts","Components/Auth/SearchPhysician.tsx","Components/Auth/Models/ActivateUser.ts","Components/Auth/UpdateEmail.tsx","Components/Auth/ActivationSelectExam.tsx","Components/Auth/SearchForAccount.tsx","Components/Physician/Models/MedicalEducationModel.ts","Components/Physician/Models/PhysicianCreation.ts","Components/Auth/MedicalEducationCard.tsx","Components/Auth/PersonalEmailCard.tsx","Components/Auth/PersonalInformationCard.tsx","Components/Auth/PersonalInformation.tsx","Components/CCEnrollment/Components/ArticleRequirementPreview.tsx","Components/CCEnrollment/Components/ExamRequirementPreview.tsx","Components/CCEnrollment/Models/CcAssessmentPathwayEnrollment.ts","Components/CCEnrollment/Components/AnnualFeePreview.tsx","Components/CCEnrollment/Components/ReviewRequirements.tsx","Components/CCEnrollment/Components/SelectCertificationRow.tsx","Components/CCEnrollment/Components/SelectCertifications.tsx","Components/CCEnrollment/Components/ArticlePathwayTerms.tsx","Components/CCEnrollment/Components/ExamPathwayTerms.tsx","Components/CCEnrollment/Components/TermsAndAttestation.tsx","Components/CCEnrollment/Components/ManageCCEnrollment.tsx","Components/CCEnrollment/Models/UpdateCCAssessmentPathwayModel.ts","Components/OtherBoardHome.tsx","Components/Orders/Models/Fee.ts","Components/InvoicesAndReceipts.tsx","Components/Messages/Components/Messages.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["configService","_configuration","this","Promise","resolve","fetch","response","json","IdentityServerKnownClient","physicianPortal","abpnClient","_baseUri","_errorPage","getConfiguration","AbpnApiUrl","authContext","isAuthenticated","getAccessToken","token","headers","push","getOnBehalfOf","onBehalfOf","status","reject","ok","clone","text","Error","statusText","JSON","parse","error","message","logout","window","location","href","errorPage","relativePath","body","a","ensureConfiguration","getDefaultHeaders","method","stringify","then","validateResponse","castResponse","catch","handleError","AuthService","userManager","undefined","authUrl","clientId","onBehalfOfHeader","initialize","configuration","AbpnIdentity","Authority","ClientId","settings","authority","client_id","redirect_uri","RedirectUri","post_logout_redirect_uri","PostLogoutRedirectUri","response_type","automaticSilentRenew","loadUserInfo","scope","Scope","userStore","WebStorageStateStore","store","sessionStorage","UserManager","Log","logger","console","level","DEBUG","events","addUserLoaded","indexOf","navigateToScreen","addSilentRenewError","e","log","addAccessTokenExpired","signinSilent","signinRedirectCallback","redirectUrl","localStorage","getItem","replace","getUser","user","access_token","setOnBehalfOf","physicianId","setItem","parseJwt","base64","split","atob","signinRedirect","emailPrefill","redirectUri","removeItem","login_hint","staffSigninRedirect","acr_values","oidcStorage","err","signinSilentCallback","createSigninRequest","signoutRedirect","id_token_hint","id_token","clearStaleState","changeEmail","model","changePassword","register","AbpnSpinner","className","Spinner","animation","CertificateStatus","AuthContext","React","createContext","AuthConsumer","Consumer","AuthProvider","props","authService","state","isReady","setState","Provider","value","children","Component","CCStatus","CertificationGeneration","ClinicalStatus","1","2","3","4","6","deepCopy","target","Date","getTime","Array","cp","forEach","v","map","n","Object","keys","k","getDateWithOffset","date","utcOffset","toISOString","CertificateRow","useState","isEditing","setIsEditing","originalDisplayCertificate","setOriginalDisplayCertificate","displayCertificate","setDisplayCertificate","expiredCertificatesByDate","setExpiredCertificatesByDate","useContext","clinicalStatusOptions","key","id","parseInt","name","useEffect","activeCertificate","certificateGroup","find","_","certificateStatus","Active","inactiveCertificatesByDate","filter","Inactive","sort","b","awardDate","displayCert","infoIconContent","ccMocStatusLabel","endDateLabel","certificateEndDateDisplay","lifetimeInfoIconContent","rel","ccLabel","mocLabel","isDisplayCertificateActive","showInfoIcon","showStatus","displayEndDateLabel","certificationGeneration","TenYear","Lifetime","physician","currentCCEnrollment","Cc","expirationDate","toLocaleDateString","displayIsCertified","infoIcon","OverlayTrigger","trigger","placement","rootClose","overlay","Tooltip","bsPrefix","isRetired","isHPM","Row","Col","xs","md","lg","xl","certificationName","toUpperCase","certificateNumber","Form","Control","as","required","onChange","updated","clinicalStatus","updateClinicalStatusId","defaultValue","hidden","x","Button","variant","onClick","post","onSave","ccStatusDisplay","length","ValidatorHelper","element","errorMessage","dateErrorMsgControl","parentElement","getElementsByClassName","setCustomValidationWithFeedback","customErrorMsgControl","classList","add","setCustomValidity","errorMsgControl","textContent","clearCustomValidation","remove","validEmailRegex","RequestCertificationVerification","emailForm","useRef","emailInputRef","isDownloading","setIsDownloading","isSending","setIsSending","showRequestSection","setShowRequestSection","showEmailSection","setShowEmailSection","newEmail","setNewEmail","ccEmailAddresses","setCcEmailAddresses","downloadVerification","preventDefault","stopPropagation","getResponse","blob","downloadFileUrl","URL","createObjectURL","Blob","link","document","createElement","setAttribute","appendChild","click","parentNode","removeChild","closeModals","addEmail","form","current","test","checkValidity","updatedEmails","emailVerification","finally","openLetterRequestModal","isRequestingVerificationLetter","openEmailModal","isEmailingVerificationLetter","showVerificationButtons","hadCertificate","Modal","show","onHide","Body","Footer","noValidate","ref","onSubmit","type","emailAddress","index","CertificatesCard","groupedCertsBySpecialty","certificates","reduce","result","item","groupedCertificates","evaluateCurrentBlockAndCallUpdate","get","ccBlock","ccBlocks","findIndex","ccBlockId","splice","currentCCBlock","updatePhysician","onSaveCertificate","updatedCertificate","updatedPhysician","certIndex","certificateId","sortedCertificates","values","isPrimary","aAwardDates","bAwardDates","Math","max","download","certificatesRows","showPrint","isBehindCurrentBlock","Card","border","Title","CountryId","MedicalLicenseCard","medicalLicense","originalLicense","setOriginalLicense","updatedLicense","setUpdatedLicense","noGutters","Group","controlId","Label","licenseNumber","updateLicenseNumber","Text","states","stateId","updateState","label","countryId","Usa","shortName","Canada","mask","dateString","year","getFullYear","month","getMonth","toString","day","getDate","formatDefaultValue","toJSON","updateExpirationDate","inputProps","isNew","updateMedicalLicense","save","beginEdit","handleRemove","validationMessage","Alert","MedicalLicenseList","medicalLicenses","license","MedicalLicense","medicalLicenseId","MedicalLicensure","setMedicalLicenses","isSectionOpen","openCollapse","setOpenCollapse","saveAllMedicalLicenses","medicalLicensesToUpdate","trim","some","validate","onSaveLicenses","showCollapse","Collapse","in","newList","removeMedicalLicense","disabled","every","newMedicalLicense","addNewMedicalLicense","Activities","to","CertificationRequirements","requiredArticles","hasActiveTenYearCert","ccEnrollmentsModel","hasCCEnrollmentHistory","sortBySpecialtyAlpha","getCertsString","certs","expiredOnly","certList","sortedExpiredCerts","slice","join","concat","requiredCredits","showRecertRequirements","showLifetimeOnlyLanguage","showLifetimeOnlyTenYearLanguage","today","yearsRequirement","recertifiedDate","hasTenYearCert","isInactive","hasLiftimeCert","showPatientSafetyRequirement","isDansInvalidatedAllowReentryExam","size","licenses","CCAssessmentType","CCEnrollmentSummary","isEnrolledinCC","lifeTimeActiveCertificates","cert","getCcAssessmentTypeName","ccAssessmentType","Exam","Article","activeAndFutureEnollmentCertificates","activeEnrollmentCertificates","futureEnrollmentCertificates","sortedEnrollmentCertificates","aCertificate","bCertificate","bg","enrollmentCertificate","ccEnrollmentCertificate","certificate","ccCertEnrollmentStartDate","enrollmentStartDate","Fragment","getCCEnrollmentCertificateListItem","CCBlockRequirementType","PaymentType","appInsights","config","ApplicationInsights","ConnectionString","connectionString","loadAppInsights","trackPageView","ex","trackException","exception","BankHolderType","BankType","fattPayClient","_fattJs","script","src","async","cardElement","cvvElement","FattJs","FattPay","WebsitePaymentsToken","number","placeholder","style","format","cvv","showCardForm","payment","email","tokenize","first_name","firstName","last_name","lastName","person_name","address_city","city","address_state","paymentType","CreditCard","bank_type","bankType","bank_holder_type","bankHolderType","bank_account","accountNumber","bank_routing","routingNumber","PaymentToken","LastFour","card_last_four","IsValid","logError","paymentProcessor","CCAnnualFeePayment","fees","years","monthRegex","RegExp","yearRegex","FattPayCreditCard","forwardRef","cardRef","createRef","cvvRef","ccMonthRef","ccYearRef","useImperativeHandle","isValid","match","initializeCreditCard","height","isInvalid","field","onPaymentChanged","updateMonth","maxLength","Feedback","updateYear","FattPayBank","initializeBank","updateBankType","updateBankHolderType","updateAccountNumber","updateRoutingNumber","Check","formNoValidate","checked","checking","savings","personal","business","FattPayContainer","ccPaymentRef","updatePaymentType","onPaymentTypeChanged","ECheck","updateFirstName","updateLastName","booleanify","includes","AnnualFees","payFees","setPayFees","isSubmitting","setIsSubmitting","selectedYearsToPay","setSelectedYearsToPay","contactAddress","stateCode","setPayment","isPaymentSuccessful","setIsPaymentSuccessful","useBC","setUseBC","unpaidFees","ccAnnualFees","isWaived","isPaid","getUnpaidYears","unpaidOrphanYears","allAnnualFees","i","annualFee","requiredFee","addRequiredFeesToPay","FeatureFlags","UseBusinessCentral","getUseBC","isSelectYearToPayDisabled","isReadOnly","unSelectedYearsToPay","lastSelectedFee","selectedYear","feeAmount","submitPayment","currentTarget","updatedPayment","amount","getTotalAmount","dto","newInvoices","invoiceNumbers","invoiceNumber","invoiceReceipt","isSuccessful","setTimeout","scrollIntoView","behavior","onSaveBlock","updateTotal","getPaidStatus","blockYears","CCAttestationType","CCAttestation","ccAttestationId","ccAttestationType","appliedToYear","credits","selfReportedCredits","attestationDate","CCActivityRequirements","hasPipClinicalAttestation","isPIPClinicalChecked","setIsPIPClincalChecked","hasPipFeedbackAttestation","isPIPFeedbackChecked","setIsPIPFeedbackChecked","hasPatientSafetyCompleted","isPSChecked","setIsPSChecked","isEditingAttestations","setIsEditingAttestations","displaySuccessSaveAlert","setDisplaySuccessSaveAlert","isFormDirty","setIsFormDirty","setCCBlock","block","isPSVerified","ccVerifiedActivities","isPatientSafety","isPIPClinicalVerifiedChecked","isPipClinical","isPIPFeedbackVerifiedChecked","isPipFeedback","isPipRequired","isPIPDisabled","selfAttestedPIPClinicalCredits","selfAttestedPIPFeedbackCredits","selfAttestedPSCredits","totalWaivedAndEarnedCMECredits","totalCMEAttestationCredits","totalWaivedCMECredits","totalVerifiedCMECredits","totalWaivedAndEarnedSACredits","totalSAAttestationCredits","totalWaivedSACredits","totalVerifiedSACredits","overageOfSACredits","requiredSACredits","percentCMECredits","round","requiredCMECredits","percentSACredits","toggleEdit","createNewAttestation","newAttestation","endYear","updateCCAttestations","attestation","newCCBlock","ccAttestations","PIPClinical","filteredPIPClinicalList","PIPFeedback","filteredPIPFeedbackList","CME","SA","hasPassedAudit","hasFailedAudit","hasAudit","when","endDate","ProgressBar","now","hasPipWaiver","getPipRequirementMessage","isPatientSafetyRequired","isActivityRequirementsCompleted","url","saveAllCCAttestations","Table","responsive","ccAppliedWaivers","waiverTypeDescription","cmeCredits","saCredits","min","step","updateSelfReportedSACME","parseFloat","updateSelfReportedCME","Input","updateIsPIPClinicalChecked","updateIsPIPFeedbackChecked","PatientSafety","updateIsPSChecked","open","AbccAssessmentCertificationCard","numPassed","abccAssessmentCertification","ccArticleResults","isPass","numPassedAndWaived","waivedArticles","numFailed","percentPassed","perCertificateArticleRequirement","role","perCertificateMaxFailsAllowed","ArticleResultList","articleResults","articleResult","articleTitle","completedDate","rescore","rescoreDate","esoArticleId","AbccAssessmentCard","detailVisible","setDetailVisible","getTotalPassed","totalPassed","abccAssessment","abccAssessmentCertifications","getTotalFailed","totalFailed","anyCertsFailed","certFails","allCertificationsMeetMinimumRequirement","certTotalPassed","totalPassedIncludingWaived","totalPercentPassed","totalArticleRequirement","totalPercentFailed","attemptsAllowed","totalFailMax","getAllArticleResults","allArticleResults","ccArticleResult","dueDate","blockStartDate","startDate","articlesBeforeBlockStart","anyArticlesCompletedBeforeBlockStart","certificationId","getStatusMessage","ExamAssessmentCard","examAssessment","isNaN","NonAbpnAssessmentCard","nonAbpnAssessment","CCAssessments","assessments","setAssessments","examAssessments","nonAbpnAssessments","CCBlockCard","setBlockYears","isCurrentBlock","ccEnrollment","isActivitiesReadOnly","isFeesReadOnly","showErrors","extensionDate","isNewestBlock","startYear","apply","isBlockInFuture","outstandingRequirements","isMeetingLicenseRequirement","requirementType","isMeetingFeeRequirement","Fees","isMeetingPatientSafetyRequirement","isMeetingPIPRequirement","PIP","isMeetingCMERequirement","isMeetingAuditRequirement","FailedAudit","isMeetingActivityRequirements","showActivityRequirements","showFees","newBlockYears","determineBlockYears","hideLicenses","CCEnrollmentCard","currentBlock","currentEnrollment","isBehindOnCurrentBlock","nextBlock","addresses","isContact","updatedBlock","CandidateStatus","KnownCandidateStatusReason","ApplicationModel","applicationId","examinationId","balance","orderNumber","examLateFee","totalFeeAmount","totalExamFeeAmount","hasAttested","needsFinalReview","attestationContent","installmentOptions","createdDate","isAdaRequested","isNmaRequested","isTransferredIn","isSplitPay","candidateStatusDescription","candidateStatusReason","candidateStatus","knownCandidateStatusReason","modularCertificationIds","order","cnpType","hasDeadlineException","ExaminationGrade","ExamineeStatus","ExamineeStatusReason","ReEntryAssessmentCertificationCard","reEntryAssessmentCertification","perCertificationArticleRequirement","ReEntryAssessmentCard","assessment","reEntryAssessmentCertifications","failureMax","attemmtpsAllowed","percentFailed","totalAttempts","ArticleReentryExaminationCard","reEntryAssessments","setReEntryAssessments","AssessmentCard","articleFailureMax","articleRequirement","examDueHeader","isArticleBasedExam","articleStatusMessage","releaseGrades","ArticleExaminationCard","setAssessment","exam","examineeId","ExaminationsCard","examsAppliedTo","setExamsAppliedTo","isLoading","setIsLoading","exams","getDateTimeFormatted","toLocaleTimeString","hour","minute","hour12","getCandidateStatusDescription","application","ToBeReviewed","Approved","Withdrawn","Denied","Withdrew","Unsubmitted","getApplicationDeadlineDate","getCandidateStatusReason","TransferredOut","getExamineeStatusDescription","examineeStatus","Authorized","appointments","Delivered","examineeStatusReasonId","NoShow","Invalidated","examineeStatusReason","examineeStatusDescription","removeDeletedApplicationExam","hideMakePaymentButton","getPaymentButtonText","getExamDateTitle","getExamDates","applicationDeadlineDate","isGradeAvailable","examinationGrade","GradingComplete","confirmDeleteApplication","isConfirming","updatedExams","isConfirmingDelete","isReEntry","isArticleBased","title","moduleSelection","formattedCnpType","startDateTime","addressLine1","addressLine2","addressLine3","postalCode","showExamineeStatus","AuthorizationPending","NA","InviteSent","deleteApplication","Banner","HeaderWithTitle","subTitle","DemographicPromptResponseModel","demographicPromptResponseId","personKey","primaryActionTaken","permanentlyDismiss","ProfileContext","ProfileProvider","setUser","auth","loadUser","userResult","otherBoardPhysicianId","Home","setPhysician","showDemographicsModal","setShowDemographicsModal","demographicPromptResponse","setDemographicPromptResponse","history","useHistory","loadDemographicPromptResponse","physicianResult","promptResponseResult","getPhysician","updateLastLogin","isOtherBoardPhysician","onDemographicsModalClose","saveDemographicPromptResponse","demographicPromptResponseModel","backdrop","aria-labelledby","centered","keyboard","Header","closeButton","updatedModel","fullName","LogoutActions","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationPrefix","Login","StaffLogin","LoginFailed","LoginCallback","LogOut","LoggedOut","LogOutCallback","SearchForAccount","OnBehalfOf","Callback","LogoutCallback","Logout","useParams","decodedUrl","decodeURIComponent","ApiAuthorizationRoutes","exact","path","component","NavItems","logoutPath","pathname","local","Dropdown","Toggle","Menu","Item","Link","NavDropdown","Divider","authenticatedView","NavMenu","isErrorPage","Navbar","NavbarBrand","Image","otherBoardPhysicianCode","NavbarToggle","Layout","Container","fluid","ErrorPage","AvailableExaminationCard","currentDate","setHours","isLateApplication","valueOf","examination","applicationDeadLineDate","applicationAvailableDate","nextApplicationAvailableDate","isAvailable","filteredExamCertifications","ccEnrollmentExamCertificates","ccEnrollmentExamCertificationIds","certification_Key","availableModuleCertifications","examFee","lateFee","infoUrl","applyLinkTo","AvailableExaminationGroup","examinations","CardColumns","filteredExaminations","AvailableApplicationGrid","availableExams","setAvailableExams","loading","setLoading","loadData","isMoc","KnownExaminationDefinitions","KnownCertifications","AuthorizeRoute","rest","render","StaffOnlyRoute","AddressType","AddressVerificationStatus","Address","homePhoneNumber","officePhoneNumber","company","company2","line1","line2","zipCode","faxNumber","types","addressId","updatedDate","updatedBy","newAreaCode","verificationStatus","AddressValidation","getAddressString","address","data","originalAddress","suggestedAddress","onUseSuggested","onUseAsEntered","AddressForm","addressVerificationResult","validated","showAddressValidation","showStreetAddress","setData","runValidation","prevData","updatedData","getElementById","runMelissaValidation","filterStates","Public","Shipping","UseAsEntered","UseSuggested","updateWithSuggestedAddress","addressVerificationResults","validationResult","onVerificationSelection","verficationSelection","updatedAddress","onUpdate","verifyAndSaveAddress","updateLine1","updateLine2","country","countries","updateCountry","updateCity","updateZipCode","updatePhoneNumber","showSubmit","submitText","showCancel","onCancel","ApplicantInformation","newContactAddress","Contact","createNewContactAddress","isNewPhysician","onOpen","publicationAndShippingAddress","publicationAddress","shippingAddress","buildAddressList","FeeType","PaymentCard","hasExistingOrder","orderWithFirstPaymentDue","total","isDisable","setIsDisable","payContainerRef","isPastDeadline","deadlineDate","toDateString","getNonExamAndApplicationFees","otherFees","totalInstallmentsAmount","dueNow","totalBalance","isPayInFull","isPayInSplit","paymentPlan","setPaymentPlan","existingOrderWithSplitPay","hasPaymentPlan","existingOrderWithFirstPaymentDue","hasBalanceDue","canSelectPaymentPlan","isFirstInstallmentPastDue","isSecondInstallmentPastDue","getPaymentPlanAmountDueNow","isFirstInstallmentSelected","isSecondInstallmentSelected","selectedInstallmentPayments","setSelectedInstallmentPayments","submit","event","applicationReceipt","onApplicationSubmitted","isInstallmentPayment","displayBanner","getPaymentDeadlineDate","applicationLateDeadlineDate","getLateFeeDate","orderLineItem","feeType","lateFeeMoc","lateFeeInitial","formattedDate","getFeeDescription","fee","isDiscount","ccAnnualFee","multipleExamDiscount","committeeMemberDiscount","committeeMemberLateFeeDiscount","committeeMemberProcessingFeeDiscount","committeeMemberTransferFeeDiscount","feeDescription","resetPaymentPlan","examinationDates","orderLineItems","description","completedPayments","transactionDate","defaultChecked","updateInstallmentsSelectedTotal","setPayInFull","setSplitPayment","initialLateFee","getExamLateFee","MedicalLicenseInformation","onContinue","areLicensesValid","requiresUnrestrictedLicense","examStartDate","AttestationStatement","ReactHtmlParser","onApplicationAttestedToggled","TestingOptions","AlternativePathwayPracticeOption","PathwayMethod","selection","setSelection","setErrorMessage","isNoAccommodationRequested","validateSelection","noAccommodation","toggleNoAccommodation","toggleAda","toggleNma","SubspecialtyTraining","subspecialtyTrainingId","trainingProgramId","trainingInstitutionName","monthsCredit","isPartTime","percentTimeForPractice","practiceCertificationBoard","practiceCertificationDate","practiceLocation","practiceTime","pathwayMethod","TrainingRequirements","subSpecialtyTraining","setSubspecialtyTraining","alternatePathwayEndDate","alternativePathwayEndDate","isInAlternativePathwayPeriod","hasOnePathwayOption","pathwayOptions","endDateFormElement","practiceCertDateElement","practiceBoardId","practiceBoardElement","existing","subSpecialtyTrainingList","validateDates","subspecialty","Fellowship","OtherBoard","Practice","updateProgramName","updateStartDate","updateEndDate","updateIsPartTime","getPathwayOptionLabel","pathway","updatePathwayMethod","pathwayMethodId","resetTrainingValues","training","saveSubspecialtyTraining","examinationDefinitionId","NeurocriticalCare","BrainInjuryMedicine","FormGroup","startDateYear","getFellowshipRequirementText","updatePracticeCertificationBoard","otherBoardPathwayOptions","otherBoard","updatePracticeCertificationDate","updatePracticeLocation","practicePathwayOptions","updatePracticeTime","ApplicationReceived","totalFees","hasInstallments","installments","getAssessmentType","getSecureExamNextStepsText","requiresFellowshipTraining","openInfoUrl","getArticleBasedExamNextStepsText","orderDate","cardHolderName","paymentMethod","amountPaid","lastInstallmentDate","getSplitPaymentDeadlineDate","CnpTypes","CnpOptions","setCnpType","newValue","cnpTypeUpdated","updateCnpType","Modules","physicianInactivePrimaryCertIds","requiredCertificationIds","moduleTypes","moduleSelections","setModuleSelections","availableCertificationIds","setAvailableCertificationIds","errorMessages","setErrorMessages","selections","newErrorMessages","ClinicalNeurophysiology","updateModuleSelection","updatedCnpType","isChecked","module","isRequired","moduleTypeId","isCnp","getCertificate","moduleType","availablePhysicianModules","existingSelectedModules","isExistingSelectedModuleType","filteredExamModules","examCertificationIds","Number","modules","filterAvailableModules","examinationModuleId","CnpSection","setIsValid","ActionResultMessage","alertVariant","InvoiceStatus","InvoiceLineItemModel","unitPrice","discountAmount","discountDescription","product","InvoiceModel","createDate","lineItems","invoiceStatus","appliedPayment","isExpanded","amountDue","sum","InvoicePaymentCard","invoices","setInvoices","unpaidInvoices","unpaidLineItems","flatMap","isLoadingInvoices","setIsLoadingInvoices","hasInvoice","loadInvoices","results","isExamFee","feeTypeId","newInvoice","newResults","Abandoned","WrittenOff","balanceDue","reloadedInvoices","examFeeMoc","examFeeMocPrimaryInitial","examFeeMocWithThreeOrMoreModules","examFeeMocWithTwoModules","examFeeSubspecialtyinitial","displayInvoiceLineItemDiscount","InvoiceApplicationReceived","ApplicationSection","receipt","invoice","invoiceLineItemDiscount","lineItem","invoiceDetail","Application","setExamination","setApplication","setAttestationContent","isSubmitted","setIsSubmitted","displayPaymentSuccessful","setDisplayPaymentSuccessful","setApplicationReceipt","setReceipt","navigateToPaySection","sectionsComplete","activeSections","sectionNavigation","setSectionNav","applicationRequiresTrainingSection","exceptionText","formattedApplicationDeadlineDate","previousSectionComplete","section","saveApplication","isNewApplication","params","existingApplication","applicationDto","isCombinedMoc","Payment","goToPaySection","applicationCreatedDate","template","onAttestationContinue","onTestingOptionsContinue","onCertificationSelectionContinue","moduleCertificationKeys","onCnpSectionContinue","updateSectionsComplete","updatedNav","isSectionDisabled","addressesToKeep","saveAllAddresses","Neurology","ChildNeurology","Psychiatry","examinationModules","filteredCCEnrollmentCertificateIds","filteredPhysicianCertificates","filteredExamCertificationIds","subspecialtyTrainingList","updateSubSpecialtyTraining","isSectionAvailable","ExaminationReport","ExamHistory","examHistory","setExamHistory","examinationIdDownloading","setExaminationIdDownloading","getGrade","Pass","Fail","UnexcusedAbsence","downloadExamResultsAvailable","hasExamineeDocuments","showConfirmPersonalInfoMessage","setDate","cutoff","isInConfirmDateRange","showConfirmPersonalInfoMessageMOC","Unauthorized","CCActivity","ccActivityId","activityName","organizationName","isSa","SelfReportedActivityRow","selfReportedActivity","originalSelfReportedActivity","setOriginalSelfReportedActivity","updatedSelfReportedActivity","setUpdatedSelfReportedActivity","setIsConfirmingDelete","organizationErrorMessage","setOrganizationErrorMessage","dateErrorMessage","setDateErrorMessage","cmeErrorMessage","setCmeErrorMessage","saCmeErrorMessage","setSaCmeErrorMessage","clearValidation","colSpan","minWidth","updateCompletedDate","handleUpdate","ManageActivities","verifiedActivities","setVerifiedActivities","verifiedActivitiesStartDate","setVerifiedActivitiesStartDate","verifiedActivitiesEndDate","setVerifiedActivitiesEndDate","selfReportedActivities","setSelfReportedActivities","selfReportedActivitiesStartDate","setSelfReportedActivitiesStartDate","selfReportedActivitiesEndDate","setSelfReportedActivitiesEndDate","filteredSelfReportedActivities","setFilteredSelfReportedActivities","filterInputUpdate","setFilterInputUpdate","dateSort","sortedVerifiedActivities","sortedSelfReportedActivities","ccSelfReportedActivities","filterededVerifiedActivities","newFilterededSelfReportedActivities","removeSelfReportedActivity","updateSelfReportedActivity","clearSelfReportedFitler","forceFilterInputUpdate","onBlur","newSelfReportedActivity","unshift","table","scrollTop","addNewSelfReportedActivity","EmailNotFound","PasswordControl","inputType","setInputType","iconName","setIconName","InputGroup","minLength","SecurityCard","currentEmail","setCurrentEmail","updatedEmail","setUpdatedEmail","isEditingEmail","setIsEditingEmail","isEditingPassword","setIsEditingPassword","changePasswordModel","setChangePasswordModel","showEmailSuccess","setShowEmailSuccess","showPasswordSuccess","setShowPasswordSuccess","passwordErrorMessage","setPasswordErrorMessage","emailErrorMessage","setEmailErrorMessage","validatePassword","setValidatePassword","isNewPasswordValid","newPassword","confirmNewPassword","changeEmailAddress","changeEmailModel","registerClientId","ssn4","dateOfBirth","res","currentPassword","PersonalCard","currentName","viewInstructionsButton","focus","AddressesCard","setAddresses","setContactAddress","setShippingAddress","publicAddress","setPublicAddress","isEditingContactAddress","setIsEditingContactAddress","isEditingShippingAddress","setIsEditingShippingAddress","isEditingPublicAddress","setIsEditingPublicAddress","showSuccess","setShowSuccess","setAddressesFromList","saveAddress","addressList","createNewAddress","newAddress","updatedContact","removeAddressType","updatedPublic","updatedShipping","displayAddress","isPublic","EthnicityType","GenderType","PhysicianDemographicModel","physicianDemographicId","ethnicity","gender","races","PhysicianDemographicCard","demographicModel","setDemographicModel","showDeleteSuccess","setShowDeleteSuccess","handleDemographicEthnicityChange","handleDemographicGenderChange","handleDemographicRaceChange","race","isDemographicRaceChecked","raceId","htmlFor","NoAnswer","AccountInformation","ActionResult","alertType","AccountAssistance","mailToLink","setMailToLink","updatePersonalInfoLink","setUpdatePersonalInfoLink","PhysicianPortalHelp","UpdatePersonalInfoInstructions","hascompletedResidency","showSearchAgain","searchAgain","showLogin","SearchPhysicianModel","siteToken","SearchPhysician","setModel","captchaResponse","setCaptchaResponse","siteKey","setSiteKey","ssn4Ref","Captcha","SiteKey","updateDateOfBirth","updateLastFourOfSSN","sitekey","handleCaptcha","ActivateUser","UpdateEmail","setEmail","emailUnavilable","setEmailUnavaliable","activatePhysician","activateModel","ActivationSelectExam","noExamsAvailable","setNoExamsAvailable","hasNoExams","reportNoExams","searchModel","matchResult","setMatchResult","alert","setAlert","hasCompletedResidency","setHasCompletedResidency","allowUpdateEmail","isExactMatch","requiresAccountAssistance","showExamSelection","showAccountAssistance","showResidency","registerUserAccount","userModel","newAlert","MedicalEducation","medicalEducationId","graduationYear","locationId","isGraduationYearValid","isLocationIdValid","PhysicianCreation","medicalEducation","examinationAppliedToId","PhysicianName","middleName","suffix","MedicalEducationCard","updateMedicalEducationValidation","isFormValid","updateMedicalEducation","updateGraduationYear","medicalEducationModel","medicalEducationLocationLookupList","updateLocationId","PersonalEmailCard","isNewEmailUnique","setIsNewEmailUnique","isFormatValid","setIsFormatValid","encodedLoginUrl","encodeURIComponent","validFormatAndNotUniqueEmail","isEmailValid","updateEmailValidation","updatePersonalEmail","isEmailFormValid","PersonalInformationCard","setName","newName","physicianData","createPhysicianName","updatePersonalInformationValidation","updatedName","updatePersonalInformation","updateMiddleName","updateSuffix","updateTitle","PersonalInformation","useLocation","physicianModel","setPhysicianModel","newPhysician","setNewPhysician","showAlert","setShowAlert","setRunValidation","isMedicalEducationFormValid","setIsMedicalEducationFormValid","isPersonalInfoFormValid","setIsPersonalInfoFormValid","isAddressFormValid","setIsAddressFormValid","isNewEmailValid","setIsNewEmailValid","setUserModel","createNewPhysician","CreatePhysician","updatePhysicianName","isPersonalInformationValid","updateContactAddress","isMedicalEducationValid","newUserModel","validateAndSave","ArticleRequirementPreview","getAbccCertifications","pathwayEnrollment","ccEnrollmentCertificates","isEnrolled","isAbccEligible","articlePathwayPerCertificationMinimum","articlePathwayFlexRequirement","abccCert","totalRequired","getTotalArticlesRequired","ExamRequirementPreview","getExamCertifications","Other","getExamAssessmentTitle","formatExamDue","CcAssessmentPathwayEnrollment","ccEnrollmentId","currentBlockStart","currentBlockEnd","currentBlockExtensionDate","oneCertificationAnnualFee","twoCertificationAnnualFee","threeOrMoreCertificationAnnualFee","CCAssessmentPathwayHelper","AnnualFeePreview","isFuture","getAnnualFee","ReviewRequirements","onPrevious","SelectCertificationRow","updateCcAssessmentType","updatedCert","lastArticleAssessmentEnrolledDate","updateEnrollmentCert","updateCertIsEnrolled","SelectCertifications","onUpdateEnrollmentCert","updateCertificates","ArticlePathwayTerms","abccCertificates","ccAssessmentAttestationDate","updateCertificateAttestation","ExamPathwayTerms","examCertificates","TermsAndAttestation","isSubmitDisabled","setIsSubmitDisabled","getEnrolledCertificates","onCompleteEnrollment","onUpdateCertificateAttestation","numCertificates","EnrollmentSection","UpdateCCAssessmentPathwayModel","cCEnrollmentId","cCEnrollmentCertificates","UpdateCCAssessmentPathwayCertificateModel","cCAssessmentType","cCAssessmentAttestationDate","enrollmentEndDate","ManageCCEnrollment","setPathwayEnrollment","enrollment","Certifications","Requirements","Terms","onUpdatedCertificates","onTermsCompleteEnrollment","OtherBoardHome","loadAssessments","OrdersAndInvoices","orders","setOrders","invoiceResults","orderDateSort","invoiceDateSort","sortedOrders","sortedInvoices","loadOrdersAndInvoices","getFees","Refund","getRefunds","getRefundsSubtotal","getTotalPaid","getBalance","getTotal","getFeeAmount","abs","downloadInvoice","updatedInvoices","collapseInvoiceRow","expandInvoiceRow","lineItemIndex","updatedOrders","orderId","collapseRow","expandRow","incurredDate","orderLineItemId","paymentIndex","refund","installment","installmentIndex","Messages","messages","setMessages","loadMessages","downloadMessageDocument","messageId","messageTemplateName","subject","downloadMessageAttachment","messageAttachment","messageAttachmentId","documentName","statusDate","attachments","App","load","basename","errorPageUrl","setErrorPage","strict","InvoicesAndReceipts","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode"],"mappings":"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","file":"static/js/main.a2a9b949.chunk.js","sourcesContent":["import { EnvironmentConfiguration } from \"./EnvironmentConfiguration\";\r\n\r\nclass ConfigService {\r\n\r\n private _configuration: EnvironmentConfiguration;\r\n\r\n public async getConfiguration(): Promise {\r\n\r\n if (this._configuration) return Promise.resolve(this._configuration);\r\n\r\n const response = await fetch(\"/physicianportal/config.json\")\r\n this._configuration = await response.json();\r\n \r\n return this._configuration;\r\n }\r\n}\r\n\r\nexport const configService = new ConfigService();","import { configService } from \"./Config/ConfigService\";\r\n\r\nexport class IdentityServerKnownClient {\r\n static physicianPortal: string = \"physicianportal\";\r\n}\r\n\r\nclass AbpnClient {\r\n private _baseUri: string;\r\n public _errorPage: string;\r\n\r\n private async ensureConfiguration() {\r\n if (this._baseUri) return;\r\n\r\n this._baseUri = (await configService.getConfiguration()).AbpnApiUrl;\r\n }\r\n\r\n private async getDefaultHeaders(authContext: any) {\r\n const token = authContext?.isAuthenticated() ? await authContext.getAccessToken() : null;\r\n const headers = token ? [['Authorization', `Bearer ${token}`]] : [];\r\n headers.push(['Pragma', 'no-cache']);\r\n\r\n var onBehalfOf = await authContext?.getOnBehalfOf();\r\n\r\n if (onBehalfOf) {\r\n headers.push(['X-OBO-PhysicianId', onBehalfOf]);\r\n }\r\n return headers;\r\n }\r\n\r\n private async validateResponse(response: Response): Promise {\r\n if (response.status === 401) {\r\n return Promise.reject(response.status);\r\n }\r\n if (!response.ok) {\r\n var clone = response.clone();\r\n const text = await clone.text();\r\n throw Error(`(${response.statusText}) ${text}}`);\r\n }\r\n return Promise.resolve(response);\r\n }\r\n\r\n private async castResponse(response: Response): Promise {\r\n const text = await response.text();\r\n if (!text) {\r\n return null;\r\n }\r\n return JSON.parse(text) as T;\r\n }\r\n\r\n private async handleError(error: any, authContext: any): Promise {\r\n if (error.message === \"Unauthorized\" || error === 401) {\r\n authContext.logout();\r\n return Promise.reject(error);\r\n }\r\n\r\n window.location.href = this._errorPage;\r\n return Promise.reject(error);\r\n\r\n }\r\n\r\n setErrorPage(errorPage: string) {\r\n\r\n this._errorPage = errorPage;\r\n }\r\n\r\n async post(relativePath: string, body: any, authContext: any): Promise {\r\n await this.ensureConfiguration();\r\n\r\n const headers = await this.getDefaultHeaders(authContext);\r\n headers.push([\"Content-Type\", \"application/json\"]);\r\n return fetch(this._baseUri + relativePath,\r\n {\r\n method: \"post\",\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n })\r\n .then(this.validateResponse)\r\n .then(response => this.castResponse(response))\r\n .catch(error => this.handleError(error, authContext));\r\n }\r\n\r\n async postStringResponse(relativePath: string, body: any, authContext: any): Promise {\r\n await this.ensureConfiguration();\r\n\r\n const headers = await this.getDefaultHeaders(authContext);\r\n headers.push([\"Content-Type\", \"application/json\"]);\r\n return fetch(this._baseUri + relativePath,\r\n {\r\n method: \"post\",\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n })\r\n .then(this.validateResponse)\r\n .catch(error => this.handleError(error, authContext));\r\n }\r\n\r\n async get(relativePath: string, authContext: any): Promise {\r\n await this.ensureConfiguration();\r\n\r\n const headers = await this.getDefaultHeaders(authContext);\r\n return fetch(this._baseUri + relativePath, {\r\n method: \"GET\",\r\n headers: headers\r\n })\r\n .then(this.validateResponse)\r\n .then(response => this.castResponse(response))\r\n .catch(error => this.handleError(error, authContext));\r\n }\r\n\r\n async getResponse(relativePath: string, authContext: any): Promise {\r\n await this.ensureConfiguration();\r\n\r\n const headers = await this.getDefaultHeaders(authContext);\r\n return fetch(this._baseUri + relativePath, {\r\n headers: headers\r\n })\r\n .then(this.validateResponse)\r\n .catch(error => this.handleError(error, authContext));\r\n }\r\n}\r\nexport const abpnClient = new AbpnClient();","\r\nimport { UserManager, WebStorageStateStore, Log } from \"oidc-client\";\r\nimport ChangePasswordModel from \"../../Components/Account/Models/ChangePasswordModel\";\r\nimport ActivateUser from \"../../Components/Auth/Models/ActivateUser\";\r\nimport { configService } from \"../Config/ConfigService\";\r\nimport ChangeEmailModel from \"../../Components/Account/Models/ChangeEmailModel\";\r\n\r\nexport default class AuthService {\r\n\r\n constructor(errorPage: string) {\r\n this.errorPage = errorPage;\r\n }\r\n\r\n userManager?: UserManager = undefined;\r\n authUrl?: string;\r\n clientId?: string;\r\n errorPage: string;\r\n onBehalfOfHeader: string = \"oboPhysicianId\";\r\n\r\n initialize = async () => {\r\n var configuration = await configService.getConfiguration();\r\n this.authUrl = configuration.AbpnIdentity.Authority;\r\n this.clientId = configuration.AbpnIdentity.ClientId;\r\n let settings =\r\n {\r\n authority: this.authUrl,\r\n client_id: this.clientId,\r\n redirect_uri: configuration.AbpnIdentity.RedirectUri,\r\n post_logout_redirect_uri: configuration.AbpnIdentity.PostLogoutRedirectUri,\r\n response_type: \"code\",\r\n automaticSilentRenew: false,\r\n loadUserInfo: false,\r\n scope: configuration.AbpnIdentity.Scope,\r\n userStore: new WebStorageStateStore({ store: window.sessionStorage })\r\n };\r\n\r\n this.userManager = new UserManager(settings);\r\n // Logger\r\n Log.logger = console;\r\n Log.level = Log.DEBUG;\r\n this.userManager.events.addUserLoaded(() => {\r\n if (window.location.href.indexOf(\"signin-oidc\") !== -1) {\r\n this.navigateToScreen();\r\n }\r\n });\r\n this.userManager.events.addSilentRenewError((e) => {\r\n console.log(\"silent renew error\", e.message);\r\n });\r\n\r\n this.userManager.events.addAccessTokenExpired(() => {\r\n console.log(\"token expired\");\r\n this.signinSilent();\r\n });\r\n }\r\n\r\n\r\n signinRedirectCallback = () => {\r\n this.userManager.signinRedirectCallback().then(() => {\r\n var redirectUrl = localStorage.getItem(\"redirectUri\");\r\n window.location.replace(redirectUrl);\r\n });\r\n };\r\n\r\n\r\n getUser = async () => {\r\n const user = await this.userManager.getUser();\r\n if (!user) {\r\n return await this.userManager.signinRedirectCallback();\r\n }\r\n return user;\r\n };\r\n\r\n getAccessToken = async () => {\r\n var user = await this.getUser();\r\n return user && user.access_token;\r\n }\r\n\r\n setOnBehalfOf = (physicianId: string | null) => {\r\n if (physicianId) {\r\n sessionStorage.setItem(this.onBehalfOfHeader, physicianId);\r\n }\r\n }\r\n\r\n getOnBehalfOf = () => sessionStorage.getItem(this.onBehalfOfHeader);\r\n\r\n parseJwt = (token: string) => {\r\n const base64Url = token.split(\".\")[1];\r\n const base64 = base64Url.replace(\"-\", \"+\").replace(\"_\", \"/\");\r\n return JSON.parse(window.atob(base64));\r\n };\r\n\r\n signinRedirect = (emailPrefill: string = null, redirectUri: string = null) => {\r\n if (redirectUri) {\r\n localStorage.setItem(\"redirectUri\", redirectUri);\r\n }\r\n if (sessionStorage.getItem(this.onBehalfOfHeader)) {\r\n sessionStorage.removeItem(this.onBehalfOfHeader);\r\n }\r\n this.userManager.signinRedirect({ login_hint: emailPrefill });\r\n };\r\n\r\n staffSigninRedirect = () => {\r\n localStorage.setItem(\"redirectUri\", window.location.href);\r\n this.userManager.signinRedirect({ acr_values: \"idp:aad\" });\r\n };\r\n\r\n navigateToScreen = () => {\r\n window.location.replace(\"/en/dashboard\");\r\n };\r\n\r\n\r\n isAuthenticated = () => {\r\n console.log('authenticating...');\r\n const oidcStorage = JSON.parse(sessionStorage.getItem(`oidc.user:${this.authUrl}:${this.clientId}`))\r\n\r\n console.log(`oidc.user:${this.authUrl}:${this.clientId}: ${oidcStorage}`);\r\n\r\n return (!!oidcStorage && !!oidcStorage.access_token)\r\n };\r\n\r\n signinSilent = () => {\r\n this.userManager.signinSilent()\r\n .then((user) => {\r\n console.log(\"signed in\", user);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n };\r\n signinSilentCallback = () => {\r\n this.userManager.signinSilentCallback();\r\n };\r\n\r\n createSigninRequest = () => {\r\n return this.userManager.createSigninRequest();\r\n };\r\n\r\n logout = async () => {\r\n const user = await this.userManager.getUser();\r\n await this.userManager.signoutRedirect({\r\n id_token_hint: user?.id_token\r\n });\r\n await this.userManager.clearStaleState();\r\n };\r\n\r\n changeEmail = (model: ChangeEmailModel) => {\r\n return fetch(this.authUrl + \"/account/ChangeEmail\",\r\n {\r\n method: \"post\",\r\n headers: [['Pragma', 'no-cache'], [\"Content-Type\", \"application/json\"]],\r\n body: JSON.stringify(model)\r\n });\r\n }\r\n\r\n changePassword = (model: ChangePasswordModel) => {\r\n return fetch(this.authUrl + \"/account/ChangePassword\",\r\n {\r\n method: \"post\",\r\n headers: [['Pragma', 'no-cache'], [\"Content-Type\", \"application/json\"]],\r\n body: JSON.stringify(model)\r\n });\r\n }\r\n \r\n register = (model: ActivateUser) => {\r\n return fetch(this.authUrl + \"/account/Register\",\r\n {\r\n method: \"post\",\r\n headers: [['Pragma', 'no-cache'], [\"Content-Type\", \"application/json\"]],\r\n body: JSON.stringify(model)\r\n })\r\n .then(response => {\r\n return response.ok;\r\n })\r\n .catch(error => {\r\n window.location.href = this.errorPage;\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n}","import React from \"react\";\r\nimport { Spinner } from \"react-bootstrap\";\r\n\r\nexport function AbpnSpinner() {\r\n return
;\r\n}\r\n\r\nexport default AbpnSpinner;\r\n","export class Certificate {\r\n certificateId: number;\r\n examinationId: number;\r\n certificationId: number;\r\n certificationName: string;\r\n isPrimary: boolean;\r\n certificateStatus: number;\r\n awardDateOrRecertifiedDate: Date;\r\n expirationDate: string;\r\n awardDate: string;\r\n certificateNumber: number;\r\n clinicalStatus: number;\r\n ccStatus: number;\r\n ccStatusDisplay: string;\r\n certificationGeneration: number;\r\n isOtherBoard: boolean;\r\n recertifiedDate: string;\r\n isHPM: boolean;\r\n isLifeTimeWithTenYear: boolean;\r\n}\r\n\r\nexport enum CertificateStatus {\r\n Active = 1,\r\n Inactive = 2\r\n}\r\n\r\nexport const ClinicalStatus: { [key: number]: string } = {\r\n 1: \"Unknown\",\r\n 2: \"Clinically Active\",\r\n 3: \"Clinically Inactive\",\r\n 4: \"Did Not Report\",\r\n 6: \"Clinically Active Not Enough For PIP\"\r\n}\r\n\r\nexport enum CCStatus {\r\n Meeting = 1,\r\n VoluntarilyMeeting = 2,\r\n NotMeeting = 3,\r\n NotRequired = 4\r\n}\r\n\r\nexport enum CertificationGeneration\r\n{\r\n Lifetime = 1,\r\n TenYear = 2,\r\n Cc = 3\r\n}","import React, { Component } from \"react\";\r\nimport AuthService from \"../../Services/Auth/AuthService\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\n\r\nexport const AuthContext = React.createContext({\r\n signinRedirectCallback: (): void => { },\r\n logout: (): void => { },\r\n isAuthenticated: (): boolean => (false),\r\n signinRedirect: (_emailPrefill: string = null,_redirectUrl: string = null): void => { },\r\n staffSigninRedirect: (): void => { },\r\n signinSilentCallback: (): void => { },\r\n createSigninRequest: (): void => { },\r\n setOnBehalfOf: ({ }): void => { },\r\n getOnBehalfOf: (): string => (null),\r\n getAccessToken: (): Promise => (null),\r\n changeEmail: ({}): Promise => (null),\r\n changePassword: ({ }): Promise => (null),\r\n register: ({}): Promise => (null),\r\n});\r\n\r\nexport const AuthConsumer = AuthContext.Consumer;\r\n\r\nexport class AuthProvider extends Component {\r\n authService;\r\n constructor(props: any) {\r\n super(props);\r\n this.authService = new AuthService(props.errorPage);\r\n\r\n this.state = {\r\n isReady: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.authService.initialize()\r\n .then(() => {\r\n this.setState({ isReady: true })\r\n });\r\n }\r\n\r\n render() {\r\n if (!this.state.isReady) {\r\n return \r\n }\r\n return {this.props.children};\r\n }\r\n}","/**\r\n * Deep copy function for TypeScript.\r\n * @param T Generic type of target/copied value.\r\n * @param target Target value to be copied.\r\n * @see Source project, ts-deepcopy https://github.com/ykdr2017/ts-deepcopy\r\n * @see Code pen https://codepen.io/erikvullings/pen/ejyBYg\r\n */\r\nexport const deepCopy = (target: T): T => {\r\n if (target === null) {\r\n return target;\r\n }\r\n if (target instanceof Date) {\r\n return new Date(target.getTime()) as any;\r\n }\r\n if (target instanceof Array) {\r\n const cp = [] as any[];\r\n (target as any[]).forEach((v) => { cp.push(v); });\r\n return cp.map((n: any) => deepCopy(n)) as any;\r\n }\r\n if (typeof target === 'object' && target !== {}) {\r\n const cp = { ...(target as { [key: string]: any }) } as { [key: string]: any };\r\n Object.keys(cp).forEach(k => {\r\n cp[k] = deepCopy(cp[k]);\r\n });\r\n return cp as T;\r\n }\r\n return target;\r\n };","export const getDateWithOffset = (date: string) => {\r\n if (Date.parse(date)) {\r\n var dateWithTimezone = new Date(date);\r\n var utcOffset = dateWithTimezone.toISOString();\r\n \r\n return new Date(utcOffset);\r\n }\r\n return null;\r\n };","import { Fragment, useContext, useEffect, useState } from \"react\";\r\nimport { Button, Col, Form, OverlayTrigger, Row, Tooltip } from \"react-bootstrap\";\r\nimport { Certificate, CertificateStatus, CertificationGeneration, ClinicalStatus } from \"../../../Physician/Models/Certificate\";\r\nimport { deepCopy } from \"../../../Shared/Utility/DeepCopy\";\r\nimport { LookupItem } from \"../../../Shared/Models/LookupItem\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport Physician from \"../../../Physician/Models/Physician\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps {\r\n physician: Physician,\r\n certificateGroup: Certificate[];\r\n onSave: (updatedCertificate: Certificate) => void;\r\n}\r\n\r\nexport function CertificateRow(props: IProps) {\r\n const [isEditing, setIsEditing] = useState(false);\r\n const [originalDisplayCertificate, setOriginalDisplayCertificate] = useState(null);\r\n const [displayCertificate, setDisplayCertificate] = useState(null);\r\n const [expiredCertificatesByDate, setExpiredCertificatesByDate] = useState([]);\r\n const authContext = useContext(AuthContext);\r\n\r\n let clinicalStatusOptions: Array = [];\r\n for (let key in ClinicalStatus) {\r\n let value = ClinicalStatus[key];\r\n if (value == \"Unknown\" || value == \"Did Not Report\") continue;\r\n clinicalStatusOptions.push({ id: parseInt(key), name: value })\r\n }\r\n\r\n useEffect(() => {\r\n let activeCertificate = props.certificateGroup.find(_ => _.certificateStatus === CertificateStatus.Active);\r\n let inactiveCertificatesByDate = props.certificateGroup.filter(_ => _.certificateStatus === CertificateStatus.Inactive).sort(\r\n (a, b) => getDateWithOffset(b.awardDate).getTime() - getDateWithOffset(a.awardDate).getTime()\r\n );\r\n let displayCert = activeCertificate ?? inactiveCertificatesByDate[0];\r\n setOriginalDisplayCertificate(displayCert)\r\n setDisplayCertificate(displayCert);\r\n setExpiredCertificatesByDate(inactiveCertificatesByDate)\r\n }, []);\r\n\r\n const beginEdit = () => {\r\n setIsEditing(true);\r\n }\r\n\r\n const cancel = () => {\r\n setDisplayCertificate(originalDisplayCertificate);\r\n setIsEditing(false);\r\n }\r\n\r\n const save = () => {\r\n const url = \"/api/Physician/UpdateCertificateClinicalStatus/\";\r\n abpnClient.post(url, displayCertificate, authContext).then(() => {\r\n setOriginalDisplayCertificate(displayCertificate);\r\n props.onSave(displayCertificate);\r\n setIsEditing(false);\r\n });\r\n }\r\n\r\n const updateClinicalStatusId = (e: React.ChangeEvent) => {\r\n var updated = deepCopy(displayCertificate);\r\n updated.clinicalStatus = e.target.value ? parseInt(e.target.value) : null;\r\n setDisplayCertificate(updated);\r\n }\r\n var lifetimeInfoIconContent = (
\r\n Non-Time Limited (Lifetime) certificates are not required to participate in the Continuing Certification (CC) program.\r\n

\r\n \r\n Diplomates who wish to participate in CC for a non-time limited (lifetime) certification will need to enroll in the traditional\r\n recertification/CC Exam OR the Article Based Continuing Certification (ABCC) pathway. Diplomates will pay the first annual fee for that\r\n certification at the time of enrollment, and will then be listed as \"Meeting\" CC/MOC requirements. Diplomates will have the next three years\r\n to pass the recertification/CC exam OR successfully complete 30 article exams, and complete the CC requirements.\r\n \r\n

\r\n \r\n Diplomates who choose the article pathway will need to continue to complete article exams each three-year block, in addition to\r\n satisfying the CC requirements. For more information about the ABCC pathway, please visit\r\n abpn.org.\r\n \r\n
);\r\n\r\n var ccLabel = \"Continuing Certification Status\";\r\n var mocLabel = \"MOC Status\";\r\n\r\n let isDisplayCertificateActive = displayCertificate?.certificateStatus == CertificateStatus.Active;\r\n\r\n let showInfoIcon = true;\r\n var infoIconContent: any;\r\n\r\n let showStatus = isDisplayCertificateActive;\r\n let ccMocStatusLabel: string;\r\n\r\n var displayEndDateLabel = false;\r\n var endDateLabel: string;\r\n var certificateEndDateDisplay: string; \r\n\r\n\r\n switch (displayCertificate?.certificationGeneration) {\r\n case CertificationGeneration.TenYear:\r\n showInfoIcon = false;\r\n ccMocStatusLabel = mocLabel;\r\n displayEndDateLabel = true;\r\n\r\n break;\r\n case CertificationGeneration.Lifetime:\r\n showStatus = true;\r\n infoIconContent = lifetimeInfoIconContent;\r\n ccMocStatusLabel = mocLabel;\r\n\r\n if (props.physician.currentCCEnrollment != null) {\r\n ccMocStatusLabel = ccLabel;\r\n }\r\n break;\r\n case CertificationGeneration.Cc:\r\n ccMocStatusLabel = ccLabel;\r\n break;\r\n default:\r\n break;\r\n }\r\n var isActiveCC = displayCertificate?.certificationGeneration === CertificationGeneration.Cc \r\n && displayCertificate.certificateStatus === CertificateStatus.Active;\r\n\r\n if (!isActiveCC && displayCertificate?.expirationDate && displayCertificate?.certificationGeneration != CertificationGeneration.Lifetime) {\r\n showInfoIcon = false;\r\n endDateLabel = \"Expiration\";\r\n displayEndDateLabel = true;\r\n certificateEndDateDisplay = getDateWithOffset(displayCertificate.expirationDate).toLocaleDateString();\r\n }\r\n\r\n let displayIsCertified =\r\n (isDisplayCertificateActive ?\r\n
Certified
\r\n :\r\n
Not Certified
\r\n );\r\n \r\n var infoIcon = (\r\n {infoIconContent}\r\n \r\n }>\r\n \r\n );\r\n\r\n if (props.physician.isRetired) {\r\n if (displayCertificate?.expirationDate) {\r\n displayEndDateLabel = true;\r\n endDateLabel = \"Retired Notification\"\r\n certificateEndDateDisplay = getDateWithOffset(displayCertificate.expirationDate).toLocaleDateString();\r\n }\r\n\r\n showInfoIcon = false;\r\n displayIsCertified =
Certified - Retired
\r\n }\r\n\r\n if (displayCertificate?.isHPM) displayIsCertified = (
ABPN issued certificates in Hospice and Palliative Medicine (HPM) from 2008-2021. In 2022, HPM certificates issued by ABPN were transitioned to the American Board of Internal Medicine (ABIM) for initial certification and continuing certification. \r\n For the current status of this certificate, please visit ABIM.org.
)\r\n\r\n if (displayCertificate == null) return \r\n return (\r\n \r\n \r\n \r\n
\r\n {displayCertificate.certificationName.toUpperCase()}\r\n {showInfoIcon && displayCertificate.certificationGeneration == CertificationGeneration.Lifetime &&\r\n infoIcon\r\n }\r\n
\r\n {displayIsCertified}\r\n \r\n \r\n \r\n \r\n
Awarded
\r\n
\r\n {getDateWithOffset(displayCertificate.awardDate).toLocaleDateString()}\r\n
\r\n \r\n {displayEndDateLabel &&\r\n \r\n \r\n
{endDateLabel}\r\n {showInfoIcon && displayCertificate.certificationGeneration == CertificationGeneration.Cc &&\r\n infoIcon\r\n }\r\n
\r\n
{certificateEndDateDisplay}
\r\n \r\n
\r\n }\r\n \r\n
Certificate Number
\r\n
{displayCertificate.certificateNumber}
\r\n \r\n
\r\n \r\n \r\n \r\n Clinical Status\r\n \r\n Diplomates are required to update their clinical status for each of their certifications at least every 24 months. There are four designations:
\r\n
    \r\n
  • Unknown- for statuses that have not been updated
  • \r\n
  • Active- Physicians who are treating patients. These diplomates need to complete the PIP requirement.
  • \r\n
  • Active, Not Enough for PIP- Physicians who are active, but are primarily in research, academic, or administrative roles insufficient to complete the PIP requirement.
  • \r\n
  • Inactive- Physicians who are not clinically active (i.e. medical leave, not practicing).
  • \r\n
\r\n If a diplomate is active in at least one certification, they will need to complete the PIP requirement.\r\n }>\r\n \r\n \r\n
\r\n {isEditing ?\r\n ) => { updateClinicalStatusId(e); }}\r\n defaultValue={displayCertificate.clinicalStatus}>\r\n \r\n {clinicalStatusOptions.map(x => ())}\r\n \r\n :\r\n
{ClinicalStatus[displayCertificate.clinicalStatus]}
\r\n }\r\n \r\n \r\n {isEditing ?\r\n \r\n \r\n \r\n \r\n :\r\n \r\n }\r\n \r\n
\r\n {showStatus &&\r\n \r\n
\r\n \r\n \r\n
{ccMocStatusLabel}
\r\n
{displayCertificate.ccStatusDisplay}
\r\n \r\n
\r\n
\r\n }\r\n {expiredCertificatesByDate.length > 0 &&\r\n \r\n
\r\n \r\n \r\n
Certification History
\r\n {displayCertificate.certificateStatus == CertificateStatus.Active &&\r\n
Certified on {getDateWithOffset(displayCertificate.awardDate).toLocaleDateString()} | Certificate Number {displayCertificate.certificateNumber}
}\r\n {expiredCertificatesByDate.map(_ =>\r\n
Certified from {getDateWithOffset(_.awardDate).toLocaleDateString()} to {getDateWithOffset(_.expirationDate).toLocaleDateString()} | Certificate Number {_.certificateNumber}
\r\n )}\r\n \r\n
\r\n
\r\n }\r\n \r\n
\r\n
\r\n
\r\n );\r\n}","\r\nexport class ValidatorHelper {\r\n constructor() {}\r\n\r\n static setCustomDatePickerValidationWithFeedback(element: HTMLInputElement, errorMessage: string) { \r\n var dateErrorMsgControl = element.parentElement.parentElement.parentElement.getElementsByClassName(\"invalid-feedback\")[0];\r\n\r\n this.setCustomValidationWithFeedback(element, errorMessage, dateErrorMsgControl);\r\n }\r\n\r\n static setCustomValidationWithFeedback(element: HTMLInputElement, errorMessage: string, customErrorMsgControl?: Element) { \r\n if (!element) return;\r\n\r\n element.parentElement.parentElement.classList.add('is-invalid');\r\n element.setCustomValidity(errorMessage);\r\n\r\n var errorMsgControl = customErrorMsgControl ? customErrorMsgControl : element.parentElement.getElementsByClassName(\"invalid-feedback\")[0];\r\n\r\n if (!errorMsgControl) return;\r\n\r\n errorMsgControl.textContent = errorMessage;\r\n }\r\n\r\n static clearCustomDatePickerValidation(element: HTMLInputElement) {\r\n\r\n var dateErrorMsgControl = element.parentElement.getElementsByClassName(\"invalid-feedback\")[0];\r\n\r\n this.clearCustomValidation(element, dateErrorMsgControl);\r\n }\r\n\r\n static clearCustomValidation(element: HTMLInputElement, customErrorMsgControl? : Element) { \r\n if (!element) return;\r\n\r\n element.parentElement.parentElement.classList.remove('is-invalid');\r\n element.setCustomValidity(\"\");\r\n\r\n var errorMsgControl = customErrorMsgControl ? customErrorMsgControl : element.parentElement.getElementsByClassName(\"invalid-feedback\")[0];\r\n if (!errorMsgControl) return;\r\n\r\n errorMsgControl.textContent = null;\r\n }\r\n}","import { Col, Row, Button, Modal, Form } from \"react-bootstrap\";\r\nimport { Fragment, useContext, useRef, useState } from \"react\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { deepCopy } from \"../../../Shared/Utility/DeepCopy\";\r\nimport { ValidatorHelper } from \"../../../Shared/ValidatorHelper\";\r\n\r\nconst validEmailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\ninterface IProps {\r\n hadCertificate: boolean;\r\n}\r\n\r\nexport default function RequestCertificationVerification(props: IProps) {\r\n const authContext = useContext(AuthContext);\r\n\r\n const emailForm = useRef(null);\r\n const emailInputRef = useRef(null);\r\n const [isDownloading, setIsDownloading] = useState(false);\r\n const [isSending, setIsSending] = useState(false);\r\n const [showRequestSection, setShowRequestSection] = useState(false);\r\n const [showEmailSection, setShowEmailSection] = useState(false);\r\n const [newEmail, setNewEmail] = useState(\"\");\r\n const [ccEmailAddresses, setCcEmailAddresses] = useState>([]);\r\n\r\n const downloadVerification = async (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n setIsDownloading(true);\r\n\r\n var response = await abpnClient.getResponse(\"/api/physician/DownloadVerificationLetter\", authContext)\r\n var blob = await response.blob();\r\n\r\n const downloadFileUrl = window.URL.createObjectURL(\r\n new Blob([blob]),\r\n );\r\n const link = document.createElement('a');\r\n link.href = downloadFileUrl;\r\n link.setAttribute(\r\n 'download',\r\n `VerificationLetter.pdf`,\r\n );\r\n\r\n // Append to html link element page\r\n document.body.appendChild(link);\r\n\r\n // Start download\r\n link.click();\r\n\r\n // Clean up and remove the link\r\n link.parentNode.removeChild(link);\r\n\r\n setIsDownloading(false);\r\n closeModals();\r\n }\r\n\r\n const updateEmailAddress = (value: string) => {\r\n setNewEmail(value);\r\n }\r\n\r\n const addEmail = async (e: React.FormEvent) => {\r\n const form = emailForm.current;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (!validEmailRegex.test(newEmail)) {\r\n ValidatorHelper.setCustomValidationWithFeedback(emailInputRef.current, \"Please enter a valid email address\");\r\n }\r\n else {\r\n ValidatorHelper.clearCustomValidation(emailInputRef.current);\r\n }\r\n\r\n form.classList.add('was-validated');\r\n if (form.checkValidity()) {\r\n form.classList.remove('was-validated');\r\n let updatedEmails = deepCopy(ccEmailAddresses);\r\n updatedEmails.push(newEmail);\r\n setNewEmail(\"\");\r\n setCcEmailAddresses(updatedEmails);\r\n }\r\n }\r\n\r\n const emailVerification = async (e: React.MouseEvent) => {\r\n const form = emailForm.current;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (ccEmailAddresses.length === 0) {\r\n ValidatorHelper.setCustomValidationWithFeedback(emailInputRef.current, \"Please enter an email address\");\r\n form.classList.add('was-validated');\r\n } else {\r\n ValidatorHelper.clearCustomValidation(emailInputRef.current);\r\n setIsSending(true);\r\n abpnClient.post>(\"/api/physician/SendVerificationLetter\", ccEmailAddresses, authContext).then(_ => {\r\n form.classList.remove('was-validated');\r\n closeModals();\r\n }).finally(() => {\r\n setIsSending(false);\r\n });\r\n }\r\n }\r\n\r\n const openLetterRequestModal = async (isRequestingVerificationLetter: boolean) => {\r\n setShowRequestSection(isRequestingVerificationLetter);\r\n }\r\n\r\n const openEmailModal = async (isEmailingVerificationLetter: boolean) => {\r\n setShowEmailSection(isEmailingVerificationLetter);\r\n }\r\n\r\n const closeModals = async () => {\r\n setNewEmail(\"\");\r\n setCcEmailAddresses([]);\r\n setShowRequestSection(false);\r\n setShowEmailSection(false);\r\n }\r\n\r\n let showVerificationButtons = props.hadCertificate;\r\n\r\n return (\r\n <>\r\n \r\n {showVerificationButtons &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n closeModals()}>\r\n \r\n {isDownloading ? :\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n closeModals()}>\r\n \r\n
\r\n If you would like the letter of certification verification emailed to a\r\n third party, enter the email address and select the plus/add button.\r\n You may add up to 3 different email addresses. After you have\r\n added the email address(es), select the Send Email button. Emails\r\n will send TO the email address we have on file for you and\r\n CC the third party email address(es) indicated.\r\n
\r\n
addEmail(e)}>\r\n
\r\n \r\n
\r\n {ccEmailAddresses.length > 0 &&\r\n \r\n Send to: \r\n
    \r\n {ccEmailAddresses.map((emailAddress, index) =>\r\n
  • {emailAddress}
  • \r\n )}\r\n
\r\n
}\r\n
\r\n
\r\n \r\n {isSending ? :\r\n <>\r\n \r\n \r\n \r\n }\r\n \r\n
\r\n \r\n )\r\n}","import { Card, Col, Row, Button } from \"react-bootstrap\";\r\nimport { useContext, useState } from \"react\";\r\nimport Physician from \"../../../Physician/Models/Physician\";\r\nimport { Certificate } from \"../../../Physician/Models/Certificate\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { CertificateRow } from \"./CertificateRow\";\r\nimport { CCBlock } from \"../../../Physician/Models/CCBlock\";\r\nimport { deepCopy } from \"../../../Shared/Utility/DeepCopy\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\nimport RequestCertificationVerification from \"./RequestCertificationVerification\";\r\n\r\ninterface IProps {\r\n physician: Physician;\r\n updatePhysician: (updatedPhysician: Physician) => void;\r\n}\r\n\r\nexport default function CertificatesCard(props: IProps) {\r\n const authContext = useContext(AuthContext);\r\n \r\n let groupedCertsBySpecialty: Record> = {};\r\n groupedCertsBySpecialty = props.physician.certificates.reduce(\r\n (result, item) => ({\r\n ...result,\r\n [item[\"certificationId\"]]: [\r\n ...(result[item[\"certificationId\"]] || []),\r\n item,\r\n ],\r\n }),\r\n groupedCertsBySpecialty\r\n );\r\n\r\n const [groupedCertificates] = useState(groupedCertsBySpecialty);\r\n const [isDownloading, setIsDownloading] = useState(false);\r\n\r\n const hadCertificate = props.physician.certificates?.length > 0;\r\n\r\n const evaluateCurrentBlockAndCallUpdate = async (physician : Physician) => {\r\n if (props.physician.currentCCEnrollment == null) return;\r\n\r\n const ccBlock = await abpnClient.get(\"/api/physician/EvaluateCurrentBlockRequirements\", authContext);\r\n const certificates = await abpnClient.get>(\"/api/physician/GetCertificates\", authContext);\r\n\r\n var index = physician.currentCCEnrollment.ccBlocks.findIndex(_ => _.ccBlockId === ccBlock.ccBlockId);\r\n physician.currentCCEnrollment.ccBlocks.splice(index, 1, ccBlock);\r\n physician.currentCCEnrollment.currentCCBlock = ccBlock;\r\n\r\n physician.certificates = certificates;\r\n props.updatePhysician(physician);\r\n } \r\n\r\n const onSaveCertificate = (updatedCertificate: Certificate) => {\r\n let updatedPhysician = deepCopy(props.physician);\r\n var certIndex = updatedPhysician.certificates.findIndex(_ => _.certificateId == updatedCertificate.certificateId);\r\n updatedPhysician.certificates[certIndex] = updatedCertificate;\r\n evaluateCurrentBlockAndCallUpdate(updatedPhysician);\r\n }\r\n\r\n let sortedCertificates = Object.values(groupedCertificates).sort((a: Certificate[], b: Certificate[]) => {\r\n //sort by Specialty/Subspecialty\r\n if (a[0].isPrimary === b[0].isPrimary) {\r\n //then by recent Award Date\r\n let aAwardDates = a.map(_ => getDateWithOffset(_.awardDate).getTime());\r\n let bAwardDates = b.map(_ => getDateWithOffset(_.awardDate).getTime());\r\n return Math.max(...aAwardDates) - Math.max(...bAwardDates);\r\n } else {\r\n return a[0].isPrimary ? -1 : 1\r\n }\r\n });\r\n\r\n const download = async (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n setIsDownloading(true);\r\n\r\n var response = await abpnClient.getResponse(\"/api/physician/cccertificate\", authContext)\r\n var blob = await response.blob();\r\n\r\n const downloadFileUrl = window.URL.createObjectURL(\r\n new Blob([blob]),\r\n );\r\n const link = document.createElement('a');\r\n link.href = downloadFileUrl;\r\n link.setAttribute(\r\n 'download',\r\n `CertificateStatus.pdf`,\r\n );\r\n\r\n // Append to html link element page\r\n document.body.appendChild(link);\r\n\r\n // Start download\r\n link.click();\r\n\r\n // Clean up and remove the link\r\n link.parentNode.removeChild(link);\r\n\r\n setIsDownloading(false);\r\n }\r\n\r\n let certificatesRows = sortedCertificates.map((certificates, index) => );\r\n\r\n let showPrint = props.physician.currentCCEnrollment && !props.physician.currentCCEnrollment.isBehindCurrentBlock;\r\n\r\n return (\r\n \r\n \r\n \r\n Certifications\r\n \r\n
\r\n \r\n \r\n {certificatesRows.length > 0 ? certificatesRows : \"Not certified\"}\r\n {showPrint &&\r\n \r\n \r\n {isDownloading ? :\r\n }\r\n \r\n \r\n }\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}","export enum CountryId {\r\n Usa = 1,\r\n Canada = 2\r\n}","import React, { Fragment, useState } from \"react\";\r\nimport { Col, Form, Button, Row, Alert} from \"react-bootstrap\";\r\nimport { MedicalLicense } from \"../../Physician/Models/MedicalLicense\";\r\nimport { deepCopy } from \"../Utility/DeepCopy\";\r\nimport { StateWithCountryLookupItem } from \"../Models/StateWithCountryLookupItem\";\r\nimport InputMask from 'react-input-mask';\r\nimport { getDateWithOffset } from \"../Utility/GetDateWithOffset\";\r\nimport { CountryId } from \"../Enums/CountryId\";\r\n\r\ninterface IProps {\r\n medicalLicense: MedicalLicense;\r\n states: Array;\r\n handleRemove: (medicalLicense: MedicalLicense) => void;\r\n updateMedicalLicense: (medicalLicense: MedicalLicense) => void;\r\n}\r\n\r\nexport default function MedicalLicenseCard(props: IProps) {\r\n const [originalLicense, setOriginalLicense] = useState(props.medicalLicense);\r\n const [updatedLicense, setUpdatedLicense] = useState(props.medicalLicense);\r\n\r\n const updateLicenseNumber = (value: string) => {\r\n var updated = deepCopy(updatedLicense);\r\n updated.licenseNumber = value;\r\n setUpdatedLicense(updated);\r\n }\r\n\r\n const updateExpirationDate = (value: string) => {\r\n var updated = deepCopy(updatedLicense);\r\n updated.expirationDate = value;\r\n\r\n if (Date.parse(value)) {\r\n updated.expirationDate = getDateWithOffset(value).toJSON();\r\n }\r\n setUpdatedLicense(updated);\r\n }\r\n\r\n const updateState = (e: React.ChangeEvent) => {\r\n var state = props.states.find(_ => _.id == parseInt(e.target.value));\r\n if (!state) state = props.states.find(_ => _.name == e.target.value);\r\n var value = state ? state.id : null;\r\n\r\n var updated = deepCopy(updatedLicense);\r\n updated.stateId = value;\r\n setUpdatedLicense(updated);\r\n }\r\n\r\n const beginEdit = () => {\r\n var updated = deepCopy(updatedLicense);\r\n updated.isEditing = true;\r\n setUpdatedLicense(updated);\r\n }\r\n\r\n const undo = () => {\r\n updatedLicense.isNew\r\n ? props.handleRemove(updatedLicense)\r\n : setUpdatedLicense(originalLicense);\r\n }\r\n\r\n const save = () => {\r\n var updated = deepCopy(updatedLicense);\r\n updated.isEditing = false;\r\n updated.isNew = false;\r\n props.updateMedicalLicense(updated);\r\n setUpdatedLicense(updated);\r\n setOriginalLicense(updated);\r\n }\r\n\r\n const isLicenseActive = () => {\r\n return getDateWithOffset(updatedLicense.expirationDate) > new Date();\r\n }\r\n\r\n const formatDefaultValue = (dateString: string) => {\r\n if (!dateString) return \"\";\r\n\r\n var date = getDateWithOffset(dateString);\r\n if (date == null) return \"\"\r\n\r\n var year = date.getFullYear();\r\n\r\n var month = (1 + date.getMonth()).toString();\r\n month = month.length > 1 ? month : '0' + month;\r\n\r\n var day = date.getDate().toString();\r\n day = day.length > 1 ? day : '0' + day;\r\n\r\n return month + '/' + day + '/' + year;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n License Number\r\n {updatedLicense.isEditing ?\r\n updateLicenseNumber(e.target.value)}\r\n defaultValue={updatedLicense.licenseNumber ? updatedLicense.licenseNumber : \"\"} />\r\n :\r\n {updatedLicense.licenseNumber ? updatedLicense.licenseNumber : \"\"}\r\n }\r\n \r\n \r\n \r\n \r\n State\r\n {updatedLicense.isEditing ?\r\n ) => { updateState(e); }}\r\n defaultValue={updatedLicense.stateId ? updatedLicense.stateId : \"\"}>\r\n \r\n \r\n {props.states.filter(x => x.countryId === CountryId.Usa).map(x => ())}\r\n \r\n \r\n {props.states.filter(x => x.countryId === CountryId.Canada).map(x => ())}\r\n \r\n \r\n :\r\n {props.states.find(x => x.id == updatedLicense.stateId)?.shortName}\r\n }\r\n \r\n \r\n \r\n \r\n Expiration\r\n {updatedLicense.isEditing ?\r\n updateExpirationDate(e.target.value)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n :\r\n {getDateWithOffset(updatedLicense.expirationDate).toLocaleDateString('en-US')}\r\n }\r\n \r\n \r\n {updatedLicense.isEditing ?\r\n \r\n
\r\n \r\n
\r\n :\r\n \r\n \r\n Status\r\n {isLicenseActive() ?\r\n Active\r\n :\r\n \r\n }\r\n \r\n }\r\n \r\n
\r\n {!updatedLicense.isEditing && }\r\n {(updatedLicense.isEditing || updatedLicense.isNew) && }\r\n
\r\n \r\n
\r\n \r\n {(props.medicalLicense.validationMessage?.length > 0) &&\r\n \r\n { props.medicalLicense.validationMessage.map(message => {\r\n return {message}\r\n })\r\n\r\n }\r\n \r\n }\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React, { Fragment } from \"react\";\r\nimport { Card } from \"react-bootstrap\";\r\nimport { MedicalLicense } from \"../../Physician/Models/MedicalLicense\";\r\nimport { StateWithCountryLookupItem } from \"../Models/StateWithCountryLookupItem\";\r\nimport MedicalLicenseCard from \"./MedicalLicenseCard\";\r\n\r\ninterface IProps {\r\n medicalLicenses: Array;\r\n states: Array;\r\n handleRemove: (medicalLicense: MedicalLicense) => void;\r\n updateMedicalLicense: (medicalLicense: MedicalLicense) => void;\r\n}\r\n\r\nexport function MedicalLicenseList(props: IProps) {\r\n\r\n return (\r\n \r\n {props.medicalLicenses?.length > 0 ?\r\n props.medicalLicenses.map((license: MedicalLicense) => {\r\n return props.handleRemove(medicalLicense)}\r\n updateMedicalLicense={(medicalLicense: MedicalLicense) => props.updateMedicalLicense(medicalLicense)} />\r\n })\r\n :\r\n No medical licenses}\r\n \r\n );\r\n}","export class MedicalLicense {\r\n constructor() {\r\n this.licenseNumber = null;\r\n this.medicalLicenseId = 0; \r\n }\r\n public medicalLicenseId: number;\r\n public licenseNumber: string;\r\n public stateId: number;\r\n public expirationDate: string;\r\n public isNew: boolean;\r\n public isEditing: boolean;\r\n public validationMessage: string[];\r\n}\r\n\r\n","import React from \"react\";\r\nimport { useState, useContext } from \"react\";\r\nimport { Card, Button, Col, Form, Row, Collapse,OverlayTrigger,Tooltip} from \"react-bootstrap\";\r\nimport { MedicalLicenseList } from \"../../../Shared/Components/MedicalLicenseList\";\r\nimport { deepCopy } from \"../../../Shared/Utility/DeepCopy\";\r\nimport { StateWithCountryLookupItem } from \"../../../Shared/Models/StateWithCountryLookupItem\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\nimport { MedicalLicense } from \"../../../Physician/Models/MedicalLicense\";\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps {\r\n medicalLicenses: Array;\r\n states: Array;\r\n onSaveLicenses: (medicalLicenses: Array) => void;\r\n isSectionOpen: boolean;\r\n showCollapse: boolean;\r\n}\r\n\r\nexport function MedicalLicensure(props: IProps) {\r\n const [medicalLicenses, setMedicalLicenses] = useState>(props.medicalLicenses);\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const authContext = useContext(AuthContext);\r\n\r\n const validate = (medicalLicenses: Array) : boolean => {\r\n medicalLicenses.forEach((medicalLicense: MedicalLicense) => {\r\n medicalLicense.validationMessage = new Array();\r\n \r\n if (medicalLicense.medicalLicenseId === 0 && getDateWithOffset(medicalLicense.expirationDate) < new Date())\r\n {\r\n medicalLicense.validationMessage.push(\"Can not add expired licenses.\");\r\n }\r\n if (!medicalLicense.licenseNumber?.trim()) {\r\n medicalLicense.validationMessage.push(\" License number is required.\");\r\n }\r\n if (!medicalLicense.stateId) {\r\n medicalLicense.validationMessage.push(\" State is required\");\r\n }\r\n if (!Date.parse(medicalLicense.expirationDate)){\r\n medicalLicense.validationMessage.push(\" Expiration date invalid. Expected format: MM/DD/YYYY\");\r\n }\r\n if (medicalLicense.validationMessage.length > 0){\r\n medicalLicense.isEditing = true;\r\n }\r\n })\r\n setMedicalLicenses(deepCopy(medicalLicenses));\r\n return !medicalLicenses.some(_ => _.validationMessage?.length > 0);\r\n }\r\n\r\n const saveAllMedicalLicenses = (medicalLicensesToUpdate: Array) => {\r\n if (validate(medicalLicensesToUpdate))\r\n {\r\n const url = \"/api/Physician/SaveMedicalLicenses/\";\r\n abpnClient.post>(url, medicalLicensesToUpdate, authContext).then(result => {\r\n result.forEach((license: MedicalLicense) => { license.isEditing = false; license.isNew = false });\r\n setMedicalLicenses(result);\r\n props.onSaveLicenses(result);\r\n });\r\n } \r\n }\r\n\r\n const addNewMedicalLicense = () => {\r\n var newMedicalLicense = new MedicalLicense();\r\n newMedicalLicense.isNew = true;\r\n newMedicalLicense.isEditing = true;\r\n var newList = deepCopy(medicalLicenses);\r\n newList.push(newMedicalLicense);\r\n setMedicalLicenses(newList);\r\n }\r\n\r\n const removeMedicalLicense = (medicalLicense: MedicalLicense) => {\r\n var newList = deepCopy(medicalLicenses.filter(x => x.medicalLicenseId !== medicalLicense.medicalLicenseId));\r\n setMedicalLicenses(newList);\r\n }\r\n\r\n const updateMedicalLicense = (medicalLicense: MedicalLicense) => {\r\n var updated = deepCopy(medicalLicenses)\r\n var index = updated.findIndex(_ => _.medicalLicenseId == medicalLicense.medicalLicenseId);\r\n updated[index] = medicalLicense;\r\n saveAllMedicalLicenses(updated);\r\n }\r\n\r\n const canAddNewLicense = () => {\r\n return medicalLicenses.every(_ => _.isNew !== true);\r\n }\r\n\r\n const areLicensesValid = () => {\r\n return !medicalLicenses.some(_ => _.validationMessage?.length > 0);\r\n }\r\n\r\n const toggleCollaspe = () => {\r\n if(props.showCollapse){\r\n setOpenCollapse(!openCollapse)\r\n }\r\n }\r\n\r\n if (props.medicalLicenses == null) return ;\r\n return (\r\n \r\n \r\n \r\n {props.showCollapse && }Medical Licensure\r\n \r\n If a medical license needs to be deleted, please email questions@abpn.org.\r\n }>\r\n \r\n \t\r\n \r\n \r\n \r\n \r\n
\r\n removeMedicalLicense(medicalLicense)}\r\n updateMedicalLicense={(medicalLicense: MedicalLicense) => updateMedicalLicense(medicalLicense)} />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n}\r\n\r\n\r\nexport default MedicalLicensure;","import { Button, Card, Col, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nexport function Activities() {\r\n return (\r\n \r\n \r\n \r\n Activities\r\n \r\n \r\n \r\n \r\n \r\n View and Manage Activity\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","import { Button, Card, Col, Collapse, Row } from \"react-bootstrap\";\r\nimport { StateWithCountryLookupItem } from \"../../../Shared/Models/StateWithCountryLookupItem\";\r\nimport Physician from \"../../../Physician/Models/Physician\";\r\nimport { MedicalLicense } from \"../../../Physician/Models/MedicalLicense\";\r\nimport { Fragment, useEffect, useState } from \"react\";\r\nimport { deepCopy } from \"../../../Shared/Utility/DeepCopy\";\r\nimport MedicalLicensure from \"../../ContinuingCertification/Components/MedicalLicensure\";\r\nimport { Activities } from \"./Activities\";\r\nimport { Certificate, CertificateStatus, CertificationGeneration } from \"../../../Physician/Models/Certificate\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps {\r\n states: Array;\r\n physician: Physician;\r\n updatePhysician: (physician: Physician) => void;\r\n}\r\n\r\nexport function CertificationRequirements(props: IProps) {\r\n let requiredArticles = (props.physician.hasActiveTenYearCert && !props.physician.ccEnrollmentsModel.hasCCEnrollmentHistory) ? 30 : 90;\r\n const [openCollapse, setOpenCollapse] = useState(false);\r\n\r\n useEffect(() => {\r\n }, []);\r\n\r\n const onSaveLicenses = (licenses: Array) => {\r\n var updatedPhysician = deepCopy(props.physician);\r\n updatedPhysician.medicalLicenses = licenses;\r\n\r\n props.updatePhysician(updatedPhysician);\r\n }\r\n\r\n const sortBySpecialtyAlpha = (a: Certificate, b: Certificate) => {\r\n //sort by Specialty/Subspecialty\r\n if (a.isPrimary === b.isPrimary) {\r\n //then by alpha\r\n return a.certificationName < b.certificationName ? -1 : 1\r\n } else {\r\n return a.isPrimary ? -1 : 1;\r\n }\r\n }\r\n\r\n const getCertsString = (certs: Certificate[], expiredOnly: boolean = true) => {\r\n let certList = certs;\r\n if (expiredOnly) {\r\n certList = certList.filter(_ => _.certificateStatus === CertificateStatus.Inactive);\r\n }\r\n let sortedExpiredCerts = certList.sort(sortBySpecialtyAlpha).map(_ => _.certificationName);\r\n\r\n if (sortedExpiredCerts.length > 1) {\r\n return sortedExpiredCerts.slice(0, -1).join(\", \").\r\n concat(\", and \", sortedExpiredCerts[sortedExpiredCerts.length - 1], \" certifications\");\r\n } else if (sortedExpiredCerts.length === 1) {\r\n return sortedExpiredCerts[0].concat(\" certification\");\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n let requiredCredits = 90;\r\n let showRecertRequirements = true;\r\n let showLifetimeOnlyLanguage = false;\r\n let showLifetimeOnlyTenYearLanguage = false;\r\n let today = new Date();\r\n\r\n let yearsRequirement = \"three\";\r\n //Lifetime Only\r\n if (props.physician.certificates.every(_ => _.certificationGeneration == CertificationGeneration.Lifetime)) {\r\n if (props.physician.ccEnrollmentsModel.hasCCEnrollmentHistory) {\r\n showLifetimeOnlyLanguage = true;\r\n } else if ((props.physician.certificates.every(_ => !_.recertifiedDate ||\r\n (getDateWithOffset(_.recertifiedDate).getTime() < getDateWithOffset(new Date(2012, 1, 1).toString()).getTime() && today.getTime() > getDateWithOffset(_.expirationDate).getTime()))\r\n )) {\r\n showRecertRequirements = false;\r\n } else if (props.physician.certificates.every(_ => _.recertifiedDate != null)) {\r\n if (props.physician.certificates.some(_ => today.getTime() > getDateWithOffset(_.expirationDate).getTime())) {\r\n showRecertRequirements = false;\r\n } else {\r\n //Active 10 year on the Lifetime cert\r\n showLifetimeOnlyTenYearLanguage = true;\r\n requiredCredits = 300;\r\n requiredArticles = 30;\r\n yearsRequirement = \"three\";\r\n }\r\n }\r\n }\r\n\r\n\r\n let hasTenYearCert = false;\r\n if (props.physician.certificates.some(_ => _.certificationGeneration == CertificationGeneration.TenYear)) {\r\n hasTenYearCert = true;\r\n yearsRequirement = \"three\";\r\n }\r\n\r\n if (props.physician.certificates.every(_ => _.certificationGeneration == CertificationGeneration.TenYear)) {\r\n requiredCredits = 300;\r\n }\r\n\r\n let isInactive = false;\r\n if (props.physician.certificates.every(_ => _.certificateStatus == CertificateStatus.Inactive)) {\r\n isInactive = true;\r\n requiredCredits = 90;\r\n yearsRequirement = \"three\";\r\n }\r\n\r\n let hasLiftimeCert = false;\r\n if (props.physician.certificates.some(_ => _.certificationGeneration == CertificationGeneration.Lifetime)) {\r\n hasLiftimeCert = true;\r\n }\r\n\r\n let showPatientSafetyRequirement = true;\r\n if (props.physician.certificates.every(_ => _.certificationGeneration == CertificationGeneration.TenYear)) {\r\n showPatientSafetyRequirement = false;\r\n }\r\n\r\n return (\r\n
\r\n {(showRecertRequirements && !props.physician.isDansInvalidatedAllowReentryExam) &&\r\n \r\n \r\n \r\n Recertification Requirements \r\n \r\n \r\n \r\n \r\n \r\n
Important message regarding your certification
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {showLifetimeOnlyLanguage ?\r\n
\r\n You are no longer enrolled in the Continuing Certification (CC) program for your {getCertsString(props.physician.certificates, false)} due to not completing the CC requirements for one three-year block (three years). Lifetime certificates are not required to participate in CC. The CC status of your lifetime certification(s) is now listed as ‘Not Required’.\r\n

\r\n Diplomates who wish to participate in CC for a non-time limited (lifetime) certification will need to enroll in the traditional recertification/CC Exam OR the Article Based Continuing Certification (ABCC) pathway. Diplomates will pay the first annual fee for that certification at the time of enrollment, and will then be listed as \"Meeting\" CC/MOC requirements. Diplomates will have the next three years to pass the recertification/CC exam OR successfully complete 30 article exams, and complete the CC requirements.\r\n

\r\n Diplomates who choose the article pathway will need to continue to complete article exams each three- year block, in addition to satisfying the CC requirements. For more information about the ABCC pathway, please visit \r\n \r\n abpn.org\r\n .\r\n
\r\n :\r\n
\r\n {props.physician.ccEnrollmentsModel.hasCCEnrollmentHistory &&\r\n \r\n Your {getCertsString(props.physician.certificates.filter(_ => _.certificationGeneration == CertificationGeneration.Cc), true)} expired due to not meeting certification requirements within two 3-year blocks (6 years).

\r\n {hasLiftimeCert &&\r\n \r\n You are no longer enrolled in the Continuing Certification (CC) program for your {getCertsString(props.physician.certificates.filter(_ => _.certificationGeneration == CertificationGeneration.Lifetime), false)} due to not meeting CC requirements for one three-year block (three years). Lifetime certificates are not required to participate in CC. The CC status of your lifetime certification(s) is now listed as ‘Not Required’.

\r\n
\r\n }\r\n
\r\n }\r\n {showLifetimeOnlyTenYearLanguage &&\r\n \r\n You are currently participating in the Continuing Certification program. Non-Time Limited (Lifetime) certificates are not required to participate in CC. If you wish to maintain your Continuing Certification status, you will need to recertify.

\r\n
\r\n }\r\n To recertify, you will need to do the following:\r\n

\r\n 1. Update your medical license(s) information on file. Medical license(s) must be active, full, and unrestricted.\r\n

\r\n 2. Complete one set of activity requirements over the past {yearsRequirement} years:
\r\n
    \r\n
  • {requiredCredits} Category 1 CME credits (includes SA credit)
  • \r\n
  • 24 Self-Assessment (SA) CME credits
  • \r\n
  • 1 Improvement in Medical Practice (PIP) activity
  • \r\n {(showPatientSafetyRequirement || isInactive) &&
  • 1 Patient Safety activity
  • }\r\n {isInactive ? You will be required to submit the documentation for auditing purposes. \r\n : \r\n You will be required to submit the documentation if audited.}\r\n
\r\n For more information about \r\n Activity Requirements\r\n , please visit our website.\r\n

\r\n 3. Apply and pay for the CC/recertification exam application OR, beginning in 2022, participate in the Article Based Continuing Certification (ABCC) pathway for each certification you wish to recertify in.* Payment for recertification is due at time of application. If audited, diplomates will need to submit documentation (CME certificates, transcripts, etc.) of the completed activity requirements. For more information about the ABCC pathway, please visit \r\n \r\n abpn.org\r\n .\r\n
\r\n *Diplomates must maintain primary certification for dependent subspecialty certifications.\r\n

\r\n {hasTenYearCert ?\r\n
\r\n Diplomates who are lapsed with 10-Year certification(s) will be recertified upon passing the CC exam(s) OR successful completion of 90 ABCC article exams.* Diplomates who are active with 10-Year certification(s) will be recertified upon passing the CC exam(s) OR successful completion of 30 ABCC article exams per each cert.**\r\n
\r\n :\r\n
\r\n Diplomates will be recertified upon passing the CC exam(s) OR successful completion of {requiredArticles} ABCC article exams.*\r\n
\r\n }\r\n

\r\n \r\n *ABPN Diplomates who hold another ABMS member Board’s subspecialty certification are not eligible for the ABPN ABCC pathway for that certification. For more information about recertification options, please contact the respective administrating ABMS member Board below:\r\n

\r\n Brain Injury Medicine (American Board of Physical Medicine and Rehabilitation)
\r\n Hospice and Palliative Medicine (American Board of Internal Medicine)
\r\n Pain Medicine (American Board of Anesthesiology)
\r\n Sleep Medicine (American Board of Internal Medicine)\r\n {hasTenYearCert &&\r\n \r\n

\r\n ** Lapsed diplomates will be recertified upon successfully complete 90 ABCC article exams.\r\n Diplomates with at least one active certification, but have one or more lapsed certificates, will be recertified upon successfully complete 30 article exams for each lapsed certificate.\r\n
\r\n }\r\n
\r\n {hasLiftimeCert &&\r\n
\r\n

\r\n Non-Time Limited (Lifetime) certificates are not required to participate in the Continuing Certification (CC) program.\r\n

\r\n Diplomates who wish to participate in CC for a non-time limited (lifetime) certification will need to enroll in the traditional recertification/CC Exam OR the Article Based Continuing Certification (ABCC) pathway. Diplomates will pay the first annual fee for that certification at the time of enrollment, and will then be listed as \"Meeting\" CC/MOC requirements. Diplomates will have the next three years to pass the recertification/CC exam OR successfully complete 30 article exams, and complete the CC requirements.\r\n

\r\n Diplomates who choose the article pathway will need to continue to complete the article exams each three-year block, in addition to satisfying the CC requirements. For more information about the ABCC pathway, please visit \r\n \r\n abpn.org\r\n .\r\n

\r\n
\r\n }\r\n
\r\n }\r\n
\r\n \r\n
\r\n
\r\n
\r\n
}\r\n\r\n {!props.physician.isDansInvalidatedAllowReentryExam && }\r\n \r\n ) => onSaveLicenses(licenses)}\r\n isSectionOpen={true}\r\n showCollapse={false} />\r\n
\r\n )\r\n}","import { CCBlock} from \"./CCBlock\";\r\n\r\nexport class CCEnrollment {\r\n ccEnrollmentId: number;\r\n enrollmentDate: string;\r\n examCredit: number;\r\n ccBlocks: Array;\r\n patientSafetyCompletedYear: number;\r\n currentCCBlock: CCBlock;\r\n isBehindCurrentBlock: boolean;\r\n enrollmentCertificates: Array;\r\n activeEnrollmentCertificates: Array;\r\n futureEnrollmentCertificates: Array;\r\n}\r\n\r\nexport enum CCAssessmentType{\r\n Article = 1,\r\n Exam = 2,\r\n Other = 3\r\n \r\n}\r\n\r\nexport class CCEnrollmentsModel {\r\n currentCCEnrollmentId?: number;\r\n ccEnrollments: Array;\r\n hasCCEnrollmentHistory: boolean;\r\n}\r\n\r\nexport class EnrollmentCertificate{\r\n cCEnrollmentCertificateId: number;\r\n certificateId: number;\r\n certification_Key: number;\r\n certificationName: string;\r\n certificationGeneration: number;\r\n isABCCEligible: boolean;\r\n isEnrolled: string;\r\n enrollmentStartDate: string;\r\n enrollmentEndDate?: string;\r\n ccAssessmentType: CCAssessmentType;\r\n ccAssessmentAttestationDate: string;\r\n lastArticleAssessmentEnrolledDate: string;\r\n}","import React from \"react\";\r\nimport { Button, Card, Col, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { CCAssessmentType, EnrollmentCertificate } from \"../../../Physician/Models/CCEnrollment\";\r\nimport { Certificate, CertificateStatus, CertificationGeneration } from \"../../../Physician/Models/Certificate\";\r\nimport Physician from \"../../../Physician/Models/Physician\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps{\r\n physician: Physician;\r\n}\r\n\r\nexport default function CCEnrollmentSummary(props: IProps) {\r\n const isEnrolledinCC = props.physician.currentCCEnrollment != null;\r\n const lifeTimeActiveCertificates = props.physician.certificates.filter(cert => cert.certificationGeneration === CertificationGeneration.Lifetime && cert.certificateStatus == CertificateStatus.Active);\r\n\r\n const getCcAssessmentTypeName = (ccAssessmentType: CCAssessmentType ) => {\r\n switch(ccAssessmentType){\r\n case CCAssessmentType.Exam:\r\n return Examination Pathway;\r\n case CCAssessmentType.Article:\r\n return Article Based Continuing Certification (ABCC);\r\n default:\r\n return ABPN's ABCC pathway is not an option for this certification.
Please see the ABPN Website for more details.
\r\n }\r\n }\r\n\r\n const getCCEnrollmentCertificateListItem = (ccEnrollmentCertificate: EnrollmentCertificate) => {\r\n\r\n const certificate = props.physician.certificates.find((cert: Certificate) => cert.certificateId == ccEnrollmentCertificate.certificateId);\r\n if (!certificate) return \"\";\r\n \r\n var ccCertEnrollmentStartDate = getDateWithOffset(ccEnrollmentCertificate.enrollmentStartDate)\r\n\r\n return \r\n \r\n {certificate.certificationName}\r\n {getCcAssessmentTypeName(ccEnrollmentCertificate.ccAssessmentType)} { ccCertEnrollmentStartDate > new Date() &&
(Requirements Begin: {ccCertEnrollmentStartDate.toLocaleDateString('en-US')})
}\r\n
\r\n
\r\n
\r\n }\r\n let activeAndFutureEnollmentCertificates = props.physician.currentCCEnrollment && Object.values(props.physician.currentCCEnrollment.activeEnrollmentCertificates).concat(Object.values(props.physician.currentCCEnrollment.futureEnrollmentCertificates));\r\n let sortedEnrollmentCertificates = activeAndFutureEnollmentCertificates && activeAndFutureEnollmentCertificates.sort((a: EnrollmentCertificate, b: EnrollmentCertificate) => {\r\n \r\n //sort by Specialty/Subspecialty\r\n const aCertificate = props.physician.certificates.find((cert: Certificate) => cert.certificateId == a.certificateId);\r\n const bCertificate = props.physician.certificates.find((cert: Certificate) => cert.certificateId == b.certificateId);\r\n if (!aCertificate || !bCertificate) return 0;\r\n\r\n if (aCertificate.isPrimary === bCertificate.isPrimary) {\r\n //then by recent Award Date\r\n return getDateWithOffset(aCertificate.awardDate).getTime() - getDateWithOffset(bCertificate.awardDate).getTime();\r\n } else {\r\n return aCertificate.isPrimary ? -1 : 1\r\n }\r\n });\r\n\r\n \r\n return(\r\n \r\n \r\n \r\n \r\n Continuing Certification Enrollment\r\n \r\n \r\n \r\n \r\n {isEnrolledinCC && \r\n \r\n \r\n \r\n Certificates enrolled in the Continuing Certification (CC) Program:\r\n \r\n \r\n Certification\r\n Pathway\r\n \r\n \r\n {sortedEnrollmentCertificates.map((enrollmentCertificate: EnrollmentCertificate) => {\r\n return getCCEnrollmentCertificateListItem(enrollmentCertificate);\r\n })}\r\n \r\n \r\n \r\n \r\n }\r\n\r\n {!isEnrolledinCC && lifeTimeActiveCertificates?.length > 0 &&\r\n
\r\n

You are not currently enrolled in the Continuing Certification (CC) Program

\r\n \r\n
\r\n }\r\n \r\n
\r\n
\r\n
\r\n );\r\n\r\n}","import CCActivity from \"./CCActivity\";\r\nimport { CCAttestation } from \"./CCAttestation\";\r\nimport { EnrollmentCertificate } from \"./CCEnrollment\";\r\n\r\nexport class CCBlock {\r\n ccBlockId: number;\r\n ccBlockNumber: number;\r\n startDate: string;\r\n endDate: string;\r\n startYear: number;\r\n endYear: number;\r\n complete: boolean;\r\n extensionDate: string;\r\n totalCMEAttestationCredits: number;\r\n totalSAAttestationCredits: number;\r\n totalVerifiedCMECredits: number;\r\n totalVerifiedSACredits: number;\r\n hasPipClinicalAttestation: boolean;\r\n hasPipFeedbackAttestation: boolean;\r\n hasPatientSafetyCompleted: boolean;\r\n hasVerifiedPatientSafety: boolean;\r\n isExpanded: boolean;\r\n totalRequiredCMECredits: number;\r\n requiredCMECredits: number;\r\n requiredSACredits: number;\r\n totalWaivedCMECredits: number;\r\n totalWaivedSACredits: number;\r\n hasPipWaiver: boolean;\r\n ccVerifiedActivities: Array;\r\n ccAppliedWaivers: Array;\r\n ccAttestations: Array;\r\n isEditing: boolean;\r\n ccAnnualFees: Array;\r\n totalBlockYears: number;\r\n isMeetingRequirements: boolean;\r\n isPatientSafetyRequired: boolean;\r\n isPipRequired: boolean;\r\n outstandingRequirements: Array;\r\n isActivityRequirementsCompleted: boolean;\r\n hasFailedAudit: boolean;\r\n hasPassedAudit: boolean;\r\n hasAudit: boolean;\r\n enrollmentCertificates: Array;\r\n unpaidOrphanYears: Array;\r\n}\r\n\r\nexport class CCAttesttionWaiver {\r\n ccAttestationWaiverId: number;\r\n cmeCredits: number;\r\n description: string;\r\n waiverTypeDescription: string;\r\n isPipWaived: boolean;\r\n saCredits: number;\r\n waiverDate: Date;\r\n year: number;\r\n}\r\n\r\nexport class CCAnnualFee {\r\n year: number;\r\n isWaived: boolean;\r\n isPaid: boolean;\r\n feeAmount: number;\r\n}\r\nexport class CCBlockRequirementResult {\r\n requirementType: CCBlockRequirementType;\r\n}\r\n\r\n\r\n\r\nexport enum CCBlockRequirementType {\r\n CME = 1,\r\n SA = 2,\r\n PIP = 3,\r\n PatientSafety = 4,\r\n MedicalLicense = 5,\r\n Fees = 6,\r\n FailedAudit = 8\r\n}","export enum PaymentType\r\n{\r\n CreditCard = 1,\r\n ECheck = 2\r\n}","import { ApplicationInsights } from \"@microsoft/applicationinsights-web\";\r\nimport { configService } from \"./Config/ConfigService\";\r\n\r\nclass AppInsights {\r\n\r\n private appInsights: ApplicationInsights\r\n\r\n async load() {\r\n\r\n var config = await configService.getConfiguration()\r\n\r\n if (config.ApplicationInsights.ConnectionString) {\r\n this.appInsights = new ApplicationInsights({\r\n config: {\r\n connectionString: config.ApplicationInsights.ConnectionString\r\n }\r\n });\r\n this.appInsights.loadAppInsights();\r\n this.appInsights.trackPageView(); // Manually call trackPageView to establish the current user/session/pageview\r\n }\r\n }\r\n async logError(ex: Error){\r\n this.appInsights.trackException({exception: ex});\r\n }\r\n}\r\nexport const appInsights = new AppInsights();","import { PaymentType } from \"./PaymentType\";\r\n\r\nexport default class Payment {\r\n PaymentToken: string;\r\n LastFour: string;\r\n IsValid: boolean;\r\n error: any;\r\n amount: number;\r\n transactionDate: string;\r\n paymentType: PaymentType;\r\n firstName: string;\r\n lastName: string;\r\n city: string;\r\n state: string;\r\n month: string;\r\n year: string;\r\n email: string;\r\n accountNumber: string;\r\n routingNumber: string;\r\n method: string;\r\n bankType: string;\r\n bankHolderType: string;\r\n}\r\nexport enum BankHolderType {\r\n personal = \"personal\",\r\n business = \"business\"\r\n}\r\nexport enum BankType {\r\n checking = \"checking\",\r\n savings = \"savings\"\r\n}","import { appInsights } from \"../AppInsights\";\r\nimport { configService } from \"../Config/ConfigService\";\r\nimport Payment from \"./Payment\";\r\nimport { IPaymentProcessor } from \"./PaymentProcessor\";\r\nimport { PaymentType } from \"./PaymentType\";\r\n\r\ndeclare var FattJs: any;\r\n\r\nclass FattPayClient implements IPaymentProcessor {\r\n\r\n //private _payment: Payment = null;\r\n private _fattJs: any = null;\r\n\r\n constructor() {\r\n const script = document.createElement('script');\r\n script.src = \"https://fattjs.fattpay.com/js/fattmerchant.js\";\r\n script.async = true;\r\n document.body.appendChild(script);\r\n }\r\n\r\n public async initializeCreditCard(cardElement: Element, cvvElement: Element) {\r\n var config = await configService.getConfiguration();\r\n\r\n this._fattJs = new FattJs(config.FattPay.WebsitePaymentsToken, {\r\n number: {\r\n id: cardElement.id, // the html id of the div you want to contain the credit card number field\r\n placeholder: '0000 0000 0000 0000', // the placeholder the field should contain\r\n style: 'display: block;padding: 0.375rem 0.75rem;font-size: 1rem;font-weight: 400;line-height: 1.5;color: #495057;background-color: #fff;background-clip: padding-box;border: 1px solid #ced4da;border-radius: 0px;transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;', // the style to apply to the field\r\n type: 'text', // the input type (optional)\r\n format: 'prettyFormat' // the formatting of the CC number (prettyFormat || plainFormat || maskedFormat)\r\n },\r\n cvv: {\r\n id: cvvElement.id, // the html id of the div you want to contain the cvv field\r\n placeholder: 'CVV', // the placeholder the field should contain\r\n style: 'display: block;padding: 0.375rem 0.75rem;font-size: 1rem;font-weight: 400;line-height: 1.5;color: #495057;background-color: #fff;background-clip: padding-box;border: 1px solid #ced4da;border-radius: 0px;transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;', // the style to apply to the field\r\n type: 'text' // the input type (optional)\r\n }\r\n });\r\n this._fattJs.showCardForm();\r\n }\r\n\r\n public async initializeBank() {\r\n var config = await configService.getConfiguration();\r\n\r\n this._fattJs = new FattJs(config.FattPay.WebsitePaymentsToken, {});\r\n this._fattJs.showCardForm();\r\n }\r\n\r\n public async tokenize(payment: Payment): Promise {\r\n\r\n if (!payment.email) throw \"Email is required for payments\";\r\n\r\n try {\r\n var response = await this._fattJs.tokenize({\r\n first_name: payment.firstName,\r\n last_name: payment.lastName,\r\n person_name: payment.firstName + \" \" + payment.lastName,\r\n address_city: payment.city,\r\n address_state: payment.state,\r\n method: payment.paymentType === PaymentType.CreditCard ? \"card\" : \"bank\",\r\n month: payment.month,\r\n year: payment.year,\r\n email: payment.email,\r\n bank_type: payment.bankType,\r\n bank_holder_type: payment.bankHolderType,\r\n bank_account: payment.accountNumber,\r\n bank_routing: payment.routingNumber\r\n });\r\n payment.PaymentToken = response.id;\r\n payment.LastFour = response.card_last_four;\r\n payment.IsValid = true;\r\n } catch (ex) {\r\n payment.IsValid = false;\r\n appInsights.logError(ex);\r\n console.log(ex);\r\n }\r\n return payment;\r\n }\r\n}\r\nexport const fattPayClient = new FattPayClient();","import { fattPayClient } from \"./FattPayClient\";\r\nimport Payment from \"./Payment\";\r\n\r\nexport interface IPaymentProcessor\r\n{\r\n tokenize(payment: Payment): Promise;\r\n}\r\n\r\nexport const paymentProcessor : IPaymentProcessor = fattPayClient;","import Payment from \"../../../../Services/PaymentProcessor/Payment\";\r\nimport { CCAnnualFee } from \"../../../Physician/Models/CCBlock\";\r\n\r\nexport default class CCAnnualFeePayment {\r\n constructor(fees: Array, payment: Payment) {\r\n this.years = fees.map(_ => _.year);\r\n this.payment = payment;\r\n }\r\n years: Array;\r\n payment: Payment;\r\n}\r\n\r\n","import React from 'react'\r\nimport { fattPayClient } from \"./FattPayClient\";\r\nimport { Col, Form } from 'react-bootstrap';\r\nimport Payment from './Payment';\r\nimport { deepCopy } from '../../Components/Shared/Utility/DeepCopy';\r\nimport { ValidatorHelper } from '../../Components/Shared/ValidatorHelper';\r\n\r\ninterface IFattPayCreditCardProps {\r\n onPaymentChanged: (payment: Payment) => void;\r\n payment: Payment,\r\n disabled?: boolean\r\n}\r\n\r\nconst monthRegex = new RegExp('0[1-9]|1[012]');\r\nconst yearRegex = new RegExp('\\\\d{4}');\r\n\r\nexport const FattPayCreditCard = React.forwardRef((props: IFattPayCreditCardProps, ref: React.Ref) => {\r\n var cardRef = React.createRef();\r\n var cvvRef = React.createRef();\r\n var ccMonthRef = React.useRef(null);\r\n var ccYearRef = React.useRef(null);\r\n\r\n React.useImperativeHandle(ref,\r\n () => ({\r\n validate(payment: Payment) : boolean {\r\n ValidatorHelper.clearCustomValidation(ccMonthRef.current);\r\n ValidatorHelper.clearCustomValidation(ccYearRef.current);\r\n var isValid = true;\r\n \r\n if (payment.month.match(monthRegex) === null) {\r\n ValidatorHelper.setCustomValidationWithFeedback(ccMonthRef.current, \"Enter 2 Digit Month.\");\r\n isValid = false;\r\n }\r\n \r\n if (payment.year.match(yearRegex) === null) {\r\n ValidatorHelper.setCustomValidationWithFeedback(ccYearRef.current, \"Enter 4 Digit Year.\");\r\n isValid = false;\r\n }\r\n \r\n return isValid;\r\n }\r\n }),\r\n );\r\n\r\n React.useEffect(() => {\r\n async function initialize() {\r\n //Initialize Bank\r\n await fattPayClient.initializeCreditCard(cardRef.current, cvvRef.current);\r\n }\r\n initialize();\r\n }, []);\r\n\r\n const updateMonth = (month: string) => {\r\n const updated = deepCopy(props.payment);\r\n updated.month = month;\r\n props.onPaymentChanged(updated);\r\n }\r\n\r\n const updateYear = (year: string) => {\r\n const updated = deepCopy(props.payment);\r\n updated.year = year;\r\n props.onPaymentChanged(updated);\r\n }\r\n\r\n return (\r\n \r\n \r\n Card Number\r\n *\r\n
\r\n \r\n \r\n Expiration\r\n *\r\n \r\n \r\n updateMonth(e.target.value)} maxLength={2}\r\n defaultValue={props.payment.month} />\r\n Month is invalid\r\n \r\n \r\n updateYear(e.target.value)}\r\n defaultValue={props.payment.year} />\r\n Year is invalid\r\n \r\n \r\n \r\n \r\n CVV\r\n *\r\n
\r\n \r\n \r\n );\r\n});","import { Fragment, useEffect } from 'react'\r\nimport { fattPayClient } from \"./FattPayClient\";\r\nimport { Col, Form, Row } from 'react-bootstrap';\r\nimport Payment, { BankHolderType, BankType } from './Payment';\r\nimport { deepCopy } from '../../Components/Shared/Utility/DeepCopy';\r\n\r\ninterface IProps {\r\n onPaymentChanged: (payment: Payment) => void;\r\n payment: Payment,\r\n disabled?: boolean\r\n}\r\n\r\nexport const FattPayBank = (props: IProps) => {\r\n useEffect(() => {\r\n async function initialize() {\r\n //Initialize Bank\r\n await fattPayClient.initializeBank();\r\n }\r\n initialize();\r\n }, []);\r\n\r\n const updateAccountNumber = (accountNumber: string) => {\r\n const updated = deepCopy(props.payment);\r\n updated.accountNumber = accountNumber;\r\n props.onPaymentChanged(updated);\r\n }\r\n const updateRoutingNumber = (routingNumber: string) => {\r\n const updated = deepCopy(props.payment);\r\n updated.routingNumber = routingNumber;\r\n props.onPaymentChanged(updated);\r\n }\r\n const updateBankType = (type: BankType) => {\r\n const updated = deepCopy(props.payment);\r\n updated.bankType = type;\r\n props.onPaymentChanged(updated);\r\n }\r\n const updateBankHolderType = (type: BankHolderType) => {\r\n const updated = deepCopy(props.payment);\r\n updated.bankHolderType = type;\r\n props.onPaymentChanged(updated);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Account Number\r\n *\r\n updateAccountNumber(e.target.value)}\r\n defaultValue={props.payment.accountNumber} />\r\n Account Number is Required\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n Routing Number\r\n *\r\n updateRoutingNumber(e.target.value)}\r\n defaultValue={props.payment.routingNumber} />\r\n Routing Number is Required\r\n \r\n \r\n \r\n \r\n \r\n \r\n Type*\r\n updateBankType(BankType.checking)}\r\n className=\"ml-1 mt-3\" />\r\n \r\n \r\n \r\n updateBankType(BankType.savings)}\r\n className=\"ml-1 mt-3\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Purpose*\r\n updateBankHolderType(BankHolderType.personal)}\r\n className=\"ml-1 mt-3\" />\r\n \r\n \r\n \r\n updateBankHolderType(BankHolderType.business)}\r\n className=\"ml-1 mt-3\" />\r\n \r\n \r\n \r\n );\r\n}","import React from 'react'\r\nimport { Button, Card, Col, Form } from 'react-bootstrap';\r\nimport Payment from './Payment';\r\nimport { deepCopy } from '../../Components/Shared/Utility/DeepCopy';\r\nimport { PaymentType } from './PaymentType';\r\nimport { FattPayCreditCard } from './FattPayCreditCard';\r\nimport { FattPayBank } from './FattPayBank';\r\n\r\ninterface IFattPayContainerProps {\r\n onPaymentChanged: (payment: Payment) => void;\r\n onPaymentTypeChanged: () => void;\r\n payment: Payment,\r\n disabled?: boolean\r\n}\r\n\r\nexport const FattPayContainer = React.forwardRef((props: IFattPayContainerProps, ref: React.Ref) => {\r\n const ccPaymentRef = React.useRef(null);\r\n\r\n React.useImperativeHandle(ref,\r\n () => ({\r\n validate(payment: Payment) : boolean {\r\n var isValid = true;\r\n\r\n if (ccPaymentRef.current && !ccPaymentRef.current.validate(payment)) {\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n }\r\n }),\r\n );\r\n\r\n \r\n const updatePaymentType = (paymentType: PaymentType) => {\r\n const updated = deepCopy(props.payment);\r\n updated.paymentType = paymentType;\r\n props.onPaymentChanged(updated);\r\n props.onPaymentTypeChanged();\r\n }\r\n\r\n const updateFirstName = (firstName: string) => {\r\n const updated = deepCopy(props.payment);\r\n updated.firstName = firstName;\r\n props.onPaymentChanged(updated);\r\n }\r\n\r\n const updateLastName = (lastName: string) => {\r\n const updated = deepCopy(props.payment);\r\n updated.lastName = lastName;\r\n props.onPaymentChanged(updated);\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n Select Payment Method*\r\n \r\n \r\n \r\n
\r\n { props.payment.paymentType &&\r\n \r\n \r\n Cardholder Name\r\n *\r\n \r\n \r\n updateFirstName(e.target.value)}\r\n defaultValue={props.payment.firstName} />\r\n First Name is Required\r\n \r\n \r\n updateLastName(e.target.value)}\r\n defaultValue={props.payment.lastName} />\r\n Last Name is Required\r\n \r\n \r\n \r\n {props.payment.paymentType === PaymentType.CreditCard &&\r\n \r\n }\r\n {props.payment.paymentType === PaymentType.ECheck &&\r\n \r\n }\r\n \r\n }\r\n
\r\n );\r\n});","export const booleanify = (value: string): boolean => {\r\n const truthy: string[] = [\r\n 'true',\r\n 'True',\r\n '1'\r\n ]\r\n\r\n return truthy.includes(value);\r\n}","import React, { useRef, useState, useContext, useEffect } from \"react\";\r\nimport { Card, Button, Col, Form, Row, Alert, OverlayTrigger, Tooltip } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\nimport { paymentProcessor } from \"../../../../Services/PaymentProcessor/PaymentProcessor\";\r\nimport Payment from \"../../../../Services/PaymentProcessor/Payment\";\r\nimport { Address } from \"../../../Physician/Models/Address\";\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport { CCAnnualFee, CCBlock } from \"../../../Physician/Models/CCBlock\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { deepCopy } from \"../../../Shared/Utility/DeepCopy\";\r\nimport CCAnnualFeePayment from \"../Models/CCAnnualFeePayment\";\r\nimport { FattPayContainer } from \"../../../../Services/PaymentProcessor/FattPayContainer\";\r\nimport CCAnnualFeePaymentResponse from \"../Models/CCAnnualFeePaymentResponse\";\r\nimport { configService } from \"../../../../Services/Config/ConfigService\";\r\nimport { booleanify } from \"../../../Shared/Utility/Booleanify\";\r\nimport InvoiceModel from \"../../../Shared/Models/InvoiceModel\";\r\nimport ReceiptModel from \"../../../Shared/Models/ReceiptModel\";\r\n\r\n\r\ninterface IProps {\r\n ccBlock: CCBlock;\r\n onSaveBlock: (updatedBlock: CCBlock) => void;\r\n isReadOnly: boolean;\r\n blockYears: Array;\r\n contactAddress: Address;\r\n email: string;\r\n}\r\n\r\nexport function AnnualFees(props: IProps) {\r\n const [payFees, setPayFees] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [selectedYearsToPay, setSelectedYearsToPay] = useState>([]);\r\n const [payment, setPayment] = useState({ email: props.email, city: props.contactAddress?.city, state: props.contactAddress?.stateCode } as Payment);\r\n const [isPaymentSuccessful, setIsPaymentSuccessful] = useState(null);\r\n const [useBC, setUseBC] = useState(false);\r\n\r\n const authContext = useContext(AuthContext);\r\n const cardRef = useRef(null);\r\n const scrollToTop = () => cardRef?.current.scrollIntoView({ behavior: \"smooth\" })\r\n var unpaidFees = props.ccBlock.ccAnnualFees.filter(_ => !_.isWaived && !_.isPaid);\r\n\r\n const getUnpaidYears = () => {\r\n return unpaidFees.filter(_ => !props.ccBlock.unpaidOrphanYears.some(x => x == _.year));\r\n }\r\n\r\n useEffect(() => {\r\n const addRequiredFeesToPay = () => {\r\n const updated = deepCopy(selectedYearsToPay);\r\n var allAnnualFees = props.ccBlock.ccAnnualFees\r\n for (var i = 0; i < allAnnualFees.length; i++){\r\n var annualFee = allAnnualFees[i];\r\n var isOrphan = props.ccBlock.unpaidOrphanYears.some(_ => _ == annualFee.year);\r\n if (isOrphan && updated.every(_ => _.year != annualFee.year)) updated.push(annualFee);\r\n }\r\n\r\n if (updated.length === 0) {\r\n var unpaid = props.ccBlock.ccAnnualFees.filter(_ => !_.isWaived && !_.isPaid);\r\n var requiredFee = unpaid[0];\r\n updated.push(requiredFee)\r\n }\r\n setSelectedYearsToPay(updated);\r\n }\r\n\r\n addRequiredFeesToPay();\r\n }, [props.ccBlock]);\r\n\r\n useEffect(() => {\r\n const getUseBC = async () => {\r\n let k = (await configService.getConfiguration()).FeatureFlags.UseBusinessCentral;\r\n if (typeof k === \"string\")\r\n {\r\n setUseBC(booleanify(k));\r\n }\r\n else {\r\n setUseBC(k);\r\n }\r\n\r\n }\r\n getUseBC();\r\n }, []);\r\n\r\n const onPaymentChanged = (updated: Payment) => {\r\n setPayment(deepCopy(updated));\r\n }\r\n\r\n const isSelectYearToPayDisabled = (annualFee: CCAnnualFee) => {\r\n if (props.isReadOnly) return true;\r\n\r\n var unPaidYears = getUnpaidYears();\r\n var unSelectedYearsToPay = unPaidYears.filter(_ => !selectedYearsToPay?.some(x => x.year == _.year));\r\n\r\n var lastSelectedFee = selectedYearsToPay[selectedYearsToPay.length - 1];\r\n\r\n if (lastSelectedFee != null && lastSelectedFee.year !== annualFee.year)\r\n {\r\n if (selectedYearsToPay.some((selectedYear) => selectedYear.year === annualFee.year && selectedYear.feeAmount === annualFee.feeAmount && selectedYear.isPaid === annualFee.isPaid && selectedYear.isWaived === annualFee.isWaived)){\r\n return true\r\n }\r\n }\r\n\r\n if (unSelectedYearsToPay?.length > 0 && unSelectedYearsToPay.includes(annualFee) && unSelectedYearsToPay[0] !== annualFee) return true;\r\n\r\n return false;\r\n }\r\n\r\n const submitPayment = async (e: React.FormEvent) => {\r\n setIsSubmitting(true);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n e.currentTarget.classList.add('was-validated');\r\n\r\n if (!e.currentTarget.checkValidity()) {\r\n setIsSubmitting(false);\r\n return;\r\n }\r\n\r\n e.currentTarget.classList.remove('was-validated');\r\n\r\n var updatedPayment = deepCopy(payment);\r\n updatedPayment = await paymentProcessor.tokenize(updatedPayment);\r\n updatedPayment.amount = getTotalAmount();\r\n\r\n setPayment(updatedPayment);\r\n\r\n if (!updatedPayment.IsValid) {\r\n setIsSubmitting(false);\r\n return;\r\n }\r\n\r\n\r\n var dto = new CCAnnualFeePayment(selectedYearsToPay, updatedPayment);\r\n\r\n var response;\r\n if (useBC){\r\n // Create Invoices\r\n const newInvoices = await abpnClient.post('/api/invoice/createInvoicesForAnnualFeeYears', dto.years, authContext);\r\n // Apply Payment To Invoices\r\n let invoiceNumbers = newInvoices.map(_ => _.invoiceNumber);\r\n let invoiceReceipt = await abpnClient.post(`/api/invoice/applyPaymentToInvoices?paymentToken=${updatedPayment.PaymentToken}&paymentAmount=${updatedPayment.amount}`, invoiceNumbers, authContext)\r\n setIsPaymentSuccessful(invoiceReceipt.isSuccessful);\r\n \r\n\r\n if (!invoiceReceipt.isSuccessful){\r\n setIsSubmitting(false);\r\n return;\r\n }\r\n\r\n // Record CC Payment to CC Payments\r\n response = await abpnClient.post(`/api/Physician/recordAnnualFeesPaid`, dto, authContext);\r\n }else{\r\n response = await abpnClient.post(`/api/Physician/PayCCAnnualFees`, dto, authContext);\r\n setIsPaymentSuccessful(response.isSuccessful);\r\n if (!response.isSuccessful) {\r\n setIsSubmitting(false);\r\n return;\r\n }\r\n }\r\n \r\n setTimeout(() => setIsPaymentSuccessful(null), 5000);\r\n\r\n setPayFees(false);\r\n scrollToTop();\r\n setSelectedYearsToPay([]);\r\n\r\n props.onSaveBlock(response.ccBlock);\r\n setIsSubmitting(false);\r\n }\r\n\r\n const updateTotal = (annualFee: CCAnnualFee) => {\r\n const updated = deepCopy(selectedYearsToPay);\r\n const index = updated.findIndex(_ => _.year == annualFee.year);\r\n if (index >= 0) {\r\n updated.splice(index, 1);\r\n setSelectedYearsToPay(updated);\r\n return;\r\n }\r\n updated.push(annualFee);\r\n setSelectedYearsToPay(updated);\r\n }\r\n\r\n const getTotalAmount = () => {\r\n return selectedYearsToPay.map(_ => _.feeAmount).reduce((a, b) => a + b, 0);\r\n }\r\n\r\n const getPaidStatus = (year: number) => {\r\n var annualFee = props.ccBlock.ccAnnualFees.find(_ => _.year == year)\r\n\r\n if(annualFee != null){\r\n if (annualFee.isPaid) return \"Paid\";\r\n if (annualFee.isWaived) return \"Waived\";\r\n \r\n return `Not Paid: $${annualFee.feeAmount}`\r\n }\r\n }\r\n\r\n if (props.ccBlock == null) return ;\r\n return (\r\n \r\n {isPaymentSuccessful && Payment Received Successfully.}\r\n \r\n \r\n Annual Fees\r\n \r\n Annual fees cover either assessment pathway (Article Based Continuing Certification (ABCC) pathway or Examination pathway) for all active certifications in the CC Program.
\r\n Annual fees include development and administration of both CC assessment pathways, reporting of Board certification status, access to personalized Physician Portal account, ongoing credentialing, and verification of certification.
\r\n Annual fees are dependent on number of active CC certifications. The annual fee is non-refundable.\r\n }>\r\n \r\n \r\n
\r\n \r\n \r\n
submitPayment(e)} key={props.ccBlock.ccAnnualFees.toString()}>\r\n \r\n {\r\n props.blockYears.map(year => {\r\n return (\r\n \r\n {year}\r\n {getPaidStatus(year)}\r\n \r\n )\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n {\r\n payFees &&\r\n \r\n
\r\n
\r\n Pay Annual Fee\r\n {props.ccBlock.unpaidOrphanYears?.length > 0 && props.ccBlock.unpaidOrphanYears.map((year: number ) => {\r\n var annualFee = props.ccBlock.ccAnnualFees.find(_ => _.year == year);\r\n return ( _.year == year)}\r\n disabled={true}\r\n id={year.toString()}\r\n onChange={() => updateTotal(annualFee)}\r\n label={{year} (${annualFee.feeAmount}) **Unpaid Fee prior to block reset}\r\n />)\r\n })}\r\n {getUnpaidYears().map(annualFee => {\r\n return ( _.year == annualFee.year)}\r\n id={annualFee.year.toString()}\r\n onChange={() => updateTotal(annualFee)}\r\n label={{annualFee.year} (${annualFee.feeAmount})}\r\n />)\r\n })}\r\n
Total ${getTotalAmount()}
\r\n
\r\n {payment.paymentType && payment.IsValid === false &&\r\n \r\n

Could Not Validate Payment Method. Please verify your payment method and try again

\r\n
\r\n }\r\n {isPaymentSuccessful === false &&\r\n \r\n

The provided payment method failed. Please verify your payment method and try again

\r\n
}\r\n null} disabled={props.isReadOnly} />\r\n {isSubmitting ?\r\n \r\n :\r\n \r\n }\r\n
\r\n }\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n\r\n}","export class CCAttestation {\r\n public ccAttestationId: number;\r\n public ccBlockId: number;\r\n public ccAttestationType: number;\r\n public appliedToYear: number;\r\n public credits: number;\r\n public selfReportedCredits: number;\r\n public attestationDate: Date;\r\n}\r\n\r\nexport enum CCAttestationType {\r\n CME = 1,\r\n SA = 2,\r\n PIPFeedback = 3,\r\n PIPClinical = 4,\r\n PatientSafety = 7\r\n}","import { useState, useContext, useEffect } from \"react\";\r\nimport { Card, Col, Collapse, Form, OverlayTrigger, ProgressBar, Row, Table, Tooltip } from \"react-bootstrap\";\r\nimport { CCBlock } from \"../../../Physician/Models/CCBlock\";\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport { CCAttestation, CCAttestationType } from './../../../Physician/Models/CCAttestation';\r\nimport { Button } from 'react-bootstrap';\r\nimport { Fragment } from 'react';\r\nimport { deepCopy } from \"../../../Shared/Utility/DeepCopy\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\nimport { Alert } from 'react-bootstrap';\r\nimport { Link, Prompt } from \"react-router-dom\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\nimport CCActivity from \"../../../Physician/Models/CCActivity\";\r\n\r\n\r\ninterface IProps {\r\n ccBlock: CCBlock;\r\n ccVerifiedActivities: Array;\r\n isReadOnly: boolean;\r\n onSaveBlock: (updatedBlock: CCBlock) => void;\r\n}\r\n\r\nexport function CCActivityRequirements(props: IProps) {\r\n const [isPIPClinicalChecked, setIsPIPClincalChecked] = useState(props.ccBlock.hasPipClinicalAttestation);\r\n const [isPIPFeedbackChecked, setIsPIPFeedbackChecked] = useState(props.ccBlock.hasPipFeedbackAttestation);\r\n const [isPSChecked, setIsPSChecked] = useState(props.ccBlock.hasPatientSafetyCompleted);\r\n const [isEditingAttestations, setIsEditingAttestations] = useState(false);\r\n const [displaySuccessSaveAlert, setDisplaySuccessSaveAlert] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [isFormDirty, setIsFormDirty] = useState(false);\r\n const [ccBlock, setCCBlock] = useState(deepCopy(props.ccBlock));\r\n\r\n useEffect(() => {\r\n var block = deepCopy(props.ccBlock)\r\n setIsPIPClincalChecked(block.hasPipClinicalAttestation);\r\n setIsPIPFeedbackChecked(block.hasPipFeedbackAttestation);\r\n setIsPSChecked(block.hasPatientSafetyCompleted);\r\n setCCBlock(block);\r\n }, [props.ccBlock])\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n let isPSVerified = props.ccVerifiedActivities.length > 0 && props.ccVerifiedActivities.filter(_ => _.isPatientSafety).length > 0;\r\n let isPIPClinicalVerifiedChecked = ccBlock?.ccVerifiedActivities.map(_ => _.isPipClinical).reduce((a, b) => a || b, 0);\r\n let isPIPFeedbackVerifiedChecked = ccBlock?.ccVerifiedActivities.map(_ => _.isPipFeedback).reduce((a, b) => a || b, 0);\r\n let isPipRequired = ccBlock?.isPipRequired;\r\n let isPIPDisabled = isPIPClinicalVerifiedChecked == true || isPIPFeedbackVerifiedChecked == true;\r\n let selfAttestedPIPClinicalCredits = isPIPClinicalChecked ? 1 : 0;\r\n let selfAttestedPIPFeedbackCredits = isPIPFeedbackChecked ? 1 : 0;\r\n let selfAttestedPSCredits = isPSChecked ? 1 : 0;\r\n let totalWaivedAndEarnedCMECredits = ccBlock.totalCMEAttestationCredits + ccBlock.totalWaivedCMECredits + ccBlock.totalVerifiedCMECredits;\r\n let totalWaivedAndEarnedSACredits = ccBlock.totalSAAttestationCredits + ccBlock.totalWaivedSACredits + ccBlock.totalVerifiedSACredits;\r\n let overageOfSACredits = totalWaivedAndEarnedSACredits > ccBlock.requiredSACredits ? totalWaivedAndEarnedSACredits - ccBlock.requiredSACredits : 0;\r\n let percentCMECredits = Math.round((totalWaivedAndEarnedCMECredits + overageOfSACredits > ccBlock.requiredCMECredits ? ccBlock.requiredCMECredits : totalWaivedAndEarnedCMECredits + overageOfSACredits) / ccBlock.requiredCMECredits * 100);\r\n let percentSACredits = Math.round((totalWaivedAndEarnedSACredits > ccBlock.requiredSACredits ? ccBlock.requiredSACredits : totalWaivedAndEarnedSACredits) / ccBlock.requiredSACredits * 100);\r\n\r\n const toggleEdit = () => {\r\n setIsEditingAttestations(!isEditingAttestations);\r\n }\r\n\r\n const createNewAttestation = (type: CCAttestationType) => {\r\n var newAttestation = new CCAttestation();\r\n newAttestation.ccAttestationType = type;\r\n newAttestation.appliedToYear = ccBlock.endYear;\r\n return newAttestation;\r\n }\r\n\r\n const updateSelfReportedCME = (value: number) => {\r\n var attestation = ccBlock.ccAttestations.find(_ => _.appliedToYear === ccBlock.endYear && _.ccAttestationType === CCAttestationType.CME);\r\n\r\n if (attestation == null) {\r\n attestation = createNewAttestation(CCAttestationType.CME);\r\n }\r\n\r\n attestation.selfReportedCredits = value;\r\n attestation.ccBlockId = ccBlock.ccBlockId;\r\n updateCCAttestations(attestation);\r\n setIsFormDirty(true);\r\n }\r\n\r\n const updateSelfReportedSACME = (value: number) => {\r\n var attestation = ccBlock.ccAttestations.find(_ => _.appliedToYear === ccBlock.endYear && _.ccAttestationType === CCAttestationType.SA);\r\n\r\n if (attestation == null) {\r\n attestation = createNewAttestation(CCAttestationType.SA);\r\n }\r\n\r\n attestation.selfReportedCredits = value;\r\n attestation.ccBlockId = ccBlock.ccBlockId;\r\n updateCCAttestations(attestation);\r\n setIsFormDirty(true);\r\n }\r\n\r\n const updateCCAttestations = (attestation: CCAttestation) => {\r\n var newCCBlock = deepCopy(ccBlock);\r\n var newList = deepCopy(ccBlock.ccAttestations);\r\n\r\n if (attestation.ccAttestationType === CCAttestationType.PIPClinical) {\r\n var filteredPIPClinicalList = newList.filter(_ => _.ccAttestationType !== CCAttestationType.PIPFeedback);\r\n newList = filteredPIPClinicalList;\r\n }\r\n\r\n if (attestation.ccAttestationType === CCAttestationType.PIPFeedback) {\r\n var filteredPIPFeedbackList = newList.filter(_ => _.ccAttestationType !== CCAttestationType.PIPClinical);\r\n newList = filteredPIPFeedbackList;\r\n }\r\n\r\n var index = ccBlock.ccAttestations.findIndex(_ => _.ccAttestationId === attestation.ccAttestationId && _.ccAttestationType === attestation.ccAttestationType);\r\n\r\n if (index === -1) {\r\n newList.push(attestation);\r\n }\r\n else {\r\n newList[index] = attestation;\r\n }\r\n\r\n newCCBlock.ccAttestations = newList;\r\n if (attestation.ccAttestationType == CCAttestationType.CME) newCCBlock.totalCMEAttestationCredits = attestation.selfReportedCredits\r\n if (attestation.ccAttestationType == CCAttestationType.SA) newCCBlock.totalSAAttestationCredits = attestation.selfReportedCredits\r\n setCCBlock(newCCBlock);\r\n }\r\n\r\n const saveAllCCAttestations = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n e.currentTarget.classList.add(\"was-validated\");\r\n if (e.currentTarget.checkValidity()) {\r\n e.currentTarget.classList.remove(\"was-validated\");\r\n setIsSubmitting(true);\r\n\r\n const url = \"/api/Physician/SaveCCAttestations?ccBlockId=\" + ccBlock.ccBlockId;\r\n\r\n abpnClient.post(url, ccBlock.ccAttestations, authContext).then(result => {\r\n\r\n setCCBlock(result);\r\n setIsSubmitting(false);\r\n setIsEditingAttestations(false);\r\n setDisplaySuccessSaveAlert(true);\r\n\r\n setTimeout(() => {\r\n setDisplaySuccessSaveAlert(false);\r\n }, 5000)\r\n\r\n setIsFormDirty(false);\r\n\r\n props.onSaveBlock(result);\r\n });\r\n }\r\n }\r\n\r\n const cancelEdit = () => {\r\n toggleEdit();\r\n setCCBlock(deepCopy(props.ccBlock));\r\n }\r\n\r\n const updateIsPIPClinicalChecked = () => {\r\n setIsPIPClincalChecked(!isPIPClinicalChecked);\r\n var attestation = ccBlock.ccAttestations.find(_ => _.appliedToYear === ccBlock.endYear && _.ccAttestationType === CCAttestationType.PIPClinical);\r\n\r\n if (attestation == null) {\r\n attestation = createNewAttestation(CCAttestationType.PIPClinical);\r\n }\r\n\r\n attestation.selfReportedCredits = selfAttestedPIPClinicalCredits === 1 ? 0 : 1;\r\n attestation.ccBlockId = ccBlock.ccBlockId;\r\n updateCCAttestations(attestation);\r\n setIsFormDirty(true);\r\n }\r\n\r\n const updateIsPIPFeedbackChecked = () => {\r\n setIsPIPFeedbackChecked(!isPIPFeedbackChecked);\r\n var attestation = ccBlock.ccAttestations.find(_ => _.appliedToYear === ccBlock.endYear && _.ccAttestationType === CCAttestationType.PIPFeedback);\r\n\r\n if (attestation == null) {\r\n attestation = createNewAttestation(CCAttestationType.PIPFeedback);\r\n }\r\n\r\n attestation.selfReportedCredits = selfAttestedPIPFeedbackCredits === 1 ? 0 : 1;\r\n attestation.ccBlockId = ccBlock.ccBlockId;\r\n updateCCAttestations(attestation);\r\n setIsFormDirty(true);\r\n }\r\n\r\n const updateIsPSChecked = () => {\r\n setIsPSChecked(!isPSChecked);\r\n var attestation = ccBlock.ccAttestations.find(_ => _.appliedToYear === ccBlock.endYear && _.ccAttestationType === CCAttestationType.PatientSafety);\r\n\r\n if (attestation == null) {\r\n attestation = createNewAttestation(CCAttestationType.PatientSafety);\r\n }\r\n\r\n attestation.selfReportedCredits = selfAttestedPSCredits === 1 ? 0 : 1;\r\n attestation.ccBlockId = ccBlock.ccBlockId;\r\n updateCCAttestations(attestation);\r\n setIsFormDirty(true);\r\n }\r\n\r\n const openApprovedActivities = () => {\r\n window.open(\"https://www.abpn.org/maintain-certification/abpn-approved-products-list/\", \"_blank\")\r\n }\r\n\r\n const getPipRequirementMessage = (ccBlock: CCBlock) => {\r\n\r\n if (ccBlock.hasPipWaiver) return \"Waived\"\r\n if (isPipRequired) return \"Not Met\"\r\n return \"Not Required\"\r\n }\r\n\r\n const getDivBorderColor = ()=>\r\n {\r\n if(ccBlock.hasPassedAudit)\r\n return \"mb-4 pp-div-CC-PassAudit\"\r\n if(ccBlock.hasFailedAudit)\r\n return \"mb-4 pp-div-CC-FailAudit\"\r\n if(ccBlock.hasAudit)\r\n return \"mb-4 pp-div-CC-HasAudit\"\r\n\r\n return \"mb-4 pp-secondary-grey\"\r\n\r\n }\r\n\r\n return (\r\n \r\n {displaySuccessSaveAlert &&\r\n \r\n

Successfully Saved and Attested

\r\n
\r\n }\r\n \r\n \r\n \r\n Continuing Certification Activity Requirements\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Activity Attestations Due By\r\n {getDateWithOffset(props.ccBlock.endDate).toLocaleDateString()}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Self Assessment CME\r\n \r\n Self-Assessment CME (SA CME) credits contribute to the overall number of CME Credits. Any attested to SA CME credits over the 24 SA credits required will be applied to the required Category 1 CME credits.\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n
\r\n ({totalWaivedAndEarnedSACredits}/{ccBlock.requiredSACredits})\r\n
\r\n \r\n
\r\n \r\n \r\n CME\r\n \r\n \r\n \r\n
\r\n ({totalWaivedAndEarnedCMECredits + overageOfSACredits}/{ccBlock.requiredCMECredits})\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {ccBlock.hasPipClinicalAttestation || ccBlock.hasPipFeedbackAttestation || isPIPClinicalVerifiedChecked || isPIPFeedbackVerifiedChecked ?\r\n
\r\n : {getPipRequirementMessage(ccBlock)}}\r\n \r\n \r\n
\r\n Patient Safety\r\n
\r\n {ccBlock.hasPatientSafetyCompleted || isPSVerified ?\r\n
\r\n : \r\n {ccBlock.isPatientSafetyRequired ?\r\n Not Met\r\n :\r\n Not Required\r\n }\r\n \r\n }\r\n \r\n
\r\n \r\n {ccBlock.isActivityRequirementsCompleted &&
Congratulations! You Have Completed All Activity Requirements
}\r\n
\r\n\r\n {!isEditingAttestations &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n {isEditingAttestations &&\r\n \r\n \r\n \r\n \r\n \r\n Activity Attestations\r\n \r\n \r\n\r\n \r\n
saveAllCCAttestations(e)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Self-Reported\r\n \r\n These activities are not verified or waived by ABPN.\r\n }>\r\n \r\n \r\n \r\n \r\n Verified\r\n \r\n Records of completed CC credits and activities from various professional organizations are reported directly to ABPN within three months of the activity completion. The verified credits are reflected in the CC Activity Attestations section. In the event of an audit no further documentation is required from a diplomate for verified activities.\r\n }>\r\n \r\n \r\n \r\n \r\n Waived\r\n \r\n Activity credits that have been waived by the ABPN for Fellowship, Article Pathway, Exam Credit, and/or non-CME SA activities.\r\n {ccBlock?.ccAppliedWaivers?.length > 0 &&\r\n \r\n

\r\n Your activity waiver(s):
\r\n {ccBlock.ccAppliedWaivers.map(_ =>\r\n \r\n {_.waiverTypeDescription} ({_.cmeCredits > 0 ? `${_.cmeCredits} CME ` : null}{_.saCredits > 0 ? `${_.saCredits} SA` : null})
\r\n
\r\n )}\r\n
\r\n\r\n }\r\n\r\n }>\r\n \r\n \r\n
\r\n
\r\n Total\r\n
\r\n Self Assessment CME\r\n \r\n
\r\n updateSelfReportedSACME(parseFloat(e.target.value))}\r\n value={ccBlock.totalSAAttestationCredits} />\r\n
\r\n
\r\n {ccBlock.totalVerifiedSACredits}\r\n \r\n {ccBlock.totalWaivedSACredits}\r\n \r\n {totalWaivedAndEarnedSACredits}/{ccBlock.requiredSACredits}\r\n
\r\n CME\r\n \r\n
\r\n updateSelfReportedCME(parseFloat(e.target.value))}\r\n value={ccBlock.totalCMEAttestationCredits} />\r\n
\r\n
\r\n {ccBlock.totalVerifiedCMECredits}\r\n \r\n {ccBlock.totalWaivedCMECredits}\r\n \r\n {totalWaivedAndEarnedCMECredits + overageOfSACredits}/{ccBlock.requiredCMECredits}\r\n
\r\n PIP - Clinical\r\n \r\n Only one PIP (Clinical or Feedback) is required.\r\n }>\r\n \r\n \r\n \r\n \r\n {!ccBlock.hasPipWaiver ?\r\n \r\n updateIsPIPClinicalChecked()} />\r\n \r\n : \"-\"\r\n }\r\n \r\n {isPIPClinicalVerifiedChecked ? : \"-\"}\r\n \r\n {ccBlock.hasPipWaiver ? : \"-\"}\r\n \r\n {(isPIPClinicalVerifiedChecked || isPIPClinicalChecked || ccBlock.hasPipWaiver) ? : \"-\"}\r\n
\r\n PIP - Feedback\r\n \r\n Only one PIP (Clinical or Feedback) is required.\r\n }>\r\n \r\n \r\n \r\n \r\n {!ccBlock.hasPipWaiver ?\r\n \r\n updateIsPIPFeedbackChecked()} />\r\n \r\n : \"-\"\r\n }\r\n \r\n {isPIPFeedbackVerifiedChecked ? : \"-\"}\r\n \r\n {ccBlock.hasPipWaiver ? : \"-\"}\r\n \r\n {(isPIPFeedbackVerifiedChecked || isPIPFeedbackChecked || ccBlock.hasPipWaiver) ? : \"-\"}\r\n
\r\n Patient Safety\r\n \r\n {ccBlock.isPatientSafetyRequired ?\r\n isPSVerified ?\r\n {\"-\"}\r\n :\r\n \r\n updateIsPSChecked()} />\r\n \r\n :\r\n Not Required\r\n }\r\n \r\n {isPSVerified ? : \"-\"}\r\n \r\n {\"-\"}\r\n \r\n {(isPSChecked || isPSVerified || ccBlock.hasPipWaiver) ? : \"-\"}\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n {isSubmitting ?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
}\r\n
\r\n\r\n
\r\n
\r\n
\r\n );\r\n\r\n}","import { Fragment } from \"react\";\r\nimport { Col, Form, ProgressBar, Row } from \"react-bootstrap\";\r\nimport { AbccAssessmentCertification } from \"../Models/CCAssessment\";\r\n\r\ninterface IProps {\r\n abccAssessmentCertification: AbccAssessmentCertification;\r\n perCertificateArticleRequirement: number;\r\n perCertificateMaxFailsAllowed: number;\r\n}\r\n\r\nexport function AbccAssessmentCertificationCard(props: IProps){\r\n const numPassed = props.abccAssessmentCertification.ccArticleResults?.length > 0 ? props.abccAssessmentCertification.ccArticleResults.filter(_ => _.isPass).length : 0;\r\n const numPassedAndWaived = props.abccAssessmentCertification.waivedArticles + numPassed;\r\n const numFailed = props.abccAssessmentCertification.ccArticleResults?.length > 0 ? props.abccAssessmentCertification.ccArticleResults?.filter(_ => !_.isPass).length : 0;\r\n const percentPassed = numPassedAndWaived / props.perCertificateArticleRequirement * 100;\r\n \r\n return(\r\n \r\n \r\n \r\n {props.abccAssessmentCertification.certificationName} \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {numPassedAndWaived}/{props.perCertificateArticleRequirement} \r\n
\r\n
\r\n \r\n \r\n props.perCertificateMaxFailsAllowed ? \"pp-danger-text\" : \"\")}>\r\n {numFailed}/{props.perCertificateMaxFailsAllowed}\r\n \r\n \r\n \r\n  \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default AbccAssessmentCertificationCard;","import { CCArticleResult } from \"../../Models/Assessment\";\r\nimport { OverlayTrigger, Table, Tooltip } from \"react-bootstrap\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps {\r\n articleResults: Array;\r\n}\r\n\r\nexport function ArticleResultList(props: IProps) {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { props.articleResults.map((articleResult: CCArticleResult) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
ArticleCompletedResult
{articleResult.articleTitle}{getDateWithOffset(articleResult.completedDate).toLocaleDateString()}{articleResult.isPass ? \"Pass\" : \"Fail\"}\r\n {articleResult.isPass && articleResult.rescore && \r\n \r\n Rescored on {getDateWithOffset(articleResult.rescoreDate).toLocaleDateString()}. Result updated.\r\n }>\r\n \r\n \r\n }\r\n
\r\n
\r\n\r\n \r\n );\r\n}\r\n","import { Fragment, useState } from \"react\";\r\nimport { Button, Card, Col, Form, ProgressBar, Row } from \"react-bootstrap\";\r\nimport { CCArticleResult } from \"../../Models/Assessment\";\r\nimport { AbccAssessment, AbccAssessmentCertification } from \"../Models/CCAssessment\";\r\nimport { AbccAssessmentCertificationCard } from \"./AbccAssessmentCertificationCard\";\r\nimport { ArticleResultList } from \"./ArticleResultList\";\r\nimport { CCBlock } from \"../../../Physician/Models/CCBlock\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps{\r\n abccAssessment: AbccAssessment,\r\n ccBlock: CCBlock\r\n}\r\nexport function AbccAssessmentCard(props: IProps) {\r\n const [detailVisible, setDetailVisible] = useState(false);\r\n \r\n \r\n const getTotalPassed = () => {\r\n var totalPassed = 0;\r\n if (props.abccAssessment.abccAssessmentCertifications){\r\n for (var i = 0; i < props.abccAssessment.abccAssessmentCertifications.length; i++){\r\n if (props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults)\r\n {\r\n for (var a = 0; a < props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults.length; a++)\r\n {\r\n if (props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults[a].isPass)\r\n {\r\n totalPassed++;\r\n }\r\n }\r\n } \r\n }\r\n }\r\n\r\n return totalPassed;\r\n }\r\n\r\n const getTotalFailed = () => {\r\n var totalFailed = 0;\r\n if (props.abccAssessment.abccAssessmentCertifications){\r\n for (var i = 0; i < props.abccAssessment.abccAssessmentCertifications.length; i++){\r\n if (props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults)\r\n {\r\n for (var a = 0; a < props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults.length; a++)\r\n {\r\n if (!props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults[a].isPass)\r\n {\r\n totalFailed++;\r\n }\r\n }\r\n } \r\n }\r\n }\r\n\r\n return totalFailed;\r\n }\r\n\r\n const anyCertsFailed = () => {\r\n if (props.abccAssessment.abccAssessmentCertifications){\r\n for (let i = 0; i < props.abccAssessment.abccAssessmentCertifications.length; i++){\r\n if (props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults)\r\n {\r\n let certFails = 0;\r\n for (let a = 0; a < props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults.length; a++)\r\n {\r\n if (!props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults[a].isPass)\r\n {\r\n certFails++;\r\n }\r\n }\r\n\r\n if (certFails > props.abccAssessment.perCertificateMaxFailsAllowed){\r\n return true;\r\n }\r\n } \r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n const allCertificationsMeetMinimumRequirement = () =>{ \r\n if (props.abccAssessment.abccAssessmentCertifications){\r\n for (var i = 0; i < props.abccAssessment.abccAssessmentCertifications.length; i++){\r\n var certTotalPassed = 0;\r\n if (props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults)\r\n {\r\n for (var a = 0; a < props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults.length; a++)\r\n {\r\n if (props.abccAssessment.abccAssessmentCertifications[i].ccArticleResults[a].isPass)\r\n {\r\n certTotalPassed++;\r\n }\r\n }\r\n\r\n certTotalPassed += props.abccAssessment.abccAssessmentCertifications[i].waivedArticles;\r\n }\r\n\r\n if (certTotalPassed < props.abccAssessment.perCertificateArticleRequirement){\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n const totalPassedIncludingWaived = getTotalPassed() + props.abccAssessment.waivedArticles;\r\n const totalPercentPassed = totalPassedIncludingWaived / props.abccAssessment.totalArticleRequirement * 100;\r\n const totalPercentFailed = getTotalFailed() / (props.abccAssessment.attemptsAllowed - props.abccAssessment.totalArticleRequirement) * 100;\r\n const totalFailMax = props.abccAssessment.attemptsAllowed - props.abccAssessment.totalArticleRequirement\r\n\r\n const getStatusMessage = () => {\r\n \r\n if (totalPassedIncludingWaived >= props.abccAssessment.totalArticleRequirement && !anyCertsFailed() && allCertificationsMeetMinimumRequirement()){\r\n return `Congratulations! You have passed ${totalPassedIncludingWaived} of ${props.abccAssessment.totalArticleRequirement} article exams needed to pass.`\r\n }\r\n else if (props.abccAssessment.abccAssessmentCertifications?.length > 1 && !anyCertsFailed() && (totalPassedIncludingWaived < props.abccAssessment.totalArticleRequirement || !allCertificationsMeetMinimumRequirement()))\r\n {\r\n return `You have passed ${totalPassedIncludingWaived} of ${props.abccAssessment.totalArticleRequirement} total article exams. At least ${props.abccAssessment.perCertificateArticleRequirement} article exams are required in each certification to meet requirements. You have ${props.abccAssessment.attemptsAllowed - getTotalFailed() - getTotalPassed()} article attempts exams remaining.`\r\n }\r\n else if (props.abccAssessment.abccAssessmentCertifications?.length == 1 && !anyCertsFailed() && (totalPassedIncludingWaived < props.abccAssessment.totalArticleRequirement || !allCertificationsMeetMinimumRequirement()))\r\n {\r\n return `You have passed ${totalPassedIncludingWaived} of ${props.abccAssessment.totalArticleRequirement} total article exams. You have ${props.abccAssessment.attemptsAllowed - getTotalFailed() - getTotalPassed()} article attempts exams remaining.`\r\n }\r\n if (getTotalFailed() + props.abccAssessment.totalArticleRequirement > props.abccAssessment.attemptsAllowed)\r\n {\r\n return \"You have exceeded the number of failed article exams. You will be required to pass an exam in order to maintain certification\"\r\n } \r\n else if (anyCertsFailed())\r\n {\r\n return \"You have exceeded the number of failed article exams for at least one certification. Any failed certifiation in the ABCC pathway must be changed to the Examination Pathway. The pathway can be changed by clicking Edit CC Enrollment in the CC Enrollment Summary.\"\r\n }\r\n else{\r\n return \"\";\r\n }\r\n }\r\n\r\n const articleResultsExist = () => {\r\n return getAllArticleResults().length > 0\r\n }\r\n\r\n const getAllArticleResults = () => {\r\n var allArticleResults = Array();\r\n props.abccAssessment.abccAssessmentCertifications.map((abccAssessmentCertification: AbccAssessmentCertification) => {\r\n abccAssessmentCertification.ccArticleResults && abccAssessmentCertification.ccArticleResults.map((ccArticleResult: CCArticleResult) => {\r\n allArticleResults.push(ccArticleResult);\r\n })\r\n })\r\n\r\n return allArticleResults;\r\n }\r\n\r\n const anyArticlesCompletedBeforeBlockStart = () => {\r\n var blockStartDate = getDateWithOffset(props.ccBlock.startDate);\r\n var articlesBeforeBlockStart = getAllArticleResults().filter(_ => _.isPass && getDateWithOffset(_.completedDate) < blockStartDate);\r\n \r\n return articlesBeforeBlockStart && articlesBeforeBlockStart.length > 0;\r\n }\r\n\r\n \r\n return(\r\n \r\n \r\n \r\n \r\n Article Exams Due By\r\n {props.abccAssessment.dueDate} \r\n \r\n \r\n \r\n {(props.abccAssessment.waivedArticles > 0 || anyArticlesCompletedBeforeBlockStart()) && \r\n \r\n \r\n
IMPORTANT
\r\n
    \r\n
  • Credits below reflect all Pilot and ABCC article exam credits.
  • \r\n
  • DO NOT exceed the number of passed exams required for this block.
  • \r\n
  • Any extra completed article exams will not be credited to future blocks.
  • \r\n
\r\n
\r\n \r\n
\r\n }\r\n \r\n \r\n   \r\n \r\n \r\n Passed \r\n \r\n \r\n Failed \r\n \r\n \r\n Total Attempts \r\n \r\n \r\n {props.abccAssessment.abccAssessmentCertifications?.length > 1 && props.abccAssessment.abccAssessmentCertifications?.map((abccAssessmentCertification: AbccAssessmentCertification) => { \r\n return })\r\n }\r\n \r\n \r\n \r\n {props.abccAssessment.abccAssessmentCertifications?.length > 1 ? \"Total\" : props.abccAssessment.abccAssessmentCertifications[0].certificationName} \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {totalPassedIncludingWaived}/{props.abccAssessment.totalArticleRequirement} \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n totalFailMax ? \"pp-danger-text\" : \"\")}>{getTotalFailed()}/{totalFailMax} \r\n
\r\n
\r\n \r\n \r\n {getTotalPassed() + getTotalFailed()}/{props.abccAssessment.attemptsAllowed} \r\n \r\n
\r\n \r\n \r\n {getStatusMessage()}\r\n \r\n \r\n { detailVisible &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n { articleResultsExist() && }\r\n \r\n
* Clicking 'Access Article Exams' will navigate you to the article portal
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AbccAssessmentCard;","import { Fragment } from \"react\";\r\nimport { Col, Form, Row } from \"react-bootstrap\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\nimport { ExamAssessment } from \"../Models/CCAssessment\";\r\n\r\ninterface IProps {\r\n examAssessment: ExamAssessment;\r\n}\r\n\r\nexport function ExamAssessmentCard(props: IProps) {\r\n var examDueHeader = \"Exam Due\";\r\n\r\n const getFormattedDueDate = () => {\r\n if (isNaN(Date.parse(props.examAssessment.dueDate))) return props.examAssessment.dueDate;\r\n\r\n return getDateWithOffset(props.examAssessment.dueDate).getFullYear().toString();\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.examAssessment.certificationName.toUpperCase()}\r\n \r\n \r\n \r\n \r\n {examDueHeader}\r\n {getFormattedDueDate()} \r\n \r\n \r\n \r\n  \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n}\r\n\r\nexport default ExamAssessmentCard;","import { Fragment } from \"react\";\r\nimport { Col, Form, Row } from \"react-bootstrap\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\nimport { NonAbpnAssessment } from \"../Models/CCAssessment\";\r\n\r\ninterface IProps{\r\n nonAbpnAssessment: NonAbpnAssessment;\r\n}\r\n\r\nexport function NonAbpnAssessmentCard(props: IProps){\r\n var examDueHeader = \"Assessment Due\";\r\n\r\n const getFormattedDueDate = () => {\r\n if (isNaN(Date.parse(props.nonAbpnAssessment.dueDate))) return props.nonAbpnAssessment.dueDate;\r\n\r\n return getDateWithOffset(props.nonAbpnAssessment.dueDate).getFullYear().toString();\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.nonAbpnAssessment.certificationName.toUpperCase()}\r\n \r\n \r\n \r\n \r\n {examDueHeader}\r\n {getFormattedDueDate()} \r\n \r\n \r\n \r\n  \r\n \r\n \r\n
\r\n
\r\n );\r\n}","import React, { Fragment, useEffect, useState, useContext } from \"react\";\r\nimport { Card, Col, Row} from \"react-bootstrap\";\r\nimport { AuthContext } from \"./../../../Auth/AuthProvider\";\r\nimport { abpnClient } from \"./../../../../Services/AbpnClient\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { AbccAssessmentCard } from \"./AbccAssessmentCard\";\r\nimport { ExamAssessmentCard } from \"./ExamAssessmentCard\";\r\nimport { NonAbpnAssessmentCard } from \"./NonAbpnAssessmentCard\";\r\nimport { AssessmentsResult, ExamAssessment, NonAbpnAssessment } from \"../Models/CCAssessment\";\r\nimport { CCBlock } from \"../../../Physician/Models/CCBlock\";\r\n\r\ninterface IProps{\r\n ccBlock: CCBlock;\r\n}\r\n\r\nexport function CCAssessments(props: IProps) {\r\n\r\n const [assessments, setAssessments] = useState(null);\r\n const authContext = useContext(AuthContext);\r\n\r\n useEffect(()=>{\r\n abpnClient.get(`/api/physician/GetCCAssessments?ccBlockId=${props.ccBlock.ccBlockId}`,authContext)\r\n .then(_=>{setAssessments(_);\r\n });\r\n },[]);\r\n\r\n if (assessments == null) return \r\n\r\n return (\r\n \r\n \r\n \r\n Assessments\r\n \r\n\r\n \r\n \r\n \r\n {assessments != null ?\r\n \r\n {assessments?.abccAssessment?.abccAssessmentCertifications?.length > 0 ?\r\n : \"\"}\r\n {assessments?.examAssessments?.length > 0 ?\r\n assessments.examAssessments.map((examAssessment: ExamAssessment)=> ) : null}\r\n {assessments?.nonAbpnAssessments?.length > 0 ?\r\n assessments.nonAbpnAssessments.map((nonAbpnAssessment: NonAbpnAssessment) => ) : null}\r\n \r\n :\r\n No Certificates}\r\n \r\n \r\n \r\n\r\n \r\n \r\n );\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport { Card,OverlayTrigger, Tooltip } from \"react-bootstrap\";\r\nimport { Address } from \"../../../Physician/Models/Address\";\r\nimport CCActivity from \"../../../Physician/Models/CCActivity\";\r\nimport { CCBlock, CCBlockRequirementType } from \"../../../Physician/Models/CCBlock\";\r\nimport { CCEnrollment } from \"../../../Physician/Models/CCEnrollment\";\r\nimport { MedicalLicense } from \"../../../Physician/Models/MedicalLicense\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { StateWithCountryLookupItem } from \"../../../Shared/Models/StateWithCountryLookupItem\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\nimport { AnnualFees } from \"./AnnualFees\";\r\nimport { CCActivityRequirements } from \"./CCActivityRequirements\";\r\nimport { CCAssessments } from \"./CCAssessments\";\r\nimport { MedicalLicensure } from \"./MedicalLicensure\";\r\ninterface IProps {\r\n ccEnrollment: CCEnrollment;\r\n ccBlock: CCBlock;\r\n contactAddress: Address;\r\n email: string;\r\n medicalLicenses: Array;\r\n states: Array;\r\n onSaveBlock: (updatedBlock: CCBlock) => void;\r\n onSaveLicenses: (medicalLicenses: Array) => void;\r\n hideLicenses: boolean;\r\n isReadOnly?: boolean;\r\n showCollapse?: boolean;\r\n isSectionOpen?: boolean;\r\n showChangesText?: boolean;\r\n ccVerifiedActivities: Array;\r\n}\r\n\r\nexport default function CCBlockCard(props: IProps) {\r\n const [blockYears, setBlockYears] = useState>([]);\r\n \r\n const isCurrentBlock = props.ccBlock.ccBlockId === props.ccEnrollment.currentCCBlock.ccBlockId;\r\n const isActivitiesReadOnly = !isCurrentBlock || props.isReadOnly || props.ccBlock.hasAudit;\r\n const isFeesReadOnly = !isCurrentBlock || props.isReadOnly;\r\n const showErrors = getDateWithOffset(props.ccBlock.endDate) < new Date() && \r\n (props.ccBlock.extensionDate == null || getDateWithOffset(props.ccBlock.extensionDate) < new Date());\r\n\r\n const isNewestBlock = props.ccBlock.startYear == Math.max.apply(Math, props.ccEnrollment.ccBlocks.map(function(block: CCBlock) { return block.startYear; }))\r\n const isBlockInFuture = props.ccBlock.startYear > new Date().getFullYear();\r\n const outstandingRequirements = props.ccBlock.outstandingRequirements;\r\n const isMeetingLicenseRequirement = !outstandingRequirements?.some(_ => _.requirementType === CCBlockRequirementType.MedicalLicense);\r\n const isMeetingFeeRequirement = !outstandingRequirements?.some(_ => _.requirementType === CCBlockRequirementType.Fees);\r\n const isMeetingPatientSafetyRequirement = !outstandingRequirements?.some(_ => _.requirementType === CCBlockRequirementType.PatientSafety);\r\n const isMeetingPIPRequirement = !outstandingRequirements?.some(_ => _.requirementType === CCBlockRequirementType.PIP);\r\n const isMeetingCMERequirement = !outstandingRequirements?.some(_ => _.requirementType === CCBlockRequirementType.SA ||\r\n _.requirementType === CCBlockRequirementType.CME);\r\n const isMeetingAuditRequirement = !outstandingRequirements?.some(_ => _.requirementType === CCBlockRequirementType.FailedAudit);\r\n const isMeetingActivityRequirements = isMeetingCMERequirement && isMeetingPIPRequirement && isMeetingPatientSafetyRequirement && isMeetingAuditRequirement;\r\n\r\n const showActivityRequirements = (isCurrentBlock && !showErrors) || \r\n (isCurrentBlock && showErrors && !isMeetingActivityRequirements) ||\r\n (!isCurrentBlock && isMeetingActivityRequirements) ||\r\n isActivitiesReadOnly;\r\n\r\n const showFees = (isCurrentBlock && !showErrors) || \r\n (isCurrentBlock && showErrors && !isMeetingFeeRequirement) ||\r\n (!isCurrentBlock && isMeetingFeeRequirement) ||\r\n isFeesReadOnly;\r\n\r\n useEffect(() => {\r\n const determineBlockYears = () => {\r\n const newBlockYears = [];\r\n\r\n for (var year = props.ccBlock.startYear; year <= props.ccBlock.endYear; year++) {\r\n newBlockYears.push(year);\r\n }\r\n setBlockYears(newBlockYears);\r\n }\r\n \r\n determineBlockYears();\r\n }, [props.ccBlock])\r\n\r\n const getUnpaidYears = () => {\r\n return blockYears.filter(year => props.ccBlock.ccAnnualFees?.find(_ => _.year == year && !_.isPaid && !_.isWaived));\r\n }\r\n const getUnpaidTotal = () => {\r\n return props.ccBlock.ccAnnualFees.filter(_ => !_.isPaid && !_.isWaived).map(_ => _.feeAmount).reduce((a, b) => a + b, 0);\r\n }\r\n\r\n if (props.ccBlock == null) return \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Continuing Certification Status {props.ccBlock.startYear} - {props.ccBlock.endYear}\r\n {props.showCollapse && }\r\n \r\n {props.ccBlock.hasFailedAudit && \r\n You have not passed the CC audit of this block.\r\n \r\n You have not passed the CC audit of this block. Therefore, your board certification status has been updated to \"Certified, Not Meeting CC Requirements\". Communication of the audit status has been sent to the email on file in your Physician Portal account. This CC block may not be edited until this audit has been satisfied.

\r\n Once you have documentation of all completed requirements, please send it via email to credentials@abpn.org and inform our office that you are contacting us to resolve the audit. If you need an additional PIP Audit Form, you can find that on the ABPN Diplomates Audits webpage.

\r\n If you have any questions, please contact the ABPN office at credentials@abpn.org or call 847-229-6510.\r\n }>\r\n \r\n \r\n
\r\n }\r\n {props.ccBlock.hasPassedAudit && \r\n You have passed the CC audit of this block.\r\n \r\n Congratulations! You have successfully passed this CC block audit. No other documentation is required at this time.

\r\n If you have any questions, please contact the ABPN office at credentials@abpn.org or call 847-229-6510.\r\n }>\r\n \r\n \r\n
\r\n }\r\n {props.ccBlock.hasAudit && !props.ccBlock.hasPassedAudit && !props.ccBlock.hasFailedAudit && \r\n You have been randomly selected for the CC audit of this block.\r\n \r\n You have been randomly selected for an audit of this CC block. If you have not yet received email notification of the audit, please check your email spam folder or you should expect to get an email within the next few weeks. You may visit the ABPN Diplomate Audits webpage to learn more about what to expect during the audit and what is required.

\r\n The Self-Reported column within your \"continuing certification activity requirements\" section of the Physician Portal may not be edited for the remainder of this CC block. However, verified and waived activity credits will continue to be updated, and you may still view and manage your activity records and view the ABPN approved activities list.

\r\n If you have any questions, please contact the ABPN office at credentials@abpn.org or call 847-229-6510.\r\n }>\r\n \r\n \r\n
\r\n }\r\n
\r\n {props.ccBlock.hasAudit && !props.ccBlock.hasPassedAudit && !props.ccBlock.hasFailedAudit &&
}\r\n
\r\n {showErrors &&
Not Meeting Requirements
}\r\n\r\n
\r\n {showErrors &&\r\n
\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n \r\n {isBlockInFuture ? \r\n
Requirements for the {props.ccBlock.startYear} - {props.ccBlock.endYear} block will be available in early January of {props.ccBlock.startYear}
: \r\n
\r\n {!showErrors && isNewestBlock &&\r\n \r\n }\r\n {\r\n showActivityRequirements &&\r\n \r\n }\r\n {\r\n showFees &&\r\n \r\n }\r\n {\r\n !props.hideLicenses &&\r\n \r\n }\r\n
\r\n }\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n}","import React, { useContext } from \"react\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport { CCBlock, CCBlockRequirementType } from \"../../../Physician/Models/CCBlock\";\r\nimport { CCEnrollment } from \"../../../Physician/Models/CCEnrollment\";\r\nimport { MedicalLicense } from \"../../../Physician/Models/MedicalLicense\";\r\nimport Physician from \"../../../Physician/Models/Physician\";\r\nimport { StateWithCountryLookupItem } from \"../../../Shared/Models/StateWithCountryLookupItem\";\r\nimport { deepCopy } from \"../../../Shared/Utility/DeepCopy\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\nimport CCBlockCard from \"./CCBlockCard\";\r\n\r\ninterface IProps {\r\n currentEnrollment: CCEnrollment\r\n states: Array;\r\n physician: Physician;\r\n updatePhysician: (physician: Physician) => void;\r\n}\r\nexport default function CCEnrollmentCard(props: IProps) { \r\n const currentBlock = props.currentEnrollment.currentCCBlock\r\n const isBehindOnCurrentBlock = props.physician.currentCCEnrollment.isBehindCurrentBlock;\r\n const nextBlock = props.currentEnrollment.ccBlocks?.find(_ => getDateWithOffset(_.startDate) > getDateWithOffset(currentBlock.endDate));\r\n const isMeetingLicenseRequirement = !currentBlock.outstandingRequirements?.some(_ => _.requirementType === CCBlockRequirementType.MedicalLicense);\r\n const authContext = useContext(AuthContext);\r\n const contactAddress = props.physician.addresses.addresses.find(_ => _.isContact);\r\n\r\n const evaluateCurrentBlockAndCallUpdate = async (physician : Physician) => {\r\n if (props.physician.currentCCEnrollment == null) return;\r\n \r\n const ccBlock = await abpnClient.get(\"/api/physician/EvaluateCurrentBlockRequirements\", authContext);\r\n\r\n var index = physician.currentCCEnrollment.ccBlocks.findIndex(_ => _.ccBlockId === ccBlock.ccBlockId);\r\n physician.currentCCEnrollment.ccBlocks.splice(index, 1, ccBlock);\r\n physician.currentCCEnrollment.currentCCBlock = ccBlock;\r\n \r\n props.updatePhysician(physician);\r\n } \r\n\r\n const onSaveBlock = (updatedBlock: CCBlock) => {\r\n var updatedPhysician = deepCopy(props.physician);\r\n var index = updatedPhysician.currentCCEnrollment.ccBlocks.findIndex(_ => _.ccBlockId === updatedBlock.ccBlockId);\r\n updatedPhysician.currentCCEnrollment.ccBlocks.splice(index, 1, updatedBlock);\r\n\r\n evaluateCurrentBlockAndCallUpdate(updatedPhysician);\r\n }\r\n\r\n const onSaveLicenses = (licenses: Array) => {\r\n var updatedPhysician = deepCopy(props.physician);\r\n updatedPhysician.medicalLicenses = licenses;\r\n\r\n evaluateCurrentBlockAndCallUpdate(updatedPhysician);\r\n }\r\n\r\n return (\r\n
\r\n onSaveBlock(updatedBlock)}\r\n medicalLicenses={props.physician.medicalLicenses}\r\n states={props.states}\r\n onSaveLicenses={(licenses: Array) => onSaveLicenses(licenses)}\r\n hideLicenses={isBehindOnCurrentBlock ? isMeetingLicenseRequirement : false} />\r\n {\r\n nextBlock != null &&\r\n onSaveBlock(updatedBlock)}\r\n medicalLicenses={props.physician.medicalLicenses}\r\n states={props.states}\r\n onSaveLicenses={(licenses: Array) => onSaveLicenses(licenses)}\r\n hideLicenses={!isMeetingLicenseRequirement} />\r\n }\r\n
\r\n );\r\n}","import Fee from \"./Fee\"\r\nimport Installment from \"./Installment\"\r\nimport Order from \"../../Shared/Models/Order\"\r\n\r\nexport default class ApplicationModel {\r\n applicationId: number\r\n examinationId: number\r\n balance: number\r\n orderNumber: string\r\n examLateFee: Fee\r\n totalFeeAmount: number\r\n totalExamFeeAmount: number\r\n fees: Array\r\n hasAttested: boolean\r\n needsFinalReview: boolean\r\n attestationContent: string\r\n installmentOptions: Array\r\n createdDate: string\r\n isAdaRequested: boolean\r\n isNmaRequested: boolean\r\n isTransferredIn: boolean;\r\n isSplitPay: boolean;\r\n candidateStatusDescription: string;\r\n candidateStatusReason: string;\r\n candidateStatus: CandidateStatus;\r\n knownCandidateStatusReason: KnownCandidateStatusReason;\r\n modularCertificationIds: Array\r\n order: Order;\r\n cnpType: number\r\n extensionDate: string;\r\n hasDeadlineException: boolean;\r\n}\r\n\r\nexport enum CandidateStatus {\r\n ToBeReviewed = 1,\r\n Hold = 2,\r\n Denied = 3,\r\n Approved = 4,\r\n TransferredOut = 5,\r\n Withdrawn = 6,\r\n InviteSent = 7,\r\n Unsubmitted = 8\r\n}\r\n\r\nexport enum KnownCandidateStatusReason {\r\n Withdrew = 9\r\n}\r\n","import ApplicationModel from \"../../../Apply/Models/ApplicationModel\";\r\nimport Order from \"../../../Shared/Models/Order\";\r\nimport { PearsonVueAppointment } from \"./PearsonVueAppointment\";\r\n\r\nexport class AppliedToExamination {\r\n examinationId: number;\r\n examineeId: number;\r\n title: string;\r\n applicationLateDeadlineDate: string;\r\n applicationDeadlineDate: string;\r\n extensionDate: string;\r\n startDate: string;\r\n endDate: string;\r\n releaseGrades: boolean;\r\n showExamineeStatus: boolean;\r\n application: ApplicationModel;\r\n appointments: Array;\r\n examinationGrade: ExaminationGrade;\r\n examineeStatus: ExamineeStatus;\r\n examineeStatusDescription: string;\r\n examineeStatusReasonId: ExamineeStatusReason;\r\n examineeStatusReason: string;\r\n order: Order;\r\n formattedCnpType: string;\r\n moduleSelection: string;\r\n isConfirmingDelete: boolean;\r\n hasDeadlineException: boolean;\r\n isReEntry: boolean;\r\n isArticleBased: boolean;\r\n}\r\n\r\nexport enum ExaminationGrade {\r\n Pass = 1,\r\n Fail = 2,\r\n}\r\n\r\nexport enum ExamineeStatus {\r\n NA = 0,\r\n AuthorizationPending = 2,\r\n Authorized = 3,\r\n GradingComplete = 4,\r\n Delivered = 25,\r\n UnexcusedAbsence = 26\r\n}\r\n\r\nexport enum ExamineeStatusReason {\r\n NoShow = 1,\r\n Invalidated = 3\r\n}","import { Fragment } from \"react\";\r\nimport { Col, Form, ProgressBar, Row } from \"react-bootstrap\";\r\nimport { ReEntryAssessmentCertification } from \"../Models/Assessment\";\r\n\r\ninterface IProps {\r\n reEntryAssessmentCertification: ReEntryAssessmentCertification;\r\n perCertificationArticleRequirement: number;\r\n}\r\n\r\nexport function ReEntryAssessmentCertificationCard(props: IProps){\r\n const numPassed = props.reEntryAssessmentCertification.ccArticleResults?.length > 0 ? props.reEntryAssessmentCertification.ccArticleResults.filter(_ => _.isPass).length : 0;\r\n const numFailed = props.reEntryAssessmentCertification.ccArticleResults?.length > 0 ? props.reEntryAssessmentCertification.ccArticleResults?.filter(_ => !_.isPass).length : 0;\r\n const percentPassed = numPassed / props.perCertificationArticleRequirement * 100;\r\n \r\n return(\r\n \r\n \r\n \r\n {props.reEntryAssessmentCertification.certificationName} \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {numPassed}/{props.perCertificationArticleRequirement} \r\n
\r\n
\r\n \r\n \r\n {numFailed} \r\n \r\n \r\n  \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default ReEntryAssessmentCertificationCard;","import React, { Fragment, useState } from \"react\";\r\nimport { Col, Form, Row, Button, Card, ProgressBar } from \"react-bootstrap\";\r\nimport { CCArticleResult, ReEntryAssessmentCertification, ReEntryAssessmentResult } from \"../Models/Assessment\";\r\nimport { ArticleResultList } from \"../ContinuingCertification/Components/ArticleResultList\";\r\nimport ReEntryAssessmentCertificationCard from \"./ReEntryAssessmentCertificationCard\";\r\n\r\ninterface IProps {\r\n assessment: ReEntryAssessmentResult;\r\n}\r\n\r\nexport function ReEntryAssessmentCard(props: IProps) {\r\n\r\nconst [detailVisible, setDetailVisible] = useState(false);\r\n\r\nconst getTotalPassed = () => {\r\n var totalPassed = 0;\r\n if (props.assessment.reEntryAssessmentCertifications.length > 0){\r\n for (var i = 0; i < props.assessment.reEntryAssessmentCertifications.length; i++){\r\n if (props.assessment.reEntryAssessmentCertifications[i].ccArticleResults.length > 0)\r\n {\r\n for (var a = 0; a < props.assessment.reEntryAssessmentCertifications[i].ccArticleResults.length; a++)\r\n {\r\n if (props.assessment.reEntryAssessmentCertifications[i].ccArticleResults[a].isPass)\r\n {\r\n totalPassed++;\r\n }\r\n }\r\n } \r\n }\r\n }\r\n\r\n return totalPassed;\r\n}\r\n\r\nconst getTotalFailed = () => {\r\n var totalFailed = 0;\r\n if (props.assessment.reEntryAssessmentCertifications){\r\n for (var i = 0; i < props.assessment.reEntryAssessmentCertifications.length; i++){\r\n if (props.assessment.reEntryAssessmentCertifications[i].ccArticleResults)\r\n {\r\n for (var a = 0; a < props.assessment.reEntryAssessmentCertifications[i].ccArticleResults.length; a++)\r\n {\r\n if (!props.assessment.reEntryAssessmentCertifications[i].ccArticleResults[a].isPass)\r\n {\r\n totalFailed++;\r\n }\r\n }\r\n } \r\n }\r\n }\r\n\r\n return totalFailed;\r\n}\r\n\r\nconst failureMax = props.assessment.attemmtpsAllowed - props.assessment.totalArticleRequirement;\r\n\r\nconst percentPassed = getTotalPassed() / props.assessment.totalArticleRequirement * 100;\r\nconst percentFailed = getTotalFailed() / failureMax * 100;\r\nconst totalAttempts = getTotalPassed() + getTotalFailed();\r\n\r\nconst getStatusMessage = () => {\r\n if (getTotalFailed() > failureMax){\r\n return \"You have exceeded the number of failed article exams allowed. Unfortunately, you were unsuccessful with the article exams. You will need to apply/pay for, and pass, the traditional CC/recertification exam in order to maintain your certification.\";\r\n }\r\n else if (getTotalPassed() < props.assessment.totalArticleRequirement){\r\n return `You have passed ${getTotalPassed()} of ${props.assessment.totalArticleRequirement} article exams needed to pass with ${totalAttempts - getTotalFailed() - getTotalPassed()} article exams remaining.`\r\n }\r\n else {\r\n return `Congratulations! You have passed ${getTotalPassed()} of ${props.assessment.totalArticleRequirement} article exams needed to pass.`\r\n }\r\n}\r\n\r\n\r\n const articleResultsExist = () => {\r\n return getAllArticleResults().length > 0\r\n }\r\n\r\n const getAllArticleResults = () => {\r\n var allArticleResults = Array();\r\n props.assessment.reEntryAssessmentCertifications.map((reEntryAssessmentCertification: ReEntryAssessmentCertification) => {\r\n reEntryAssessmentCertification.ccArticleResults && reEntryAssessmentCertification.ccArticleResults.map((ccArticleResult: CCArticleResult) => {\r\n allArticleResults.push(ccArticleResult);\r\n })\r\n })\r\n\r\n return allArticleResults;\r\n }\r\n\r\n\r\n return(\r\n \r\n \r\n \r\n \r\n Article Exams Due By\r\n {props.assessment.endYear} \r\n \r\n \r\n \r\n \r\n \r\n   \r\n \r\n \r\n Passed \r\n \r\n \r\n Failed \r\n \r\n \r\n Total Attempts \r\n \r\n \r\n {props.assessment.reEntryAssessmentCertifications?.length > 1 && props.assessment.reEntryAssessmentCertifications?.map((reEntryAssessmentCertification: ReEntryAssessmentCertification) => { \r\n return })\r\n }\r\n \r\n \r\n \r\n {props.assessment.reEntryAssessmentCertifications?.length > 1 ? \"Total\" : props.assessment.reEntryAssessmentCertifications[0].certificationName} \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {getTotalPassed()}/{props.assessment.totalArticleRequirement} \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {getTotalFailed()}/{failureMax} \r\n
\r\n
\r\n \r\n \r\n {totalAttempts}/{props.assessment.attemmtpsAllowed} \r\n \r\n
\r\n \r\n \r\n {getStatusMessage()}\r\n \r\n \r\n { detailVisible &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n { articleResultsExist() && }\r\n \r\n
* Clicking 'Access Article Exams' will navigate you to the article portal
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ReEntryAssessmentCard;","import { Fragment, useContext, useState, useEffect } from \"react\";\r\nimport { Row, Col, Card } from \"react-bootstrap\";\r\nimport { ReEntryAssessmentResult } from \"../../Models/Assessment\";\r\nimport { ReEntryAssessmentCard } from \"../../Assessments/ReEntryAssessmentCard\";\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\n\r\nexport function ArticleReentryExaminationCard() {\r\n\r\n const authContext = useContext(AuthContext);\r\n const [reEntryAssessments, setReEntryAssessments] = useState>(null);\r\n\r\n useEffect(()=>{\r\n abpnClient.get>(`/api/physician/GetReEntryAssessments`,authContext)\r\n .then(_=>{setReEntryAssessments(_.sort((a: ReEntryAssessmentResult, b: ReEntryAssessmentResult)=>{\r\n return a.endYear - b.endYear;\r\n }));\r\n });\r\n },[]);\r\n\r\n return(\r\n reEntryAssessments?.length > 0 &&\r\n \r\n \r\n \r\n \r\n Assessments for Re-Entry\r\n \r\n \r\n \r\n \r\n \r\n {reEntryAssessments.map((assessment: ReEntryAssessmentResult) => {\r\n return \r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React, { Fragment, useState } from \"react\";\r\nimport { Col, Form, Row, Button, Card, ProgressBar } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\nimport { AssessmentResult } from \"../Models/Assessment\";\r\nimport { ArticleResultList } from \"../ContinuingCertification/Components/ArticleResultList\";\r\n\r\ninterface IProps {\r\n assessment: AssessmentResult;\r\n}\r\n\r\nexport function AssessmentCard(props: IProps) {\r\n\r\nconst [detailVisible, setDetailVisible] = useState(false);\r\n\r\nconst numPassed = props.assessment.ccArticleResults.filter(_ => _.isPass).length;\r\nconst numFailed = props.assessment.ccArticleResults.filter(_ => !_.isPass).length;\r\nconst totalAttempts = props.assessment.articleFailureMax + props.assessment.articleRequirement;\r\nconst percentPassed = numPassed / props.assessment.articleRequirement * 100;\r\nconst percentFailed = numFailed / props.assessment.articleFailureMax * 100;\r\nvar examDueHeader = props.assessment.isArticleBasedExam ? \"Article Exams Due\" : \"Exam Due\";\r\nvar articleStatusMessage = \"\";\r\n\r\nif (props.assessment.isArticleBasedExam) {\r\n if (numFailed > 10){\r\n articleStatusMessage = \"You have exceeded the number of failed article exams allowed. Unfortunately, you were unsuccessful with the Pilot article exams. You will need to apply/pay for, and pass, the traditional 10-Year CC/recertification exam in order to maintain your certification.\";\r\n }\r\n else if (numFailed == 10 && numPassed < 30) {\r\n articleStatusMessage = `You have passed ${numPassed} of ${props.assessment.articleRequirement} article exams needed to pass with ${totalAttempts - numFailed - numPassed} article exams remaining. If you fail one more article exam before you pass 30, no further attempts will be allowed.`\r\n }\r\n else if (numPassed < 30){\r\n articleStatusMessage = `You have passed ${numPassed} of ${props.assessment.articleRequirement} article exams needed to pass with ${totalAttempts - numFailed - numPassed} article exams remaining.`\r\n }\r\n else {\r\n articleStatusMessage = `Congratulations! You have passed ${numPassed} of ${props.assessment.articleRequirement} article exams needed to pass.`\r\n }\r\n}\r\n\r\nconst getFormattedDueDate = () => {\r\n if (isNaN(Date.parse(props.assessment.dueDate)) || props.assessment.isArticleBasedExam) return getDateWithOffset(props.assessment.dueDate).toLocaleDateString();\r\n\r\n return getDateWithOffset(props.assessment.dueDate).getFullYear().toString();\r\n}\r\n\r\nconst articleResultsExist = () => {\r\n return props.assessment.isArticleBasedExam && \r\n props.assessment.ccArticleResults.length > 0;\r\n}\r\n\r\nreturn (\r\n \r\n \r\n \r\n \r\n \r\n {props.assessment.certificationName.toUpperCase()}\r\n \r\n \r\n \r\n { !props.assessment.releaseGrades && \r\n \r\n {examDueHeader}\r\n {getFormattedDueDate()} \r\n \r\n }\r\n \r\n \r\n { props.assessment.releaseGrades && \r\n \r\n Result\r\n Available \r\n \r\n }\r\n \r\n \r\n { props.assessment.isArticleBasedExam &&\r\n
\r\n \r\n \r\n Passed \r\n \r\n \r\n Failed \r\n \r\n \r\n Completed \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {numPassed}/{props.assessment.articleRequirement} \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {numFailed}/{props.assessment.articleFailureMax} \r\n
\r\n
\r\n \r\n \r\n {numPassed + numFailed}/{props.assessment.articleRequirement + props.assessment.articleFailureMax} \r\n \r\n
\r\n \r\n \r\n {articleStatusMessage}\r\n \r\n \r\n
\r\n }\r\n { detailVisible &&\r\n \r\n \r\n \r\n }\r\n\r\n \r\n { props.assessment.isArticleBasedExam && }\r\n { articleResultsExist() && }\r\n \r\n
* Clicking 'Access Article Exams' will navigate you to the article portal
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AssessmentCard;","import { Fragment, useContext, useState, useEffect } from \"react\";\r\nimport { Row, Col, Card } from \"react-bootstrap\";\r\nimport { AssessmentResult } from \"../../Models/Assessment\";\r\nimport { AssessmentCard } from \"../../Assessments/AssessmentCard\";\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\nimport { AppliedToExamination } from \"../Models/AppliedToExamination\";\r\n\r\ninterface IProps{\r\n exam: AppliedToExamination;\r\n}\r\n\r\nexport function ArticleExaminationCard(props: IProps) {\r\n\r\n const authContext = useContext(AuthContext);\r\n const [assessment, setAssessment] = useState(null);\r\n\r\n useEffect(()=>{\r\n abpnClient.get(`/api/physician/GetExamAssessment?examineeId=${props.exam.examineeId}`,authContext)\r\n .then(_=>{setAssessment(_)\r\n });\r\n },[]);\r\n\r\n return(\r\n assessment != null &&\r\n \r\n \r\n \r\n \r\n Assessment For Exam\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import { Card, Col, Row, Form, Button, OverlayTrigger, Tooltip} from \"react-bootstrap\";\r\nimport { useEffect, useContext, useState, Fragment } from \"react\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\nimport { AppliedToExamination } from \"../Models/AppliedToExamination\"\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { CandidateStatus, KnownCandidateStatusReason } from \"../../../Apply/Models/ApplicationModel\";\r\nimport { ExamineeStatus, ExamineeStatusReason } from \"../Models/AppliedToExamination\";\r\nimport { deepCopy } from \"../../../Shared/Utility/DeepCopy\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\nimport { ArticleReentryExaminationCard } from \"./ArticleReentryExaminationCard\";\r\nimport { ArticleExaminationCard } from \"./ArticleExaminationCard\";\r\n\r\nexport function ExaminationsCard() {\r\n const [examsAppliedTo, setExamsAppliedTo] = useState>(null);\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n const getExams = () => {\r\n abpnClient.get>(`/api/Examination/GetAppliedToExaminations`, authContext)\r\n .then(exams => {\r\n setExamsAppliedTo(exams);\r\n setIsLoading(false);\r\n });\r\n }\r\n getExams();\r\n }, []);\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n const getDateFormatted = (date: string) => {\r\n return getDateWithOffset(date).toLocaleDateString();\r\n }\r\n\r\n const getDateTimeFormatted = (date: string) => {\r\n return getDateWithOffset(date).toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit', hour12: true });\r\n }\r\n\r\n const getCandidateStatusDescription = (exam: AppliedToExamination) => {\r\n if (exam.application.needsFinalReview) return \"Approved (Pending PD Graduation Attestation & Credentials Final Review - Allow up to 4 weeks after graduation)\";\r\n\r\n if (exam.application.candidateStatus === CandidateStatus.ToBeReviewed\r\n || (exam.application.candidateStatus === CandidateStatus.Approved && exam.application.candidateStatusReason.length > 0)) {\r\n return \"Application Pending Review by Credentials Department (allow up to 16 weeks)\";\r\n } \r\n\r\n if (exam.application.candidateStatus === CandidateStatus.Withdrawn \r\n || (exam.application.candidateStatus === CandidateStatus.Denied && exam.application.knownCandidateStatusReason === KnownCandidateStatusReason.Withdrew)) {\r\n return \"Application Withdrew\";\r\n } \r\n\r\n if (exam.application.candidateStatus === CandidateStatus.Unsubmitted){\r\n return exam.application.candidateStatusDescription + getApplicationDeadlineDate(exam)\r\n }\r\n\r\n return exam.application.candidateStatusDescription;\r\n }\r\n\r\n const getCandidateStatusReason = (exam: AppliedToExamination) => {\r\n if (exam.application.needsFinalReview) return \"\";\r\n\r\n if (exam.application.candidateStatusReason?.length === 0 \r\n || exam.application.candidateStatus === CandidateStatus.ToBeReviewed\r\n || exam.application.candidateStatus === CandidateStatus.TransferredOut\r\n || exam.application.candidateStatus === CandidateStatus.Withdrawn\r\n || (exam.application.candidateStatus === CandidateStatus.Approved && exam.application.candidateStatusReason.length > 0)) return \"\";\r\n\r\n return `: ${exam.application.candidateStatusReason}`;\r\n }\r\n\r\n const getExamineeStatusDescription = (exam: AppliedToExamination) => {\r\n if (exam.examineeStatus === ExamineeStatus.Authorized \r\n && (exam.appointments == null || exam.appointments.length === 0)) return exam.examineeStatusDescription;\r\n\r\n if ((exam.examineeStatus === ExamineeStatus.Delivered && exam.examineeStatusReasonId === ExamineeStatusReason.NoShow) || exam.examineeStatusReasonId === ExamineeStatusReason.Invalidated) return exam.examineeStatusReason;\r\n\r\n return exam.examineeStatusDescription;\r\n }\r\n\r\n const deleteApplication = (applicationId: number) => {\r\n const url = `/api/Application/delete?applicationId=${applicationId}`;\r\n abpnClient.post(url, null, authContext).then(() => {\r\n removeDeletedApplicationExam(applicationId);\r\n });\r\n }\r\n\r\n const removeDeletedApplicationExam = (applicationId: number) => {\r\n var existing = deepCopy(examsAppliedTo);\r\n var updated = existing.filter(_ => _.application.applicationId !== applicationId);\r\n setExamsAppliedTo(updated);\r\n }\r\n\r\n\r\n const hideMakePaymentButton = (exam: AppliedToExamination) =>{\r\n if(exam.application.candidateStatus == CandidateStatus.Denied || exam.application.candidateStatus == CandidateStatus.Withdrawn) return false;\r\n if((exam.application.candidateStatus !== CandidateStatus.Unsubmitted || exam.application.isTransferredIn) && exam.order?.balance > 0) return true;\r\n \r\n return false;\r\n }\r\n\r\n const getPaymentButtonText = (exam: AppliedToExamination) => {\r\n if (exam.application.isTransferredIn) return \"Complete and Pay\"\r\n \r\n return \"Make Payment\";\r\n }\r\n\r\n const getExamDateTitle = (exam: AppliedToExamination) => {\r\n if (exam.releaseGrades) return \"Date Exam Started\";\r\n return \"Exam Dates\";\r\n }\r\n\r\n const getExamDates = (exam: AppliedToExamination) => {\r\n if (exam.releaseGrades) return getDateWithOffset(exam.startDate).toLocaleDateString();\r\n\r\n return `${getDateWithOffset(exam.startDate).toLocaleDateString()} - ${getDateWithOffset(exam.endDate).toLocaleDateString()}`;\r\n }\r\n\r\n const getApplicationDeadlineDate = (exam: AppliedToExamination) => {\r\n var date = exam.extensionDate ?? exam.applicationDeadlineDate;\r\n return ` (Application ${exam.hasDeadlineException ? \"Exception\" : \"\"} Deadline: ${getDateWithOffset(date).toLocaleDateString()})`;\r\n }\r\n\r\n const isGradeAvailable = (exam: AppliedToExamination) => {\r\n return exam.releaseGrades && exam.examinationGrade !== null && exam.examineeStatus == ExamineeStatus.GradingComplete;\r\n }\r\n\r\n const confirmDeleteApplication = (exam: AppliedToExamination, isConfirming: boolean) => {\r\n var updatedExams = deepCopy(examsAppliedTo);\r\n var updatedExam = updatedExams.find(_ => _.examinationId === exam.examinationId);\r\n updatedExam.isConfirmingDelete = isConfirming;\r\n setExamsAppliedTo(updatedExams);\r\n }\r\n\r\n if (isLoading) return ;\r\n\r\n return (\r\n \r\n \r\n \r\n Examinations\r\n \r\n \r\n \r\n {examsAppliedTo?.sort((a, b) => {return (a.isReEntry === b.isReEntry)? 0 : a.isReEntry? -1 : 1;}).map(exam => { \r\n return (\r\n \r\n {(exam.isArticleBased && exam.examineeStatus != ExamineeStatus.GradingComplete && exam.isReEntry && exam.examinationId == examsAppliedTo[0].examinationId) && \r\n \r\n }\r\n \r\n \r\n {exam.title.toUpperCase()}\r\n {exam.moduleSelection}{exam.formattedCnpType}\r\n \r\n\r\n {(exam.appointments == null || exam.appointments.length === 0 ) &&\r\n \r\n {getExamDateTitle(exam)}\r\n {getExamDates(exam)} \r\n }\r\n\r\n {(exam.appointments != null && exam.appointments.length > 0 && !exam.releaseGrades) &&\r\n \r\n \r\n \r\n {`Exam Appointment${exam.appointments.length > 1 ? 's' : ''}`}\r\n \r\n Appointment time(s)\r\n displayed is that of the \r\n Pearson VUE test center\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {exam.appointments.map(_ => \r\n \r\n {`${getDateFormatted(_.startDateTime)} ${getDateTimeFormatted(_.startDateTime)}`} \r\n {_.addressLine1}
\r\n {_.addressLine2 ? {_.addressLine2}
: null} \r\n {_.addressLine3 ? {_.addressLine3}
: null}\r\n {_.city}, {_.stateCode} {_.postalCode}
\r\n \r\n )}\r\n
\r\n }\r\n\r\n {((exam.application.candidateStatus !== CandidateStatus.Unsubmitted || exam.application.isTransferredIn) && exam.order?.balance > 0) &&\r\n \r\n \r\n Balance\r\n ${exam.order.balance} \r\n \r\n } \r\n\r\n {isGradeAvailable(exam) &&\r\n \r\n \r\n } \r\n\r\n
\r\n\r\n {!isGradeAvailable(exam) ? \r\n \r\n \r\n \r\n
\r\n {\r\n exam.showExamineeStatus ?\r\n \r\n \r\n {(exam.examineeStatus === ExamineeStatus.AuthorizationPending || exam.examineeStatus === ExamineeStatus.NA) ? \"Application Status\" : \"Exam Status\"}\r\n \r\n {`${getExamineeStatusDescription(exam)}`} \r\n \r\n : \r\n Application Status\r\n {`${getCandidateStatusDescription(exam)}${getCandidateStatusReason(exam)}`} \r\n }\r\n \r\n
: null}\r\n {(exam.application.candidateStatus === CandidateStatus.Unsubmitted || exam.application.candidateStatus === CandidateStatus.InviteSent) \r\n && (!exam.application.isTransferredIn || exam.order?.balance <= 0) && \r\n \r\n \r\n \r\n \r\n } \r\n {exam.application.candidateStatus === CandidateStatus.Unsubmitted && exam.order === null && !exam.isConfirmingDelete &&\r\n \r\n \r\n \r\n \r\n } \r\n\r\n {exam.isConfirmingDelete &&\r\n \r\n \r\n \r\n \r\n \r\n Delete this Application?\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n } \r\n\r\n {(hideMakePaymentButton(exam)) && \r\n \r\n \r\n \r\n \r\n } \r\n\r\n {(exam.isArticleBased && !exam.isReEntry && exam.examineeId) &&\r\n \r\n }\r\n \r\n
\r\n
\r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n {examsAppliedTo != null && }\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n\r\n}","import { Alert } from \"react-bootstrap\";\r\n\r\nexport function Banner() {\r\n return (\r\n \r\n
\r\n

*** Updated 9/11/2023***

\r\n

PLEASE NOTE:ABPN has recently migrated from abpn.com to abpn.org. To ensure you continue to receive communications from ABPN, please make sure to allow emails from abpn.org in any spam or email filter you may be using.

\r\n

ABPN is excited to introduce the new Article Based Continuing Certification (ABCC) Pathway as an alternative option to the every ten-year traditional recertification exams. \r\n Diplomates with active certifications can access the article lists and exam platform by clicking 'Access Article Exams' in the Assessment section below. Diplomates in the \r\n 2022-2024 CC block have until the end of 2024 to complete the current block of requirements, any outstanding requirements, and annual fees, as well as completion of the article exams as indicated below.

\r\n\r\n

Diplomates who do not successfully complete all article assessments by the end of their CC block will not be able to continue in the article assessment pathway. \r\n Additional time will not be provided to complete the article assessments and exceptions to the noted deadlines below will not be made.

\r\n \r\n

Diplomates who were awarded certifications in 2012-2014 will have their certification(s) lapse if the article assessments are not completed by December 15, 2024 (midnight CST) or have not passed a CC exam by 12/31/2024.

\r\n
\r\n
\r\n )\r\n}","import { Link } from \"react-router-dom\";\r\n\r\ninterface IProps {\r\n title: string,\r\n subTitle: string\r\n}\r\nexport default function HeaderWithTitle(props: IProps) {\r\n\r\n return (\r\n
\r\n PHYSICIAN PORTAL\r\n
\r\n

{props.title}

\r\n {props.subTitle && \r\n
{props.subTitle}
\r\n }\r\n
\r\n );\r\n}\r\n","export default class DemographicPromptResponseModel {\r\n constructor(){}\r\n\r\n demographicPromptResponseId : number\r\n personKey? : number\r\n primaryActionTaken? : boolean\r\n permanentlyDismiss? : boolean\r\n}\r\n\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { abpnClient } from \"../../Services/AbpnClient\";\r\nimport { PortalUser } from \"../Shared/Models/PortalUser\";\r\nimport { AuthContext } from \"./AuthProvider\";\r\n\r\ninterface IProfileProviderProps {\r\n user: PortalUser\r\n}\r\nexport const ProfileContext = React.createContext(null);\r\n\r\nexport const ProfileProvider = (props: any) => {\r\n const [user, setUser] = useState(null);\r\n var auth = React.useContext(AuthContext);\r\n\r\n useEffect(() => {\r\n const loadUser = async () => {\r\n let userResult = await abpnClient.get(\"/api/profile/getcurrentuser\", auth);\r\n\r\n if ((userResult.physicianId !== user?.physicianId) && (userResult.otherBoardPhysicianId !== user?.otherBoardPhysicianId)) {\r\n setUser(userResult);\r\n }\r\n }\r\n if (auth.isAuthenticated()) {\r\n loadUser();\r\n }\r\n }, [])\r\n\r\n return { props.children };\r\n}","import React, { Fragment, useContext, useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Row, Col, Modal, Button } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../Services/AbpnClient\";\r\nimport { AuthContext } from \"./Auth/AuthProvider\";\r\nimport CertificatesCard from \"./Dashboard/Certificates/Components/CertificatesCard\";\r\nimport { CertificationRequirements } from \"./Dashboard/CertificationRequirements/Components/CertificationRequirements\";\r\nimport CCEnrollmentSummary from \"./Dashboard/ContinuingCertification/Components/CCEnrollmentSummary\";\r\nimport CCEnrollmentCard from \"./Dashboard/ContinuingCertification/Components/CCEnrollmentCard\";\r\nimport { ExaminationsCard } from \"./Dashboard/Exams/Components/ExaminationsCard\";\r\nimport { CertificateStatus, CertificationGeneration } from \"./Physician/Models/Certificate\";\r\nimport Physician from \"./Physician/Models/Physician\";\r\nimport AbpnSpinner from \"./Shared/Components/AbpnSpinner\";\r\nimport { Banner } from \"./Shared/Components/Banner\";\r\nimport HeaderWithTitle from \"./Shared/Components/HeaderWithTitle\";\r\nimport DemographicPromptResponseModel from \"./Account/Models/DemographicPromptResponseModel\";\r\nimport { deepCopy } from \"./Shared/Utility/DeepCopy\";\r\nimport { CountryId } from \"./Shared/Enums/CountryId\";\r\nimport { ProfileContext } from \"./Auth/ProfileProvider\";\r\n\r\nexport default function Home() {\r\n\r\n const [physician, setPhysician] = useState(null);\r\n const [showDemographicsModal, setShowDemographicsModal] = useState(false);\r\n const [demographicPromptResponse, setDemographicPromptResponse] = useState(null);\r\n const states = physician?.addresses.states;\r\n const authContext = useContext(AuthContext);\r\n const { user } = useContext(ProfileContext);\r\n const history = useHistory();\r\n\r\n const lifeTimeActiveCertificates = physician?.certificates.filter(cert => cert.certificationGeneration === CertificationGeneration.Lifetime && cert.certificateStatus == CertificateStatus.Active);\r\n\r\n useEffect(() => {\r\n const loadDemographicPromptResponse = async (physicianResult: Physician) => {\r\n let promptResponseResult = await abpnClient.get(`/api/physicianDemographic/GetDemographicPromptResponse`,authContext);\r\n if(promptResponseResult == null){\r\n promptResponseResult = new DemographicPromptResponseModel();\r\n promptResponseResult.personKey = physicianResult.physicianId;\r\n }\r\n setDemographicPromptResponse(promptResponseResult);\r\n setShowDemographicsModal(!(promptResponseResult.primaryActionTaken === true || promptResponseResult.permanentlyDismiss === true))\r\n }\r\n\r\n const getPhysician = async () => {\r\n const physicianResult = await abpnClient.get(`/api/physician`,authContext);\r\n setPhysician(physicianResult);\r\n loadDemographicPromptResponse(physicianResult);\r\n }\r\n\r\n const updateLastLogin = async () => {\r\n await abpnClient.post(\"/api/physician/UpdateLastLogin\", user.physicianId, authContext);\r\n }\r\n\r\n if (!user) return;\r\n if(user.physicianId != null && user.physicianId != \"\") updateLastLogin();\r\n if(user?.isOtherBoardPhysician){\r\n history.push('/OtherBoard');\r\n } else {\r\n getPhysician();\r\n }\r\n }, [user]);\r\n\r\n const onDemographicsModalClose = () =>{\r\n setShowDemographicsModal(false);\r\n }\r\n\r\n const onPrimaryActionTaken = () =>{\r\n var updatedModel = deepCopy(demographicPromptResponse);\r\n updatedModel.primaryActionTaken = true;\r\n updatedModel.permanentlyDismiss = false;\r\n setDemographicPromptResponse(updatedModel);\r\n saveDemographicPromptResponse(updatedModel);\r\n setShowDemographicsModal(false);\r\n history.push('/AccountInformation');\r\n\r\n }\r\n\r\n const onPermanentlyDismiss = () => {\r\n var updatedModel = deepCopy(demographicPromptResponse);\r\n updatedModel.primaryActionTaken = false;\r\n updatedModel.permanentlyDismiss = true;\r\n setDemographicPromptResponse(updatedModel);\r\n saveDemographicPromptResponse(updatedModel);\r\n setShowDemographicsModal(false);\r\n }\r\n\r\n const saveDemographicPromptResponse = (demographicPromptResponseModel :DemographicPromptResponseModel) => {\r\n let url = '/api/physicianDemographic/SaveDemographicPromptResponse/';\r\n abpnClient.post(url, demographicPromptResponseModel, authContext).then(_ => {\r\n setDemographicPromptResponse(_);\r\n });\r\n }\r\n\r\n\r\n\r\n if (!physician || !user) return \r\n\r\n return (\r\n \r\n {showDemographicsModal && \r\n \r\n Submit Data for ABPN Demographic Survey\r\n \r\n \r\n

\r\n The American Board of Psychiatry and Neurology (ABPN) and its Board of Directors are committed to advancing diversity, equity, and inclusion (DEI) within all ABPN programs and services.\r\n

\r\n

\r\n Beginning today, the ABPN will begin collecting detailed demographic data of all ABPN physicians to help enhance ABPN certification programs and the mission of the organization. When logging into the Physician Portal, you will be asked to submit information on your race, ethnicity, and gender. Completing this demographic survey is optional for all candidates and diplomates. Choosing to participate or not participate in the survey will have no bearing on a physician’s certification status.\r\n

\r\n

\r\n The ABPN is committed to using this demographic data to analyze diversity, equity, and inclusion within the certification process and to ensure that all physicians are treated equitably.\r\n

\r\n

\r\n The ABPN will not share data that could be used to identify individual residents, training programs, applicants, candidates, diplomates, or former diplomates.\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n {physician.currentCCEnrollment != null ?\r\n \r\n {((physician?.currentCCEnrollment?.activeEnrollmentCertificates && physician?.currentCCEnrollment?.activeEnrollmentCertificates.length > 0)\r\n || (lifeTimeActiveCertificates && lifeTimeActiveCertificates.length > 0))\r\n && }\r\n x.countryId === CountryId.Usa || x.countryId === CountryId.Canada)}\r\n updatePhysician={(physician: Physician) => setPhysician(physician)} />\r\n \r\n :\r\n \r\n {((lifeTimeActiveCertificates && lifeTimeActiveCertificates.length > 0))\r\n && }\r\n x.countryId === CountryId.Usa)}\r\n updatePhysician={(physician: Physician) => setPhysician(physician)} />\r\n }\r\n \r\n \r\n \r\n setPhysician(physician)} />\r\n \r\n \r\n
\r\n );\r\n}","export const ApplicationName = 'Folios';\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n StaffLogin: 'staff-login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Activate: 'activate'\r\n};\r\n\r\nconst prefix = '/authentication';\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n StaffLogin: `${prefix}/${LoginActions.StaffLogin}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n SearchForAccount: `/SearchForAccount`,\r\n OnBehalfOf: `/OnBehalfOf`,\r\n};\r\n","import AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport { AuthConsumer } from \"./AuthProvider\";\r\n\r\nexport const Callback = () => (\r\n \r\n {({ signinRedirectCallback }) => {\r\n signinRedirectCallback();\r\n return ;\r\n }}\r\n \r\n);","import { useHistory } from \"react-router-dom\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\n\r\nexport const LogoutCallback = () => {\r\n const history = useHistory();\r\n\r\n history.push(\"/\");\r\n\r\n return \r\n}","import AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport { AuthConsumer } from \"./AuthProvider\";\r\n\r\nexport const Logout = () => (\r\n \r\n {({ logout }) => {\r\n logout();\r\n return ;\r\n }}\r\n \r\n);","import { useParams } from \"react-router-dom\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport { AuthConsumer } from \"./AuthProvider\";\r\n\r\nexport const Login = () => {\r\n let { emailAddress, redirectUrl } = useParams<{ emailAddress: string, redirectUrl: string }>();\r\n\r\n return \r\n {({ signinRedirect }) => {\r\n var decodedUrl = decodeURIComponent(redirectUrl);\r\n signinRedirect(emailAddress, decodedUrl);\r\n return ;\r\n }}\r\n \r\n\r\n}","import { Component, Fragment } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { ApplicationPaths } from '../Services/Auth/AuthConstants';\r\nimport { Callback } from './Auth/Callback';\r\nimport { LogoutCallback } from './Auth/LogoutCallback';\r\nimport { Logout } from './Auth/Logout';\r\nimport { Login } from './Auth/Login';\r\n\r\ninterface IProps{\r\n}\r\n\r\nexport default class ApiAuthorizationRoutes extends Component {\r\n\r\n render () {\r\n return(\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import { useParams } from \"react-router\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { AuthConsumer } from \"./AuthProvider\";\r\n\r\nexport const OnBehalfOf = () => {\r\n const { physicianId } = useParams();\r\n\r\n return (\r\n \r\n {({ setOnBehalfOf }) => {\r\n setOnBehalfOf(physicianId)\r\n return ;\r\n }}\r\n \r\n );\r\n};","export default function Footer(){\r\n \r\n let currentYear = () => {\r\n\r\n var currentTime = new Date();\r\n\r\n return currentTime.getFullYear().toString();\r\n }\r\n \r\n return (\r\n
\r\n
\r\n ABPN Physician Portal users agree to the ABPN policies\r\n
\r\n \r\n
\r\n Questions about the Physician Portal, certification requirements, or deadlines should be addressed to Questions@apbn.org or contact (847) 229-6512\r\n
\r\n
\r\n Please allow 2 business days for a response to your message.\r\n
\r\n
\r\n © {currentYear()}, American Board of Psychiatry and Neurology, Inc. All rights reserved.\r\n
\r\n
\r\n );\r\n\r\n}","import { useContext } from 'react';\r\nimport { ApplicationPaths } from '../Services/Auth/AuthConstants';\r\nimport { Dropdown, NavDropdown} from 'react-bootstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport { AuthContext } from './Auth/AuthProvider';\r\nimport { ProfileContext } from \"./Auth/ProfileProvider\";\r\n\r\nexport const NavItems = ({ }: { children: any }) => {\r\n\r\n const authContext = useContext(AuthContext);\r\n const { user } = useContext(ProfileContext);\r\n\r\n\r\n const authenticatedView = () => {\r\n const logoutPath = { pathname: `${ApplicationPaths.LogOut}`, state: { local: true } };\r\n return (\r\n \r\n \r\n \r\n MENU\r\n \r\n {user?.isOtherBoardPhysician ?\r\n \r\n Messages\r\n \r\n Logout\r\n \r\n :\r\n \r\n Home\r\n \r\n Exam History\r\n \r\n Invoices and Receipts\r\n \r\n Activity Records\r\n \r\n Messages\r\n \r\n Account Information\r\n \r\n Logout\r\n \r\n }\r\n \r\n )\r\n };\r\n\r\n const anonymousView = () => {\r\n return (
\r\n Login\r\n
);\r\n };\r\n\r\n if (!authContext.isAuthenticated()) {\r\n return anonymousView();\r\n } else {\r\n return authenticatedView();\r\n }\r\n}","import { useContext } from \"react\";\r\nimport { Navbar, NavbarBrand, Image, Collapse } from \"react-bootstrap\";\r\nimport NavbarToggle from \"react-bootstrap/esm/NavbarToggle\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { ProfileContext } from \"./Auth/ProfileProvider\";\r\nimport { NavItems } from \"./NavItems\";\r\nimport { abpnClient } from \"../Services/AbpnClient\";\r\n\r\nexport default function NavMenu() {\r\n\r\n const { user } = useContext(ProfileContext);\r\n const isErrorPage = window.location.pathname == abpnClient._errorPage;\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {user && !isErrorPage &&
\r\n {user.fullName}\r\n
\r\n ABPN ID: {user.isOtherBoardPhysician ? user.otherBoardPhysicianCode : user.physicianId}\r\n
\r\n }\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { Container } from \"react-bootstrap\";\r\nimport Footer from \"./Footer\";\r\nimport NavMenu from \"./NavMenu\";\r\n\r\nexport default function Layout(props: any) {\r\n return (\r\n
\r\n \r\n \r\n {props.children}\r\n \r\n
\r\n
\r\n );\r\n}","import React from \"react\";\r\nimport { Container, Navbar, NavbarBrand } from \"react-bootstrap\";\r\nimport NavbarToggle from \"react-bootstrap/esm/NavbarToggle\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\ninterface IProps { }\r\n\r\ninterface IState { }\r\n\r\nexport default class ErrorPage extends React.Component {\r\n render() {\r\n return (\r\n \r\n
\r\n \r\n \r\n Physician Portal\r\n \r\n \r\n \r\n
\r\n
\r\n An unexpected error has occurred\r\n
\r\n
\r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { Card, Button, Col, Row, Container, Tooltip, OverlayTrigger } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { CCAssessmentType, CCEnrollment } from \"../../../Physician/Models/CCEnrollment\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { getDateWithOffset } from \"../../../Shared/Utility/GetDateWithOffset\";\r\nimport { AvailableExamination } from \"../Models/AvailableExamination\";\r\n\r\ninterface IProps {\r\n examination: AvailableExamination;\r\n applyLinkTo: any;\r\n currentCCEnrollment: CCEnrollment;\r\n}\r\n\r\nexport function AvailableExaminationCard(props: IProps) {\r\n const currentDate = new Date().setHours(0,0,0,0);\r\n const isLateApplication = currentDate.valueOf() > getDateWithOffset(props.examination.applicationDeadLineDate).valueOf() ;\r\n const applicationAvailableDate = getDateWithOffset(props.examination.applicationAvailableDate);\r\n const nextApplicationAvailableDate = props.examination.nextApplicationAvailableDate ? getDateWithOffset(props.examination.nextApplicationAvailableDate).toLocaleDateString() : \"TBA\"\r\n const isAvailable = applicationAvailableDate.valueOf() <= currentDate.valueOf();\r\n\r\n const filteredExamCertifications = () => {\r\n const ccEnrollmentExamCertificates = props.currentCCEnrollment?.activeEnrollmentCertificates.filter(_ => _.ccAssessmentType == CCAssessmentType.Exam);\r\n if(ccEnrollmentExamCertificates == null) return null;\r\n var ccEnrollmentExamCertificationIds = ccEnrollmentExamCertificates.map(_ => _.certification_Key);\r\n var filteredCertifications = props.examination.availableModuleCertifications.filter(_ => ccEnrollmentExamCertificationIds.indexOf(_.certificationId) != -1);\r\n return filteredCertifications;\r\n };\r\n\r\n if (!props.examination) return \r\n return (\r\n \r\n
\r\n {props.examination.title}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n Application Deadline\r\n \r\n Application deadlines are at 11:59 p.m. CST, after which the late fee will be applied. \r\n }>\r\n \r\n \r\n
\r\n \r\n {isAvailable ? getDateWithOffset(props.examination.applicationDeadLineDate).toLocaleDateString() : \"TBA\"}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n Exam Start\r\n
\r\n \r\n {props.examination.startDate ? getDateWithOffset(props.examination.startDate).toLocaleDateString() : \"\"}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n Exam End\r\n
\r\n \r\n {props.examination.endDate ? getDateWithOffset(props.examination.endDate).toLocaleDateString() : \"\"}\r\n \r\n
\r\n \r\n\r\n \r\n \r\n
\r\n Fee\r\n
\r\n \r\n {isAvailable ? `$${props.examination.examFee}`: \"TBA\"}\r\n \r\n
\r\n \r\n \r\n {isLateApplication ?\r\n \r\n
\r\n Late Fee\r\n \r\n This exam is still available for an additional ${props.examination.lateFee} as the application deadline has passed. \r\n }>\r\n \r\n \r\n
\r\n \r\n {isAvailable ? `$${props.examination.lateFee}` : \"TBA\"} \r\n \r\n
: \r\n \r\n
\r\n Late Fee\r\n
\r\n \r\n {isAvailable ? `$${props.examination.lateFee}` : \"TBA\"}\r\n \r\n
\r\n } \r\n \r\n \r\n \r\n
\r\n {isAvailable ? \"Next Available Application\" : \"Application Available\"}\r\n
\r\n \r\n {isAvailable ? nextApplicationAvailableDate : getDateWithOffset(props.examination.applicationAvailableDate).toLocaleDateString()}\r\n \r\n
\r\n \r\n {\r\n props.examination.availableModuleCertifications.length > 0 && \r\n \r\n \r\n {filteredExamCertifications() != null &&\r\n
\r\n
\r\n Available Certifications\r\n
\r\n {\r\n filteredExamCertifications().map(_ => {\r\n return {_.certificationName}\r\n })\r\n }\r\n
\r\n }\r\n
\r\n \r\n }\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n Information for Applicants\r\n \r\n \r\n \r\n \r\n {isAvailable ? \r\n \r\n \r\n \r\n : null\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AvailableExaminationCard;","import React from \"react\";\r\nimport { Card, CardColumns } from \"react-bootstrap\";\r\nimport { CCAssessmentType, CCEnrollment } from \"../../../Physician/Models/CCEnrollment\";\r\nimport { AvailableExamination } from \"../Models/AvailableExamination\";\r\nimport AvailableExaminationCard from \"./AvailableExaminationCard\";\r\n \r\ninterface IProps {\r\n examinations: Array;\r\n title: string;\r\n currentCCEnrollment: CCEnrollment\r\n}\r\n\r\nexport default function AvailableExaminationGroup(props: IProps){\r\n\r\n const filteredExaminations = () => {\r\n var exams = new Array();\r\n props.examinations.map((exam: AvailableExamination) => {\r\n if(exam.availableModuleCertifications.length > 0){\r\n const ccEnrollmentExamCertificates = props.currentCCEnrollment?.activeEnrollmentCertificates.filter(_ => _.ccAssessmentType == CCAssessmentType.Exam);\r\n if(ccEnrollmentExamCertificates != null){\r\n var ccEnrollmentExamCertificationIds = ccEnrollmentExamCertificates.map(_ => _.certification_Key);\r\n var filteredCertifications = exam.availableModuleCertifications.filter(_ => ccEnrollmentExamCertificationIds.indexOf(_.certificationId) != -1);\r\n if(filteredCertifications.length > 1)\r\n exams.push(exam);\r\n }\r\n else\r\n exams.push(exam);\r\n }\r\n else\r\n exams.push(exam);\r\n });\r\n\r\n return exams;\r\n }\r\n\r\n return (\r\n \r\n

{props.title}

\r\n { props.examinations.length > 0 ? \r\n \r\n {filteredExaminations().map((exam: AvailableExamination) => { return })}\r\n \r\n :\r\n No available applications } \r\n
\r\n );\r\n}","import { useContext, useEffect, useState } from \"react\";\r\nimport { abpnClient } from \"../../../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../../../Auth/AuthProvider\";\r\nimport AbpnSpinner from \"../../../Shared/Components/AbpnSpinner\";\r\nimport { AvailableExamination } from \"../Models/AvailableExamination\";\r\nimport AvailableExaminationGroup from \"./AvailableExaminationGroup\";\r\nimport Physician from \"../../../Physician/Models/Physician\";\r\n\r\nexport default function AvailableApplicationGrid() {\r\n const [availableExams, setAvailableExams] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [physician, setPhysician] = useState(null);\r\n const authContext = useContext(AuthContext);\r\n\r\n useEffect(() => {\r\n const loadData = async () => {\r\n\r\n await abpnClient.get>(\"/api/application/available\", authContext)\r\n .then(exams => {\r\n setAvailableExams(exams);\r\n });\r\n\r\n await abpnClient.get(\"/api/physician\", authContext)\r\n .then(physician => {\r\n setPhysician(physician);\r\n });\r\n\r\n setLoading(false);\r\n }\r\n\r\n if(loading) loadData();\r\n \r\n }, []);\r\n\r\n if (loading) return ;\r\n return (\r\n
\r\n

Apply for Exam

\r\n _.isMoc && _.isArticleBased)}\r\n currentCCEnrollment={null} />\r\n _.isMoc && !_.isArticleBased)} \r\n currentCCEnrollment={physician.currentCCEnrollment} />\r\n !_.isMoc && _.isPrimary)} \r\n currentCCEnrollment={null} />\r\n !_.isMoc && !_.isPrimary)} \r\n currentCCEnrollment={null} />\r\n
\r\n );\r\n}","import { LookupItem } from \"../../Shared/Models/LookupItem\";\r\nimport Fee from \"./Fee\"\r\nexport default class Examination\r\n{\r\n examinationId?: number;\r\n examinationDefinitionId: number;\r\n title: string;\r\n certificationId: number;\r\n certificationName: string;\r\n startDate: string;\r\n endDate: string;\r\n applicationDeadlineDate: string;\r\n applicationLateDeadlineDate: string;\r\n alternativePathwayEndDate: string;\r\n isMoc: boolean;\r\n isArticleBased: boolean;\r\n isPrimary: boolean;\r\n requiresFellowshipTraining: boolean;\r\n isCombinedMoc: boolean;\r\n fees: Array;\r\n examinationModules: Array;\r\n moduleTypes: Array;\r\n otherBoardPathwayOptions: Array;\r\n practicePathwayOptions: Array;\r\n pathwayOptions: Array;\r\n}\r\n\r\nexport class PracticePathwayOptionLookupItem {\r\n id: number;\r\n name: string;\r\n}\r\nexport class OtherBoardPathwayOptionLookupItem {\r\n id: number;\r\n name: string;\r\n}\r\n\r\nexport enum KnownExaminationDefinitions {\r\n Neurology = 1030,\r\n ChildNeurology = 1031,\r\n Psychiatry = 1038,\r\n NeurocriticalCare = 1058,\r\n BrainInjuryMedicine = 1041\r\n}\r\n\r\nexport enum KnownCertifications {\r\n ClinicalNeurophysiology = 14\r\n}\r\n\r\nexport class ExaminationModule {\r\n examinationModuleId: number;\r\n moduleTypeId: number;\r\n}\r\n\r\nexport class ModuleType {\r\n moduleTypeId: number;\r\n certificationId: number;\r\n}\r\n","import { Route } from \"react-router-dom\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport { AuthConsumer } from \"./AuthProvider\";\r\n\r\nexport const AuthorizeRoute = ({ component, ...rest }: any) => {\r\n\r\n const renderFn = (Component :any) => (props: any) => (\r\n \r\n {({ isAuthenticated, signinRedirect }) => {\r\n if (!!Component && isAuthenticated()) {\r\n return ;\r\n } else {\r\n signinRedirect(null, window.location.pathname);\r\n return ;\r\n }\r\n }}\r\n \r\n );\r\n\r\n return ;\r\n}","import { Route } from \"react-router-dom\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport { AuthConsumer } from \"./AuthProvider\";\r\n\r\nexport const StaffOnlyRoute = ({ component, ...rest }: any) => {\r\n\r\n const renderFn = (Component :any) => (props: any) => (\r\n \r\n {({ isAuthenticated, staffSigninRedirect }) => {\r\n if (!!Component && isAuthenticated()) {\r\n return ;\r\n } else {\r\n staffSigninRedirect();\r\n return ;\r\n }\r\n }}\r\n \r\n );\r\n\r\n return ;\r\n}","export enum AddressType {\r\n Contact = 1,\r\n Public = 2,\r\n Shipping = 6\r\n}","export enum AddressVerificationStatus {\r\n UseSuggested = 1,\r\n UseAsEntered = 2\r\n}","import { AddressType } from \"../../Shared/Enums/AddressType\";\r\nimport { AddressVerificationStatus } from \"../../Shared/Enums/AddressVerificationStatus\";\r\nimport { CountryLookupItem, StateWithCountryLookupItem } from \"../../Shared/Models/StateWithCountryLookupItem\";\r\n\r\nexport class Address {\r\n constructor() {\r\n this.isEditing = true;\r\n this.types = new Array();\r\n this.addressId = 0;\r\n this.updatedBy = \"\";\r\n this.isValid = false;\r\n }\r\n\r\n public homePhoneNumber: string;\r\n public officePhoneNumber: string;\r\n public company: string;\r\n public company2: string;\r\n public line1: string;\r\n public line2: string;\r\n public city: string;\r\n public stateCode: string;\r\n public stateId: number;\r\n public countryId: number;\r\n public zipCode: string;\r\n public faxNumber: string;\r\n public isValid: boolean;\r\n public types: Array;\r\n public isContact: boolean;\r\n public addressId: number;\r\n public updatedDate: Date;\r\n public updatedBy: string;\r\n public isEditing: boolean;\r\n public newAreaCode: string;\r\n public verificationStatus: AddressVerificationStatus;\r\n}\r\n\r\nexport class AddressGridViewModel {\r\n public addresses: Array
;\r\n public states: Array;\r\n public countries: Array;\r\n}","import { Button } from \"react-bootstrap\";\r\nimport { Address } from \"../../Physician/Models/Address\";\r\nimport { AddressVerificationResult } from \"../../Physician/Models/AddressVerificationResult\";\r\n\r\ninterface IProps {\r\n data: AddressVerificationResult;\r\n onUseAsEntered: () => void;\r\n onUseSuggested: () => void;\r\n}\r\n\r\n\r\nexport default function AddressValidation(props: IProps) {\r\n var getAddressString = (address: Address) => {\r\n if (!address) return null;\r\n return `${address.line1}${address.line2 ? \", \" + address.line2 : \"\"}, ${address.city}, ${address.stateCode} ${address.zipCode}`\r\n }\r\n if (props.data == null) return null;\r\n return (\r\n
\r\n
\r\n Entered Address:\r\n {getAddressString(props.data.originalAddress)}\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useContext, Fragment, /*FormEvent*/ } from \"react\";\r\nimport { useState } from \"react\";\r\nimport { Card, Button, Row, Col, Form, Tooltip, OverlayTrigger } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../../Auth/AuthProvider\";\r\nimport { Address } from \"../../Physician/Models/Address\";\r\nimport AddressValidation from \"./AddressValidation\";\r\nimport { AddressVerificationResult } from \"../../Physician/Models/AddressVerificationResult\";\r\nimport { AddressVerificationStatus } from \"../Enums/AddressVerificationStatus\";\r\nimport { deepCopy } from \"../Utility/DeepCopy\";\r\nimport { CountryLookupItem, StateWithCountryLookupItem } from \"../Models/StateWithCountryLookupItem\";\r\nimport { AddressType } from \"../Enums/AddressType\";\r\nimport { CountryId } from \"../Enums/CountryId\";\r\nimport AbpnSpinner from \"./AbpnSpinner\";\r\n\r\ninterface IProps {\r\n address: Address;\r\n states: Array;\r\n countries: Array;\r\n runValidation: boolean;\r\n onSubmit: (address: Address) => void;\r\n onUpdate?: () => void;\r\n onCancel?: () => void;\r\n showSubmit?: boolean;\r\n submitText?: string;\r\n showCancel?: boolean;\r\n isLoading?: boolean;\r\n showStreetAddress?: boolean;\r\n}\r\n\r\nexport function AddressForm(props: IProps) {\r\n interface IData {\r\n addressVerificationResult: AddressVerificationResult,\r\n address: Address,\r\n validated: boolean,\r\n showAddressValidation: boolean,\r\n showStreetAddress: boolean\r\n }\r\n\r\n const [data, setData] = useState({\r\n addressVerificationResult: null,\r\n address: props.address,\r\n validated: false,\r\n showAddressValidation: false,\r\n showStreetAddress: props.showStreetAddress ?? true\r\n });\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n useEffect(() => {\r\n if (props.runValidation) validate();\r\n }, [props.runValidation]);\r\n\r\n useEffect(() => {\r\n setData(prevData =>\r\n ({\r\n ...prevData,\r\n showAddressValidation: (!prevData.address?.verificationStatus &&\r\n prevData.addressVerificationResult !== null)\r\n }));\r\n }, [data.address?.verificationStatus, data.addressVerificationResult]);\r\n\r\n const validate = () => {\r\n var isValid = true;\r\n var updatedData = deepCopy(data);\r\n const form = document.getElementById(\"addressForm\") as HTMLFormElement;\r\n\r\n if (!form.checkValidity()) isValid = false;\r\n\r\n updatedData.address.isValid = isValid;\r\n updatedData.validated = true;\r\n setData(updatedData);\r\n\r\n if (isValid) {\r\n runMelissaValidation();\r\n }\r\n }\r\n\r\n const updateLine1 = (value: string) => {\r\n var address = data.address;\r\n if(address == null)\r\n address = new Address();\r\n address.line1 = value;\r\n address.verificationStatus = null;\r\n setData(prevData => ({ ...prevData, address: address, addressVerificationResult: null }));\r\n if (props.onUpdate) props.onUpdate();\r\n }\r\n\r\n const updateLine2 = (value: string) => {\r\n var address = deepCopy(data.address);\r\n if(address == null)\r\n address = new Address();\r\n address.line2 = value;\r\n address.verificationStatus = null;\r\n setData(prevData => ({ ...prevData, address: address, addressVerificationResult: null }));\r\n if (props.onUpdate) props.onUpdate();\r\n }\r\n\r\n const updateCity = (value: string) => {\r\n var address = deepCopy(data.address);\r\n if(address == null)\r\n address = new Address();\r\n address.city = value;\r\n address.verificationStatus = null;\r\n setData(prevData => ({ ...prevData, address: address, addressVerificationResult: null }));\r\n if (props.onUpdate) props.onUpdate();\r\n }\r\n\r\n const updateZipCode = (value: string) => {\r\n var address = deepCopy(data.address);\r\n if(address == null)\r\n address = new Address();\r\n address.zipCode = value;\r\n address.verificationStatus = null;\r\n setData(prevData => ({ ...prevData, address: address, addressVerificationResult: null }));\r\n if (props.onUpdate) props.onUpdate();\r\n }\r\n\r\n const updateState = (e: React.ChangeEvent) => {\r\n var address = deepCopy(data.address);\r\n if(address == null)\r\n address = new Address();\r\n\r\n //Handles finding state if selected manually or with autofill\r\n var state = props.states.find(_ => _.id === parseInt(e.target.value));\r\n if (!state) state = props.states.find(_ => _.name === e.target.value);\r\n var value = state ? state.id : null;\r\n\r\n address.stateId = value;\r\n address.verificationStatus = null;\r\n setData(prevData => ({ ...prevData, address: address, addressVerificationResult: null }));\r\n if (props.onUpdate) props.onUpdate();\r\n }\r\n\r\n const filterStates = (countryId: number) => {\r\n if (countryId == null) return props.states;\r\n return props.states.filter(x => x.countryId === countryId)\r\n }\r\n\r\n const updateCountry = (e: React.ChangeEvent) => {\r\n var address = deepCopy(data.address);\r\n if(address == null)\r\n address = new Address();\r\n\r\n //Handles finding country if selected manually or with autofill\r\n var country = props.countries.find(_ => _.id === parseInt(e.target.value));\r\n if (!country) {\r\n country = props.countries.find(_ => _.name === e.target.value);\r\n }\r\n address.countryId = country ? country.id : null;\r\n\r\n if (address.countryId) {\r\n var states = filterStates(address.countryId);\r\n if (states.length === 1) {\r\n address.stateId = states[0].id;\r\n }\r\n }\r\n\r\n address.verificationStatus = null;\r\n setData(prevData => ({ ...prevData, address: address, addressVerificationResult: null }));\r\n if (props.onUpdate) props.onUpdate();\r\n }\r\n\r\n const updatePhoneNumber = (value: string) => {\r\n var address = deepCopy(data.address);\r\n if(address == null)\r\n address = new Address();\r\n\r\n address.homePhoneNumber = value;\r\n address.verificationStatus = null;\r\n setData(prevData => ({ ...prevData, address: address }));\r\n if (props.onUpdate) props.onUpdate();\r\n }\r\n\r\n const countryRequiresValidation = (countryId: number) => {\r\n return countryId === CountryId.Usa || countryId === CountryId.Canada;\r\n }\r\n\r\n const verifyAndSaveAddress = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n //Validate required fields\r\n e.currentTarget.classList.add('was-validated');\r\n if (e.currentTarget.checkValidity()) {\r\n e.currentTarget.classList.remove('was-validated');\r\n\r\n runMelissaValidation();\r\n }\r\n }\r\n\r\n const runMelissaValidation = () => {\r\n let updatedData = deepCopy(data);\r\n\r\n //determine if address can use Melissa validation\r\n if (!countryRequiresValidation(updatedData.address.countryId) ||\r\n (!updatedData.address.isContact &&\r\n updatedData.address.types.includes(AddressType.Public) &&\r\n !updatedData.address.types.includes(AddressType.Shipping))) {\r\n updatedData.address.verificationStatus = AddressVerificationStatus.UseAsEntered;\r\n }\r\n\r\n if (updatedData.address.verificationStatus) {\r\n updatedData.address.isValid = true;\r\n if (updatedData.address.verificationStatus === AddressVerificationStatus.UseSuggested && data.addressVerificationResult !== null) {\r\n updatedData.address = updateWithSuggestedAddress(updatedData.address);\r\n }\r\n\r\n props.onSubmit(updatedData.address);\r\n return;\r\n }\r\n\r\n //Melissa validation\r\n abpnClient.post>(\"/api/Address/Verify\", [updatedData.address], authContext)\r\n .then(addressVerificationResults => {\r\n\r\n let validationResult = addressVerificationResults.find(_ => !_.isValid || _.suggestedAddress !== null);\r\n\r\n if (addressVerificationResults.some(_ => _.isValid && !_.suggestedAddress)) {\r\n updatedData.address.verificationStatus = AddressVerificationStatus.UseSuggested;\r\n };\r\n updatedData.addressVerificationResult = validationResult ?? null;\r\n\r\n if (!updatedData.addressVerificationResult) {\r\n updatedData.address.isValid = true;\r\n props.onSubmit(updatedData.address);\r\n }\r\n\r\n setData(updatedData);\r\n });\r\n }\r\n\r\n const updateWithSuggestedAddress = (address: Address) => {\r\n let suggestedAddress = data.addressVerificationResult.suggestedAddress;\r\n\r\n if (suggestedAddress === null) return address;\r\n\r\n address.line1 = suggestedAddress.line1;\r\n address.line2 = suggestedAddress.line2;\r\n address.city = suggestedAddress.city;\r\n address.stateId = suggestedAddress.stateId;\r\n address.zipCode = suggestedAddress.zipCode;\r\n\r\n return address;\r\n }\r\n\r\n const onVerificationSelection = (verficationSelection: AddressVerificationStatus) => {\r\n let updatedAddress = deepCopy(data.address);\r\n updatedAddress.verificationStatus = verficationSelection;\r\n\r\n updatedAddress.isValid = true;\r\n if (updatedAddress.verificationStatus === AddressVerificationStatus.UseSuggested && data.addressVerificationResult !== null) {\r\n updatedAddress = updateWithSuggestedAddress(updatedAddress);\r\n }\r\n\r\n setData(prevData => ({ ...prevData, address: updatedAddress }));\r\n if (props.onUpdate) props.onUpdate();\r\n }\r\n\r\n return (\r\n
verifyAndSaveAddress(e)} validated={data.validated}>\r\n \r\n {data.showStreetAddress &&\r\n \r\n \r\n \r\n Address\r\n *\r\n updateLine1(e.target.value)}\r\n defaultValue={data.address?.line1 ? data.address.line1 : null}\r\n value={data.address?.line1} />\r\n \r\n \r\n \r\n \r\n Address 2\r\n updateLine2(e.target.value)}\r\n defaultValue={data.address?.line2 ? data.address.line2 : null}\r\n value={data.address?.line2} />\r\n \r\n \r\n \r\n }\r\n \r\n \r\n Country\r\n *\r\n ) => { updateCountry(e); }}\r\n defaultValue={data.address?.countryId ? data.address.countryId : \"\"}\r\n value={data.address?.countryId}>\r\n \r\n {props.countries.map(country => {\r\n return \r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n City\r\n *\r\n updateCity(e.target.value)}\r\n defaultValue={data.address?.city ? data.address.city : null}\r\n value={data.address?.city} />\r\n \r\n \r\n\r\n {filterStates(data.address?.countryId).length !== 1 &&\r\n \r\n \r\n State/Area\r\n *\r\n ) => { updateState(e); }}\r\n defaultValue={data.address?.stateId ? data.address.stateId : \"\"}\r\n value={data.address?.stateId}>\r\n \r\n {filterStates(data.address?.countryId).map(x => ())}\r\n \r\n \r\n }\r\n\r\n \r\n \r\n Postal Code\r\n *\r\n updateZipCode(e.target.value)}\r\n defaultValue={data.address?.zipCode ? data.address.zipCode : null}\r\n value={data.address?.zipCode}\r\n placeholder=\"00000\"\r\n name=\"zipCode\" />\r\n \r\n \r\n \r\n {data.showStreetAddress &&\r\n \r\n \r\n \r\n Phone\r\n *\r\n \r\n If outside the US please enter phone number in international format.\r\n }>\r\n \r\n \r\n \r\n updatePhoneNumber(e.target.value)}\r\n defaultValue={data.address?.homePhoneNumber ? data.address.homePhoneNumber : null}\r\n value={data.address?.homePhoneNumber} />\r\n \r\n \r\n \r\n }\r\n \r\n {data.showAddressValidation ?\r\n
\r\n onVerificationSelection(AddressVerificationStatus.UseAsEntered)}\r\n onUseSuggested={() => onVerificationSelection(AddressVerificationStatus.UseSuggested)} />\r\n
\r\n :\r\n (props.showSubmit ?? true) &&\r\n (props.isLoading ?\r\n :\r\n )\r\n }\r\n {props.showCancel && }\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AddressForm;\r\n","import React, { useEffect } from \"react\";\r\nimport { useState, Fragment } from \"react\";\r\nimport { Card, Row, Col, Collapse, Tooltip, OverlayTrigger } from \"react-bootstrap\";\r\nimport { Address } from \"../../Physician/Models/Address\";\r\nimport { AddressVerificationResult } from \"../../Physician/Models/AddressVerificationResult\";\r\nimport { AddressType } from \"../Enums/AddressType\";\r\nimport { deepCopy } from \"../Utility/DeepCopy\";\r\nimport { CountryLookupItem, StateWithCountryLookupItem } from \"../Models/StateWithCountryLookupItem\";\r\nimport AddressForm from \"./AddressForm\";\r\nimport { CountryId } from \"../Enums/CountryId\";\r\n\r\ninterface IProps {\r\n isNewPhysician: boolean;\r\n fullName: string;\r\n addresses: Array
;\r\n emailAddress: string;\r\n states: Array;\r\n countries: Array;\r\n isSectionOpen: boolean;\r\n runValidation: boolean;\r\n onSave: (addresses: Array
) => void;\r\n onUpdate?: () => void;\r\n onOpen?: () => void;\r\n disabled?: boolean;\r\n isLoading?: boolean;\r\n}\r\nexport function ApplicantInformation(props: IProps) {\r\n interface IData {\r\n openCollapse: boolean;\r\n addressVerificationResult: Array;\r\n contactAddress: Address;\r\n }\r\n\r\n const createNewContactAddress = () => {\r\n var newContactAddress = new Address();\r\n newContactAddress.countryId = CountryId.Usa;\r\n newContactAddress.types.push(AddressType.Contact);\r\n newContactAddress.isContact = true;\r\n return newContactAddress;\r\n }\r\n\r\n const [data, setData] = useState({\r\n openCollapse: props.isSectionOpen,\r\n addressVerificationResult: null,\r\n contactAddress: props.addresses?.find(_ => _.isContact) ?? createNewContactAddress()\r\n });\r\n\r\n useEffect(() => {\r\n setData(prevData => ({...prevData, openCollapse: props.isSectionOpen}));\r\n }, [props.isSectionOpen]);\r\n\r\n const buildAddressList = (contactAddress: Address) => {\r\n // must have 1 of each type to save: contact, shipping, and public\r\n let addresses = new Array
();\r\n addresses.push(contactAddress);\r\n\r\n if(contactAddress.addressId == 0) {\r\n //Add public and shipping address types to contact address\r\n contactAddress.types.push(AddressType.Public);\r\n contactAddress.types.push(AddressType.Shipping);\r\n return addresses;\r\n }\r\n else {\r\n var publicationAndShippingAddress = props.addresses?.find(_ =>\r\n _.types.includes(AddressType.Public)\r\n && _.types.includes(AddressType.Shipping)\r\n && !_.isContact);\r\n if (publicationAndShippingAddress) {\r\n addresses.push(publicationAndShippingAddress);\r\n return addresses;\r\n }\r\n\r\n contactAddress.types = [AddressType.Contact, AddressType.Shipping, AddressType.Public];\r\n\r\n var publicationAddress = props.addresses?.find(_ => _.types.includes(AddressType.Public) && !_.isContact);\r\n if (publicationAddress) {\r\n addresses.push(publicationAddress);\r\n contactAddress.types.splice(contactAddress.types.indexOf(AddressType.Public), 1);\r\n }\r\n\r\n var shippingAddress = props.addresses?.find(_ => _.types.includes(AddressType.Shipping) && !_.isContact);\r\n if (shippingAddress) {\r\n addresses.push(shippingAddress);\r\n contactAddress.types.splice(contactAddress.types.indexOf(AddressType.Shipping), 1);\r\n }\r\n\r\n return addresses;\r\n }\r\n }\r\n\r\n const saveContactAddress = (contactAddress: Address) => {\r\n let addresses = buildAddressList(contactAddress);\r\n props.onSave(addresses);\r\n }\r\n\r\n const setOpenCollapse = () => {\r\n let updatedData = deepCopy(data);\r\n updatedData.openCollapse = !updatedData.openCollapse;\r\n if (updatedData.openCollapse && props.onOpen) props.onOpen();\r\n setData(updatedData);\r\n }\r\n\r\n return (\r\n \r\n \r\n {props.isNewPhysician ?\r\n \r\n Contact Address\r\n :\r\n {if (!props.disabled) setOpenCollapse()}}>\r\n Applicant\r\n }\r\n \r\n \r\n \r\n {!props.isNewPhysician &&\r\n \r\n \r\n \r\n Contact\r\n \r\n Contact Address is used for the delivery of any mailed items.\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Applicant Name\r\n \r\n \r\n {props.fullName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Email\r\n \r\n \r\n {props.emailAddress ? props.emailAddress : \"placeholder@email.com\"}\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ApplicantInformation;\r\n","export default class Fee {\r\n feeAmount : number\r\n feeDescription : string\r\n feeType: FeeType\r\n}\r\n\r\nexport enum FeeType {\r\n examFeeMocPrimaryInitial = 2,\r\n examFeeSubspecialtyinitial = 3,\r\n examFeeMoc = 4,\r\n lateFeeInitial = 7,\r\n lateFeeMoc = 8,\r\n examFeeMocWithTwoModules = 10,\r\n examFeeMocWithThreeOrMoreModules = 11,\r\n ccAnnualFee = 12,\r\n ccAnnualFeeTwoCertifications = 21,\r\n ccAnnualFeeThreeOrMoreCertifications = 22,\r\n annualFeeCredit = 16,\r\n multipleExamDiscount = 23,\r\n committeeMemberDiscount = 24,\r\n committeeMemberTransferFeeDiscount = 25,\r\n committeeMemberLateFeeDiscount = 26,\r\n committeeMemberProcessingFeeDiscount = 27\r\n}","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { Button, Row, Card, Col, Collapse, Table, Form } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../../Services/AbpnClient\";\r\nimport { paymentProcessor } from \"../../../Services/PaymentProcessor/PaymentProcessor\";\r\nimport Payment from \"../../../Services/PaymentProcessor/Payment\";\r\nimport { AuthContext } from \"../../Auth/AuthProvider\";\r\nimport Physician from \"../../Physician/Models/Physician\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\nimport ApplicationModel, { CandidateStatus } from \"../Models/ApplicationModel\";\r\nimport ApplicationReceiptModel from \"../Models/ApplicationReceiptModel\";\r\nimport Examination from \"../Models/Examination\";\r\nimport Fee, { FeeType } from \"../Models/Fee\";\r\nimport { Alert } from 'react-bootstrap';\r\nimport { Fragment } from \"react\";\r\nimport OrderLineItem from \"../../Shared/Models/OrderLineItem\";\r\nimport { AbpnSpinner } from './../../Shared/Components/AbpnSpinner';\r\nimport { FattPayContainer } from \"../../../Services/PaymentProcessor/FattPayContainer\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IPaymentCardProps {\r\n application: ApplicationModel;\r\n physician: Physician;\r\n examination: Examination;\r\n isSectionAvailable: boolean;\r\n isSectionOpen: boolean;\r\n onApplicationSubmitted: (applicationReceipt: ApplicationReceiptModel) => void;\r\n examinationDates: string;\r\n displayBanner: () => void;\r\n onOpen: () => void;\r\n disabled: boolean;\r\n applicationDeadlineDate: string;\r\n totalBalance: number;\r\n}\r\n\r\ninterface IPaymentPlan {\r\n dueNow: number;\r\n isPayInFull: boolean;\r\n isPayInSplit: boolean;\r\n}\r\n\r\ninterface ISelectedInstallmentPayments {\r\n total: number;\r\n isFirstInstallmentSelected: boolean;\r\n isSecondInstallmentSelected: boolean;\r\n}\r\n\r\nexport function PaymentCard(props: IPaymentCardProps) {\r\n const hasExistingOrder = props.application.order !== null;\r\n const orderWithFirstPaymentDue = hasExistingOrder && (props.application.order.total === props.application.order.balance)\r\n\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n\r\n const contactAddress = props.physician.addresses.addresses.find(_ => _.isContact);\r\n\r\n const [payment, setPayment] = useState({ email: props.physician.emailAddress, city: contactAddress?.city, state: contactAddress?.stateCode } as Payment);\r\n \r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [isPaymentSuccessful, setIsPaymentSuccessful] = useState(null);\r\n const [isDisable, setIsDisable] = useState(false);\r\n\r\n const payContainerRef = React.useRef(null);\r\n\r\n const today = new Date();\r\n \r\n const isPastDeadline = (date: string) => {\r\n var deadlineDate = getDateWithOffset(date);\r\n return getDateWithOffset(deadlineDate.toDateString()) < getDateWithOffset(today.toDateString());\r\n }\r\n\r\n const getNonExamAndApplicationFees = () => {\r\n var otherFees = props.application.order?.total - props.application.totalExamFeeAmount;\r\n\r\n var totalInstallmentsAmount = 0;\r\n\r\n if (props.application.installmentOptions.length > 0) {\r\n totalInstallmentsAmount = props.application.installmentOptions.map(_ => _.amount)?.reduce((a, b) => a + b, 0);\r\n }\r\n\r\n if (totalInstallmentsAmount > 0 && totalInstallmentsAmount === props.application?.order?.balance) return 0;\r\n\r\n if (props.application.installmentOptions?.length === 2) {\r\n otherFees = props.application?.order?.balance - totalInstallmentsAmount;\r\n }\r\n\r\n return otherFees > 0 ? otherFees : 0;\r\n }\r\n\r\n const getPaymentPlanAmountDueNow = () => {\r\n if (!isSplitPay) return props.application?.order?.balance;\r\n\r\n var isFirstInstallmentPastDue = isPastDeadline(props.application.installmentOptions[0]?.dueDate);\r\n var isSecondInstallmentPastDue = props.application.installmentOptions[1] && isPastDeadline(props.application.installmentOptions[1].dueDate);\r\n\r\n if (isFirstInstallmentPastDue && isSecondInstallmentPastDue) return props.application?.order?.balance;\r\n\r\n var installmentAmountDue = orderWithFirstPaymentDue ? 0 : props.application?.installmentOptions?.[0]?.amount;\r\n\r\n return installmentAmountDue + getNonExamAndApplicationFees();\r\n }\r\n\r\n const [paymentPlan, setPaymentPlan] = useState({\r\n dueNow: props.totalBalance,\r\n isPayInFull: false,\r\n isPayInSplit: false,\r\n })\r\n const isSplitPay = (props.application.isSplitPay || paymentPlan.isPayInSplit);\r\n const existingOrderWithSplitPay = hasExistingOrder && isSplitPay;\r\n\r\n const hasPaymentPlan = (paymentPlan.isPayInSplit || paymentPlan.isPayInFull);\r\n const existingOrderWithFirstPaymentDue = hasExistingOrder && orderWithFirstPaymentDue;\r\n\r\n const hasBalanceDue = paymentPlan.dueNow > 0;\r\n\r\n const selectPaymentPlanForExistingOrder = (existingOrderWithFirstPaymentDue && hasBalanceDue);\r\n const canSelectPaymentPlan = (!hasExistingOrder || selectPaymentPlanForExistingOrder) && !props.examination.isMoc && props.application.candidateStatus != CandidateStatus.InviteSent && hasBalanceDue;\r\n\r\n const [selectedInstallmentPayments, setSelectedInstallmentPayments] = useState({\r\n total: getPaymentPlanAmountDueNow(),\r\n isFirstInstallmentSelected: !orderWithFirstPaymentDue,\r\n isSecondInstallmentSelected: false,\r\n })\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n const setPayInFull = () => {\r\n var updated = deepCopy(paymentPlan);\r\n updated.isPayInFull = true;\r\n updated.isPayInSplit = false;\r\n updated.dueNow = props.totalBalance;\r\n setPaymentPlan(updated);\r\n }\r\n\r\n const setSplitPayment = () => {\r\n var updated = deepCopy(paymentPlan);\r\n updated.isPayInFull = false;\r\n updated.isPayInSplit = true;\r\n updated.dueNow = props.totalBalance - props.application.installmentOptions.map(_ => _.amount).reduce((a, b) => a + b, 0);\r\n setPaymentPlan(updated);\r\n }\r\n const onPaymentChanged = (updated: Payment) => {\r\n setPayment(deepCopy(updated));\r\n }\r\n const submit = async (event: React.FormEvent) => {\r\n setIsDisable(true);\r\n\r\n if (isSubmitting)\r\n return;\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.currentTarget.classList.add('was-validated');\r\n\r\n if (payContainerRef === null || payContainerRef === undefined || !hasBalanceDue)\r\n {\r\n setIsSubmitting(true);\r\n var applicationReceipt = await abpnClient.get('/api/application/submit?examinationId=' + props.application.examinationId, authContext)\r\n\r\n props.onApplicationSubmitted(applicationReceipt);\r\n return;\r\n }\r\n\r\n if (payContainerRef.current.validate(payment) && event.currentTarget.checkValidity()) {\r\n event.currentTarget.classList.remove('was-validated');\r\n\r\n var updatedPayment = deepCopy(payment);\r\n updatedPayment = await paymentProcessor.tokenize(updatedPayment);\r\n\r\n var isInstallmentPayment = (hasExistingOrder && isSplitPay && !existingOrderWithFirstPaymentDue)\r\n updatedPayment.amount = isInstallmentPayment ? selectedInstallmentPayments?.total : paymentPlan.dueNow;\r\n\r\n setPayment(updatedPayment);\r\n\r\n if (!updatedPayment?.IsValid) {\r\n setIsDisable(false);\r\n return;\r\n }\r\n\r\n setIsDisable(false);\r\n setIsSubmitting(true);\r\n\r\n //Installment Payments\r\n if (hasExistingOrder && props.application.candidateStatus !== CandidateStatus.Unsubmitted) {\r\n var applicationReceipt = await abpnClient.post('/api/application/makePayment?applicationId=' + props.application.applicationId, updatedPayment, authContext)\r\n\r\n setIsSubmitting(false);\r\n setIsPaymentSuccessful(applicationReceipt.isSuccessful);\r\n\r\n if (!applicationReceipt.isSuccessful) {\r\n return;\r\n }\r\n\r\n props.displayBanner();\r\n return;\r\n }\r\n\r\n var url = `/api/application/submit?examinationId=${props.application.examinationId}&isSplitPay=${paymentPlan.isPayInSplit}`\r\n var applicationReceipt = await abpnClient.post(url, updatedPayment, authContext)\r\n\r\n setIsSubmitting(false);\r\n setIsPaymentSuccessful(applicationReceipt.isSuccessful);\r\n\r\n if (!applicationReceipt.isSuccessful) {\r\n return;\r\n }\r\n\r\n props.onApplicationSubmitted(applicationReceipt);\r\n }\r\n\r\n setIsDisable(false);\r\n }\r\n\r\n const getExamLateFee = () => {\r\n var initialLateFee = props.examination.fees.find(_ => _.feeType === FeeType.lateFeeInitial)?.feeAmount;\r\n return initialLateFee ?? props.examination.fees.find(_ => _.feeType === FeeType.lateFeeMoc)?.feeAmount;\r\n }\r\n\r\n const getPaymentDeadlineDate = () => {\r\n var deadlineDate = props.application.installmentOptions[props.application.installmentOptions?.length - 1]?.dueDate ??\r\n props.examination.applicationLateDeadlineDate;\r\n\r\n return getDateWithOffset(deadlineDate);\r\n }\r\n\r\n const getLateFeeDate = (orderLineItem: OrderLineItem) => {\r\n if (orderLineItem.feeType === FeeType.lateFeeMoc || orderLineItem.feeType === FeeType.lateFeeInitial) {\r\n var formattedDate = getDateWithOffset(orderLineItem.createdDate).toLocaleDateString('en-us', {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric'\r\n });\r\n return `(${formattedDate})`;\r\n }\r\n return '';\r\n }\r\n\r\n const getFeeDescription = (fee: Fee) => {\r\n var isWaived = fee.feeAmount < 0;\r\n var isDiscount = (fee.feeType == FeeType.ccAnnualFee) || \r\n (fee.feeType == FeeType.multipleExamDiscount) ||\r\n (fee.feeType == FeeType.committeeMemberDiscount) ||\r\n (fee.feeType == FeeType.committeeMemberLateFeeDiscount) ||\r\n (fee.feeType == FeeType.committeeMemberProcessingFeeDiscount) ||\r\n (fee.feeType == FeeType.committeeMemberTransferFeeDiscount);\r\n\r\n if (isWaived && !isDiscount) return `${fee.feeDescription} (Waived)`;\r\n return fee.feeDescription;\r\n }\r\n\r\n const updateInstallmentsSelectedTotal = (amount: number) => {\r\n var updated = deepCopy(selectedInstallmentPayments);\r\n updated.total = !updated.isSecondInstallmentSelected ? (updated.total + amount) : (updated.total - amount);\r\n updated.isSecondInstallmentSelected = !updated.isSecondInstallmentSelected;\r\n setSelectedInstallmentPayments(updated);\r\n }\r\n\r\n useEffect(() => {\r\n setOpenCollapse(props.isSectionOpen);\r\n }, [props.isSectionOpen]);\r\n\r\n useEffect(() => {\r\n if (openCollapse) props.onOpen();\r\n }, [openCollapse]);\r\n\r\n useEffect(() => {\r\n const resetPaymentPlan = () => {\r\n var updated = deepCopy(paymentPlan);\r\n updated.isPayInFull = false;\r\n updated.isPayInSplit = false;\r\n updated.dueNow = props.totalBalance;\r\n setPaymentPlan(updated);\r\n }\r\n\r\n resetPaymentPlan();\r\n }, [props.totalBalance]);\r\n\r\n return (\r\n \r\n \r\n { if (!props.disabled) setOpenCollapse(!openCollapse) }}>\r\n Payment\r\n \r\n \r\n
submit(e)}>\r\n {isSubmitting ? :\r\n \r\n \r\n \r\n Applicant Name\r\n \r\n \r\n {props.physician.fullName}\r\n \r\n \r\n Email\r\n \r\n \r\n {props.physician.emailAddress}\r\n \r\n \r\n Examination Requested\r\n \r\n \r\n {props.examination.title}\r\n \r\n \r\n Examination Dates\r\n \r\n \r\n {props.examinationDates}\r\n \r\n\r\n\r\n {!hasExistingOrder &&\r\n \r\n \r\n
Fees
\r\n
\r\n \r\n \r\n {props.application.fees.map(_ => \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
{getFeeDescription(_)}${_.feeAmount}
Total${props.application?.totalFeeAmount}
\r\n
}\r\n\r\n {hasExistingOrder &&\r\n \r\n \r\n {props.application.order.orderLineItems.map((_, index) => \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {props.application.order.completedPayments.map((_, index) => \r\n \r\n \r\n )}\r\n \r\n
{`${_.description} ${getLateFeeDate(_)}`}${_.amount}
TOTAL${props.application?.order.total}
Paid {(getDateWithOffset(_.transactionDate)).toLocaleDateString('en-us', {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric'\r\n })}(${-1 * _.amount})
\r\n }\r\n\r\n {(hasExistingOrder && !orderWithFirstPaymentDue && props.application.installmentOptions?.length <= 1 && hasBalanceDue) &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Pay Now
Due {getPaymentDeadlineDate().toLocaleDateString('en-us', {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric'\r\n })} ${props.application.order.balance}
Total ${props.application.order.balance}
\r\n
}\r\n {(existingOrderWithSplitPay && !orderWithFirstPaymentDue && props.application.installmentOptions?.length > 1) &&\r\n \r\n \r\n Select Installment(s) to pay.\r\n \r\n \r\n \r\n {props.application.installmentOptions.map((_, index) =>\r\n \r\n updateInstallmentsSelectedTotal(_.amount)}\r\n label={Due {(getDateWithOffset(_.dueDate)).toLocaleDateString('en-us', {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric'\r\n })} ${index === 0 ? _.amount + getNonExamAndApplicationFees() : _.amount}} />\r\n )}\r\n \r\n \r\n \r\n \r\n
Total ${selectedInstallmentPayments.total ?? props.application?.order.balance}
\r\n
\r\n }\r\n {canSelectPaymentPlan &&\r\n \r\n \r\n setPayInFull()}\r\n hidden={props.examination.isMoc}>Pay In Full\r\n setSplitPayment()}\r\n disabled={isPastDeadline(props.examination.applicationLateDeadlineDate) || props.application.installmentOptions.length == 0}\r\n hidden={props.examination.isMoc}>Split Payment\r\n \r\n }\r\n {((canSelectPaymentPlan && hasPaymentPlan) || (!canSelectPaymentPlan && !existingOrderWithSplitPay)) &&\r\n \r\n \r\n Amount Due\r\n \r\n \r\n \r\n \r\n \r\n \r\n {paymentPlan.isPayInSplit && props.application.installmentOptions.map((_, index) =>\r\n \r\n \r\n \r\n )}\r\n \r\n
Due {props.application.isTransferredIn ? getDateWithOffset(props.applicationDeadlineDate).toLocaleDateString() : `Now`}${paymentPlan.dueNow}
Due {getDateWithOffset(_.dueDate).toLocaleDateString('en-us', {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric'\r\n })}${_.amount}
\r\n {isSplitPay &&\r\n
\r\n \r\n NOTE: ABPN will NOT automatically charge your credit card or checking account for remaining installment payments.\r\n You will receive an email with instructions for each installment.\r\n \r\n \r\n Any installment payment made after the due date must also include a ${getExamLateFee()} late fee charge.\r\n \r\n \r\n If all payments are not received by {getPaymentDeadlineDate().toLocaleDateString('en-us', {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric'\r\n })} your application will be denied.\r\n \r\n
\r\n }\r\n
\r\n }\r\n\r\n {(!canSelectPaymentPlan || hasPaymentPlan) && hasBalanceDue &&\r\n \r\n null} />\r\n {payment.paymentType && payment.IsValid === false &&\r\n\r\n \r\n

Could Not Validate Payment Method. Please verify your payment method and try again

\r\n
}\r\n {isPaymentSuccessful === false &&\r\n \r\n

The provided payment method failed. Please verify your payment method and try again

\r\n
}\r\n\r\n
\r\n }\r\n\r\n {!isSubmitting &&\r\n
\r\n \r\n
\r\n }\r\n \r\n
\r\n }\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default PaymentCard;\r\n","import React, { useEffect } from \"react\";\r\nimport { useState, useContext } from \"react\";\r\nimport { Card, Button, Col, Collapse, Form, Row} from \"react-bootstrap\";\r\nimport { AuthContext } from \"../../Auth/AuthProvider\";\r\nimport { MedicalLicense } from \"../../Physician/Models/MedicalLicense\";\r\nimport { abpnClient } from \"../../../Services/AbpnClient\";\r\nimport { StateWithCountryLookupItem } from \"../../Shared/Models/StateWithCountryLookupItem\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\nimport { MedicalLicenseList } from \"../../Shared/Components/MedicalLicenseList\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps {\r\n medicalLicenses: Array;\r\n states: Array;\r\n examStartDate: string;\r\n isSectionOpen: boolean;\r\n requiresUnrestrictedLicense: boolean;\r\n onContinue: () => void;\r\n onOpen: () => void;\r\n disabled: boolean;\r\n}\r\n\r\nexport function MedicalLicenseInformation(props: IProps) {\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [medicalLicenses, setMedicalLicenses] = useState>(props.medicalLicenses);\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n const validate = (medicalLicenses: Array) : boolean => {\r\n medicalLicenses.forEach((medicalLicense: MedicalLicense) => {\r\n medicalLicense.validationMessage = new Array();\r\n \r\n if (medicalLicense.medicalLicenseId === 0 && getDateWithOffset(medicalLicense.expirationDate) < new Date())\r\n {\r\n medicalLicense.validationMessage.push(\"Can not add expired licenses.\");\r\n }\r\n if (!medicalLicense.licenseNumber?.trim()) {\r\n medicalLicense.validationMessage.push(\" License number is required.\");\r\n }\r\n if (!medicalLicense.stateId) {\r\n medicalLicense.validationMessage.push(\" State is required\");\r\n }\r\n if (!Date.parse(medicalLicense.expirationDate)){\r\n medicalLicense.validationMessage.push(\" Expiration date invalid. Expected format: MM/DD/YYYY\");\r\n }\r\n if (medicalLicense.validationMessage.length > 0){\r\n medicalLicense.isEditing = true;\r\n }\r\n })\r\n setMedicalLicenses(deepCopy(medicalLicenses));\r\n return !medicalLicenses.some(_ => _.validationMessage?.length > 0);\r\n }\r\n\r\n const saveAllMedicalLicenses = (medicalLicensesToUpdate: Array) => {\r\n if (validate(medicalLicensesToUpdate))\r\n {\r\n setIsLoading(true);\r\n const url = \"/api/Physician/SaveMedicalLicenses/\";\r\n abpnClient.post>(url, medicalLicensesToUpdate, authContext).then(result => {\r\n result.forEach((license: MedicalLicense) => { license.isEditing = false; license.isNew = false });\r\n setMedicalLicenses(result);\r\n setIsLoading(false);\r\n props.onContinue();\r\n });\r\n } \r\n }\r\n\r\n const addNewMedicalLicense = () => {\r\n var newMedicalLicense = new MedicalLicense();\r\n newMedicalLicense.isNew = true;\r\n newMedicalLicense.isEditing = true;\r\n var newList = deepCopy(medicalLicenses);\r\n newList.push(newMedicalLicense);\r\n setMedicalLicenses(newList);\r\n }\r\n\r\n const removeMedicalLicense = (medicalLicense: MedicalLicense) => {\r\n var newList = deepCopy(medicalLicenses.filter(x => x.medicalLicenseId !== medicalLicense.medicalLicenseId));\r\n setMedicalLicenses(newList);\r\n }\r\n\r\n const updateMedicalLicense = (medicalLicense: MedicalLicense) => {\r\n var updated = deepCopy(medicalLicenses)\r\n var index = updated.findIndex(_ => _.medicalLicenseId == medicalLicense.medicalLicenseId);\r\n updated[index] = medicalLicense;\r\n saveAllMedicalLicenses(updated);\r\n }\r\n\r\n const canAddNewLicense = () => {\r\n var newLicense = medicalLicenses.find(_ => _.isNew);\r\n return newLicense ? false : true;\r\n }\r\n\r\n const areLicensesValid = () => {\r\n return medicalLicenses.filter(_ => _.validationMessage?.length > 0).length === 0;\r\n }\r\n\r\n const saveAndContinue = () => {\r\n saveAllMedicalLicenses(medicalLicenses);\r\n }\r\n\r\n useEffect(() => {\r\n setOpenCollapse(props.isSectionOpen);\r\n }, [props.isSectionOpen]);\r\n\r\n useEffect(() => {\r\n if (openCollapse) props.onOpen();\r\n }, [openCollapse]);\r\n\r\n if (props.medicalLicenses == null) return ;\r\n return (\r\n \r\n \r\n {if (!props.disabled) setOpenCollapse(!openCollapse)}}>\r\n Medical Licenses\r\n \r\n \r\n \r\n \r\n
\r\n removeMedicalLicense(medicalLicense)}\r\n updateMedicalLicense={(medicalLicense: MedicalLicense) => updateMedicalLicense(medicalLicense)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {isLoading ? : }\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { Card, Button, Form, Col, Collapse, Row } from \"react-bootstrap\";\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\n\r\ninterface IProps {\r\n onApplicationAttestedToggled: () => void;\r\n onContinue: () => void;\r\n hasAttested: boolean;\r\n isSectionOpen: boolean\r\n attestationContent: string\r\n onOpen: () => void;\r\n disabled: boolean;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport function AttestationStatement(props: IProps) {\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n\r\n const onSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n e.currentTarget.classList.add('was-validated');\r\n if (e.currentTarget.checkValidity()) {\r\n e.currentTarget.classList.remove('was-validated');\r\n props.onContinue();\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setOpenCollapse(props.isSectionOpen);\r\n }, [props.isSectionOpen]);\r\n\r\n useEffect(() => {\r\n if (openCollapse) props.onOpen();\r\n }, [openCollapse]);\r\n\r\n return (\r\n \r\n \r\n {if (!props.disabled) setOpenCollapse(!openCollapse)}}>\r\n Application Attestation\r\n \r\n \r\n \r\n \r\n
\r\n
{ReactHtmlParser(props.attestationContent)}
\r\n Attestation\r\n \r\n \r\n \r\n props.onApplicationAttestedToggled()} />\r\n I hereby declare under penalty of perjury that the information given in this application is true and correct to the best of my knowledge and belief. I intend to be legally bound by the foregoing.\r\n Please attest to the above before continuing\r\n \r\n \r\n \r\n {props.isLoading ? : }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AttestationStatement;","import React, { useEffect, useState } from \"react\";\r\nimport { Card, Button, Form, Col, Collapse, Row, Alert } from \"react-bootstrap\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\n\r\ninterface IProps {\r\n isAdaRequested: boolean\r\n isNmaRequested: boolean\r\n isSectionOpen: boolean\r\n isArticleBased: boolean\r\n onContinue: (isAdaRequested: boolean, isNmaRequested: boolean) => void;\r\n onOpen: () => void;\r\n disabled: boolean;\r\n isLoading?: boolean;\r\n}\r\n\r\ninterface ISelection {\r\n isAdaRequested: boolean;\r\n isNmaRequested: boolean;\r\n}\r\n\r\nexport function TestingOptions(props: IProps) {\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const [selection, setSelection] = useState({\r\n isAdaRequested: !props.isArticleBased && props.isAdaRequested,\r\n isNmaRequested: !props.isArticleBased && props.isNmaRequested\r\n });\r\n\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n\r\n const isNoAccommodationRequested = () => {\r\n return selection.isAdaRequested === false && selection.isNmaRequested === false;\r\n }\r\n\r\n const onSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (validateSelection()) {\r\n if (selection.isAdaRequested === null) selection.isAdaRequested = false;\r\n if (selection.isNmaRequested === null) selection.isNmaRequested = false;\r\n\r\n props.onContinue(selection.isAdaRequested, selection.isNmaRequested);\r\n }\r\n }\r\n\r\n const validateSelection = () => {\r\n if (!selection.isNmaRequested && !selection.isAdaRequested && !isNoAccommodationRequested()) {\r\n setErrorMessage(\"You must choose a selection.\")\r\n return false;\r\n }\r\n setErrorMessage(\"\");\r\n return true;\r\n }\r\n const toggleAda = () => {\r\n var updated = deepCopy(selection);\r\n updated.isAdaRequested = !updated.isAdaRequested;\r\n setSelection(updated);\r\n }\r\n const toggleNma = () => {\r\n var updated = deepCopy(selection);\r\n updated.isNmaRequested = !updated.isNmaRequested;\r\n setSelection(updated);\r\n }\r\n\r\n const toggleNoAccommodation = () => {\r\n var updated = deepCopy(selection);\r\n var noAccommodation = isNoAccommodationRequested();\r\n\r\n updated.isAdaRequested = noAccommodation ? null : false;\r\n updated.isNmaRequested = noAccommodation ? null : false;\r\n setSelection(updated);\r\n }\r\n\r\n useEffect(() => {\r\n setOpenCollapse(props.isSectionOpen);\r\n }, [props.isSectionOpen]);\r\n\r\n useEffect(() => {\r\n if (openCollapse) props.onOpen();\r\n }, [openCollapse]);\r\n\r\n return (\r\n \r\n \r\n {if (!props.disabled) setOpenCollapse(!openCollapse)}}>\r\n Testing Options\r\n \r\n \r\n \r\n \r\n
onSubmit(e)}>\r\n {!props.isArticleBased ?\r\n \r\n \r\n \r\n toggleNoAccommodation()} />\r\n I do not request accommodations.\r\n \r\n \r\n \r\n \r\n toggleAda()} />\r\n I have a disability and request accommodations during the examination.\r\n
\r\n NOTE: The Board will contact you by email with a link to the application for testing accommodations and submission deadline information.\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n toggleNma()} />\r\n I am pregnant or a nursing mother and request accommodations.\r\n \r\n \r\n
\r\n :\r\n

\r\n Qualifications for test accommodations for applicants with disabilities can be found on the ABPN website policies section. \r\n

}\r\n \r\n {errorMessage && {errorMessage}}\r\n {props.isLoading ? : }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default TestingOptions;","import { PathwayMethod } from \"./PathwayMethod\";\r\n\r\nexport default class SubspecialtyTraining {\r\n subspecialtyTrainingId: number;\r\n trainingProgramId: number;\r\n applicationId: number;\r\n trainingInstitutionName: string;\r\n isEditing: boolean;\r\n startDate: string;\r\n endDate: string;\r\n monthsCredit: number;\r\n isPartTime: boolean;\r\n percentTimeForPractice: number;\r\n practiceCertificationBoard: string;\r\n practiceCertificationDate: string;\r\n practiceLocation: string;\r\n practiceTime: string;\r\n pathwayMethod: PathwayMethod;\r\n}\r\n\r\nexport enum AlternativePathwayPracticeOption {\r\n \"An average of at least 17% of their post-training clinical practice time spent in the practice of NCC (at least 7 hours per week) for the past 6 years.*\" = 1,\r\n \"An average of at least 25% of their post-training clinical practice time spent in the practice of NCC (at least 10 hours per week) for the past 4 years.*\" = 2,\r\n \"An average of at least 33% of their post-training clinical practice time spent in the practice of NCC (at least 13 hours per week) for the past 3 years.*\" = 3,\r\n \"An average of at least 50% of their post-training clinical practice time spent in the practice of NCC (at least 20 hours per week) for the past 2 years.*\" = 4,\r\n \"An average of at least 25% of their total post-training professional time spent in the practice of NCC (at least 10 hours per week) for the past 4 years.**\" = 5\r\n}\r\n","\r\nexport enum PathwayMethod {\r\n Grandfathered = 1,\r\n Fellowship = 2,\r\n Practice = 3,\r\n OtherBoard = 4\r\n}","import React, { useContext, useEffect } from \"react\";\r\nimport { useState } from \"react\";\r\nimport { Button, Card, Col, Collapse, Form, FormGroup, Row } from \"react-bootstrap\";\r\nimport InputMask from 'react-input-mask';\r\nimport { abpnClient } from \"../../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../../Auth/AuthProvider\";\r\nimport SubspecialtyTraining, { AlternativePathwayPracticeOption } from \"../../Physician/Models/SubspecialtyTraining\";\r\nimport { PathwayMethod } from \"../../Physician/Models/PathwayMethod\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\nimport Examination, { KnownExaminationDefinitions, PracticePathwayOptionLookupItem } from \"../Models/Examination\";\r\nimport { LookupItem } from \"../../Shared/Models/LookupItem\";\r\nimport { ValidatorHelper } from \"../../Shared/ValidatorHelper\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps {\r\n isSectionOpen: boolean;\r\n onSave: (subSpecialtyTraining: Array) => void;\r\n examination: Examination;\r\n applicationId: number;\r\n subSpecialtyTrainingList: Array;\r\n onOpen: () => void;\r\n disabled: boolean;\r\n}\r\n\r\nexport function TrainingRequirements(props: IProps) {\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const [subSpecialtyTraining, setSubspecialtyTraining] = useState(new SubspecialtyTraining());\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const alternatePathwayEndDate = getDateWithOffset(props.examination.alternativePathwayEndDate);\r\n const isInAlternativePathwayPeriod = alternatePathwayEndDate && alternatePathwayEndDate >= new Date();\r\n const hasOnePathwayOption = props.examination.pathwayOptions.length == 1;\r\n const authContext = useContext(AuthContext);\r\n\r\n var endDateFormElement = React.createRef();\r\n var practiceCertDateElement = React.createRef();\r\n const practiceBoardId: string = \"practiceBoard\"\r\n var practiceBoardElement: HTMLInputElement = null;\r\n\r\n useEffect(() => {\r\n let existing = props.subSpecialtyTrainingList.find(_ => _.applicationId === props.applicationId);\r\n if (existing) {\r\n setSubspecialtyTraining(existing);\r\n }\r\n if (hasOnePathwayOption) {\r\n let updated = deepCopy(subSpecialtyTraining);\r\n updated.pathwayMethod = props.examination.pathwayOptions[0].id;\r\n setSubspecialtyTraining(updated);\r\n }\r\n }, [props.subSpecialtyTrainingList])\r\n\r\n const saveSubspecialtyTraining = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setErrorMessage(\"\");\r\n\r\n e.currentTarget.classList.add('was-validated');\r\n if (validateDates(subSpecialtyTraining) && e.currentTarget.checkValidity()) {\r\n e.currentTarget.classList.remove('was-validated');\r\n\r\n var training = deepCopy(subSpecialtyTraining);\r\n setIsLoading(true);\r\n const url = \"/api/Physician/SaveSubspecialtyTraining?examinationId=\" + props.examination.examinationId;\r\n abpnClient.post>(url, training, authContext).then((data: Array) => {\r\n props.onSave(data);\r\n setIsLoading(false);\r\n });\r\n }\r\n }\r\n\r\n const resetTrainingValues = (subSpecialtyTraining: SubspecialtyTraining) => {\r\n if (subSpecialtyTraining.pathwayMethod != PathwayMethod.Practice) {\r\n subSpecialtyTraining.practiceTime = null;\r\n }\r\n if (subSpecialtyTraining.pathwayMethod != PathwayMethod.OtherBoard) {\r\n subSpecialtyTraining.practiceCertificationDate = null;\r\n subSpecialtyTraining.trainingInstitutionName = null;\r\n }\r\n if (subSpecialtyTraining.pathwayMethod != PathwayMethod.Fellowship) {\r\n subSpecialtyTraining.trainingInstitutionName = null;\r\n subSpecialtyTraining.startDate = null;\r\n subSpecialtyTraining.endDate = null;\r\n }\r\n return subSpecialtyTraining;\r\n }\r\n\r\n const validateDates = (subspecialty: SubspecialtyTraining) => {\r\n var isValid = true;\r\n if (subspecialty.pathwayMethod === PathwayMethod.Fellowship) {\r\n\r\n ValidatorHelper.clearCustomValidation(endDateFormElement.current);\r\n if (!Date.parse(subspecialty.startDate) || !Date.parse(subspecialty.endDate)) isValid = false;\r\n\r\n if (getDateWithOffset(subspecialty.endDate) < getDateWithOffset(subspecialty.startDate)) {\r\n ValidatorHelper.setCustomValidationWithFeedback(endDateFormElement.current, \"Must be after start date.\")\r\n isValid = false;\r\n }\r\n }\r\n\r\n if (subspecialty.pathwayMethod === PathwayMethod.OtherBoard) {\r\n practiceBoardElement = document.getElementById(practiceBoardId) as HTMLInputElement;\r\n\r\n ValidatorHelper.clearCustomValidation(practiceBoardElement);\r\n if (!subspecialty.practiceCertificationBoard) {\r\n ValidatorHelper.setCustomValidationWithFeedback(practiceBoardElement, \"Must select an organization.\");\r\n isValid = false;\r\n }\r\n \r\n ValidatorHelper.clearCustomValidation(practiceCertDateElement.current);\r\n if (!Date.parse(subspecialty.practiceCertificationDate)) {\r\n ValidatorHelper.setCustomValidationWithFeedback(practiceCertDateElement.current, \"Must be a valid date. Expected Format: mm/dd/yyyy\")\r\n isValid = false;\r\n }\r\n }\r\n if (subspecialty.pathwayMethod === PathwayMethod.Practice) {\r\n if (!subSpecialtyTraining.practiceTime) {\r\n setErrorMessage(\"Must select a training time\")\r\n }\r\n }\r\n return isValid;\r\n }\r\n\r\n\r\n\r\n const updateProgramName = (value: string) => {\r\n var updated = deepCopy(subSpecialtyTraining);\r\n updated.trainingInstitutionName = value;\r\n setSubspecialtyTraining(updated);\r\n }\r\n\r\n const updatePracticeCertificationBoard = (value: string) => {\r\n var updated = deepCopy(subSpecialtyTraining);\r\n updated.practiceCertificationBoard = value;\r\n setSubspecialtyTraining(updated);\r\n }\r\n\r\n const updatePracticeLocation = (value: string) => {\r\n var updated = deepCopy(subSpecialtyTraining);\r\n updated.practiceLocation = value;\r\n setSubspecialtyTraining(updated);\r\n }\r\n\r\n const updateStartDate = (e: React.ChangeEvent) => {\r\n var updated = deepCopy(subSpecialtyTraining);\r\n updated.startDate = e.target.value;\r\n\r\n if (Date.parse(e.target.value)) {\r\n updated.startDate = getDateWithOffset(e.target.value).toJSON();\r\n }\r\n\r\n setSubspecialtyTraining(updated);\r\n }\r\n\r\n const updateEndDate = (e: React.ChangeEvent) => {\r\n var updated = deepCopy(subSpecialtyTraining);\r\n updated.endDate = e.target.value;\r\n\r\n if (Date.parse(e.target.value)) {\r\n updated.endDate = getDateWithOffset(e.target.value).toJSON();\r\n }\r\n setSubspecialtyTraining(updated);\r\n }\r\n\r\n const updatePracticeCertificationDate = (e: React.ChangeEvent) => {\r\n var updated = deepCopy(subSpecialtyTraining);\r\n updated.practiceCertificationDate = e.target.value;\r\n\r\n if (Date.parse(e.target.value)) {\r\n updated.practiceCertificationDate = getDateWithOffset(e.target.value).toJSON();\r\n }\r\n setSubspecialtyTraining(updated);\r\n }\r\n\r\n const updateIsPartTime = (value: boolean) => {\r\n var updated = deepCopy(subSpecialtyTraining);\r\n updated.isPartTime = value;\r\n setSubspecialtyTraining(updated);\r\n }\r\n\r\n const updatePracticeTime = (selection: PracticePathwayOptionLookupItem) => {\r\n var updated = deepCopy(subSpecialtyTraining);\r\n updated.practiceTime = selection.name;\r\n switch (selection.id) {\r\n case AlternativePathwayPracticeOption[\"An average of at least 17% of their post-training clinical practice time spent in the practice of NCC (at least 7 hours per week) for the past 6 years.*\"]:\r\n updated.percentTimeForPractice = 17;\r\n break;\r\n case AlternativePathwayPracticeOption[\"An average of at least 25% of their post-training clinical practice time spent in the practice of NCC (at least 10 hours per week) for the past 4 years.*\"]:\r\n updated.percentTimeForPractice = 25;\r\n break;\r\n case AlternativePathwayPracticeOption[\"An average of at least 33% of their post-training clinical practice time spent in the practice of NCC (at least 13 hours per week) for the past 3 years.*\"]:\r\n updated.percentTimeForPractice = 33;\r\n break;\r\n case AlternativePathwayPracticeOption[\"An average of at least 50% of their post-training clinical practice time spent in the practice of NCC (at least 20 hours per week) for the past 2 years.*\"]:\r\n updated.percentTimeForPractice = 50;\r\n break;\r\n case AlternativePathwayPracticeOption[\"An average of at least 25% of their total post-training professional time spent in the practice of NCC (at least 10 hours per week) for the past 4 years.**\"]:\r\n updated.percentTimeForPractice = 25;\r\n break;\r\n default:\r\n break;\r\n }\r\n setSubspecialtyTraining(updated);\r\n }\r\n\r\n const formatDefaultValue = (dateString: string) => {\r\n if (!dateString) return \"\";\r\n var date = getDateWithOffset(dateString);\r\n \r\n if (date == null) return \"\";\r\n var year = date.getFullYear();\r\n\r\n var month = (1 + date.getMonth()).toString();\r\n month = month.length > 1 ? month : '0' + month;\r\n\r\n var day = date.getDate().toString();\r\n day = day.length > 1 ? day : '0' + day;\r\n\r\n return month + '/' + day + '/' + year;\r\n }\r\n\r\n const getPathwayOptionLabel = (pathway: LookupItem) => {\r\n if (pathway.id === PathwayMethod.OtherBoard) return \"Certified By Another Organization\"\r\n if (pathway.id === PathwayMethod.Practice) return \"Clinical Practice\"\r\n return pathway.name;\r\n }\r\n\r\n const getDocumentationText = () => {\r\n if (isInAlternativePathwayPeriod) {\r\n return \"Documentation of practice pathway is required upon request of the ABPN Credentials Department and prior to approval of application.\"\r\n }\r\n return \"Documentation of fellowship training is required upon request of the ABPN Credentials Department and prior to approval of application.\"\r\n }\r\n const getGeneralRequirementsText = () => {\r\n if (isInAlternativePathwayPeriod && props.examination.examinationDefinitionId == KnownExaminationDefinitions.NeurocriticalCare) {\r\n return \"Applicant must have completed a fellowship, a clinical practice, or been certified by another board during the practice pathway period of six years (2021-2026 examination administrations)\"\r\n }\r\n if (isInAlternativePathwayPeriod && props.examination.examinationDefinitionId == KnownExaminationDefinitions.BrainInjuryMedicine) {\r\n return \"Applicant must have completed a fellowship or clinical practice during the practice pathway period (2014-2022 examination administrations)\"\r\n }\r\n return \"\"\r\n }\r\n const getFellowshipRequirementText = () => {\r\n var startDateYear = getDateWithOffset(props.examination.startDate).getFullYear();\r\n\r\n if (isInAlternativePathwayPeriod && props.examination.examinationDefinitionId == KnownExaminationDefinitions.NeurocriticalCare) {\r\n return `Applicant must have completed a fellowship no later than July 31, ${startDateYear} in ${props.examination.certificationName} (UCNS, CAST, or other non-ACGME accredited fellowship).`;\r\n }\r\n\r\n if (isInAlternativePathwayPeriod && props.examination.examinationDefinitionId == KnownExaminationDefinitions.BrainInjuryMedicine) {\r\n return `Applicant must have completed a fellowship no later than July 31, ${startDateYear} in ${props.examination.certificationName}.`;\r\n }\r\n return `Applicant must have completed an ACGME-accredited fellowship in ${props.examination.certificationName} no later than July 31, ${startDateYear}.`;\r\n }\r\n\r\n const getNotesSection = () => {\r\n if (isInAlternativePathwayPeriod && props.examination.examinationDefinitionId == KnownExaminationDefinitions.NeurocriticalCare) {\r\n return \r\n * This calculation is based on an average work week of 40 hours. Physicians whose total practice exceeds 40 hours per week may still use the 40 hours number as the denominator of their % calculation.\r\n ** This approach specifically applies to academic program directors, administrators, or researchers, and provides them a pathway to qualification.\r\n \r\n }\r\n return null\r\n }\r\n\r\n const updatePathwayMethod = (pathwayMethodId: number) => {\r\n var updated = deepCopy(subSpecialtyTraining);\r\n updated.pathwayMethod = props.examination.pathwayOptions.find(_ => _.id == pathwayMethodId).id;\r\n resetTrainingValues(updated);\r\n setSubspecialtyTraining(updated);\r\n }\r\n\r\n useEffect(() => {\r\n setOpenCollapse(props.isSectionOpen);\r\n }, [props.isSectionOpen]);\r\n\r\n useEffect(() => {\r\n if (openCollapse) props.onOpen();\r\n }, [openCollapse]);\r\n\r\n return (\r\n \r\n \r\n {if (!props.disabled) setOpenCollapse(!openCollapse)}}>\r\n Training\r\n \r\n \r\n
saveSubspecialtyTraining(e)}>\r\n \r\n \r\n {getGeneralRequirementsText()}\r\n {getDocumentationText()}\r\n \r\n \r\n \r\n \r\n {subSpecialtyTraining.pathwayMethod === PathwayMethod.Fellowship &&\r\n \r\n \r\n {getFellowshipRequirementText()}\r\n \r\n \r\n \r\n Fellowship Program*\r\n Enter name and location of program\r\n updateProgramName(e.target.value)}\r\n required />\r\n \r\n \r\n \r\n \r\n Start*\r\n updateStartDate(e)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n \r\n \r\n \r\n \r\n End*\r\n updateEndDate(e)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Attendance*\r\n updateIsPartTime(true)}\r\n className=\"ml-1 mt-3\" />\r\n \r\n \r\n \r\n updateIsPartTime(false)}\r\n className=\"ml-1 mt-3\" />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {subSpecialtyTraining.pathwayMethod === PathwayMethod.OtherBoard &&\r\n \r\n \r\n \r\n Organization Name*\r\n \r\n \r\n \r\n \r\n Certification Date*\r\n updatePracticeCertificationDate(e)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {subSpecialtyTraining.pathwayMethod === PathwayMethod.Practice &&\r\n \r\n \r\n \r\n Institution Name*\r\n Enter name of program\r\n updateProgramName(e.target.value)}\r\n required />\r\n \r\n \r\n \r\n \r\n Location*\r\n Enter location of program\r\n updatePracticeLocation(e.target.value)}\r\n required />\r\n \r\n \r\n \r\n \r\n Start*\r\n updateStartDate(e)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n \r\n \r\n \r\n \r\n End*\r\n updateEndDate(e)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Training Time*\r\n {props.examination.practicePathwayOptions?.map(_ => {\r\n return updatePracticeTime(_)}\r\n label={_.name}\r\n id={_.name}\r\n name=\"practiceTime\"\r\n defaultChecked={subSpecialtyTraining.practiceTime === _.name}\r\n value={_.name} />\r\n })}\r\n {errorMessage}\r\n {getNotesSection()}\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {isLoading ? : }\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n}","import { Fragment } from \"react\";\r\nimport { Alert, Card, Col, Container, Row } from \"react-bootstrap\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\nimport ApplicationModel from \"../Models/ApplicationModel\";\r\nimport ApplicationReceiptModel from \"../Models/ApplicationReceiptModel\";\r\nimport Examination from \"../Models/Examination\";\r\nimport { FeeType } from \"../Models/Fee\";\r\n\r\ninterface IProps {\r\n application: ApplicationModel;\r\n applicationReceipt: ApplicationReceiptModel;\r\n examination: Examination;\r\n examinationDates: string;\r\n fullName: string;\r\n emailAddress: string;\r\n}\r\n\r\nexport function ApplicationReceived(props: IProps) {\r\n const totalFees = props.applicationReceipt.orderLineItems.map(i => i.amount).reduce((a, b) => a + b, 0);\r\n const hasInstallments = props.applicationReceipt.installments !== null && props.applicationReceipt.installments.length !== 0;\r\n\r\n const getExamLateFee = () => {\r\n var initialLateFee = props.examination.fees.find(_ => _.feeType === FeeType.lateFeeInitial)?.feeAmount;\r\n return initialLateFee ?? props.examination.fees.find(_ => _.feeType === FeeType.lateFeeMoc)?.feeAmount;\r\n }\r\n\r\n const getSplitPaymentDeadlineDate = () => {\r\n if (props.application.installmentOptions == null || props.application.installmentOptions.length === 0) return;\r\n\r\n var lastInstallmentDate = props.application.installmentOptions[props.application.installmentOptions.length - 1].dueDate;\r\n\r\n return getDateWithOffset(lastInstallmentDate).toLocaleDateString('en-us', {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric'\r\n })\r\n }\r\n\r\n const getAssessmentType = () => {\r\n return props.examination.isArticleBased ? \"ABCC Assessment\" : \"Examination\";\r\n }\r\n const getNextSteps = () => {\r\n return props.examination.isArticleBased ? getArticleBasedExamNextStepsText() : getSecureExamNextStepsText();\r\n }\r\n\r\n const getSecureExamNextStepsText = () => {\r\n return (\r\n \r\n \r\n \r\n Pre-Examination Follow-Up\r\n \r\n {props.examination.requiresFellowshipTraining &&\r\n \r\n \r\n
Training Documentation
\r\n \r\n \r\n If you completed a fellowship program, you will be expected to email your credentials administrator documentation of your fellowship training when requested. It should include the exact start and end dates of your training and will need your program director's signature. Your application will not be reviewed unless your administrator receives verification of your training when requested.\r\n \r\n
}\r\n \r\n \r\n
Exam Requirements
\r\n \r\n \r\n \r\n Submission of your application through this software is NOT an indication that your credentials meet the requirements for admission to the examination. Requirements for application can be found in the Information for Applicants (IFA) publication. THE IFA, examination content specifications, and the examination format and scoring documents can all be found on our website at:\r\n openInfoUrl()}>\r\n  {props.applicationReceipt.infoUrl} \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
Exam Next Steps
\r\n \r\n \r\n All candidates who have been approved to sit for an examination will receive an email with scheduling instructions two months prior to the administration of the exam.\r\n \r\n
\r\n {(props.application.isNmaRequested || props.application.isAdaRequested) &&\r\n \r\n \r\n
Accommodations Requested
\r\n \r\n \r\n \r\n \r\n \r\n
}\r\n
\r\n
\r\n
);\r\n }\r\n\r\n const getArticleBasedExamNextStepsText = () => {\r\n return (\r\n \r\n \r\n \r\n ABCC Assessment Follow-Up\r\n \r\n \r\n \r\n
ABCC Requirements
\r\n \r\n \r\n \r\n Submission of your application through this software is NOT an indication that your credentials meet the requirements for the article-based pathway. If audited, you will need to submit documentation of the completed requirements.\r\n \r\n \r\n
\r\n \r\n \r\n
ABCC Next Steps
\r\n \r\n \r\n \r\n You can begin the article exams in the Physician Portal once the application has been approved. \r\n \r\n \r\n
\r\n {(props.application.isNmaRequested || props.application.isAdaRequested) &&\r\n \r\n \r\n
Accommodations Requested
\r\n \r\n \r\n \r\n \r\n \r\n
}\r\n
\r\n
\r\n
);\r\n }\r\n\r\n\r\n const openInfoUrl = () => {\r\n window.open(props.applicationReceipt.infoUrl, \"_blank\")\r\n }\r\n\r\n return (\r\n \r\n

ABPN Application Payment Receipt

\r\n
\r\n
7 Parkway North, Deerfield IL 60015 | Phone 847.229.6500 | Fax 847.229.6600
\r\n A payment receipt has been sent to {props.emailAddress} \r\n \r\n \r\n \r\n Order\r\n \r\n \r\n \r\n
Order #
\r\n {props.applicationReceipt?.orderNumber}\r\n \r\n \r\n
Order Date
\r\n {props.applicationReceipt?.orderDate && getDateWithOffset(props.applicationReceipt?.orderDate).toLocaleDateString()}\r\n \r\n
\r\n \r\n \r\n
Name
\r\n {props.fullName}\r\n \r\n \r\n
Email
\r\n {props.emailAddress}\r\n \r\n
\r\n \r\n \r\n
{getAssessmentType()}
\r\n {props.examination.title}\r\n

\r\n {props.applicationReceipt.moduleSelection}{props.applicationReceipt.formattedCnpType}\r\n \r\n \r\n
{getAssessmentType()} Date
\r\n {props.examinationDates}\r\n \r\n
\r\n
\r\n
\r\n\r\n {props.applicationReceipt.cardHolderName &&\r\n \r\n \r\n \r\n Payment\r\n \r\n \r\n \r\n
Payment Method
\r\n {props.applicationReceipt?.paymentMethod}\r\n \r\n \r\n
Card Holder Name
\r\n {props.applicationReceipt?.cardHolderName}\r\n \r\n
\r\n
\r\n
}\r\n\r\n \r\n \r\n \r\n Billing\r\n \r\n {props.applicationReceipt.orderLineItems.map(i => {\r\n return (\r\n \r\n \r\n {i.description} \r\n ${i.amount}\r\n
\r\n \r\n
\r\n )\r\n })}\r\n \r\n \r\n Total \r\n ${totalFees}\r\n \r\n \r\n \r\n \r\n Paid \r\n ${-1 * props.applicationReceipt.amountPaid}\r\n \r\n \r\n \r\n \r\n \r\n {hasInstallments ?\r\n props.applicationReceipt.installments.map(i =>\r\n \r\n \r\n Due {getDateWithOffset(i.dueDate).toLocaleDateString('en-us', { year: 'numeric', month: 'long', day: 'numeric' })}\r\n \r\n ${i.amount}\r\n
\r\n
)\r\n :\r\n \r\n Due\r\n $0\r\n
\r\n
}\r\n \r\n
\r\n {hasInstallments &&\r\n \r\n \r\n NOTE: ABPN will NOT automatically charge your credit card or checking account for remaining installment payments.\r\n

\r\n You will receive an email with instructions for each installment.\r\n

\r\n Any installment payment made after the due date must also include a ${getExamLateFee()} late fee charge.\r\n

\r\n If all payments are not received by {getSplitPaymentDeadlineDate()} your application will be denied.\r\n \r\n
}\r\n
\r\n
\r\n {getNextSteps()}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default ApplicationReceived;","export const CnpTypes: { [key: number]: string } = {\r\n 1: \"General\",\r\n 2: \"EEG\",\r\n 3: \"EMG\",\r\n};","import { useEffect, useState } from \"react\";\r\nimport { Form } from \"react-bootstrap\";\r\nimport { CnpTypes } from \"../Models/CnpTypes\";\r\n\r\ninterface IProps {\r\n cnpType: number\r\n cnpTypeUpdated: (cnpType: number) => void\r\n}\r\n\r\nexport function CnpOptions(props: IProps) {\r\n\r\n let [cnpType, setCnpType] = useState(props.cnpType);\r\n\r\n useEffect(() => {\r\n setCnpType(props.cnpType);\r\n })\r\n\r\n const updateCnpType = (value: number) => {\r\n let newValue = value == cnpType ? null : value;\r\n\r\n setCnpType(newValue);\r\n props.cnpTypeUpdated(newValue);\r\n }\r\n\r\n return (\r\n \r\n Select one*\r\n {Object.keys(CnpTypes).map(key =>\r\n \r\n updateCnpType(parseInt(key))} />\r\n {CnpTypes[parseInt(key)]}\r\n \r\n )}\r\n \r\n );\r\n}\r\nexport default CnpOptions;","import React, { Fragment, useEffect, useContext, useState } from \"react\";\r\nimport { Card, Button, Form, Col, Collapse, Row, Alert } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../../Auth/AuthProvider\";\r\nimport { Certificate, CertificateStatus } from \"../../Physician/Models/Certificate\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\nimport ApplicationModel from \"../Models/ApplicationModel\";\r\nimport { ExaminationModule, KnownCertifications, ModuleType } from \"../Models/Examination\";\r\nimport CnpOptions from \"./CnpOptions\";\r\n\r\ninterface IProps {\r\n isSectionOpen: boolean;\r\n modules: Array;\r\n onContinue: (moduleCertificationKeys: Array, cnpType: number) => void;\r\n moduleTypes: Array;\r\n certificates: Array;\r\n examCertificationIds: Array;\r\n application: ApplicationModel;\r\n onOpen: () => void;\r\n disabled: boolean;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport function Modules(props: IProps) {\r\n const physicianInactivePrimaryCertIds = props.certificates.filter(_ => _.isPrimary && _.certificateStatus === CertificateStatus.Inactive)?.map(_ => _.certificationId);\r\n\r\n const isCertificationAvailable = (certificationId: number) => {\r\n return availableCertificationIds.some(_ => _ == certificationId);\r\n }\r\n\r\n const isCertificationIdRequiredModuleType = (certificationId: number) => {\r\n return physicianInactivePrimaryCertIds.some(_ => _ == certificationId);\r\n }\r\n\r\n const isExistingSelectedModuleType = (certificationId: number) => {\r\n return props.application.modularCertificationIds?.some(_ => _ == certificationId);\r\n }\r\n\r\n const filterAvailableModules = () => {\r\n var availablePhysicianModules = props.moduleTypes.filter(_ => isCertificationAvailable(_.certificationId));\r\n var existingSelectedModules = props.moduleTypes.filter(_ => isExistingSelectedModuleType(_.certificationId));\r\n var availableModules = availablePhysicianModules.concat(existingSelectedModules);\r\n var filteredExamModules = availableModules.filter(_ => props.examCertificationIds.includes(Number(_.certificationId)));\r\n\r\n return props.modules.filter(_ => filteredExamModules.some(x => x.moduleTypeId == _.moduleTypeId));\r\n }\r\n\r\n const requiredCertificationIds = props.moduleTypes.filter(_ => isCertificationIdRequiredModuleType(_.certificationId))?.map(_ => _.certificationId);\r\n\r\n const [moduleSelections, setModuleSelections] = useState>([]);\r\n const [availableCertificationIds, setAvailableCertificationIds] = useState>([]);\r\n const [cnpType, setCnpType] = useState(props.application.cnpType);\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const [errorMessages, setErrorMessages] = useState([]);\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n useEffect(() => {\r\n const setDefaultModuleSelections = () => {\r\n if (props.application.modularCertificationIds !== null) {\r\n setModuleSelections(props.application.modularCertificationIds);\r\n return;\r\n } \r\n\r\n if (requiredCertificationIds !== null) setModuleSelections(requiredCertificationIds);\r\n }\r\n\r\n const getAvailableCertificationIds = () => {\r\n abpnClient.get>(\"/api/application/availableModules\", authContext).then(result => {\r\n setAvailableCertificationIds(result);\r\n })\r\n }\r\n setDefaultModuleSelections();\r\n getAvailableCertificationIds();\r\n }, []);\r\n\r\n const onSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (validateSelection(moduleSelections)) {\r\n props.onContinue(moduleSelections, cnpType);\r\n }\r\n }\r\n\r\n const validateSelection = (selections: number[]) => {\r\n let newErrorMessages = [];\r\n\r\n if (selections.length <= 1 || selections.length >= 4) {\r\n newErrorMessages.push(\"You must select 2 or 3 certifications\");\r\n }\r\n\r\n const isCnpSelected = selections.some(certificationId => certificationId == KnownCertifications.ClinicalNeurophysiology);\r\n\r\n if (isCnpSelected && !cnpType) {\r\n newErrorMessages.push(\"You must select a CNP focus if you've selected the CNP module\");\r\n }\r\n\r\n setErrorMessages(newErrorMessages);\r\n return newErrorMessages.length === 0;\r\n }\r\n\r\n const updateModuleSelection = (certificationId: number) => {\r\n var updated = deepCopy(moduleSelections);\r\n var index = updated.indexOf(certificationId);\r\n\r\n if (index >= 0) {\r\n updated.splice(index, 1);\r\n if (cnpType && certificationId === KnownCertifications.ClinicalNeurophysiology) {\r\n setCnpType(null);\r\n }\r\n setModuleSelections(updated);\r\n return;\r\n }\r\n updated.push(certificationId);\r\n setModuleSelections(updated);\r\n }\r\n\r\n const updateCnpType = (updatedCnpType: number) => {\r\n setCnpType(updatedCnpType);\r\n\r\n var index = moduleSelections.indexOf(KnownCertifications.ClinicalNeurophysiology);\r\n if ((updatedCnpType && index < 0) || (!updatedCnpType && index >= 0)) {\r\n updateModuleSelection(KnownCertifications.ClinicalNeurophysiology);\r\n }\r\n }\r\n\r\n const isChecked = (module: ExaminationModule) => {\r\n if (isRequired(module)) return true;\r\n\r\n var certificationId = props.moduleTypes.find(_ => _.moduleTypeId == module.moduleTypeId).certificationId\r\n return moduleSelections.some(_ => _ == certificationId);\r\n }\r\n\r\n const isRequired = (module: ExaminationModule) => {\r\n var certificationId = props.moduleTypes.find(_ => _.moduleTypeId == module.moduleTypeId).certificationId;\r\n return requiredCertificationIds.some(_ => _ == certificationId);\r\n }\r\n\r\n const isCnp = (module: ExaminationModule) => {\r\n return props.moduleTypes.some(_ => _.moduleTypeId == module.moduleTypeId && _.certificationId == KnownCertifications.ClinicalNeurophysiology);\r\n }\r\n\r\n const getCertificate = (moduleTypeId: number) => {\r\n var moduleType = props.moduleTypes.find(_ => _.moduleTypeId === moduleTypeId);\r\n return props.certificates.find(_ => _.certificationId == moduleType.certificationId);\r\n }\r\n\r\n useEffect(() => {\r\n setOpenCollapse(props.isSectionOpen);\r\n }, [props.isSectionOpen]);\r\n\r\n useEffect(() => {\r\n if (openCollapse) props.onOpen();\r\n }, [openCollapse]);\r\n\r\n return (\r\n \r\n \r\n { if (!props.disabled) setOpenCollapse(!openCollapse) }}>\r\n Certifications\r\n \r\n \r\n \r\n \r\n
onSubmit(e)}>\r\n \r\n Select two or three certifications to include in your examination\r\n *\r\n \r\n {filterAvailableModules().map(module => {\r\n return (\r\n \r\n \r\n ) => updateModuleSelection(parseInt(e.target.value))} />\r\n {getCertificate(module.moduleTypeId).certificationName}\r\n \r\n {isCnp(module) &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n )\r\n })}\r\n
\r\n {errorMessages.length > 0 &&\r\n \r\n {errorMessages.map(errorMessage =>

{errorMessage}

)}\r\n
\r\n }\r\n {props.isLoading ? : }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default Modules;","import React, { useEffect, useState } from \"react\";\r\nimport { Card, Button, Form, Col, Collapse, Row, Alert } from \"react-bootstrap\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport CnpOptions from \"./CnpOptions\";\r\n\r\ninterface IProps {\r\n isSectionOpen: boolean;\r\n cnpType: number;\r\n certificationName: string\r\n onContinue: (cnpType: number) => void;\r\n onOpen: () => void;\r\n disabled: boolean;\r\n isLoading?: boolean;\r\n}\r\n\r\nexport function CnpSection(props: IProps) {\r\n\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const [cnpType, setCnpType] = useState(props.cnpType);\r\n const [isValid, setIsValid] = useState(true);\r\n\r\n const onSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (validateSelection(cnpType)) {\r\n props.onContinue(cnpType);\r\n }\r\n }\r\n\r\n const validateSelection = (selection: number) => {\r\n if (!selection) {\r\n setIsValid(false)\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n const updateCnpType = (updatedCnpType: number) => {\r\n setCnpType(updatedCnpType);\r\n }\r\n\r\n useEffect(() => {\r\n setOpenCollapse(props.isSectionOpen);\r\n }, [props.isSectionOpen]);\r\n\r\n useEffect(() => {\r\n if (openCollapse) props.onOpen();\r\n }, [openCollapse]);\r\n\r\n return (\r\n \r\n \r\n {if (!props.disabled) setOpenCollapse(!openCollapse)}}>\r\n Focus\r\n \r\n \r\n \r\n \r\n
onSubmit(e)}>\r\n \r\n {!isValid &&\r\n \r\n

You must select a {props.certificationName} focus

\r\n
\r\n }\r\n {props.isLoading ? : }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\nexport default CnpSection;","import { Container, Alert } from \"react-bootstrap\";\r\nimport HeaderWithTitle from \"./HeaderWithTitle\";\r\n\r\ninterface IProps {\r\n title: string;\r\n subTitle: string;\r\n alertVariant: string;\r\n message: string;\r\n}\r\nexport default function ActionResultMessage(props: IProps) {\r\n\r\n return (\r\n \r\n \r\n \r\n {props.message}\r\n \r\n \r\n );\r\n}\r\n","export enum InvoiceStatus {\r\n Created = 1,\r\n Abandoned = 2,\r\n TermsAccepted = 3,\r\n Receivable = 4,\r\n Paid = 5,\r\n PaidReceivable = 6,\r\n WrittenOff = 7\r\n}","import Product from \"./Product\";\r\n\r\nexport default class InvoiceLineItemModel {\r\n unitPrice: number;\r\n amount: number;\r\n description: string;\r\n discountAmount: number;\r\n discountDescription: string;\r\n createdDate: string;\r\n product: Product;\r\n\r\n constructor(unitPrice: number, amount: number, createdDate: string, description: string,\r\n discountAmount: number, discountDescription: string, product: Product) {\r\n this.unitPrice = unitPrice;\r\n this.amount = amount;\r\n this.createdDate = createdDate;\r\n this.description = description;\r\n this.discountAmount = discountAmount;\r\n this.discountDescription = discountDescription;\r\n this.product = product;\r\n }\r\n}","import PaymentModel from \"./PaymentModel\";\r\nimport InvoiceLineItemModel from \"./InvoiceLineItemModel\";\r\nimport { InvoiceStatus } from \"../Enums/InvoiceStatus\";\r\n\r\nexport default class InvoiceModel {\r\n invoiceNumber: string;\r\n invoiceStatus: InvoiceStatus;\r\n createDate: string;\r\n total: number;\r\n balance: number;\r\n lineItems: Array;\r\n appliedPayment: PaymentModel;\r\n infoUrl: string;\r\n moduleSelection: string;\r\n formattedCnpType: string;\r\n isPaid: boolean;\r\n isExpanded: boolean;\r\n amountDue = () => this.lineItems?.reduce((sum, _) => sum + _.unitPrice - _.discountAmount, 0);\r\n\r\n constructor(invoiceNumber: string, createDate: string, isPaid: boolean, lineItems: Array) {\r\n this.invoiceNumber = invoiceNumber;\r\n this.createDate = createDate;\r\n this.lineItems = new Array();\r\n this.isPaid = isPaid;\r\n lineItems.forEach(_ => {\r\n this.lineItems.push(new InvoiceLineItemModel(_.unitPrice, _.amount, _.createdDate, _.description, _.discountAmount, _.discountDescription, _.product));\r\n })\r\n }\r\n}\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { Button, Row, Card, Col, Collapse, Table, Form } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../../Services/AbpnClient\";\r\nimport { paymentProcessor } from \"../../../Services/PaymentProcessor/PaymentProcessor\";\r\nimport Payment from \"../../../Services/PaymentProcessor/Payment\";\r\nimport { AuthContext } from \"../../Auth/AuthProvider\";\r\nimport Physician from \"../../Physician/Models/Physician\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\nimport ApplicationModel from \"../Models/ApplicationModel\";\r\nimport Examination from \"../Models/Examination\";\r\nimport { FeeType } from \"../Models/Fee\";\r\nimport { Alert } from 'react-bootstrap';\r\nimport { Fragment } from \"react\";\r\nimport { AbpnSpinner } from './../../Shared/Components/AbpnSpinner';\r\nimport { FattPayContainer } from \"../../../Services/PaymentProcessor/FattPayContainer\";\r\nimport ReceiptModel from \"../../Shared/Models/ReceiptModel\";\r\nimport InvoiceModel from \"../../Shared/Models/InvoiceModel\";\r\nimport InvoiceLineItemModel from \"../../Shared/Models/InvoiceLineItemModel\";\r\nimport { InvoiceStatus } from \"../../Shared/Enums/InvoiceStatus\";\r\n\r\ninterface IInvoicePaymentCardProps {\r\n application: ApplicationModel;\r\n physician: Physician;\r\n examination: Examination;\r\n isSectionAvailable: boolean;\r\n isSectionOpen: boolean;\r\n onApplicationSubmitted: (receipt: ReceiptModel) => void;\r\n examinationDates: string;\r\n displayBanner: () => void;\r\n onOpen: () => void;\r\n disabled: boolean;\r\n applicationDeadlineDate: string;\r\n totalBalance: number;\r\n}\r\n\r\nexport function InvoicePaymentCard(props: IInvoicePaymentCardProps) {\r\n const hasPaymentPlan = false;\r\n const canSelectPaymentPlan = false;\r\n\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const [invoices, setInvoices] = useState>([]);\r\n const unpaidInvoices = invoices.filter(_ => _.isPaid == false);\r\n const unpaidLineItems = unpaidInvoices?.flatMap(_ => _.lineItems);\r\n const [isLoadingInvoices, setIsLoadingInvoices] = useState(false);\r\n\r\n const contactAddress = props.physician.addresses.addresses.find(_ => _.isContact);\r\n\r\n const [payment, setPayment] = useState({ email: props.physician.emailAddress, city: contactAddress?.city, state: contactAddress?.stateCode } as Payment);\r\n \r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [isPaymentSuccessful, setIsPaymentSuccessful] = useState(null);\r\n const [isDisable, setIsDisable] = useState(false);\r\n\r\n const payContainerRef = React.useRef(null);\r\n\r\n const hasInvoice = invoices.length > 0;\r\n\r\n useEffect(() => {\r\n const loadInvoices = async () => {\r\n setIsLoadingInvoices(true);\r\n\r\n //Get invoices related to the provided application. I would really rather this component was passed the invoices as props.\r\n const results = (await abpnClient.get>('/api/invoice/getInvoicesForPhysician', authContext))\r\n .filter(_ => _.lineItems?.filter(x => x.product.examinationId == props.application.examinationId).length > 0);\r\n\r\n // if there are no results with an exam fee, we need to create an invoice.\r\n let isMissingInvoiceWithExamFee = results?.filter(_ => \r\n _.lineItems?.filter(x => isExamFee(x.product.feeTypeId) && x.product.examinationId == props.application.examinationId).length > 0)\r\n .length == 0;\r\n \r\n if(isMissingInvoiceWithExamFee) {\r\n const newInvoice = await abpnClient.post('/api/invoice/createInvoiceForApplication?applicationId=' + props.application.applicationId, null, authContext);\r\n results.push(newInvoice);\r\n }\r\n\r\n let newResults = new Array();\r\n results.filter(x => x.isPaid == false && !(x.invoiceStatus == InvoiceStatus.Abandoned || x.invoiceStatus == InvoiceStatus.WrittenOff)).forEach(_ => {\r\n newResults.push(new InvoiceModel(_.invoiceNumber, _.createDate, _.isPaid, _.lineItems));\r\n });\r\n\r\n setInvoices(newResults);\r\n setIsLoadingInvoices(false);\r\n }\r\n\r\n if (!isLoadingInvoices && props.isSectionOpen) {\r\n loadInvoices();\r\n }\r\n }, [props.isSectionOpen])\r\n\r\n const balanceDue = invoices?.filter(_ => _.isPaid == false).reduce((sum, _) => sum + _.amountDue(), 0);\r\n const hasBalanceDue = balanceDue > 0;\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n const onPaymentChanged = (updated: Payment) => {\r\n setPayment(deepCopy(updated));\r\n }\r\n\r\n const submit = async (event: React.FormEvent) => {\r\n setIsDisable(true);\r\n\r\n if (isSubmitting)\r\n return;\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.currentTarget.classList.add('was-validated');\r\n\r\n // This is for when there is no payment due.\r\n if (payContainerRef === null || payContainerRef === undefined || !hasBalanceDue)\r\n {\r\n setIsSubmitting(true);\r\n let invoiceNumbers = invoices.map(_ => _.invoiceNumber);\r\n var invoiceReceipt = await abpnClient.post('/api/invoice/completeInvoiceWithNoPayment',invoiceNumbers, authContext)\r\n await abpnClient.post(`/api/application/submitApplicationByExaminationId?examinationId=${props.application.examinationId}`,null, authContext);\r\n\r\n //Map untyped objects to typed ones.\r\n let newResults = new Array();\r\n invoiceReceipt.invoices.forEach(_ => {\r\n newResults.push(new InvoiceModel(_.invoiceNumber, _.createDate, _.isPaid, _.lineItems));\r\n });\r\n\r\n invoiceReceipt.invoices = newResults;\r\n\r\n props.onApplicationSubmitted(invoiceReceipt);\r\n return;\r\n }\r\n\r\n if (payContainerRef.current.validate(payment) && event.currentTarget.checkValidity()) {\r\n event.currentTarget.classList.remove('was-validated');\r\n\r\n var updatedPayment = deepCopy(payment);\r\n updatedPayment = await paymentProcessor.tokenize(updatedPayment);\r\n\r\n updatedPayment.amount = invoices.reduce((sum, _) => sum + _.amountDue(), 0);\r\n\r\n setPayment(updatedPayment);\r\n\r\n if (!updatedPayment?.IsValid) {\r\n setIsDisable(false);\r\n return;\r\n }\r\n\r\n setIsDisable(false);\r\n setIsSubmitting(true);\r\n\r\n if (hasInvoice) {\r\n\r\n // This is where the invoice should be created and app submitted.\r\n let invoiceNumbers = invoices.map(_ => _.invoiceNumber);\r\n let invoiceReceipt = await abpnClient.post(`/api/invoice/applyPaymentToInvoices?paymentToken=${updatedPayment.PaymentToken}&paymentAmount=${updatedPayment.amount}`, invoiceNumbers, authContext)\r\n await abpnClient.post(`/api/application/submitApplicationByExaminationId?examinationId=${props.application.examinationId}`,null, authContext);\r\n\r\n let reloadedInvoices = new Array();\r\n invoiceReceipt.invoices.forEach(_ => {\r\n reloadedInvoices.push(new InvoiceModel(_.invoiceNumber, _.createDate, _.isPaid, _.lineItems));\r\n });\r\n invoiceReceipt.invoices = reloadedInvoices;\r\n\r\n setIsSubmitting(false);\r\n setIsPaymentSuccessful(invoiceReceipt.isSuccessful);\r\n\r\n if (!invoiceReceipt.isSuccessful) {\r\n return;\r\n }\r\n\r\n props.displayBanner();\r\n props.onApplicationSubmitted(invoiceReceipt);\r\n return;\r\n }\r\n }\r\n\r\n setIsDisable(false);\r\n }\r\n\r\n const isExamFee = (feeTypeId : number) => {\r\n return (feeTypeId == FeeType.examFeeMoc ||\r\n feeTypeId == FeeType.examFeeMocPrimaryInitial ||\r\n feeTypeId == FeeType.examFeeMocWithThreeOrMoreModules ||\r\n feeTypeId == FeeType.examFeeMocWithTwoModules ||\r\n feeTypeId == FeeType.examFeeSubspecialtyinitial)\r\n }\r\n\r\n const displayInvoiceLineItem = (item : InvoiceLineItemModel) => {\r\n return (\r\n \r\n {item.description}\r\n ${item.unitPrice}\r\n \r\n {displayInvoiceLineItemDiscount(item)}\r\n )\r\n }\r\n\r\n const displayInvoiceLineItemDiscount = (item : InvoiceLineItemModel) => {\r\n if (item.discountAmount > 0) return (\r\n \r\n {item.discountDescription}\r\n $-{item.discountAmount}\r\n \r\n );\r\n else return;\r\n } \r\n\r\n useEffect(() => {\r\n setOpenCollapse(props.isSectionOpen);\r\n }, [props.isSectionOpen]);\r\n\r\n useEffect(() => {\r\n if (openCollapse) props.onOpen();\r\n }, [openCollapse]);\r\n\r\n return (\r\n \r\n \r\n { if (!props.disabled) setOpenCollapse(!openCollapse) }}>\r\n Payment\r\n \r\n \r\n
submit(e)}>\r\n {isSubmitting ? :\r\n \r\n \r\n \r\n Applicant Name\r\n \r\n \r\n {props.physician.fullName}\r\n \r\n \r\n Email\r\n \r\n \r\n {props.physician.emailAddress}\r\n \r\n \r\n Examination Requested\r\n \r\n \r\n {props.examination.title}\r\n \r\n \r\n Examination Dates\r\n \r\n \r\n {props.examinationDates}\r\n \r\n\r\n {(invoices?.filter(_ => _.isPaid == false).length > 0) &&\r\n \r\n \r\n
Fees
\r\n
\r\n \r\n \r\n {unpaidLineItems.map(_ => { return (displayInvoiceLineItem(_))})}\r\n \r\n \r\n \r\n \r\n \r\n
Total${balanceDue}
\r\n
}\r\n\r\n {(!canSelectPaymentPlan || hasPaymentPlan) && hasBalanceDue &&\r\n \r\n null} />\r\n {payment.paymentType && payment.IsValid === false &&\r\n\r\n \r\n

Could Not Validate Payment Method. Please verify your payment method and try again

\r\n
}\r\n {isPaymentSuccessful === false &&\r\n \r\n

The provided payment method failed. Please verify your payment method and try again

\r\n
}\r\n\r\n
\r\n }\r\n\r\n {!isSubmitting &&\r\n
\r\n \r\n
\r\n }\r\n \r\n
\r\n }\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default InvoicePaymentCard;\r\n","import { Fragment } from \"react\";\r\nimport { Alert, Card, Col, Container, Row } from \"react-bootstrap\";\r\nimport InvoiceLineItemModel from \"../../Shared/Models/InvoiceLineItemModel\";\r\nimport InvoiceModel from \"../../Shared/Models/InvoiceModel\";\r\nimport ReceiptModel from \"../../Shared/Models/ReceiptModel\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\nimport ApplicationModel from \"../Models/ApplicationModel\";\r\nimport Examination from \"../Models/Examination\";\r\n\r\ninterface IProps {\r\n application: ApplicationModel;\r\n receipt: ReceiptModel;\r\n examination: Examination;\r\n examinationDates: string;\r\n fullName: string;\r\n emailAddress: string;\r\n}\r\n\r\nexport function InvoiceApplicationReceived(props: IProps) {\r\n const totalFees = props.receipt?.invoices?.map(i => i.amountDue()).reduce((a, b) => a + b, 0);\r\n\r\n const getAssessmentType = () => {\r\n return props.examination.isArticleBased ? \"ABCC Assessment\" : \"Examination\";\r\n }\r\n const getNextSteps = (invoice: InvoiceModel) => {\r\n return props.examination.isArticleBased ? getArticleBasedExamNextStepsText() : getSecureExamNextStepsText(invoice);\r\n }\r\n\r\n const getSecureExamNextStepsText = (invoice: InvoiceModel) => {\r\n return (\r\n \r\n \r\n \r\n Pre-Examination Follow-Up\r\n \r\n {props.examination.requiresFellowshipTraining &&\r\n \r\n \r\n
Training Documentation
\r\n \r\n \r\n If you completed a fellowship program, you will be expected to email your credentials administrator documentation of your fellowship training when requested. It should include the exact start and end dates of your training and will need your program director's signature. Your application will not be reviewed unless your administrator receives verification of your training when requested.\r\n \r\n
}\r\n \r\n \r\n
Exam Requirements
\r\n \r\n \r\n \r\n Submission of your application through this software is NOT an indication that your credentials meet the requirements for admission to the examination. Requirements for application can be found in the Information for Applicants (IFA) publication. THE IFA, examination content specifications, and the examination format and scoring documents can all be found on our website at:\r\n openInfoUrl(invoice.infoUrl)}>\r\n  {invoice.infoUrl} \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
Exam Next Steps
\r\n \r\n \r\n All candidates who have been approved to sit for an examination will receive an email with scheduling instructions two months prior to the administration of the exam.\r\n \r\n
\r\n {(props.application.isNmaRequested || props.application.isAdaRequested) &&\r\n \r\n \r\n
Accommodations Requested
\r\n \r\n \r\n \r\n \r\n \r\n
}\r\n
\r\n
\r\n
);\r\n }\r\n\r\n const getArticleBasedExamNextStepsText = () => {\r\n return (\r\n \r\n \r\n \r\n ABCC Assessment Follow-Up\r\n \r\n \r\n \r\n
ABCC Requirements
\r\n \r\n \r\n \r\n Submission of your application through this software is NOT an indication that your credentials meet the requirements for the article-based pathway. If audited, you will need to submit documentation of the completed requirements.\r\n \r\n \r\n
\r\n \r\n \r\n
ABCC Next Steps
\r\n \r\n \r\n \r\n You can begin the article exams in the Physician Portal once the application has been approved. \r\n \r\n \r\n
\r\n {(props.application.isNmaRequested || props.application.isAdaRequested) &&\r\n \r\n \r\n
Accommodations Requested
\r\n \r\n \r\n \r\n \r\n \r\n
}\r\n
\r\n
\r\n
);\r\n }\r\n\r\n const openInfoUrl = (infoUrl: string) => {\r\n window.open(infoUrl, \"_blank\")\r\n }\r\n\r\n const invoiceLineItemDiscount = (lineItem: InvoiceLineItemModel) => {\r\n if (lineItem.discountAmount > 0) return (\r\n \r\n \r\n {lineItem.discountDescription}\r\n ${lineItem.unitPrice} - {lineItem.discountAmount}\r\n
\r\n \r\n
\r\n );\r\n else return;\r\n }\r\n\r\n const invoiceLineItem = (lineItem: InvoiceLineItemModel) => {\r\n return (\r\n \r\n \r\n {lineItem.description}\r\n ${lineItem.amount}\r\n
\r\n \r\n
\r\n {invoiceLineItemDiscount(lineItem)}\r\n
)\r\n }\r\n\r\n const invoiceDetail = (invoice: InvoiceModel) => {\r\n return (\r\n \r\n \r\n Billing\r\n \r\n \r\n
Invoice #
\r\n {invoice.invoiceNumber}\r\n \r\n \r\n
Invoice Date
\r\n {invoice.createDate && getDateWithOffset(invoice.createDate).toLocaleDateString()}\r\n \r\n
\r\n
Order #
\r\n {invoice.invoiceNumber}\r\n \r\n \r\n
Name
\r\n {props.fullName}\r\n \r\n \r\n
Email
\r\n {props.emailAddress}\r\n \r\n
\r\n \r\n \r\n
{getAssessmentType()}
\r\n {props.examination.title}\r\n

\r\n {invoice.moduleSelection}{invoice.formattedCnpType}\r\n \r\n \r\n
{getAssessmentType()} Date
\r\n {props.examinationDates}\r\n \r\n
\r\n
\r\n {invoice.lineItems.map(_ => { return (\r\n invoiceLineItem(_)\r\n )})}\r\n
\r\n
);\r\n } \r\n\r\n return (\r\n \r\n

ABPN Application Payment Receipt

\r\n
\r\n
7 Parkway North, Deerfield IL 60015 | Phone 847.229.6500 | Fax 847.229.6600
\r\n A payment receipt has been sent to {props.emailAddress} \r\n \r\n \r\n \r\n Order\r\n \r\n\r\n \r\n \r\n
Name
\r\n {props.fullName}\r\n \r\n \r\n
Email
\r\n {props.emailAddress}\r\n \r\n
\r\n \r\n \r\n
{getAssessmentType()}
\r\n {props.examination.title}\r\n

\r\n {/* {props.application.moduleSelection}{props.application.formattedCnpType} */}\r\n \r\n \r\n
{getAssessmentType()} Date
\r\n {props.examinationDates}\r\n \r\n
\r\n
\r\n
\r\n\r\n {props.receipt?.cardHolderName &&\r\n \r\n \r\n \r\n Payment\r\n \r\n \r\n \r\n
Payment Method
\r\n {props.receipt?.paymentMethod}\r\n \r\n \r\n
Card Holder Name
\r\n {props.receipt?.cardHolderName}\r\n \r\n
\r\n
\r\n
}\r\n\r\n \r\n \r\n \r\n Billing\r\n \r\n {props.receipt?.invoices?.map(_ => { return (\r\n \r\n {invoiceDetail(_)}\r\n {getNextSteps(_)}\r\n \r\n )\r\n })}\r\n \r\n \r\n Total \r\n ${totalFees}\r\n \r\n \r\n \r\n \r\n Paid \r\n ${-1 * props.receipt.amountPaid}\r\n \r\n \r\n \r\n \r\n \r\n Due\r\n $0\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default InvoiceApplicationReceived;","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { RouteComponentProps, useHistory } from \"react-router-dom\";\r\nimport Physician from \"../../Physician/Models/Physician\";\r\nimport { AuthContext } from \"../../Auth/AuthProvider\";\r\nimport { abpnClient } from \"../../../Services/AbpnClient\";\r\nimport Examination, { KnownCertifications, KnownExaminationDefinitions } from \"../Models/Examination\";\r\nimport ApplicantInformation from \"../../Shared/Components/ApplicantInformation\";\r\nimport PaymentCard from \"./PaymentCard\";\r\nimport ApplicationModel, { CandidateStatus } from \"../Models/ApplicationModel\"\r\nimport { MedicalLicenseInformation } from \"./MedicalLicenseInformation\";\r\nimport AttestationStatement from \"./AttestationStatement\";\r\nimport TestingOptions from \"./TestingOptions\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\nimport { TrainingRequirements } from \"./TrainingRequirements\";\r\nimport SubspecialtyTraining from \"../../Physician/Models/SubspecialtyTraining\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport ApplicationReceived from \"./ApplicationReceived\";\r\nimport ApplicationReceiptModel from \"../Models/ApplicationReceiptModel\";\r\nimport Modules from \"./Modules\";\r\nimport CnpSection from \"./CnpSection\";\r\nimport { Address } from \"../../Physician/Models/Address\";\r\nimport ActionResultMessage from \"../../Shared/Components/ActionResultMessage\";\r\nimport { ApplicationPaths } from \"../../../Services/Auth/AuthConstants\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\nimport { OverlayTrigger, Tooltip } from \"react-bootstrap\";\r\nimport { CCAssessmentType } from \"../../Physician/Models/CCEnrollment\";\r\nimport { configService } from \"../../../Services/Config/ConfigService\";\r\nimport InvoicePaymentCard from \"./InvoicePaymentCard\";\r\nimport ReceiptModel from \"../../Shared/Models/ReceiptModel\";\r\nimport InvoiceApplicationReceived from \"./InvoiceApplicationReceived\";\r\nimport { booleanify } from \"../../Shared/Utility/Booleanify\";\r\n\r\ntype TParams = { examinationId: string };\r\n\r\ninterface INavigation {\r\n navigateToPaySection: boolean,\r\n sectionsComplete: number,\r\n activeSections: Array,\r\n}\r\n\r\nenum ApplicationSection {\r\n ApplicantInformation,\r\n MedicalLicenseInformation,\r\n Modules,\r\n CnpSection,\r\n TrainingRequirements,\r\n AttestationStatement,\r\n TestingOptions,\r\n Payment\r\n}\r\n\r\nfunction Application({ match }: RouteComponentProps) {\r\n\r\n const [physician, setPhysician] = useState(null);\r\n const [examination, setExamination] = useState(null);\r\n const [application, setApplication] = useState(null);\r\n const [attestationContent, setAttestationContent] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const [isSubmitted, setIsSubmitted] = useState(false);\r\n const [displayPaymentSuccessful, setDisplayPaymentSuccessful] = useState(false);\r\n const [applicationReceipt, setApplicationReceipt] = useState(null);\r\n const [receipt, setReceipt] = useState(null);\r\n const [useBC, setUseBC] = useState(false);\r\n const [sectionNavigation, setSectionNav] = useState({navigateToPaySection: false, sectionsComplete: null, activeSections: null});\r\n\r\n const examinationDates = examination ? `Exam Dates: (${getDateWithOffset(examination.startDate).toLocaleDateString()} - ${getDateWithOffset(examination.endDate).toLocaleDateString()})` : null;\r\n const applicationRequiresTrainingSection = examination?.requiresFellowshipTraining && !application?.isTransferredIn && application?.candidateStatus != CandidateStatus.InviteSent;\r\n\r\n const applicationDeadlineDate = application?.extensionDate ?? examination?.applicationDeadlineDate;\r\n const exceptionText = application?.hasDeadlineException ? \"Exception\" : \"\";\r\n const formattedApplicationDeadlineDate = applicationDeadlineDate ? `Application ${exceptionText} Deadline: ${getDateWithOffset(applicationDeadlineDate).toLocaleDateString()}` : null\r\n\r\n const authContext = useContext(AuthContext);\r\n const USCountryId = 1;\r\n\r\n const previousSectionComplete = (section: ApplicationSection) => {\r\n return (sectionNavigation.sectionsComplete === sectionNavigation.activeSections.indexOf(section));\r\n }\r\n\r\n const saveApplication = async (model: ApplicationModel, isNewApplication: boolean = false) => {\r\n setLoading(true);\r\n \r\n return abpnClient.post(\"/api/application/update\", model, authContext).then(result => {\r\n setApplication(result);\r\n \r\n if (!isNewApplication) {\r\n var updated = deepCopy(sectionNavigation);\r\n updated.sectionsComplete++;\r\n setSectionNav(updated);\r\n }\r\n setLoading(false);\r\n })\r\n };\r\n\r\n useEffect(() => {\r\n abpnClient.get(\"/api/application?examinationId=\" + match.params.examinationId, authContext).then(async existingApplication => {\r\n //If no application found create a new one\r\n if (existingApplication == null) {\r\n var applicationDto = new ApplicationModel();\r\n applicationDto.examinationId = parseInt(match.params.examinationId);\r\n\r\n await saveApplication(applicationDto, true);\r\n } else {\r\n setApplication(existingApplication);\r\n }\r\n\r\n abpnClient.get(\"/api/physician\", authContext)\r\n .then(physician => {\r\n setPhysician(physician);\r\n abpnClient.get(\"/api/examination?examinationId=\" + match.params.examinationId, authContext)\r\n .then(exam => {\r\n setExamination(exam);\r\n });\r\n });\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n const getUseBC = async () => {\r\n let k = (await configService.getConfiguration()).FeatureFlags.UseBusinessCentral;\r\n if (typeof k === \"string\")\r\n {\r\n setUseBC(booleanify(k));\r\n }\r\n else {\r\n setUseBC(k);\r\n }\r\n\r\n }\r\n getUseBC();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (sectionNavigation.activeSections == null && application && examination && physician){\r\n let activeSections = [ApplicationSection.ApplicantInformation];\r\n activeSections.push(ApplicationSection.MedicalLicenseInformation);\r\n if (examination.isCombinedMoc) {\r\n activeSections.push(ApplicationSection.Modules);\r\n }\r\n if (examination.certificationId == KnownCertifications.ClinicalNeurophysiology && examination.isMoc && !examination.isArticleBased) {\r\n activeSections.push(ApplicationSection.CnpSection);\r\n }\r\n if (applicationRequiresTrainingSection) {\r\n activeSections.push(ApplicationSection.TrainingRequirements);\r\n }\r\n activeSections.push(ApplicationSection.AttestationStatement, ApplicationSection.TestingOptions, ApplicationSection.Payment);\r\n\r\n var updated = deepCopy(sectionNavigation);\r\n var goToPaySection = application?.candidateStatus !== CandidateStatus.Unsubmitted && application.order?.balance > 0;\r\n updated.navigateToPaySection = goToPaySection;\r\n updated.activeSections = activeSections;\r\n updated.sectionsComplete = goToPaySection ? activeSections.indexOf(ApplicationSection.Payment) : 0;\r\n\r\n setSectionNav(updated);\r\n setLoading(false);\r\n }\r\n }, [application, examination, physician])\r\n\r\n useEffect(() => {\r\n if (application && !attestationContent) {\r\n var applicationCreatedDate = getDateWithOffset(application.createdDate).toLocaleDateString(\"en-US\");\r\n abpnClient.get(`/api/applicationTemplate/attestation?examinationId=${match.params.examinationId}&applicationCreatedDate=${applicationCreatedDate}`, authContext)\r\n .then(template => {\r\n setAttestationContent(template.attestationContent);\r\n });\r\n }\r\n }, [application]);\r\n\r\n const onApplicationAttestedToggled = () => {\r\n var updated = deepCopy(application);\r\n updated.attestationContent = attestationContent;\r\n updated.hasAttested = !application.hasAttested;\r\n setApplication(updated);\r\n }\r\n\r\n const onAttestationContinue = async () => {\r\n await saveApplication(application);\r\n }\r\n\r\n const onTestingOptionsContinue = async (isAdaRequested: boolean, isNmaRequested: boolean) => {\r\n var updated = deepCopy(application);\r\n updated.isAdaRequested = isAdaRequested;\r\n updated.isNmaRequested = isNmaRequested;\r\n await saveApplication(updated)\r\n }\r\n\r\n const onCertificationSelectionContinue = async (moduleCertificationKeys: Array, cnpType: number) => {\r\n var updated = deepCopy(application)\r\n updated.modularCertificationIds = moduleCertificationKeys;\r\n updated.cnpType = cnpType;\r\n\r\n await saveApplication(updated)\r\n }\r\n\r\n const onCnpSectionContinue = async (cnpType: number) => {\r\n var updated = deepCopy(application)\r\n updated.cnpType = cnpType;\r\n\r\n await saveApplication(updated)\r\n }\r\n\r\n const onApplicationSubmitted = (applicationReceipt: ApplicationReceiptModel) => {\r\n setApplicationReceipt(applicationReceipt);\r\n setDisplayPaymentSuccessful(false);\r\n setIsSubmitted(true);\r\n }\r\n\r\n const onApplicationSubmittedWithInvoice = (receipt: ReceiptModel) => {\r\n setReceipt(receipt);\r\n setDisplayPaymentSuccessful(false);\r\n setIsSubmitted(true);\r\n }\r\n\r\n const updateSubSpecialtyTraining = (subSpecialtyTraining: Array) => {\r\n var updated = deepCopy(physician);\r\n updated.subspecialtyTrainingList = subSpecialtyTraining;\r\n setPhysician(updated);\r\n updateSectionsComplete(sectionNavigation.sectionsComplete + 1)\r\n }\r\n\r\n const requiresUnrestrictedLicense = () => {\r\n if (examination.examinationDefinitionId === KnownExaminationDefinitions.Neurology) return true;\r\n if (examination.examinationDefinitionId === KnownExaminationDefinitions.ChildNeurology) return true;\r\n if (examination.examinationDefinitionId === KnownExaminationDefinitions.Psychiatry) return true;\r\n return false;\r\n }\r\n\r\n const updateSectionsComplete = (index: number) => {\r\n var updatedNav = deepCopy(sectionNavigation);\r\n updatedNav.sectionsComplete = index;\r\n setSectionNav(updatedNav);\r\n }\r\n\r\n const saveAllAddresses = (addresses: Array
) => {\r\n if (!addresses.find(_ => _.isContact).isValid) return;\r\n\r\n const url = \"/api/Physician/SaveAddresses/\";\r\n\r\n setLoading(true);\r\n abpnClient.post>(url, addresses, authContext).then(result => {\r\n var updated = deepCopy(physician);\r\n var addressesToKeep = updated.addresses.addresses.filter(_ => !_.isContact);\r\n\r\n addressesToKeep.push(result.find(_ => _.isContact));\r\n physician.addresses.addresses = addressesToKeep;\r\n\r\n setPhysician(physician);\r\n setLoading(false);\r\n updateSectionsComplete(1);\r\n });\r\n }\r\n\r\n const history = useHistory();\r\n\r\n const displayBanner = () => {\r\n setDisplayPaymentSuccessful(true);\r\n setTimeout(() => { history.push(ApplicationPaths.DefaultLoginRedirectPath) }, 5000);\r\n }\r\n\r\n const isSectionDisabled = (section: ApplicationSection) => {\r\n return sectionNavigation.navigateToPaySection || (sectionNavigation.sectionsComplete < sectionNavigation.activeSections.indexOf(section));\r\n }\r\n\r\n const filteredExamCertificationIds = () => {\r\n const ccEnrollmentExamCertificates = physician.currentCCEnrollment?.activeEnrollmentCertificates?.filter(_ => _.ccAssessmentType == CCAssessmentType.Exam);\r\n var filteredCCEnrollmentCertificateIds = ccEnrollmentExamCertificates?.map(_ => _.certificateId);\r\n var filteredPhysicianCertificates = physician.certificates.filter(_ => filteredCCEnrollmentCertificateIds?.indexOf(_.certificateId) != -1);\r\n return filteredPhysicianCertificates?.map(_ => _.certificationId);\r\n }\r\n \r\n if (!(application && examination && physician && attestationContent && sectionNavigation.activeSections)) return \r\n if (displayPaymentSuccessful) return \r\n if (isSubmitted && !useBC) return \r\n if (isSubmitted && useBC) return \r\n\r\n return ( \r\n
\r\n

{examination.title}

\r\n

{formattedApplicationDeadlineDate}\r\n \r\n Application deadlines are at 11:59 p.m. CST, after which the late fee will be applied. \r\n }>\r\n \r\n \r\n

\r\n

{examinationDates}

\r\n ) => saveAllAddresses(addresses)}\r\n onOpen={() => updateSectionsComplete(0)}\r\n disabled={isSectionDisabled(ApplicationSection.ApplicantInformation)}\r\n isLoading={loading} />\r\n x.countryId == USCountryId)}\r\n isSectionOpen={previousSectionComplete(ApplicationSection.MedicalLicenseInformation)}\r\n requiresUnrestrictedLicense={requiresUnrestrictedLicense()}\r\n onContinue={() => { updateSectionsComplete(sectionNavigation.sectionsComplete + 1) }}\r\n onOpen={() => updateSectionsComplete(sectionNavigation.activeSections.indexOf(ApplicationSection.MedicalLicenseInformation))}\r\n disabled={isSectionDisabled(ApplicationSection.MedicalLicenseInformation)}\r\n />\r\n {\r\n examination.isCombinedMoc &&\r\n updateSectionsComplete(sectionNavigation.activeSections.indexOf(ApplicationSection.Modules))}\r\n disabled={isSectionDisabled(ApplicationSection.Modules)}\r\n isLoading={loading}\r\n />\r\n }\r\n {\r\n examination.certificationId == KnownCertifications.ClinicalNeurophysiology && examination.isMoc && !examination.isArticleBased &&\r\n updateSectionsComplete(sectionNavigation.activeSections.indexOf(ApplicationSection.CnpSection))}\r\n disabled={isSectionDisabled(ApplicationSection.CnpSection)}\r\n isLoading={loading} />\r\n }\r\n {\r\n applicationRequiresTrainingSection &&\r\n ) => updateSubSpecialtyTraining(subSpecialtyTraining)}\r\n examination={examination}\r\n applicationId={application.applicationId}\r\n subSpecialtyTrainingList={physician.subspecialtyTrainingList}\r\n onOpen={() => updateSectionsComplete(sectionNavigation.activeSections.indexOf(ApplicationSection.TrainingRequirements))}\r\n disabled={isSectionDisabled(ApplicationSection.TrainingRequirements)}\r\n />\r\n }\r\n updateSectionsComplete(sectionNavigation.activeSections.indexOf(ApplicationSection.AttestationStatement))}\r\n disabled={isSectionDisabled(ApplicationSection.AttestationStatement)}\r\n isLoading={loading}\r\n />\r\n updateSectionsComplete(sectionNavigation.activeSections.indexOf(ApplicationSection.TestingOptions))}\r\n disabled={isSectionDisabled(ApplicationSection.TestingOptions)}\r\n isLoading={loading}\r\n />\r\n { useBC ?\r\n updateSectionsComplete(sectionNavigation.activeSections.indexOf(ApplicationSection.Payment))}\r\n disabled={sectionNavigation.sectionsComplete < sectionNavigation.activeSections.indexOf(ApplicationSection.Payment)}\r\n applicationDeadlineDate={applicationDeadlineDate}\r\n totalBalance={application?.order?.balance ?? application?.totalFeeAmount}\r\n /> :\r\n updateSectionsComplete(sectionNavigation.activeSections.indexOf(ApplicationSection.Payment))}\r\n disabled={sectionNavigation.sectionsComplete < sectionNavigation.activeSections.indexOf(ApplicationSection.Payment)}\r\n applicationDeadlineDate={applicationDeadlineDate}\r\n totalBalance={application?.order?.balance ?? application?.totalFeeAmount}\r\n />\r\n }\r\n
\r\n );\r\n}\r\n\r\nexport default Application;","\r\n\r\nexport default function ExaminationReport() {\r\n\r\n\r\n return (\r\n
\r\n

Examination Report

\r\n
\r\n );\r\n}","export class ExaminationHistory {\r\n examinationId: number;\r\n examineeId: number;\r\n certificationId: number;\r\n title: string;\r\n certificationName: string;\r\n moduleSelection: string;\r\n formattedCnpType: string;\r\n startDate: string;\r\n endDate: string;\r\n releaseGrades: boolean;\r\n isPrimary: boolean;\r\n isMoc: boolean;\r\n hasExamineeDocuments: boolean;\r\n examinationGrade: ExaminationGrade;\r\n examineeStatusReason: string;\r\n examineeStatus: ExamineeStatus;\r\n examineeStatusReasonId: ExamineeStatusReason;\r\n candidateStatus: CandidateStatus\r\n candidateStatusReason: string;\r\n}\r\n\r\nexport enum ExaminationGrade {\r\n Pass = 1,\r\n Fail = 2,\r\n}\r\n\r\nexport enum ExamineeStatus {\r\n UnexcusedAbsence = 26\r\n}\r\n\r\nexport enum ExamineeStatusReason {\r\n Invalidated = 3\r\n}\r\n\r\nexport enum CandidateStatus {\r\n ToBeReviewed = 1,\r\n Hold = 2,\r\n Denied = 3,\r\n Approved = 4,\r\n TransferredOut = 5,\r\n Withdrawn = 6,\r\n Unsubmitted = 8\r\n}","import { useContext, useEffect, useState, Fragment } from \"react\";\r\nimport { Row, Col, Card, Container, Button } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../Auth/AuthProvider\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport { ExaminationHistory, ExaminationGrade, ExamineeStatus, ExamineeStatusReason } from '../Dashboard/Exams/Models/ExaminationHistory';\r\nimport { getDateWithOffset } from \"../Shared/Utility/GetDateWithOffset\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\n\r\nexport default function ExamHistory() {\r\n const validInitialSpecialtyCertYear = 2017;\r\n const validForAnyExamAdministeredYear = 2021;\r\n const [examHistory, setExamHistory] = useState>(null);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isDownloading, setIsDownloading] = useState(false);\r\n const [examinationIdDownloading, setExaminationIdDownloading] = useState(null);\r\n\r\n useEffect(() => {\r\n const getExams = () => {\r\n abpnClient.get>(`/api/Examination/GetExaminationHistory`, authContext)\r\n .then(exams => {\r\n setExamHistory(exams);\r\n setIsLoading(false);\r\n });\r\n }\r\n getExams();\r\n }, []);\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n const getGrade = (exam: ExaminationHistory) => {\r\n if (exam.examineeStatusReasonId === ExamineeStatusReason.Invalidated) return exam.examineeStatusReason;\r\n\r\n if (exam.examinationGrade === ExaminationGrade.Pass) return \"Pass\";\r\n\r\n if (exam.examinationGrade === ExaminationGrade.Fail) return \"Fail\";\r\n\r\n if (exam.examineeStatus === ExamineeStatus.UnexcusedAbsence) return \"Unexcused Absence\";\r\n\r\n if (exam.examinationGrade === null) return \"N/A\"\r\n\r\n return \"\";\r\n }\r\n\r\n const getCandidateStatusDescription = (exam: ExaminationHistory) => {\r\n return exam.candidateStatusReason;\r\n }\r\n\r\n const downloadExamResultsAvailable = (exam: ExaminationHistory) => {\r\n if (exam.examineeStatusReasonId === ExamineeStatusReason.Invalidated || !exam.hasExamineeDocuments) return false;\r\n\r\n var examStartDate = getDateWithOffset(exam.startDate);\r\n\r\n if (exam.isPrimary && !exam.isMoc && examStartDate.getFullYear() >= validInitialSpecialtyCertYear) return true;\r\n\r\n return examStartDate.getFullYear() >= validForAnyExamAdministeredYear;\r\n }\r\n\r\n const showConfirmPersonalInfoMessage = (exam: ExaminationHistory) => {\r\n var result = new Date();\r\n result.setDate(result.getDate() - 120);\r\n\r\n var cutoff = getDateWithOffset(result.toString());\r\n var endDateCheck = getDateWithOffset(exam.endDate);\r\n\r\n var isInConfirmDateRange = endDateCheck >= cutoff;\r\n var isMoc = exam.isMoc;\r\n return exam.examinationGrade === ExaminationGrade.Pass && isInConfirmDateRange && !isMoc;\r\n }\r\n\r\n const showConfirmPersonalInfoMessageMOC = (exam: ExaminationHistory) => {\r\n var result = new Date();\r\n result.setDate(result.getDate() - 120);\r\n\r\n var cutoff = getDateWithOffset(result.toString());\r\n var endDateCheck = getDateWithOffset(exam.endDate);\r\n\r\n var isInConfirmDateRange = endDateCheck >= cutoff;\r\n var isMoc = exam.isMoc;\r\n return exam.examinationGrade === ExaminationGrade.Pass && isInConfirmDateRange && isMoc;\r\n }\r\n\r\n const download = async (e: React.MouseEvent, examinationId: number) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n setExaminationIdDownloading(examinationId);\r\n setIsDownloading(true);\r\n\r\n var response = await abpnClient.getResponse(`/api/examination/DownloadScoreReport?examinationId=${examinationId}`, authContext)\r\n var blob = await response.blob();\r\n\r\n const downloadFileUrl = window.URL.createObjectURL(\r\n new Blob([blob]),\r\n );\r\n const link = document.createElement('a');\r\n link.href = downloadFileUrl;\r\n link.setAttribute(\r\n 'download',\r\n `ExaminationGrade.pdf`,\r\n );\r\n\r\n // Append to html link element page\r\n document.body.appendChild(link);\r\n\r\n // Start download\r\n link.click();\r\n\r\n // Clean up and remove the link\r\n link.parentNode.removeChild(link);\r\n\r\n setIsDownloading(false);\r\n }\r\n\r\n if (isLoading) return ;\r\n\r\n if (examHistory == null || examHistory.length === 0) return

No Examination History

\r\n \r\n return (\r\n \r\n
\r\n
Examination History
\r\n
\r\n \r\n \r\n {examHistory.map(exam => {\r\n return (\r\n \r\n \r\n \r\n
{exam.certificationName.toUpperCase()}
\r\n
{exam.moduleSelection}{exam.formattedCnpType}
\r\n \r\n \r\n \r\n \r\n
Exam Start Date
\r\n
{getDateWithOffset(exam.startDate).toLocaleDateString()}
\r\n \r\n \r\n
Examination Name
\r\n
{exam.title}
\r\n \r\n \r\n
Grade
\r\n
{getGrade(exam)}
\r\n \r\n \r\n
Application Status
\r\n
{getCandidateStatusDescription(exam)}
\r\n \r\n \r\n {downloadExamResultsAvailable(exam) ?\r\n (isDownloading && examinationIdDownloading === exam.examinationId) ? :\r\n : null\r\n }\r\n \r\n
\r\n {showConfirmPersonalInfoMessage(exam) &&\r\n \r\n
\r\n \r\n \r\n
\r\n Confirm your Personal Information within 30 days of the date of the Grade Letter found in Exam Results.\r\n
\r\n
\r\n Confirm your Name and Title along with your Contact, Shipping, and Public addresses to ensure successful\r\n delivery of your certificate and correct publication of your name and address.\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n {showConfirmPersonalInfoMessageMOC(exam) &&\r\n \r\n
\r\n \r\n \r\n
\r\n Confirm your Personal Information within 30 days of the date of the Grade Letter found in Exam Results.\r\n
\r\n
\r\n It is your responsibility to keep the information current in your ABPN Physician Portal throughout your career.\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n \r\n
\r\n
\r\n
\r\n )\r\n })}\r\n
\r\n
\r\n
\r\n );\r\n}","import React from \"react\";\r\nimport { Container, Navbar, NavbarBrand } from \"react-bootstrap\";\r\nimport NavbarToggle from \"react-bootstrap/esm/NavbarToggle\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\ninterface IProps { }\r\n\r\ninterface IState { }\r\n\r\nexport default class Unauthorized extends React.Component {\r\n render() {\r\n return (\r\n \r\n
\r\n \r\n \r\n Physician Portal\r\n \r\n \r\n \r\n
\r\n
\r\n You are unauthorized to view this page. If you believe you received this page in error, try logging out and logging back in again.\r\n
\r\n
\r\n );\r\n }\r\n}","export default class CCActivity {\r\n ccActivityId: number;\r\n activityName: string;\r\n organizationName: string;\r\n completedDate: string\r\n isSa: boolean;\r\n isPipClinical: boolean;\r\n isPipFeedback: boolean;\r\n isPatientSafety: boolean;\r\n cmeCredits: number;\r\n saCredits: number;\r\n isEditing: boolean;\r\n isNew: boolean;\r\n}","import React, { Fragment, useContext, useState } from \"react\";\r\nimport { Button, Form } from \"react-bootstrap\";\r\nimport { deepCopy } from \"../Shared/Utility/DeepCopy\";\r\nimport InputMask from 'react-input-mask';\r\nimport CCActivity from \"../Physician/Models/CCActivity\";\r\nimport { abpnClient } from \"../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../Auth/AuthProvider\";\r\nimport { getDateWithOffset } from \"../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps {\r\n selfReportedActivity: CCActivity;\r\n handleRemove: (selfReportedActivity: CCActivity) => void;\r\n handleUpdate: (ccActivityId: number, selfReportedActivity: CCActivity) => void;\r\n}\r\n\r\nexport function SelfReportedActivityRow(props: IProps) {\r\n const [originalSelfReportedActivity, setOriginalSelfReportedActivity] = useState(props.selfReportedActivity);\r\n const [updatedSelfReportedActivity, setUpdatedSelfReportedActivity] = useState(props.selfReportedActivity);\r\n const [isConfirmingDelete, setIsConfirmingDelete] = useState(false);\r\n const [organizationErrorMessage, setOrganizationErrorMessage] = useState(\"\");\r\n const [dateErrorMessage, setDateErrorMessage] = useState(\"\");\r\n const [cmeErrorMessage, setCmeErrorMessage] = useState(\"\");\r\n const [saCmeErrorMessage, setSaCmeErrorMessage] = useState(\"\");\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n const beginEdit = () => {\r\n var updated = deepCopy(updatedSelfReportedActivity);\r\n updated.isEditing = true;\r\n setUpdatedSelfReportedActivity(updated);\r\n }\r\n\r\n const cancel = () => {\r\n if (originalSelfReportedActivity.isNew) {\r\n props.handleRemove(originalSelfReportedActivity);\r\n }\r\n else {\r\n setUpdatedSelfReportedActivity(originalSelfReportedActivity);\r\n }\r\n }\r\n \r\n const save = () => {\r\n clearValidation();\r\n\r\n if (validate()) {\r\n const url = \"/api/Physician/SaveCCSelfReportedActivity/\";\r\n abpnClient.post(url, updatedSelfReportedActivity, authContext).then(result => {\r\n setOriginalSelfReportedActivity(result);\r\n setUpdatedSelfReportedActivity(result);\r\n props.handleUpdate(originalSelfReportedActivity.ccActivityId, result);\r\n });\r\n }\r\n }\r\n\r\n const clearValidation = () => {\r\n setOrganizationErrorMessage(\"\");\r\n setDateErrorMessage(\"\");\r\n setCmeErrorMessage(\"\");\r\n setSaCmeErrorMessage(\"\");\r\n }\r\n const validate = () => {\r\n var isValid = true;\r\n\r\n if (!updatedSelfReportedActivity.organizationName) {\r\n setOrganizationErrorMessage(\"Organization Name is required.\");\r\n isValid = false;\r\n }\r\n\r\n if (!Date.parse(updatedSelfReportedActivity.completedDate)) {\r\n setDateErrorMessage(\" Completed date invalid. Expected format: MM/DD/YYYY\");\r\n isValid = false\r\n }\r\n var isValidCme = updatedSelfReportedActivity.cmeCredits >= 0;\r\n if (!isValidCme) {\r\n setCmeErrorMessage(\"CME credit amount must be 0 or greater.\");\r\n isValid = false\r\n }\r\n\r\n var isValidSa = updatedSelfReportedActivity.saCredits >= 0;\r\n if (!isValidSa) {\r\n setSaCmeErrorMessage(\"SA CME credit amount must be 0 or greater.\");\r\n isValid = false\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n const updateCompletedDate = (value: string) => {\r\n var updated = deepCopy(updatedSelfReportedActivity);\r\n\r\n if (Date.parse(value)) {\r\n updated.completedDate = getDateWithOffset(value).toJSON();\r\n }\r\n setUpdatedSelfReportedActivity(updated);\r\n }\r\n\r\n const updateActivityName = (value: string) => {\r\n setUpdatedSelfReportedActivity({ ...updatedSelfReportedActivity, activityName: value });\r\n }\r\n\r\n const updateOrganizationName = (value: string) => {\r\n setUpdatedSelfReportedActivity({ ...updatedSelfReportedActivity, organizationName: value });\r\n }\r\n\r\n const updateCMECredits = (value: number) => {\r\n setUpdatedSelfReportedActivity({ ...updatedSelfReportedActivity, cmeCredits: value });\r\n }\r\n\r\n const updateSACredits = (value: number) => {\r\n setUpdatedSelfReportedActivity({ ...updatedSelfReportedActivity, saCredits: value });\r\n }\r\n\r\n const updateIsPIPClinical = () => {\r\n setUpdatedSelfReportedActivity({ ...updatedSelfReportedActivity, isPipClinical: !updatedSelfReportedActivity.isPipClinical });\r\n }\r\n\r\n const updateIsPIPFeedback = () => {\r\n setUpdatedSelfReportedActivity({ ...updatedSelfReportedActivity, isPipFeedback: !updatedSelfReportedActivity.isPipFeedback });\r\n }\r\n\r\n const updateIsPatientSafety = () => {\r\n setUpdatedSelfReportedActivity({ ...updatedSelfReportedActivity, isPatientSafety: !updatedSelfReportedActivity.isPatientSafety });\r\n }\r\n\r\n const formatDefaultValue = (value: string) => {\r\n var date = getDateWithOffset(value);\r\n if (date == null) return \"\"\r\n var year = date.getFullYear();\r\n\r\n var month = (1 + date.getMonth()).toString();\r\n month = month.length > 1 ? month : '0' + month;\r\n\r\n var day = date.getDate().toString();\r\n day = day.length > 1 ? day : '0' + day;\r\n\r\n return month + '/' + day + '/' + year;\r\n }\r\n\r\n if (isConfirmingDelete) {\r\n return (\r\n \r\n \r\n \r\n Do you want to delete Activity \"{updatedSelfReportedActivity.activityName}\"?\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return (\r\n \r\n {updatedSelfReportedActivity.isEditing ?\r\n \r\n \r\n updateActivityName(e.target.value)} />\r\n \r\n \r\n \r\n updateOrganizationName(e.target.value)} />\r\n {organizationErrorMessage}\r\n \r\n \r\n \r\n updateCompletedDate(e.target.value)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n {dateErrorMessage}\r\n \r\n \r\n updateCMECredits(parseFloat(e.target.value))} />\r\n {cmeErrorMessage}\r\n \r\n \r\n updateSACredits(parseFloat(e.target.value))} />\r\n {saCmeErrorMessage}\r\n \r\n \r\n \r\n updateIsPIPClinical()} />\r\n \r\n \r\n \r\n \r\n updateIsPIPFeedback()} />\r\n \r\n \r\n \r\n \r\n updateIsPatientSafety()} />\r\n \r\n \r\n \r\n :\r\n \r\n \r\n {updatedSelfReportedActivity.activityName}\r\n \r\n \r\n {updatedSelfReportedActivity.organizationName}\r\n \r\n \r\n {getDateWithOffset(updatedSelfReportedActivity.completedDate).toLocaleDateString()}\r\n \r\n \r\n {updatedSelfReportedActivity.cmeCredits}\r\n \r\n \r\n {updatedSelfReportedActivity.saCredits}\r\n \r\n \r\n {updatedSelfReportedActivity.isPipClinical ? : \"-\"}\r\n \r\n \r\n {updatedSelfReportedActivity.isPipFeedback ? : \"-\"}\r\n \r\n \r\n {updatedSelfReportedActivity.isPatientSafety ? : \"-\"}\r\n \r\n \r\n }\r\n \r\n
\r\n {updatedSelfReportedActivity.isEditing ?\r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default SelfReportedActivityRow;","import React, { Fragment, useContext, useEffect, useState } from \"react\";\r\nimport { Button, Card, Col, Container, Form, OverlayTrigger, Row, Table, Tooltip } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../Auth/AuthProvider\";\r\nimport CCActivity from \"../Physician/Models/CCActivity\";\r\nimport Physician from \"../Physician/Models/Physician\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport { deepCopy } from \"../Shared/Utility/DeepCopy\";\r\nimport SelfReportedActivityRow from \"./SelfReportedActivityRow\";\r\nimport InputMask from 'react-input-mask';\r\nimport { getDateWithOffset } from \"../Shared/Utility/GetDateWithOffset\";\r\nimport { Redirect } from \"react-router\";\r\n\r\nexport default function ManageActivities() {\r\n const [physician, setPhysician] = useState(null);\r\n const [verifiedActivities, setVerifiedActivities] = useState>(null);\r\n const [verifiedActivitiesStartDate, setVerifiedActivitiesStartDate] = useState(null);\r\n const [verifiedActivitiesEndDate, setVerifiedActivitiesEndDate] = useState(null);\r\n const [selfReportedActivities, setSelfReportedActivities] = useState>(null);\r\n const [selfReportedActivitiesStartDate, setSelfReportedActivitiesStartDate] = useState(null);\r\n const [selfReportedActivitiesEndDate, setSelfReportedActivitiesEndDate] = useState(null);\r\n const [filteredSelfReportedActivities, setFilteredSelfReportedActivities] = useState>(null);\r\n const [filterInputUpdate, setFilterInputUpdate] = useState(0);\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n useEffect(() => {\r\n abpnClient.get(\"/api/physician\", authContext)\r\n .then(_ => {\r\n setPhysician(_);\r\n let dateSort = (a: CCActivity, b: CCActivity) => {\r\n return getDateWithOffset(b.completedDate).getTime() - getDateWithOffset(a.completedDate).getTime();\r\n }\r\n let sortedVerifiedActivities = _.ccVerifiedActivities.sort(dateSort);\r\n setVerifiedActivities(sortedVerifiedActivities);\r\n let sortedSelfReportedActivities = _.ccSelfReportedActivities.sort(dateSort);\r\n setSelfReportedActivities(sortedSelfReportedActivities);\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (physician?.ccVerifiedActivities) {\r\n let filterededVerifiedActivities = physician.ccVerifiedActivities;\r\n let startDate = getDateWithOffset(verifiedActivitiesStartDate)?.getTime();\r\n if (startDate) {\r\n filterededVerifiedActivities = filterededVerifiedActivities.filter(_ => \r\n getDateWithOffset(_.completedDate).getTime() >= getDateWithOffset(verifiedActivitiesStartDate).getTime()\r\n );\r\n }\r\n let endDate = getDateWithOffset(verifiedActivitiesEndDate)?.getTime();\r\n if (endDate) {\r\n filterededVerifiedActivities = filterededVerifiedActivities.filter(_ => \r\n getDateWithOffset(_.completedDate).getTime() <= endDate\r\n );\r\n }\r\n setVerifiedActivities(filterededVerifiedActivities);\r\n }\r\n }, [verifiedActivitiesStartDate, verifiedActivitiesEndDate]);\r\n\r\n useEffect(() => {\r\n if (selfReportedActivities) {\r\n let newFilterededSelfReportedActivities = deepCopy(selfReportedActivities);\r\n let startDate = getDateWithOffset(selfReportedActivitiesStartDate)?.getTime();\r\n if (startDate) {\r\n newFilterededSelfReportedActivities = newFilterededSelfReportedActivities.filter(_ => \r\n getDateWithOffset(_.completedDate).getTime() >= startDate\r\n );\r\n }\r\n let endDate = getDateWithOffset(selfReportedActivitiesEndDate)?.getTime();\r\n if (endDate) {\r\n newFilterededSelfReportedActivities = newFilterededSelfReportedActivities.filter(_ => \r\n getDateWithOffset(_.completedDate).getTime() <= endDate\r\n );\r\n }\r\n setFilteredSelfReportedActivities(newFilterededSelfReportedActivities);\r\n }\r\n }, [selfReportedActivitiesStartDate, selfReportedActivitiesEndDate, selfReportedActivities]);\r\n\r\n const addNewSelfReportedActivity = () => {\r\n clearSelfReportedFitler();\r\n var newSelfReportedActivity = new CCActivity();\r\n newSelfReportedActivity.isNew = true;\r\n newSelfReportedActivity.isEditing = true;\r\n var newList = deepCopy(selfReportedActivities);\r\n newList.unshift(newSelfReportedActivity);\r\n setSelfReportedActivities(newList);\r\n \r\n let table = document.getElementById(\"selfReportedActivitiesTable\");\r\n if (table) table.scrollTop = 0;\r\n }\r\n\r\n const removeSelfReportedActivity = (selfReportedActivity: CCActivity) => {\r\n if (!selfReportedActivity.isNew) {\r\n const url = \"/api/Physician/DeleteCCSelfReportedActivity/\";\r\n abpnClient.post(url, selfReportedActivity, authContext).then(() => {\r\n var newList = deepCopy(selfReportedActivities.filter(_ => _.ccActivityId !== selfReportedActivity.ccActivityId));\r\n setSelfReportedActivities(newList);\r\n });\r\n }\r\n else {\r\n var newList = deepCopy(selfReportedActivities.filter(_ => _.ccActivityId !== selfReportedActivity.ccActivityId));\r\n setSelfReportedActivities(newList);\r\n }\r\n }\r\n\r\n const updateSelfReportedActivity = (ccActivityId: number, selfReportedActivity: CCActivity) => {\r\n var updated = deepCopy(selfReportedActivities);\r\n var index = updated.findIndex(_ => _.ccActivityId == ccActivityId);\r\n updated[index] = selfReportedActivity;\r\n setSelfReportedActivities(updated);\r\n }\r\n\r\n const canAddNew = () => {\r\n var hasNewSelfReportedActivity = selfReportedActivities?.find(_ => _.isNew);\r\n return !hasNewSelfReportedActivity;\r\n }\r\n\r\n const clearVerifiedFilter = () => {\r\n setVerifiedActivitiesStartDate(null);\r\n setVerifiedActivitiesEndDate(null);\r\n forceFilterInputUpdate();\r\n }\r\n\r\n const clearSelfReportedFitler = () => {\r\n setSelfReportedActivitiesStartDate(null);\r\n setSelfReportedActivitiesEndDate(null);\r\n forceFilterInputUpdate();\r\n }\r\n\r\n const forceFilterInputUpdate = () => {\r\n //workaround for InputMask not rerendering correctly\r\n setFilterInputUpdate(filterInputUpdate + 1);\r\n }\r\n\r\n if (!physician) return \r\n\r\n if (physician.isDansInvalidatedAllowReentryExam) return ;\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n VERIFIED ACTIVITIES\r\n \r\n Records of completed CC credits and activities from various professional organizations are reported directly to ABPN within three months of the activity completion. In the event of an audit, no further documentation is required from a diplomate for verified activities.\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n Display From\r\n setVerifiedActivitiesStartDate(e.target.value)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n \r\n \r\n To\r\n setVerifiedActivitiesEndDate(e.target.value)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {(!verifiedActivities || verifiedActivities.length === 0) ?\r\n
\r\n No Verified Activities on file. It may take up to three months from the event date to be reported.\r\n
\r\n :\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {verifiedActivities.map(_ =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n
Activity Name
\r\n
\r\n
Organization
\r\n
\r\n
Completed
\r\n
\r\n
CME
\r\n
\r\n
SA CME
\r\n
\r\n
PIP Clinical
\r\n
\r\n
PIP Feedback
\r\n
\r\n
Patient Safety
\r\n
\r\n {_.activityName}\r\n \r\n {_.organizationName}\r\n \r\n {getDateWithOffset(_.completedDate).toLocaleDateString()}\r\n \r\n {_.cmeCredits}\r\n \r\n {_.saCredits}\r\n \r\n {_.isPipClinical ? : \"-\"}\r\n \r\n {_.isPipFeedback ? : \"-\"}\r\n \r\n {_.isPatientSafety ? : \"-\"}\r\n
\r\n
\r\n
\r\n
Allow up to three months from the activity completion date for the credits to be reported to ABPN.
\r\n
\r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n SELF-REPORTED ACTIVITIES - Optional Tracker\r\n \r\n Diplomates can utilize this optional feature to enter and keep track of CC activities they have completed. Diplomates must still enter the total number of credits completed per block in the CC Activity Attestations section. Self-reported activities are not considered verified nor waived by the ABPN. Diplomates must maintain their CME certificates/transcripts for self-reported activities in the event of an audit.\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n Display From\r\n setSelfReportedActivitiesStartDate(e.target.value)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n \r\n \r\n To\r\n setSelfReportedActivitiesEndDate(e.target.value)}>\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {(!filteredSelfReportedActivities || filteredSelfReportedActivities.length === 0) ?\r\n
\r\n No Self-reported Activities on file. Click the Add button to enter your Self-reported activity. This is to help you keep track of your records.\r\n
\r\n :\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {filteredSelfReportedActivities.map(_ =>\r\n \r\n )}\r\n \r\n
\r\n
Activity Name
\r\n
\r\n
Organization
\r\n
\r\n
Completed
\r\n
\r\n
CME
\r\n
\r\n
SA CME
\r\n
\r\n
PIP Clinical
\r\n
\r\n
PIP Feedback
\r\n
\r\n
Patient Safety
\r\n
\r\n
Actions
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}","import React from \"react\";\r\nimport { Alert, Button, Card, Col, Container, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { ApplicationPaths } from \"../../Services/Auth/AuthConstants\";\r\n\r\nexport function EmailNotFound() {\r\n\r\n return (\r\n \r\n
\r\n PHYSICIAN PORTAL\r\n
\r\n

Email Not Found

\r\n
\r\n \r\n \r\n

The email address you entered was not found. If you have an active ABPN Physician Portal account, please try again. \r\n If you do not have an account, click First-time User and follow instructions.\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default EmailNotFound;","import React, { useState } from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport { Form, InputGroup } from \"react-bootstrap\";\r\nimport { ValidatorHelper } from \"../ValidatorHelper\";\r\n\r\ninterface IProps {\r\n onChange: (value: string) => void\r\n validate: boolean;\r\n validationMessage: string;\r\n isValid: boolean;\r\n}\r\n\r\nexport default function PasswordControl(props: IProps) {\r\n const [inputType, setInputType] = useState(\"password\");\r\n const [iconName, setIconName] = useState(\"la-eye\");\r\n \r\n var element = React.createRef();\r\n\r\n useEffect(() => {\r\n setIconName(inputType === \"password\" ? \"la-eye\": \"la-low-vision\")\r\n }, [inputType])\r\n\r\n const toggleShowCharacters = () => {\r\n setInputType(inputType === \"password\" ? \"text\" : \"password\");\r\n }\r\n\r\n useEffect(() => {\r\n ValidatorHelper.clearCustomValidation(element.current);\r\n \r\n if (props.validate && !props.isValid){\r\n ValidatorHelper.setCustomValidationWithFeedback(element.current, props.validationMessage);\r\n }\r\n })\r\n\r\n return (\r\n \r\n props.onChange(e.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n )\r\n\r\n}\r\n","import React, { Fragment, useContext, useEffect, useState } from \"react\";\r\nimport { Row, Col, Button, Card, Form, Alert, Collapse, OverlayTrigger, Tooltip } from \"react-bootstrap\";\r\nimport { Prompt } from \"react-router-dom\";\r\nimport { abpnClient, IdentityServerKnownClient } from \"../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../Auth/AuthProvider\";\r\nimport ActivateUser from \"../Auth/Models/ActivateUser\";\r\nimport Physician from \"../Physician/Models/Physician\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport PasswordControl from \"../Shared/Components/PasswordControl\";\r\nimport { deepCopy } from \"../Shared/Utility/DeepCopy\";\r\nimport ChangeEmailModel from \"./Models/ChangeEmailModel\";\r\nimport ChangePasswordModel from \"./Models/ChangePasswordModel\";\r\n\r\ninterface IProps {\r\n isSectionOpen: boolean;\r\n physician: Physician;\r\n}\r\n\r\nexport default function SecurityCard(props: IProps) {\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [currentEmail, setCurrentEmail] = useState(props.physician.emailAddress);\r\n const [updatedEmail, setUpdatedEmail] = useState(props.physician.emailAddress);\r\n const [isEditingEmail, setIsEditingEmail] = useState(false);\r\n const [isEditingPassword, setIsEditingPassword] = useState(false);\r\n const [changePasswordModel, setChangePasswordModel] = useState({ email: props.physician.emailAddress } as ChangePasswordModel);\r\n const [showEmailSuccess, setShowEmailSuccess] = useState(false);\r\n const [showPasswordSuccess, setShowPasswordSuccess] = useState(false);\r\n const [passwordErrorMessage, setPasswordErrorMessage] = useState(null);\r\n const [emailErrorMessage, setEmailErrorMessage] = useState(null);\r\n const [validatePassword, setValidatePassword] = useState(false);\r\n\r\n const authContext = useContext(AuthContext);\r\n const isNewPasswordValid = changePasswordModel.newPassword === changePasswordModel.confirmNewPassword;\r\n\r\n useEffect(() => {\r\n setEmailErrorMessage(\"\");\r\n }, [isEditingEmail]);\r\n\r\n useEffect(() => {\r\n setPasswordErrorMessage(\"\");\r\n }, [isEditingPassword]);\r\n\r\n useEffect(() => {\r\n var updated = deepCopy(changePasswordModel);\r\n updated.email = currentEmail;\r\n setChangePasswordModel(updated);\r\n }, [currentEmail]);\r\n\r\n const updateEmailAddress = (value: string) => {\r\n setUpdatedEmail(value);\r\n }\r\n\r\n const updateCurrentPassword = (value: string) => {\r\n var updated = deepCopy(changePasswordModel);\r\n updated.currentPassword = value;\r\n setChangePasswordModel(updated);\r\n }\r\n\r\n const updateNewPassword = (value: string) => {\r\n var updated = deepCopy(changePasswordModel);\r\n updated.newPassword = value;\r\n setChangePasswordModel(updated);\r\n }\r\n\r\n const updateConfirmPassword = (value: string) => {\r\n var updated = deepCopy(changePasswordModel);\r\n updated.confirmNewPassword = value;\r\n setChangePasswordModel(updated);\r\n }\r\n\r\n const cancelEditEmailAddress = () => {\r\n setUpdatedEmail(currentEmail);\r\n setIsEditingEmail(false);\r\n }\r\n\r\n const changeEmailAddress = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setEmailErrorMessage(\"\");\r\n\r\n e.currentTarget.classList.add('was-validated');\r\n if (e.currentTarget.checkValidity()) {\r\n e.currentTarget.classList.remove('was-validated');\r\n setIsLoading(true);\r\n\r\n const isValid = await abpnClient.post('/api/profile/ValidateEmail', { email: updatedEmail } as ActivateUser, authContext);\r\n\r\n if (isValid) {\r\n await abpnClient.post('/api/Physician/UpdateEmail', { physicianId: props.physician.physicianId, currentEmail: currentEmail, newEmail: updatedEmail } as ChangeEmailModel, authContext);\r\n\r\n let changeEmailModel = { \r\n currentEmail: currentEmail, \r\n newEmail: updatedEmail, \r\n registerClientId: IdentityServerKnownClient.physicianPortal,\r\n lastName: props.physician.lastName,\r\n ssn4: props.physician.ssn4,\r\n dateOfBirth: props.physician.dateOfBirth,\r\n email: updatedEmail\r\n } as ChangeEmailModel;\r\n const res = await authContext.changeEmail(changeEmailModel);\r\n if (res.ok) {\r\n setCurrentEmail(updatedEmail);\r\n setShowEmailSuccess(true);\r\n setIsEditingEmail(false);\r\n setTimeout(function () {\r\n setShowEmailSuccess(false);\r\n }, 5000);\r\n }\r\n else {\r\n const text = await res.text();\r\n setEmailErrorMessage(text);\r\n }\r\n setIsLoading(false);\r\n }\r\n else {\r\n setEmailErrorMessage(\"The email you provided is already in use. Please try a new email.\");\r\n setIsLoading(false);\r\n }\r\n }\r\n }\r\n\r\n const changePassword = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setPasswordErrorMessage(\"\");\r\n\r\n e.currentTarget.classList.add('was-validated');\r\n setValidatePassword(true)\r\n\r\n if (isNewPasswordValid && e.currentTarget.checkValidity()) {\r\n e.currentTarget.classList.remove('was-validated');\r\n setValidatePassword(false);\r\n\r\n setIsLoading(true);\r\n authContext.changePassword(changePasswordModel).then(async res => {\r\n if (res.ok) {\r\n setShowPasswordSuccess(true);\r\n setIsEditingPassword(false);\r\n setTimeout(function () {\r\n setShowPasswordSuccess(false);\r\n }, 5000);\r\n }\r\n else {\r\n const text = await res.text();\r\n setPasswordErrorMessage(text);\r\n }\r\n setIsLoading(false);\r\n })\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n setOpenCollapse(!openCollapse)}>\r\n Security\r\n \r\n {isLoading ? :\r\n \r\n \r\n \r\n \r\n {showEmailSuccess && Success! Your Email has been updated.}\r\n \r\n Personal Email Address\r\n \r\n Your email address will be used to login to your portal. ABPN highly recommends keeping a personal email address on file to ensure you receive all communications regarding applications, exams, certification requirements, pertinent updates, and to access your Physician Portal.\r\n }>\r\n \r\n \r\n \r\n {isEditingEmail ?\r\n
changeEmailAddress(e)}>\r\n \r\n Personal Email Address\r\n updateEmailAddress(e.target.value)}\r\n defaultValue={updatedEmail ?? null} />\r\n {emailErrorMessage}\r\n \r\n {emailErrorMessage &&\r\n \r\n {emailErrorMessage}\r\n }\r\n
\r\n \r\n \r\n
\r\n
\r\n :\r\n \r\n {currentEmail}\r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n {showPasswordSuccess && Success! Your Password has been updated.}\r\n \r\n Password\r\n {isEditingPassword ?\r\n \r\n
changePassword(e)}>\r\n \r\n Old Password *\r\n \r\n \r\n
Use 8 or more characters to set your new password.
\r\n \r\n New Password *\r\n \r\n \r\n \r\n Confirm New Password *\r\n \r\n \r\n {passwordErrorMessage &&\r\n \r\n {passwordErrorMessage}\r\n }\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n :\r\n \r\n }\r\n
\r\n
\r\n \r\n
\r\n
}\r\n
\r\n
\r\n );\r\n}","import React, { Fragment, useState } from \"react\";\r\nimport { Row, Col, Button, Card, Collapse, } from \"react-bootstrap\";\r\nimport Physician from \"../Physician/Models/Physician\";\r\nimport { getDateWithOffset } from \"../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps {\r\n isSectionOpen: boolean;\r\n physicianId: number;\r\n physician: Physician;\r\n}\r\n\r\nexport default function PersonalCard(props: IProps) {\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const currentName = props.physician.fullName;\r\n const dateOfBirth = getDateWithOffset(props.physician.dateOfBirth).toLocaleDateString();\r\n const ssn4 = props.physician.ssn4;\r\n const instructionsUrl = 'https://www.abpn.org/wp-content/uploads/2015/05/ABPN_Name_DOB_SSN_Change_Instructions.pdf';\r\n\r\n const openInstructions = () => {\r\n window.open(instructionsUrl, '_blank').focus();\r\n }\r\n\r\n let viewInstructionsButton = \r\n\r\n return (\r\n \r\n \r\n setOpenCollapse(!openCollapse)}>\r\n Personal\r\n \r\n \r\n \r\n \r\n \r\n \r\n Name\r\n \r\n {currentName}\r\n {viewInstructionsButton}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Date of Birth\r\n \r\n {dateOfBirth}\r\n {viewInstructionsButton}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Last 4 of SSN\r\n \r\n {ssn4}\r\n {viewInstructionsButton}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import { Fragment, useContext, useEffect, useState } from \"react\";\r\nimport { Row, Col, Button, Card, Collapse, OverlayTrigger, Tooltip, Alert } from \"react-bootstrap\";\r\nimport { Address } from \"../Physician/Models/Address\";\r\nimport { abpnClient } from \"../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../Auth/AuthProvider\";\r\nimport { CountryLookupItem, StateWithCountryLookupItem } from \"../Shared/Models/StateWithCountryLookupItem\";\r\nimport AddressForm from \"../Shared/Components/AddressForm\";\r\nimport { AddressType } from \"../Shared/Enums/AddressType\";\r\nimport { CountryId } from \"../Shared/Enums/CountryId\";\r\nimport { deepCopy } from \"../Shared/Utility/DeepCopy\";\r\nimport { Prompt } from \"react-router-dom\";\r\n\r\ninterface IProps {\r\n isSectionOpen: boolean;\r\n physicianId: number;\r\n addresses: Array
;\r\n states: Array;\r\n countries: Array;\r\n}\r\n\r\nexport default function AddressesCard(props: IProps) {\r\n const [addresses, setAddresses] = useState>(props.addresses);\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const [contactAddress, setContactAddress] = useState
(null);\r\n const [shippingAddress, setShippingAddress] = useState
(null);\r\n const [publicAddress, setPublicAddress] = useState
(null);\r\n const [isEditingContactAddress, setIsEditingContactAddress] = useState(false);\r\n const [isEditingShippingAddress, setIsEditingShippingAddress] = useState(false);\r\n const [isEditingPublicAddress, setIsEditingPublicAddress] = useState(false);\r\n const [showSuccess, setShowSuccess] = useState(false);\r\n\r\n useEffect(() => {\r\n setAddressesFromList(addresses);\r\n }, [addresses]);\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n const saveAddress = (address: Address) => {\r\n setIsEditingContactAddress(false);\r\n setIsEditingShippingAddress(false);\r\n setIsEditingPublicAddress(false);\r\n let url = \"/api/Physician/SaveAddresses/\";\r\n let addressList = buildAddressList(address);\r\n abpnClient.post>(url, addressList, authContext).then(result => {\r\n setAddresses(result);\r\n setShowSuccess(true);\r\n setTimeout(() => {\r\n setShowSuccess(false);\r\n }, 5000)\r\n });\r\n }\r\n\r\n const setAddressesFromList = (addresses: Array
) => {\r\n let contactAddress = addresses.find(_ => _.isContact);\r\n let shippingAddress = addresses.find(_ => !_.isContact && _.types.includes(AddressType.Shipping));\r\n let publicAddress = addresses.find(_ => !_.isContact && _.types.includes(AddressType.Public));\r\n setContactAddress(contactAddress ?? createNewAddress(AddressType.Contact));\r\n setShippingAddress(shippingAddress ?? createNewAddress(AddressType.Shipping));\r\n setPublicAddress(publicAddress ?? createNewAddress(AddressType.Public));\r\n }\r\n\r\n const createNewAddress = (type: AddressType) => {\r\n let newAddress = new Address();\r\n newAddress.countryId = CountryId.Usa;\r\n newAddress.types.push(type);\r\n return newAddress;\r\n }\r\n\r\n const buildAddressList = (address: Address) => {\r\n let addressList = new Array
();\r\n\r\n if (address.isContact) {\r\n addressList = deepCopy(addresses);\r\n addressList.splice(addressList.findIndex(_ => _.isContact), 1);\r\n } else {\r\n if (address.types.length == 0) {\r\n //Set new address to use for all 3 types\r\n address.types.push(AddressType.Contact);\r\n address.types.push(AddressType.Public);\r\n address.types.push(AddressType.Shipping);\r\n addressList.push(address);\r\n return addressList;\r\n } else if (address.types.includes(AddressType.Shipping) && address.types.includes(AddressType.Public)) {\r\n let updatedContact = deepCopy(addresses.find(_ => _.isContact))\r\n updatedContact = removeAddressType(updatedContact, AddressType.Shipping);\r\n updatedContact = removeAddressType(updatedContact, AddressType.Public);\r\n addressList.push(updatedContact);\r\n } else if (address.types.includes(AddressType.Shipping)) {\r\n let updatedContact = deepCopy(addresses.find(_ => _.isContact))\r\n if (updatedContact) {\r\n addressList.push(removeAddressType(updatedContact, AddressType.Shipping));\r\n }\r\n\r\n let updatedPublic = deepCopy(addresses.find(_ => !_.isContact && _.types.includes(AddressType.Public)))\r\n if (updatedPublic) {\r\n addressList.push(removeAddressType(updatedPublic, AddressType.Shipping));\r\n }\r\n } else if (address.types.includes(AddressType.Public)) {\r\n let updatedContact = deepCopy(addresses.find(_ => _.isContact))\r\n if (updatedContact) {\r\n addressList.push(removeAddressType(updatedContact, AddressType.Public));\r\n }\r\n\r\n let updatedShipping = deepCopy(addresses.find(_ => !_.isContact && _.types.includes(AddressType.Shipping)))\r\n if (updatedShipping) {\r\n addressList.push(removeAddressType(updatedShipping, AddressType.Public));\r\n }\r\n }\r\n }\r\n\r\n addressList.push(address);\r\n return addressList;\r\n }\r\n\r\n const removeAddressType = (address: Address, type: AddressType) => {\r\n if (address.types.includes(type)) {\r\n address.types.splice(address.types.indexOf(type), 1);\r\n }\r\n return address;\r\n }\r\n\r\n const displayAddress = (address: Address, isPublic: boolean = false) => {\r\n if(!address?.stateId) return No Address Provided\r\n\r\n return \r\n {!isPublic &&\r\n \r\n
{address?.line1}
\r\n
{address?.line2}
\r\n
}\r\n
{address?.city}, {props.states.find(_ => _.id === address?.stateId)?.shortName} {address?.zipCode}
\r\n
{props.countries.find(_ => _.id === address?.countryId)?.name}
\r\n {!isPublic &&\r\n \r\n
\r\n
{address?.homePhoneNumber}
\r\n
}\r\n
\r\n }\r\n\r\n if (!props.addresses || contactAddress == null)\r\n return (\r\n \r\n \r\n {showSuccess && Success! Address has been updated.}\r\n \r\n setOpenCollapse(!openCollapse)}>\r\n Addresses\r\n \r\n \r\n \r\n \r\n \r\n \r\n Contact Address\r\n \r\n ABPN highly recommends keeping a personal email address on file to ensure you receive all communications regarding applications, exams, certification requirements, pertinent updates, and to access your ABPN Physician Portal account.\r\n This will be used to log into the Physician Portal.\r\n }>\r\n \r\n \r\n \r\n {isEditingContactAddress ?\r\n setIsEditingContactAddress(false)}\r\n submitText={'Save'}\r\n showCancel={true} />\r\n :\r\n \r\n
\r\n
\r\n
\r\n setIsEditingContactAddress(true)}>\r\n Add\r\n \r\n
\r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Certificate Shipping\r\n \r\n This address will be used for shipment of your certificate and will expire from our system six months after the exam window end date.\r\n }>\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Public\r\n \r\n The Board will submit your name and public address for inclusion in the ABMS’s Certification Matters website, certificationmatters.org upon certification. Lists of diplomates are also sent to other select publications and your name and publication address will be included in these lists.\r\n
\r\n Due to the European General Data Protection Regulation (GDPR), diplomates with a current UK/EU address on file will no longer be published on our VerifyCert directory, or reported to credentialers or any other third parties. Additional GDPR information: https://gdpr-info.eu/\r\n
\r\n
\r\n Note: diplomates with a UK/EU addresses do not have their certification status published due to GDPR regulations.\r\n }>\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n return (\r\n \r\n \r\n {showSuccess && Success! Address has been updated.}\r\n \r\n setOpenCollapse(!openCollapse)}>\r\n Addresses\r\n \r\n \r\n \r\n \r\n \r\n \r\n Contact Address\r\n \r\n ABPN highly recommends keeping a personal email address on file to ensure you receive all communications regarding applications, exams, certification requirements, pertinent updates, and to access your ABPN Physician Portal account.\r\n This will be used to log into the Physician Portal.\r\n }>\r\n \r\n \r\n \r\n {isEditingContactAddress ?\r\n setIsEditingContactAddress(false)}\r\n submitText={'Save'}\r\n showCancel={true} />\r\n :\r\n \r\n {displayAddress(contactAddress)}\r\n setIsEditingContactAddress(true)}>\r\n Edit\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n Certificate Shipping\r\n \r\n This address will be used for shipment of your certificate and will expire from our system six months after the exam window end date.\r\n }>\r\n \r\n \r\n \r\n {isEditingShippingAddress ?\r\n setIsEditingShippingAddress(false)}\r\n submitText={'Save'}\r\n showCancel={true} />\r\n :\r\n \r\n {displayAddress(addresses.find(_ => !_.isContact && _.types.includes(AddressType.Shipping)) ? shippingAddress : contactAddress)}\r\n setIsEditingShippingAddress(true)}>\r\n Edit\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n Public\r\n \r\n The Board will submit your name and public address for inclusion in the ABMS’s Certification Matters website, certificationmatters.org upon certification. Lists of diplomates are also sent to other select publications and your name and publication address will be included in these lists.\r\n
\r\n Due to the European General Data Protection Regulation (GDPR), diplomates with a current UK/EU address on file will no longer be published on our VerifyCert directory, or reported to credentialers or any other third parties. Additional GDPR information: https://gdpr-info.eu/\r\n
\r\n
\r\n Note: diplomates with a UK/EU addresses do not have their certification status published due to GDPR regulations.\r\n }>\r\n \r\n \r\n
\r\n {isEditingPublicAddress ?\r\n setIsEditingPublicAddress(false)}\r\n submitText={'Save'}\r\n showCancel={true}\r\n showStreetAddress={false} />\r\n :\r\n \r\n {displayAddress(addresses.find(_ => !_.isContact && _.types.includes(AddressType.Public)) ? publicAddress : contactAddress, true)}\r\n setIsEditingPublicAddress(true)}>\r\n Edit\r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}","export default class PhysicianDemographicModel {\r\n constructor()\r\n {\r\n this.races = [];\r\n }\r\n\r\n physicianDemographicId? : number\r\n personKey? : number\r\n ethnicity? : number\r\n gender? : number\r\n races? : Array\r\n}\r\n\r\nexport class PhysicianDemographicRaceModel {\r\n physicianDemographicRaceId? : number\r\n physicianDemographicId? : number\r\n race? : number\r\n}\r\n\r\nexport enum EthnicityType\r\n{\r\n HispanicOrLatinoa = 1,\r\n NonHispanicOrNonLatinoa = 2,\r\n Other = 3,\r\n NoAnswer = 4\r\n}\r\n\r\nexport enum GenderType\r\n{\r\n Female = 1,\r\n Male = 2,\r\n NonBinary = 3,\r\n Other = 4,\r\n NoAnswer = 5\r\n}","import React, { useState, useEffect, useContext } from \"react\";\r\nimport { Button, Row, Col, Card, Alert, Form, Collapse } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../Auth/AuthProvider\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport { deepCopy } from \"../Shared/Utility/DeepCopy\";\r\nimport PhysicianDemographicModel, { EthnicityType, GenderType } from './Models/PhysicianDemographicModel';\r\n\r\ninterface IProps{\r\n isSectionOpen: boolean;\r\n physicianId: number;\r\n}\r\n\r\nexport default function PhysicianDemographicCard(props: IProps) {\r\n const [openCollapse, setOpenCollapse] = useState(props.isSectionOpen);\r\n const [demographicModel, setDemographicModel] = useState(null);\r\n const [showSuccess, setShowSuccess] = useState(false);\r\n const [showDeleteSuccess, setShowDeleteSuccess] = useState(false);\r\n const authContext = useContext(AuthContext);\r\n \r\n useEffect(() => {\r\n let url = '/api/physicianDemographic/GetPhysicianDemographic/';\r\n abpnClient.get(url, authContext).then(_ => {\r\n if(_ == null){\r\n _ = new PhysicianDemographicModel();\r\n _.personKey = props.physicianId;\r\n }\r\n setDemographicModel(_);\r\n });\r\n }, []);\r\n\r\n const handleDemographicEthnicityChange = (e: React.ChangeEvent) => {\r\n var updatedModel = deepCopy(demographicModel);\r\n updatedModel.ethnicity = Number.parseInt(e.target.id);\r\n setDemographicModel(updatedModel);\r\n };\r\n\r\n const handleDemographicGenderChange = (e: React.ChangeEvent) => {\r\n var updatedModel = deepCopy(demographicModel);\r\n updatedModel.gender = Number.parseInt(e.target.id);\r\n setDemographicModel(updatedModel);\r\n };\r\n\r\n const handleDemographicRaceChange = (e: React.ChangeEvent) => {\r\n var updatedModel = deepCopy(demographicModel);\r\n const { value, checked } = e.target;\r\n if(checked){\r\n updatedModel.races.push({\r\n \"physicianDemographicRaceId\" : null,\r\n \"physicianDemographicId\" : updatedModel.physicianDemographicId,\r\n \"race\" : Number.parseInt(value)\r\n });\r\n }\r\n else{\r\n updatedModel.races = updatedModel.races.filter((e => e.race.toString() !== value));\r\n }\r\n\r\n setDemographicModel(updatedModel);\r\n };\r\n\r\n function isDemographicRaceChecked(raceId: string) : boolean\r\n {\r\n if(demographicModel.races == null)\r\n return false;\r\n else{\r\n var isChecked = false;\r\n demographicModel.races.map((race) => {\r\n if(race != null && race.race == Number.parseInt(raceId))\r\n isChecked = true;\r\n });\r\n return isChecked;\r\n }\r\n }\r\n\r\n const savePhysicianDemographic = () => {\r\n let url = '/api/physicianDemographic/SavePhysicianDemographic/';\r\n if(demographicModel.ethnicity == null)\r\n demographicModel.ethnicity = EthnicityType.NoAnswer;\r\n if(demographicModel.gender == null)\r\n demographicModel.gender = GenderType.NoAnswer;\r\n abpnClient.post(url, demographicModel, authContext).then(_ => {\r\n setDemographicModel(_);\r\n setShowSuccess(true);\r\n setTimeout(function () {\r\n setShowSuccess(false);\r\n }, 5000);\r\n });\r\n };\r\n\r\n const deletePhysicianDemographic = () => {\r\n let url = '/api/physicianDemographic/DeletePhysicianDemographic/';\r\n abpnClient.post(url, demographicModel.personKey, authContext).then(res => {\r\n var _ = new PhysicianDemographicModel();\r\n _.personKey = res;\r\n setDemographicModel(_);\r\n setShowDeleteSuccess(true);\r\n setTimeout(function () {\r\n setShowDeleteSuccess(false);\r\n }, 5000);\r\n });\r\n };\r\n\r\n const populateEthnicities = (() => {\r\n const Ethnicities = [\r\n {\r\n id: \"1\",\r\n name: \"Hispanic or Latino(a)\"\r\n },\r\n {\r\n id: \"2\",\r\n name: \"Non-Hispanic or Non-Latino(a)\"\r\n },\r\n {\r\n id: \"3\",\r\n name: \"Other\"\r\n },\r\n {\r\n id: \"4\",\r\n name: \"No answer\"\r\n }\r\n ];\r\n\r\n return (\r\n \r\n Ethnic Identity\r\n {Ethnicities.map((ethnicity) => {\r\n return(\r\n \r\n \r\n {ethnicity.name}\r\n \r\n )\r\n })}\r\n \r\n );\r\n });\r\n\r\n const populateGenders = (() => {\r\n const Genders = [\r\n {\r\n id: \"1\",\r\n name: \"Female\"\r\n },\r\n {\r\n id: \"2\",\r\n name: \"Male\"\r\n },\r\n {\r\n id: \"3\",\r\n name: \"Non-binary\"\r\n },\r\n {\r\n id: \"4\",\r\n name: \"Other\"\r\n },\r\n {\r\n id: \"5\",\r\n name: \"No answer\"\r\n }\r\n ];\r\n\r\n return (\r\n \r\n Gender Identity\r\n {Genders.map((gender) => {\r\n return(\r\n \r\n \r\n {gender.name}\r\n \r\n )\r\n })}\r\n \r\n );\r\n });\r\n\r\n const populateRaces = (() => {\r\n const Races = [\r\n {\r\n id: \"1\",\r\n name: \"Asian\"\r\n },\r\n {\r\n id: \"2\",\r\n name: \"Black or African American\"\r\n },\r\n {\r\n id: \"3\",\r\n name: \"American Indian or Alaskan Native\"\r\n },\r\n {\r\n id: \"4\",\r\n name: \"Native Hawaiian or Pacific Islander\"\r\n },\r\n {\r\n id: \"5\",\r\n name: \"White\"\r\n },\r\n {\r\n id: \"6\",\r\n name: \"Other\"\r\n },\r\n {\r\n id: \"7\",\r\n name: \"No answer\"\r\n }\r\n ];\r\n\r\n return (\r\n \r\n Racial Identity (multiple selections allowed)\r\n {Races.map((race) => {\r\n return (\r\n \r\n \r\n {race.name}\r\n \r\n );\r\n })}\r\n \r\n );\r\n });\r\n\r\n if(!demographicModel)\r\n return (\r\n \r\n );\r\n return (\r\n \r\n \r\n setOpenCollapse(!openCollapse)}>\r\n Demographics\r\n \r\n \r\n \r\n \r\n \r\n {showSuccess && Success! Your Demographic information has been updated.}\r\n {showDeleteSuccess && Success! Your Demographic information has been deleted.}\r\n \r\n
Submit Data for ABPN Demographic Survey
\r\n

\r\n The American Board of Psychiatry and Neurology (ABPN) and its Board of Directors are committed to advancing diversity, equity, and inclusion (DEI) within all ABPN programs and services.\r\n

\r\n

\r\n Beginning today, the ABPN will begin collecting detailed demographic data of all ABPN physicians to help enhance ABPN certification programs and the mission of the organization. When logging into the Physician Portal, you will be asked to submit information on your race, ethnicity, and gender. Completing this demographic survey is optional for all candidates and diplomates. Choosing to participate or not participate in the survey will have no bearing on a physician’s certification status.\r\n

\r\n

\r\n The ABPN is committed to using this demographic data to analyze diversity, equity, and inclusion within the certification process and to ensure that all physicians are treated equitably.\r\n

\r\n

\r\n The ABPN will not share data that could be used to identify individual residents, training programs, applicants, candidates, diplomates, or former diplomates.\r\n

\r\n \r\n \r\n {populateRaces()}\r\n \r\n \r\n {populateEthnicities()}\r\n \r\n \r\n {populateGenders()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { Row, Col, Container } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../Auth/AuthProvider\";\r\nimport Physician from \"../Physician/Models/Physician\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport SecurityCard from \"./SecurityCard\";\r\nimport PersonalCard from \"./PersonalCard\";\r\n import MedicalLicensure from \"../Dashboard/ContinuingCertification/Components/MedicalLicensure\";\r\n import { MedicalLicense } from \"../Physician/Models/MedicalLicense\";\r\nimport AddressesCard from \"./AddressesCard\";\r\nimport { deepCopy } from \"../Shared/Utility/DeepCopy\";\r\nimport { CCBlock } from \"../Physician/Models/CCBlock\";\r\nimport PhysicianDemographicCard from \"./PhysicianDemographicCard\";\r\nimport { CountryId } from \"../Shared/Enums/CountryId\";\r\n\r\nexport default function AccountInformation() {\r\n\tconst [physician, setPhysician] = useState(null);\r\n\tconst states = physician?.addresses.states.filter(x => x.countryId === CountryId.Usa || x.countryId === CountryId.Canada);\r\n\r\n\tconst authContext = useContext(AuthContext);\r\n\tuseEffect(() => {\r\n\t\tabpnClient.get(\"/api/physician\", authContext).then((_) => {\r\n\t\t\tsetPhysician(_);\r\n\t\t});\r\n\t}, []);\r\n\r\n\r\n\tconst evaluateCurrentBlockAndCallUpdate = async (physician : Physician) =>{\r\n const ccBlock = await abpnClient.get(\"/api/physician/EvaluateCurrentBlockRequirements\", authContext);\r\n\r\n\t\tif(ccBlock != null){\r\n\t\t\tvar index = physician.currentCCEnrollment.ccBlocks.findIndex(_ => _.ccBlockId === ccBlock.ccBlockId);\r\n\t\t\tphysician.currentCCEnrollment.ccBlocks.splice(index, 1, ccBlock);\r\n\t\t\tphysician.currentCCEnrollment.currentCCBlock = ccBlock;\r\n\t\t\tsetPhysician(physician);\t\r\n\t\t}\r\n }\r\n\tconst onSaveLicenses = (licenses: Array) => {\r\n var updatedPhysician = deepCopy(physician);\r\n updatedPhysician.medicalLicenses = licenses;\r\n\r\n evaluateCurrentBlockAndCallUpdate(updatedPhysician);\r\n }\r\n\r\n\tif (!physician) return ;\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t) => onSaveLicenses(licenses)}\r\n\t\t\t\t\t\tshowCollapse={true}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n","export class ActionResult {\r\n message: string;\r\n title: string;\r\n alertType: string;\r\n}","import { Fragment, useEffect, useState } from 'react';\r\nimport { Button, Card, Col, Container, Row } from 'react-bootstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport HeaderWithTitle from '../Shared/Components/HeaderWithTitle';\r\nimport { configService } from \"../../Services/Config/ConfigService\";\r\nimport AbpnSpinner from '../Shared/Components/AbpnSpinner';\r\n\r\ninterface IProps {\r\n\tshowLogin: boolean;\r\n\tshowSearchAgain: boolean;\r\n\thascompletedResidency: boolean;\r\n\tsearchAgain: () => void;\r\n}\r\nexport function AccountAssistance(props: IProps) {\r\n\tconst [mailToLink, setMailToLink] = useState(null);\r\n\tconst [updatePersonalInfoLink, setUpdatePersonalInfoLink] = useState(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst getMailToLink = () => {\r\n\t\t\tconfigService.getConfiguration().then(_ => {\r\n\t\t\t\tsetMailToLink(_.PhysicianPortalHelp);\r\n\t\t\t})\r\n\t\t}\r\n\t\tconst getUpdatePersonalInfoLink = () => {\r\n\t\t\tconfigService.getConfiguration().then(_ => {\r\n\t\t\t\tsetUpdatePersonalInfoLink(_.UpdatePersonalInfoInstructions);\r\n\t\t\t})\r\n\t\t}\r\n\t\tgetMailToLink();\r\n\t\tgetUpdatePersonalInfoLink();\r\n\t}, [])\r\n \r\n\tif (!mailToLink || !updatePersonalInfoLink) return \r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{props.hascompletedResidency ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t

Your account could not be activated with the information you provided

\r\n\t\t\t\t\t\t\t\t\t\tIf you are currently in a residency program:\r\n\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\tPlease check with your residency program to ensure your last name, date of\r\n\t\t\t\t\t\t\t\t\t\t\tbirth, and last four of your social security number have been into the ABPN\r\n\t\t\t\t\t\t\t\t\t\t\tpreCert system. If the information had been entered incorrectly, refer to the\r\n\t\t\t\t\t\t\t\t\t\t\t Update Personal Information document for further instructions.\r\n\t\t\t\t\t\t\t\t\t\t

\r\n\r\n\t\t\t\t\t\t\t\t\t\tIf you are NOT currently in a residency program:\r\n\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\tPlease contact ABPN through email at questions@abpn.org{' '}\r\n\t\t\t\t\t\t\t\t\t\t\twith subject \"Physician Portal Help” for assistance.\r\n\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t
) : (\r\n\t\t\t\t\t\t\t\t\t

We are having trouble locating your account. Please contact ABPN through email at{' '}\r\n\t\t\t\t\t\t\t\t\t\tquestions@abpn.org with subject \"Physician\r\n\t\t\t\t\t\t\t\t\t\tPortal Help” for assistance.\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{(props.showSearchAgain || props.hascompletedResidency) && (\r\n\t\t\t\t\t\t\t\t props.searchAgain()}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\tSearch for Account Again\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{props.showLogin && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default AccountAssistance;\r\n","export default class SearchPhysicianModel {\r\n lastName: string\r\n dateOfBirth: string\r\n ssn4: string\r\n siteToken: string\r\n}\r\n\r\nexport class MatchPhysicianResult {\r\n requiresAccountAssistance: boolean;\r\n isExactMatch: boolean;\r\n}","import React, { FormEvent, useState } from \"react\";\r\nimport { Button, Col, Form, OverlayTrigger, Row, Tooltip } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport InputMask from 'react-input-mask';\r\nimport SearchPhysicianModel from \"./Models/SearchPhysicianModel\";\r\nimport { deepCopy } from \"../Shared/Utility/DeepCopy\";\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport { useEffect } from \"react\";\r\nimport { configService } from \"../../Services/Config/ConfigService\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport { ValidatorHelper } from \"../Shared/ValidatorHelper\";\r\nimport { getDateWithOffset } from \"../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps {\r\n onSubmit: (e: FormEvent, model: SearchPhysicianModel) => void;\r\n}\r\nexport function SearchPhysician(props: IProps) {\r\n const [model, setModel] = useState(new SearchPhysicianModel());\r\n const [captchaResponse, setCaptchaResponse] = useState(null);\r\n const [siteKey, setSiteKey] = useState(null);\r\n\r\n var ssn4Ref = React.createRef();\r\n\r\n //Get Captcha Site Key from Config\r\n useEffect(() => {\r\n configService.getConfiguration().then(configuration => {\r\n setSiteKey(configuration.Captcha.SiteKey);\r\n });\r\n }, [])\r\n\r\n //Matching Captcha Timeout\r\n useEffect(() => {\r\n let oneMinute = 60000;\r\n setTimeout(() => setCaptchaResponse(null), oneMinute);\r\n }, [captchaResponse]);\r\n\r\n const updateLastName = (value: string) => {\r\n let updated = deepCopy(model);\r\n updated.lastName = value;\r\n setModel(updated);\r\n }\r\n\r\n const updateDateOfBirth = (value: string) => {\r\n let updated = deepCopy(model);\r\n updated.dateOfBirth = value;\r\n\r\n if (Date.parse(value)) {\r\n updated.dateOfBirth = getDateWithOffset(value).toJSON();\r\n }\r\n\r\n setModel(updated);\r\n }\r\n\r\n const updateLastFourOfSSN = (value: string) => {\r\n ssn4Ref && ValidatorHelper.clearCustomValidation(ssn4Ref.current);\r\n let updated = deepCopy(model);\r\n updated.ssn4 = value;\r\n setModel(updated);\r\n }\r\n\r\n const handleCaptcha = (response: string) => {\r\n setCaptchaResponse(response)\r\n\r\n let updated = deepCopy(model);\r\n updated.siteToken = response;\r\n setModel(updated);\r\n }\r\n\r\n const onSubmit = (e: FormEvent, model: SearchPhysicianModel) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n e.currentTarget.classList.add('was-validated');\r\n if (e.currentTarget.checkValidity() && validate(model)) {\r\n e.currentTarget.classList.remove('was-validated');\r\n props.onSubmit(e, model);\r\n }\r\n }\r\n\r\n const validate = (model: SearchPhysicianModel) => {\r\n var isValid = true;\r\n ValidatorHelper.clearCustomValidation(ssn4Ref.current);\r\n\r\n if (model.ssn4.length !== 4) {\r\n ValidatorHelper.setCustomValidationWithFeedback(ssn4Ref.current, \"You must provide exactly 4 digits.\");\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n if (!siteKey) return \r\n return (\r\n
onSubmit(e, model)}>\r\n \r\n \r\n \r\n \r\n Last Name*\r\n \r\n updateLastName(e.target.value)} />\r\n \r\n \r\n \r\n Date of Birth*\r\n \r\n updateDateOfBirth(e.target.value)} >\r\n {(inputProps: any) => {\r\n return \r\n }}\r\n \r\n \r\n \r\n \r\n Last Four of SSN*\r\n \r\n If you are from Canada, please enter last 4 digits of your SIN\r\n }>\r\n \r\n \r\n \r\n updateLastFourOfSSN(e.target.value)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n handleCaptcha(response)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default SearchPhysician;","import SearchPhysicianModel from \"./SearchPhysicianModel\";\r\n\r\nexport default class ActivateUser {\r\n constructor(model: SearchPhysicianModel, email: string) {\r\n this.lastName = model.lastName;\r\n this.ssn4 = model.ssn4;\r\n this.dateOfBirth = model.dateOfBirth;\r\n this.email = email;\r\n }\r\n\r\n lastName: string;\r\n ssn4: string;\r\n dateOfBirth: string;\r\n email: string;\r\n clientId: string;\r\n registerClientId: string;\r\n}","import React, { FormEvent, useState } from \"react\";\r\nimport { Alert, Button, Card, Col, Form, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { abpnClient, IdentityServerKnownClient } from \"../../Services/AbpnClient\";\r\nimport ActivateUser from \"./Models/ActivateUser\";\r\nimport SearchPhysicianModel from \"./Models/SearchPhysicianModel\";\r\n\r\ninterface IProps {\r\n model: SearchPhysicianModel;\r\n onSave: (userModel: ActivateUser) => void;\r\n}\r\nexport default function UpdateEmail(props: IProps) {\r\n const [email, setEmail] = useState(\"\");\r\n const [emailUnavilable, setEmailUnavaliable] = useState(false);\r\n\r\n const activatePhysician = async (e: FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n e.currentTarget.classList.add('was-validated');\r\n\r\n if (e.currentTarget.checkValidity()) {\r\n e.currentTarget.classList.remove('was-validated');\r\n var activateModel = new ActivateUser(props.model, email);\r\n activateModel.registerClientId = IdentityServerKnownClient.physicianPortal;\r\n\r\n abpnClient.post('/api/profile/ValidateEmail', activateModel, null)\r\n .then(async isValid => {\r\n if (!isValid) {\r\n setEmailUnavaliable(true);\r\n setTimeout(() => {\r\n setEmailUnavaliable(false);\r\n }, 10000)\r\n \r\n return;\r\n }\r\n props.onSave(activateModel);\r\n })\r\n }\r\n }\r\n\r\n return (\r\n
activatePhysician(e)}>\r\n \r\n \r\n \r\n Please enter a personal email address below which will be used to log in to your ABPN Physician Portal account.\r\n
\r\n ABPN highly recommends keeping a personal email address on file to ensure you receive all communications regarding applications, exams, certification requirements, pertinent updates, and to access your ABPN Physician Portal account.\r\n \r\n
\r\n \r\n \r\n \r\n Email Address\r\n *\r\n setEmail(e.target.value)}\r\n defaultValue={email} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","import { Fragment, useEffect, useState } from 'react';\r\nimport { Row, Col } from 'react-bootstrap';\r\nimport { abpnClient } from '../../Services/AbpnClient';\r\nimport { configService } from '../../Services/Config/ConfigService';\r\nimport AvailableExaminationCard from '../Dashboard/Applications/Components/AvailableExaminationCard';\r\nimport { AvailableExamination } from '../Dashboard/Applications/Models/AvailableExamination';\r\nimport AbpnSpinner from '../Shared/Components/AbpnSpinner';\r\nimport { getDateWithOffset } from '../Shared/Utility/GetDateWithOffset';\r\nimport SearchPhysicianModel from './Models/SearchPhysicianModel';\r\n\r\ninterface IProps {\r\n\tsearchModel: SearchPhysicianModel;\r\n\treportNoExams: () => void;\r\n}\r\nconst ActivationSelectExam = (props: IProps) => {\r\n\tconst [ availableExams, setAvailableExams ] = useState([]);\r\n\tconst [ loading, setLoading ] = useState(true);\r\n\tconst [ noExamsAvailable, setNoExamsAvailable ] = useState(false);\r\n\tconst [mailToLink, setMailToLink] = useState(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst getMailToLink = () => {\r\n\t\t\tconfigService.getConfiguration().then(_ => {\r\n\t\t\t\tsetMailToLink(_.PhysicianPortalHelp);\r\n\t\t\t})\r\n\t\t}\r\n\t\tgetMailToLink();\r\n\r\n\t\tabpnClient.get>('/api/application/available', null).then((exams) => {\r\n\t\t\tsetAvailableExams(exams);\r\n\t\t\tsetLoading(false);\r\n\r\n\t\t\tvar hasNoExams = exams.filter((_) => getDateWithOffset(_.applicationAvailableDate) <= new Date()).length === 0;\r\n\t\t\tsetNoExamsAvailable(hasNoExams);\r\n\t\t\tif (hasNoExams) props.reportNoExams();\r\n\t\t});\r\n\t}, []);\r\n\r\n\tif (loading) return ;\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{noExamsAvailable ? (\r\n\t\t\t\t

\r\n\t\t\t\t\tABPN Physician Portal account activation cannot occur at this time because applications are\r\n\t\t\t\t\tcurrently not available. Please return when examination applications become available as noted\r\n\t\t\t\t\tbelow.\r\n\t\t\t\t

\r\n\t\t\t) : (\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tAn ABPN examination needs to be requested in order to begin the ABPN Physician Portal account\r\n\t\t\t\t\t\tactivation process.\r\n\t\t\t\t\t

\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tDo not see your exam here? Please contact ABPN through email at questions@abpn.org with subject \"Physician Portal Help” for assistance.\r\n\t\t\t\t\t\tIf you are a diplomate of another ABMS board (not of ABPN) and you would like to apply for an\r\n\t\t\t\t\t\tABPN administered subspecialty examination, please apply through your parent board.\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\t\r\n\t\t\t\t{availableExams.map((exam: AvailableExamination) => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default ActivationSelectExam;\r\n","import React, { FormEvent, useContext } from \"react\";\r\nimport { useState } from \"react\";\r\nimport { Row, Col, Card, Container, Button } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../Services/AbpnClient\";\r\nimport AbpnSpinner from \"../Shared/Components/AbpnSpinner\";\r\nimport ActionResultMessage from \"../Shared/Components/ActionResultMessage\";\r\nimport HeaderWithTitle from \"../Shared/Components/HeaderWithTitle\";\r\nimport { ActionResult } from \"../Shared/Models/ActionResult\";\r\nimport AccountAssistance from \"./AccountAssistance\";\r\nimport { AuthContext } from \"./AuthProvider\";\r\nimport ActivateUser from \"./Models/ActivateUser\";\r\nimport SearchPhysicianModel, { MatchPhysicianResult } from \"./Models/SearchPhysicianModel\";\r\nimport SearchPhysician from \"./SearchPhysician\";\r\nimport UpdateEmail from \"./UpdateEmail\";\r\nimport ActivationSelectExam from \"./ActivationSelectExam\";\r\n\r\nexport default function SearchForAccount() {\r\n const [matchResult, setMatchResult] = useState(null);\r\n const [model, setModel] = useState(null);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [alert, setAlert] = useState(null);\r\n const [hasCompletedResidency, setHasCompletedResidency] = useState(null);\r\n const [noExamsAvailable, setNoExamsAvailable] = useState(null);\r\n const authContext = useContext(AuthContext);\r\n\r\n\r\n const allowUpdateEmail = matchResult != null && matchResult.isExactMatch && !matchResult.requiresAccountAssistance;\r\n const showExamSelection = matchResult?.requiresAccountAssistance || hasCompletedResidency === false;\r\n const showAccountAssistance = matchResult?.requiresAccountAssistance || hasCompletedResidency;\r\n const showResidency = !matchResult?.isExactMatch && !matchResult?.requiresAccountAssistance && hasCompletedResidency === null && model != null;\r\n const showSearchAgain = !matchResult?.isExactMatch || hasCompletedResidency;\r\n\r\n const matchPhysician = (e: FormEvent, model: SearchPhysicianModel) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!model.siteToken) return;\r\n\r\n e.currentTarget.classList.add('was-validated');\r\n if (e.currentTarget.checkValidity()) {\r\n e.currentTarget.classList.remove('was-validated');\r\n setModel(model);\r\n setIsLoading(true);\r\n\r\n abpnClient.post('/api/profile/MatchPhysician', model, null)\r\n .then(result => {\r\n setMatchResult(result);\r\n setIsLoading(false);\r\n })\r\n }\r\n }\r\n\r\n const searchAgain = () => {\r\n setModel(null);\r\n setMatchResult(null);\r\n setHasCompletedResidency(null);\r\n }\r\n\r\n const registerUserAccount = async (userModel: ActivateUser) => {\r\n setIsLoading(true);\r\n\r\n await abpnClient.post('/api/profile/activate', userModel, null);\r\n await authContext.register(userModel);\r\n\r\n var newAlert = new ActionResult();\r\n newAlert.title = `\"Create Password\" Email Sent`;\r\n newAlert.alertType = \"pp-alert-success\";\r\n newAlert.message = `Please check your ${userModel.email} email account and follow instructions to create your new password within 24 hours.`;\r\n\r\n setAlert(newAlert);\r\n setIsLoading(false);\r\n }\r\n\r\n if (isLoading) return \r\n if (alert) return \r\n if (showAccountAssistance) return \r\n return (\r\n \r\n {model == null && }\r\n {allowUpdateEmail && }\r\n {showExamSelection && !noExamsAvailable && }\r\n {showResidency && }\r\n {noExamsAvailable && }\r\n \r\n \r\n \r\n \r\n {model == null && }\r\n\r\n \r\n \r\n {matchResult != null &&\r\n \r\n \r\n\r\n {/* Match on 3 */}\r\n {allowUpdateEmail &&\r\n \r\n }\r\n\r\n {/* Match on < 2 */}\r\n {showResidency && (\r\n \r\n \r\n \r\n Will you complete or have you completed training in a US ACGME-accredited residency program in 2012 or later?\r\n \r\n \r\n \r\n \r\n \r\n {}\r\n \r\n \r\n \r\n )}\r\n\r\n {showExamSelection &&\r\n setNoExamsAvailable(true)} />\r\n }\r\n \r\n \r\n }\r\n \r\n \r\n \r\n );\r\n}\r\n","import { LookupItem } from \"../../Shared/Models/LookupItem\";\r\n\r\nexport class MedicalEducationModel {\r\n public physicianId: number;\r\n public medicalEducation : MedicalEducation;\r\n public medicalEducationLocationLookupList: Array;\r\n}\r\n\r\nexport class MedicalEducation {\r\n constructor() {\r\n this.isGraduationYearValid = true;\r\n this.isLocationIdValid = true;\r\n }\r\n public medicalEducationId: number;\r\n public physicianId: number;\r\n public graduationYear: number;\r\n public locationId: number;\r\n public isGraduationYearValid: boolean;\r\n public isLocationIdValid: boolean;\r\n}\r\n\r\n","import { Address } from \"./Address\";\r\nimport { MedicalEducation } from './MedicalEducationModel';\r\n\r\nexport default class PhysicianCreation {\r\n constructor() {\r\n this.address = new Address();\r\n this.name = new PhysicianName();\r\n this.medicalEducation = new MedicalEducation();\r\n }\r\n name: PhysicianName;\r\n address: Address;\r\n medicalEducation: MedicalEducation;\r\n ssn4: string;\r\n email: string;\r\n dateOfBirth: string;\r\n examinationAppliedToId: number;\r\n}\r\n\r\nexport class PhysicianName {\r\n firstName: string;\r\n lastName: string;\r\n middleName: string;\r\n suffix: string;\r\n title: string;\r\n}","import React, { Fragment, useEffect } from \"react\";\r\nimport { Card, Row, Col, Form} from \"react-bootstrap\";\r\nimport { deepCopy } from \"../Shared/Utility/DeepCopy\";\r\nimport { MedicalEducation, MedicalEducationModel } from \"../Physician/Models/MedicalEducationModel\";\r\n\r\ninterface IProps {\r\n medicalEducationModel: MedicalEducationModel;\r\n medicalEducation: MedicalEducation;\r\n runValidation: boolean;\r\n isFormValid: boolean;\r\n updateMedicalEducation: (medicalEducation: MedicalEducation) => void;\r\n updateMedicalEducationValidation: (isValid: boolean) => void;\r\n}\r\n\r\nexport function MedicalEducationCard(props: IProps) {\r\n\r\n useEffect(() => {\r\n if (props.runValidation) validate();\r\n }, [props.runValidation]);\r\n\r\n const updateLocationId = (e: React.ChangeEvent) => {\r\n var updated = deepCopy(props.medicalEducation);\r\n updated.locationId = e.target.value ? props.medicalEducationModel.medicalEducationLocationLookupList.find(_ => _.id === parseInt(e.target.value)).id : null;\r\n props.updateMedicalEducation(updated);\r\n }\r\n\r\n const updateGraduationYear = (e: React.ChangeEvent) => {\r\n var updated = deepCopy(props.medicalEducation);\r\n updated.graduationYear = parseInt(e.target.value);\r\n props.updateMedicalEducation(updated);\r\n }\r\n\r\n const validate = () => {\r\n const form = document.getElementById(\"medicalSchoolForm\") as HTMLFormElement;\r\n\r\n props.updateMedicalEducationValidation(form.checkValidity());\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Medical School\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n Graduation Year*\r\n ) => {updateGraduationYear(e)}}>\r\n \r\n \r\n \r\n \r\n \r\n Medical School Location*\r\n ) => { updateLocationId(e)}}\r\n defaultValue={\"\"}>\r\n \r\n {props.medicalEducationModel.medicalEducationLocationLookupList.map(x => ())}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default MedicalEducationCard;\r\n","import React, { Fragment, useEffect, useState } from \"react\";\r\nimport { Card, Row, Col, Form, Tooltip, OverlayTrigger} from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../Services/AbpnClient\";\r\nimport ActivateUser from \"./Models/ActivateUser\";\r\nimport { ApplicationPaths } from \"../../Services/Auth/AuthConstants\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\ninterface IProps {\r\n runValidation: boolean;\r\n isEmailFormValid: boolean;\r\n userModel: ActivateUser;\r\n updatePersonalEmail: (email: string) => void;\r\n updateEmailValidation: (isFormValid: boolean) => void;\r\n}\r\n\r\nexport function PersonalEmailCard(props: IProps) {\r\n const [isNewEmailUnique, setIsNewEmailUnique] = useState(null);\r\n const [isFormatValid, setIsFormatValid] = useState(true);\r\n\r\n var encodedLoginUrl = encodeURIComponent(ApplicationPaths.DefaultLoginRedirectPath);\r\n\r\n let validFormatAndNotUniqueEmail = (isFormatValid === true && isNewEmailUnique === false);\r\n\r\n useEffect(() => {\r\n if (props.runValidation) validate();\r\n }, [props.runValidation]);\r\n\r\n const validate = async () => {\r\n const form = document.getElementById(\"personalEmail\") as HTMLFormElement;\r\n var isEmailValid = form.checkValidity();\r\n setIsFormatValid(isEmailValid);\r\n\r\n if (isEmailValid) {\r\n await abpnClient.post('/api/profile/validateEmail', props.userModel, null)\r\n .then((response: boolean) => {\r\n setIsNewEmailUnique(response);\r\n isEmailValid = response;\r\n });\r\n }\r\n props.updateEmailValidation(isEmailValid);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Security\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n Personal Email Address\r\n *\r\n \r\n ABPN highly recommends keeping a personal email address on file to ensure\r\n you receive all communications regarding applications, exams,\r\n certification requirements, pertinent updates, and to access your ABPN\r\n Physician Portal account.\r\n This will be used to log into the Physician Portal.\r\n }>\r\n \r\n \r\n \r\n ) => {props.updatePersonalEmail(e.target.value)}}>\r\n {props.isEmailFormValid === false && \r\n \r\n Please enter a valid email address.\r\n \r\n }\r\n {isNewEmailUnique === false &&\r\n

\r\n This email address is already associated with an account. If the account is yours, then \r\n Log In \r\n using that email address, otherwise enter a different email address. \r\n

\r\n }\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default PersonalEmailCard;\r\n","import React, { Fragment, useEffect, useState } from \"react\";\r\nimport { Card, Row, Col, Form} from \"react-bootstrap\";\r\nimport { PhysicianName } from \"../Physician/Models/PhysicianCreation\";\r\nimport { deepCopy } from \"../Shared/Utility/DeepCopy\";\r\nimport { getDateWithOffset } from \"../Shared/Utility/GetDateWithOffset\";\r\nimport SearchPhysicianModel from './Models/SearchPhysicianModel';\r\ninterface IProps {\r\n physicianData: SearchPhysicianModel;\r\n runValidation: boolean;\r\n isFormValid: boolean;\r\n updatePersonalInformation: (name: PhysicianName) => void;\r\n updatePersonalInformationValidation: (isValid: boolean) => void;\r\n}\r\n\r\nexport function PersonalInformationCard(props: IProps) {\r\n const [name, setName] = useState(null);\r\n\r\n useEffect(() => {\r\n if (props.runValidation) validate();\r\n }, [props.runValidation]);\r\n\r\n useEffect(() => {\r\n const createPhysicianName = () => {\r\n var newName = new PhysicianName();\r\n newName.lastName = props.physicianData.lastName;\r\n setName(newName);\r\n }\r\n createPhysicianName();\r\n }, []);\r\n\r\n const updateFirstName = (e: React.ChangeEvent) => {\r\n var updatedName = deepCopy(name);\r\n updatedName.firstName = e.target.value;\r\n setName(updatedName);\r\n props.updatePersonalInformation(updatedName);\r\n }\r\n\r\n const updateMiddleName = (e: React.ChangeEvent) => {\r\n var updatedName = deepCopy(name);\r\n updatedName.middleName = e.target.value;\r\n setName(updatedName);\r\n props.updatePersonalInformation(updatedName);\r\n }\r\n\r\n const updateSuffix = (e: React.ChangeEvent) => {\r\n var updatedName = deepCopy(name);\r\n updatedName.suffix = e.target.value;\r\n setName(updatedName);\r\n props.updatePersonalInformation(updatedName);\r\n }\r\n const updateTitle = (e: React.ChangeEvent) => {\r\n var updatedName = deepCopy(name);\r\n updatedName.title = e.target.value;\r\n setName(updatedName);\r\n props.updatePersonalInformation(updatedName);\r\n }\r\n\r\n const validate = () => {\r\n const form = document.getElementById(\"nameForm\") as HTMLFormElement;\r\n\r\n props.updatePersonalInformationValidation(form.checkValidity());\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Personal\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n First Name*\r\n ) => {updateFirstName(e)}}>\r\n \r\n \r\n \r\n \r\n Middle Name\r\n ) => {updateMiddleName(e)}}>\r\n \r\n \r\n \r\n \r\n Last Name\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Suffix\r\n ) => {updateSuffix(e)}}>\r\n \r\n \r\n \r\n \r\n Title*\r\n ) => {updateTitle(e)}}>\r\n \r\n \r\n \r\n \r\n Date of Birth\r\n \r\n \r\n \r\n \r\n \r\n Last 4 Digits of SSN\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default PersonalInformationCard;\r\n","import React, { useEffect, useState, useContext } from \"react\";\r\nimport { Button, Container, Row } from \"react-bootstrap\";\r\nimport { Link, useLocation } from \"react-router-dom\";\r\nimport { abpnClient, IdentityServerKnownClient } from \"../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../Auth/AuthProvider\";\r\nimport { MedicalEducation } from \"../Physician/Models/MedicalEducationModel\";\r\nimport Physician from \"../Physician/Models/Physician\";\r\nimport PhysicianCreation, { PhysicianName } from \"../Physician/Models/PhysicianCreation\";\r\nimport MedicalEducationCard from \"./MedicalEducationCard\";\r\nimport PersonalEmailCard from \"./PersonalEmailCard\";\r\nimport { deepCopy } from \"../Shared/Utility/DeepCopy\";\r\nimport { AbpnSpinner } from './../Shared/Components/AbpnSpinner';\r\nimport { PersonalInformationCard } from './PersonalInformationCard';\r\nimport { ApplicantInformation } from '../Shared/Components/ApplicantInformation';\r\nimport { Address } from \"../Physician/Models/Address\";\r\nimport SearchPhysicianModel from \"./Models/SearchPhysicianModel\";\r\nimport ActivateUser from \"./Models/ActivateUser\";\r\nimport ActionResultMessage from './../Shared/Components/ActionResultMessage';\r\nimport HeaderWithTitle from './../Shared/Components/HeaderWithTitle';\r\nimport { ApplicationPaths } from \"../../Services/Auth/AuthConstants\";\r\nimport CreatePhysicianModel from './../Physician/Models/CreatePhysicianModel';\r\n\r\ntype TParams = { data: SearchPhysicianModel, examinationId: number };\r\n\r\nexport function PersonalInformation() {\r\n const authContext = useContext(AuthContext);\r\n const location = useLocation();\r\n const data = location.state.data;\r\n\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [physicianModel, setPhysicianModel] = useState(null);\r\n const [newPhysician, setNewPhysician] = useState(null);\r\n const [showAlert, setShowAlert] = useState(false);\r\n const [runValidation, setRunValidation] = useState(false);\r\n const [isMedicalEducationFormValid, setIsMedicalEducationFormValid] = useState(null);\r\n const [isPersonalInfoFormValid, setIsPersonalInfoFormValid] = useState(null);\r\n const [isAddressFormValid, setIsAddressFormValid] = useState(null);\r\n const [isNewEmailValid, setIsNewEmailValid] = useState(null);\r\n const [userModel, setUserModel] = useState(null);\r\n\r\n useEffect(() => {\r\n const getFormLookupItems = () => {\r\n abpnClient.get(`/api/Profile/GetPhysicianFormLookupItems`, null)\r\n .then(result => {\r\n setPhysicianModel(result);\r\n setIsLoading(false);\r\n });\r\n }\r\n\r\n const createNewPhysician = () => {\r\n var physician = new PhysicianCreation();\r\n physician.name.lastName = data.lastName;\r\n physician.dateOfBirth = data.dateOfBirth;\r\n physician.ssn4 = data.ssn4;\r\n\r\n setNewPhysician(physician);\r\n }\r\n createNewPhysician();\r\n getFormLookupItems();\r\n }, []);\r\n\r\n const validateAndSave = () => {\r\n let newUserModel = new ActivateUser(data, newPhysician.email);\r\n newUserModel.registerClientId = IdentityServerKnownClient.physicianPortal;\r\n setUserModel(newUserModel);\r\n setRunValidation(true);\r\n }\r\n\r\n useEffect(() => {\r\n const CreatePhysician = async () => {\r\n setRunValidation(false);\r\n setIsLoading(true);\r\n\r\n let model: CreatePhysicianModel = {\r\n physician: newPhysician,\r\n examinationId: location.state.examinationId\r\n }\r\n\r\n await abpnClient.post(\"/api/profile/CreatePhysician\", model, null);\r\n await authContext.register(userModel);\r\n setIsLoading(false);\r\n setShowAlert(true);\r\n }\r\n\r\n if (isMedicalEducationFormValid\r\n && isPersonalInfoFormValid\r\n && isAddressFormValid\r\n && isNewEmailValid) {\r\n CreatePhysician();\r\n }\r\n }, [isMedicalEducationFormValid, isPersonalInfoFormValid, isAddressFormValid, isNewEmailValid]);\r\n\r\n const updateMedicalEducation = (medicalEducation: MedicalEducation) => {\r\n setRunValidation(false);\r\n var updated = deepCopy(newPhysician);\r\n updated.medicalEducation = medicalEducation;\r\n setNewPhysician(updated);\r\n }\r\n\r\n const updatePersonalEmail = (email: string) => {\r\n setRunValidation(false);\r\n var updated = deepCopy(newPhysician);\r\n updated.email = email;\r\n setIsNewEmailValid(null);\r\n setNewPhysician(updated);\r\n }\r\n\r\n const updatePhysicianName = (name: PhysicianName) => {\r\n setRunValidation(false);\r\n var updated = deepCopy(newPhysician);\r\n updated.name = name;\r\n setNewPhysician(updated);\r\n }\r\n\r\n const updateContactAddress = (addresses: Array
) => {\r\n var contactAddress = addresses.find(_ => _.isContact);\r\n var updated = deepCopy(newPhysician);\r\n updated.address = contactAddress;\r\n setNewPhysician(updated);\r\n setIsAddressFormValid(contactAddress.isValid);\r\n }\r\n\r\n if (isLoading) return \r\n\r\n if (showAlert) return \r\n\r\n return (\r\n \r\n \r\n\r\n updatePhysicianName(name)}\r\n updatePersonalInformationValidation={(isPersonalInformationValid: boolean) => setIsPersonalInfoFormValid(isPersonalInformationValid)} />\r\n\r\n ) => updateContactAddress(addresses)}\r\n onUpdate={() => setRunValidation(false)} />\r\n\r\n updatePersonalEmail(email)}\r\n updateEmailValidation={(isEmailFormValid: boolean) => setIsNewEmailValid(isEmailFormValid)} />\r\n\r\n updateMedicalEducation(medicalEducation)}\r\n updateMedicalEducationValidation={(isMedicalEducationValid: boolean) => setIsMedicalEducationFormValid(isMedicalEducationValid)} />\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default PersonalInformation;","import React from \"react\";\r\nimport { Col, Form, Row } from \"react-bootstrap\";\r\nimport { CCAssessmentType } from \"../../Physician/Models/CCEnrollment\";\r\nimport CcAssessmentPathwayEnrollment from \"../Models/CcAssessmentPathwayEnrollment\";\r\n\r\ninterface IProps{\r\n pathwayEnrollment: CcAssessmentPathwayEnrollment;\r\n}\r\nexport default function ArticleRequirementPreview(props: IProps){\r\n\r\n const getAbccCertifications = () => {\r\n return props.pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled && _.isAbccEligible && _.ccAssessmentType == CCAssessmentType.Article);\r\n }\r\n\r\n const getTotalArticlesRequired = () =>{\r\n var totalRequired = props.pathwayEnrollment.articlePathwayFlexRequirement;\r\n totalRequired = totalRequired + (getAbccCertifications().length * props.pathwayEnrollment.articlePathwayPerCertificationMinimum);\r\n return totalRequired;\r\n }\r\n\r\n if (getAbccCertifications().length == 0) return ();\r\n return (\r\n \r\n
\r\n

ABCC Requirements

\r\n \r\n

The following summarizes the article exam requirements that will be required in each 3 year block.

\r\n
\r\n \r\n \r\n \r\n Certification\r\n Article Exams Required\r\n \r\n {props.pathwayEnrollment.ccEnrollmentCertificates && getAbccCertifications().length == 1 ? \r\n \r\n {getAbccCertifications()[0].certificationName}\r\n {props.pathwayEnrollment.articlePathwayPerCertificationMinimum + props.pathwayEnrollment.articlePathwayFlexRequirement}\r\n :\r\n getAbccCertifications().map(abccCert => \r\n \r\n {abccCert.certificationName}\r\n {props.pathwayEnrollment.articlePathwayPerCertificationMinimum}\r\n \r\n )}\r\n {getAbccCertifications().length > 1 ? \r\n \r\n \r\n Flex\r\n {props.pathwayEnrollment.articlePathwayFlexRequirement}\r\n \r\n \r\n Total\r\n {getTotalArticlesRequired()}\r\n \r\n : \r\n null}\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}","import React from \"react\";\r\nimport { Col, Form, Row } from \"react-bootstrap\";\r\nimport { CCAssessmentType } from \"../../Physician/Models/CCEnrollment\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\nimport CcAssessmentPathwayEnrollment from \"../Models/CcAssessmentPathwayEnrollment\";\r\n\r\ninterface IProps{\r\n pathwayEnrollment: CcAssessmentPathwayEnrollment;\r\n}\r\nexport default function ExamRequirementPreview(props: IProps){\r\n const getAbccInEligibleCerts = () => {\r\n return props.pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled && (_.ccAssessmentType == CCAssessmentType.Other));\r\n }\r\n\r\n const getExamCertifications = () => {\r\n return props.pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled && (_.ccAssessmentType == CCAssessmentType.Exam || _.ccAssessmentType == CCAssessmentType.Other));\r\n }\r\n\r\n const getExamAssessmentTitle = () => {\r\n return getAbccInEligibleCerts().length > 0 ? \"Exam/Assessment\" : \"Exam\"; \r\n }\r\n\r\n const formatExamDue = (value: string) => {\r\n var date = getDateWithOffset(value);\r\n if (date == null) return \"\"\r\n return date.getFullYear();\r\n }\r\n\r\n if (getExamCertifications().length == 0) return ();\r\n return (\r\n \r\n
\r\n

{getExamAssessmentTitle()} Requirements

\r\n \r\n \r\n \r\n Certification\r\n {getExamAssessmentTitle()} Due\r\n \r\n {getExamCertifications().map(_ => \r\n \r\n {_.certificationName} {(!_.isAbccEligible) && ** }\r\n {formatExamDue(_.expirationDate)}\r\n \r\n )}\r\n \r\n \r\n \r\n

** For certifications that are not administered by the ABPN, the date below reflects the year by which an application must be submitted to the ABPN and an examination must be passed or a longitudinal assessment begun.

\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\n","import { CCAssessmentType } from \"../../Physician/Models/CCEnrollment\";\r\n\r\n\r\nexport default class CcAssessmentPathwayEnrollment {\r\n ccEnrollmentId: number;\r\n currentBlockStart: string;\r\n currentBlockEnd: string;\r\n currentBlockExtensionDate: string;\r\n oneCertificationAnnualFee: number;\r\n twoCertificationAnnualFee: number;\r\n threeOrMoreCertificationAnnualFee: number;\r\n articlePathwayPerCertificationMinimum: number;\r\n articlePathwayFlexRequirement: number;\r\n\r\n ccEnrollmentCertificates: Array;\r\n\r\n \r\n}\r\n\r\nexport class CcAssessmentPathwayEnrollmentCertificate{\r\n cCEnrollmentCertificateId: number;\r\n certificateId: number;\r\n certificationName: string;\r\n certificationGeneration: number;\r\n expirationDate: string;\r\n isAbccEligible: boolean;\r\n isEnrolled: boolean;\r\n isFuture: boolean;\r\n enrollmentStartDate: string;\r\n enrollmentEndDate: string;\r\n ccAssessmentType: CCAssessmentType;\r\n ccAssessmentAttestationDate: string;\r\n lastArticleAssessmentEnrolledDate: string;\r\n}\r\n\r\nexport class CCAssessmentPathwayHelper{\r\n static getAnnualFee = (pathwayEnrollment: CcAssessmentPathwayEnrollment) : number => {\r\n var numCertificates = pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled).length;\r\n console.log(numCertificates);\r\n if (numCertificates == 0) return 0;\r\n if (numCertificates == 1) return pathwayEnrollment.oneCertificationAnnualFee;\r\n if (numCertificates == 2) return pathwayEnrollment.twoCertificationAnnualFee;\r\n return pathwayEnrollment.threeOrMoreCertificationAnnualFee;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Col, Form, Row } from \"react-bootstrap\";\r\nimport CcAssessmentPathwayEnrollment, { CCAssessmentPathwayHelper } from \"../Models/CcAssessmentPathwayEnrollment\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\n\r\n\r\ninterface IProps{\r\n pathwayEnrollment: CcAssessmentPathwayEnrollment;\r\n}\r\n\r\nexport default function AnnualFeePreview(props: IProps){\r\n const getEnrolledCertificates = () => {\r\n return props.pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled);\r\n }\r\n\r\n \r\n return(\r\n \r\n
\r\n

Annual Fee

\r\n \r\n \r\n \r\n Certification\r\n \r\n {getEnrolledCertificates().map(_ => \r\n \r\n {_.certificationName} { _.isFuture && (Fee will be applied starting: {getDateWithOffset(_.enrollmentStartDate).toLocaleDateString('en-US')})}\r\n \r\n )}\r\n \r\n Total: ${CCAssessmentPathwayHelper.getAnnualFee(props.pathwayEnrollment)}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}","import React from \"react\";\r\nimport { Button, Card, Col, Form, Row } from \"react-bootstrap\";\r\nimport { CCEnrollment } from \"../../Physician/Models/CCEnrollment\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport CcAssessmentPathwayEnrollment from \"../Models/CcAssessmentPathwayEnrollment\";\r\n\r\nimport ArticleRequirementPreview from \"./ArticleRequirementPreview\";\r\nimport ExamRequirementPreview from \"./ExamRequirementPreview\";\r\nimport AnnualFeePreview from \"./AnnualFeePreview\";\r\n\r\ninterface IProps {\r\n isSectionOpen: boolean;\r\n onSave?: () => void;\r\n onUpdate?: () => void;\r\n onOpen?: () => void;\r\n disabled?: boolean;\r\n isLoading?: boolean;\r\n onContinue: () => void;\r\n onPrevious: () => void; \r\n currentEnrollment: CCEnrollment;\r\n pathwayEnrollment: CcAssessmentPathwayEnrollment;\r\n}\r\n\r\nexport default function ReviewRequirements(props: IProps){\r\n\r\n const onSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (validateSelection()) {\r\n props.onContinue();\r\n }\r\n }\r\n\r\n const onPrevious = async (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n props.onPrevious();\r\n }\r\n\r\n const validateSelection = () => {\r\n return true;\r\n }\r\n \r\n if (props.isLoading) return \r\n return (\r\n \r\n { !(props.disabled) &&\r\n \r\n \r\n \r\n REQUIREMENTS\r\n \r\n \r\n \r\n
onSubmit(e)}>\r\n \r\n

Please review your CC Requirements

\r\n
\r\n {props.isLoading ? : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n }\r\n
\r\n )\r\n}","import React from \"react\";\r\nimport { Button, Col, Form, OverlayTrigger, Row, Tooltip } from \"react-bootstrap\";\r\nimport { CCAssessmentType } from \"../../Physician/Models/CCEnrollment\";\r\nimport { CertificationGeneration } from \"../../Physician/Models/Certificate\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\nimport { CcAssessmentPathwayEnrollmentCertificate } from \"../Models/CcAssessmentPathwayEnrollment\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\n\r\ninterface IProps{\r\n certificate: CcAssessmentPathwayEnrollmentCertificate;\r\n updateEnrollmentCert: (certificate: CcAssessmentPathwayEnrollmentCertificate) => void;\r\n}\r\nexport default function SelectCertificationRow(props: IProps){\r\n const updateCcAssessmentType = (ccAssessmentType: CCAssessmentType) => {\r\n var updatedCert = deepCopy(props.certificate);\r\n updatedCert.ccAssessmentType = ccAssessmentType;\r\n if (ccAssessmentType !== CCAssessmentType.Article){\r\n updatedCert.lastArticleAssessmentEnrolledDate = new Date().toString();\r\n } else{\r\n updatedCert.lastArticleAssessmentEnrolledDate = null;\r\n }\r\n \r\n props.updateEnrollmentCert(updatedCert);\r\n }\r\n\r\n const updateCertIsEnrolled = (isEnrolled: boolean) => {\r\n var updatedCert = deepCopy(props.certificate);\r\n updatedCert.isEnrolled = isEnrolled;\r\n if (!isEnrolled){\r\n updatedCert.ccAssessmentType = null;\r\n }\r\n \r\n props.updateEnrollmentCert(updatedCert);\r\n \r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {props.certificate.certificationName}\r\n {props.certificate.isEnrolled && props.certificate.isFuture &&
(Requirements Begin: {getDateWithOffset(props.certificate.enrollmentStartDate).toLocaleDateString('en-US')})
}\r\n \r\n \r\n \r\n \r\n {props.certificate.isEnrolled ? \r\n \r\n {props.certificate.isAbccEligible ? \r\n Select pathway*\r\n \r\n

Article Pathway (ABCC): Diplomates will complete a set of mini exams based on articles from various medical journals per 3-year block

\r\n

Exam Pathway: Diplomates will be required to apply for and pass a traditional recertification examination every ten years

\r\n }>\r\n \r\n \r\n
\r\n \r\n\r\n \r\n \r\n updateCcAssessmentType(CCAssessmentType.Article)} />\r\n Article Pathway (ABCC)\r\n \r\n \r\n \r\n \r\n updateCcAssessmentType(CCAssessmentType.Exam)} />\r\n Exam Pathway\r\n \r\n \r\n
: \r\n \r\n ABPN's ABCC pathway is not an option for this certification. Please see the ABPN Website for more details.\r\n }\r\n
\r\n : \r\n \r\n {props.certificate.certificationGeneration === CertificationGeneration.Lifetime \r\n && !props.certificate.isEnrolled &&\r\n
\r\n \r\n
}\r\n\r\n \r\n
}\r\n
\r\n \r\n \r\n {props.certificate.certificationGeneration === CertificationGeneration.Lifetime \r\n && props.certificate.isEnrolled &&\r\n
\r\n \r\n
\r\n }\r\n \r\n
\r\n \r\n
\r\n
\r\n
)\r\n}","import React, { useState } from \"react\";\r\nimport { Alert, Button, Card, Col, Form, Row } from \"react-bootstrap\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\nimport { CcAssessmentPathwayEnrollmentCertificate } from \"../Models/CcAssessmentPathwayEnrollment\";\r\nimport SelectCertificationRow from \"./SelectCertificationRow\";\r\n\r\ninterface IProps {\r\n isSectionOpen: boolean;\r\n onSave?: () => void;\r\n onUpdate?: () => void;\r\n onOpen?: () => void;\r\n disabled?: boolean;\r\n isLoading?: boolean;\r\n onContinue: () => void;\r\n certificates: Array;\r\n updateCertificates: (certificates: Array) => void;\r\n}\r\n\r\nexport default function SelectCertifications(props: IProps){\r\n const [errorMessages, setErrorMessages] = useState([]);\r\n \r\n const onSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (validateSelection()) {\r\n props.onContinue();\r\n }\r\n }\r\n\r\n const validateSelection = () => {\r\n console.log(props.certificates);\r\n let newErrorMessages = [];\r\n var unselectedCerts = props.certificates.filter(_ => _.isEnrolled && (_.ccAssessmentType === null));\r\n if (unselectedCerts.length > 0)\r\n {\r\n newErrorMessages.push(\"You must select a pathway for all enrolled certifications\");\r\n }\r\n \r\n setErrorMessages(newErrorMessages);\r\n return newErrorMessages.length === 0;\r\n }\r\n\r\n const onUpdateEnrollmentCert = (certificate: CcAssessmentPathwayEnrollmentCertificate)=> {\r\n // Get Certificate from props and update, then send the collection back to parent\r\n var updated = deepCopy(props.certificates);\r\n var index = updated.findIndex((_: CcAssessmentPathwayEnrollmentCertificate) => _.certificateId == certificate.certificateId);\r\n updated[index] = certificate;\r\n props.updateCertificates(updated);\r\n\r\n }\r\n \r\n if (props.isLoading) return \r\n return (\r\n \r\n { !(props.disabled) &&\r\n \r\n \r\n \r\n CERTIFICATIONS\r\n \r\n \r\n \r\n
onSubmit(e)}>\r\n \r\n \r\n

Please review your certifications eligible for Continuing Certification

\r\n {props.certificates.map((certificate: CcAssessmentPathwayEnrollmentCertificate) => \r\n \r\n )}\r\n \r\n
\r\n {errorMessages.length > 0 &&\r\n \r\n {errorMessages.map(errorMessage =>

{errorMessage}

)}\r\n
\r\n }\r\n {props.isLoading ? : \r\n \r\n \r\n  \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n }\r\n
\r\n )\r\n}","import React from \"react\";\r\nimport { Form } from \"react-bootstrap\";\r\nimport { CcAssessmentPathwayEnrollmentCertificate } from \"../Models/CcAssessmentPathwayEnrollment\";\r\n\r\n\r\ninterface IProps{\r\n abccCertificates: Array;\r\n updateCertificateAttestation: (certificate: CcAssessmentPathwayEnrollmentCertificate) => void;\r\n}\r\n\r\nexport default function ArticlePathwayTerms(props: IProps){\r\n \r\n const updateCertificateAttestations = (e: React.ChangeEvent) => {\r\n for (var i = 0; i < props.abccCertificates.length; i++){\r\n var updated = props.abccCertificates[i];\r\n updated.ccAssessmentAttestationDate = e.target.checked ? new Date().toString() : null;\r\n props.updateCertificateAttestation(updated);\r\n }\r\n }\r\n\r\n\r\n return (\r\n \r\n \r\n Article Based Continuing Certification (ABCC) Policy Statement\r\n \r\n \r\n
\r\n

I agree the Board is the final judge of my qualifications for admission to examination and for certification. I agree that the Board may disqualify me from examination, from certification, or may cancel my certification \r\n in the event that the Board determines that any information furnished by me was false or that I violated any Board rule or policy.

\r\n

I agree that irregular or improper behavior, such as giving, obtaining, or receiving information or aid, failing to comply with instructions, disregarding time limits, taking any recordings of the examination or \r\n other disruptive behavior will be considered an attempt to subvert the certification process. I understand that the examination material is confidential and copyrighted. I agree not to copy, reproduce, record, stream, \r\n or disclose examination materials or content, at any time. These and other irregular or improper behaviors, as evidenced by observation, by subsequent statistical analysis, or by other means, may be cause for \r\n the Board to terminate my examination, invalidate my examination results, bar me from admission to future examinations or certification, and to take other appropriate actions.

\r\n

I agree not to share questions or answers included in the examinations. I will not choose journal article exams for which I am an author.

\r\n

Professionalism forms the basis of medicine’s contract with society. The ABPN is concerned with those aspects of professionalism that are demonstrated through a physician’s clinical competence, commitment to \r\n lifelong learning and professional improvement, interpersonal skills, and ethical understanding and behavior. In its credentialing, certification, and CC/MOC programs, \r\n the ABPN seeks to assess and document that its candidates and diplomates possess and maintain these aspects of professionalism.

\r\n

Pursuant to HIPPA, any related regulations, and any applicable state laws, I agree not to use or disclose health information used or disclosed in any Board examination.

\r\n

I understand that the Board makes academic and scientific judgments in its evaluation of the results of its examinations, and that situations may occur, even through no fault of mine, \r\n that will render my examination results unreliable in the judgement of the Board. I agree that if the Board determines that the results of my examination are unreliable, \r\n the Board may require me to retake that examination.

\r\n

I consent to the fact that my certification status is public information and that the Board will make it publicly available. In addition, I authorize the Board to release information about me in accordance \r\n with the Board’s Privacy Policy, https://www.abpn.org/terms-of-use/ including but not limited to informing program director(s) from which I took training as to my performance on any or all of the Board’s \r\n examinations taken by me at any time. In addition, I also authorize the Board to, at its discretion, release information contained in this application, my examination results, and examination scores to \r\n researchers selected by the Board to study the testing and evaluation programs of the Board under appropriateconditions of confidentiality established by the Board. Any studies reported by the Board will \r\n contain information about candidates and diplomates only in the aggregate, and the names of individuals will not be revealed in any publications. I hereby release and agree to hold harmless the Board and any of the Board’s employees,\r\n directors or representatives from any liability arising out of the Board’s disclosing of information pertaining to me. This release and hold harmless includes liability for the inaccuracy of such information, \r\n so long as such information was provided in good faith.

\r\n

I hereby release and discharge the Board, its directors, officers, employees, examiners, representatives, and agents from any actions, suits, obligations, claims, or demands arising out of, or in connection with \r\n participation in the Continuing Certification program and Article based Assessment pathway, the scoring given with respect to any examination, or the failure of the Board to issue me such certificate.

\r\n

Notwithstanding the preceding release, if a claim is allowed, I AGREE AND CONSENT TO THE JURISDICTION AND THE LAWS OF ILLINOIS AND EXCLUSIVE VENUE IN LAKE COUNTY, ILLINOIS. In addition,\r\n I EXPRESSLY WAIVE ANY RIGHT TO ASSERT ANY CLAIMS (whether before a jury, judge, administrative judge or board or in arbitration) AGAINST THE BOARD AS A REPRESENTATIVE OR MEMBER IN ANY CLASS ACTION, \r\n except where such waiver is prohibited by law. To the extent either party is permitted to proceed with a class action, the parties agree that (i) the prevailing party shall not be entitled to recover attorneys’ fees \r\n or costs associated with pursuing the class action and (ii) the party who participates as a member of a class action will not submit a claim or otherwise participate in any recovery secured through the class action, by settlement or judgment.

\r\n

See the website for additional Article Based Continuing Certification (ABCC) information.

\r\n

See the General Policies regarding taking a CC/MOC examination here: https://www.abpn.org/wp-content/uploads/2021/07/2022-ABPN-General-Information-and-Board-Policies.pdf

\r\n

No extensions or additional time will be granted for completing the journal article assessments. All assessments must be completed and submitted by the date indicated in the Physician Portal/Folios account.

\r\n

\r\n Qualifications for test accommodations for applicants with disabilities can be found on the ABPN website policies section. \r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n I hereby declare under penalty of perjury I agree to the terms and conditions of the Article Based Continuing Certification (ABCC) Pathway. I intend to be legally bound by the foregoing.\r\n Please attest to the above before continuing\r\n \r\n \r\n
\r\n );\r\n}","import React from \"react\";\r\nimport { Form } from \"react-bootstrap\";\r\nimport { CcAssessmentPathwayEnrollmentCertificate } from \"../Models/CcAssessmentPathwayEnrollment\";\r\n\r\n\r\ninterface IProps{\r\n examCertificates: Array;\r\n updateCertificateAttestation: (certificate: CcAssessmentPathwayEnrollmentCertificate) => void;\r\n}\r\n\r\nexport default function ExamPathwayTerms(props: IProps){\r\n \r\n const updateCertificateAttestations = (e: React.ChangeEvent) => {\r\n for (var i = 0; i < props.examCertificates.length; i++){\r\n var updated = props.examCertificates[i];\r\n updated.ccAssessmentAttestationDate = e.target.checked ? new Date().toString() : null;\r\n props.updateCertificateAttestation(updated);\r\n }\r\n }\r\n\r\n return(\r\n \r\n \r\n CC Exam Application Policy Statement\r\n \r\n \r\n
\r\n

I agree the Board is the final judge of my qualifications for admission to examination and for certification. I agree that the Board may disqualify me from examination, from certification, or may cancel my certification \r\n in the event that the Board determines that any information furnished by me was false or that I violated any Board rule or policy.

\r\n

I agree to not bring food, drink, phones, pagers, or other electronic devices, books, study materials, personal belongings including watches and wallets, or other prohibited materials into an examination room. \r\n I agree not to make any phone calls during an examination session.

\r\n

I agree that irregular or improper behavior, such as giving, obtaining, or receiving information or aid, removing any examination materials from the test center, failing to comply with instructions, disregarding time limits, \r\n taking any recordings of the examination or other disruptive behavior will be considered an attempt to subvert the certification process. I understand that the examination material is confidential and copyrighted. \r\n I agree not to copy, reproduce, record, stream, or disclose examination materials or content, at any time. These and other irregular or improper behaviors, as evidenced by observation, by subsequent statistical analysis, \r\n or by other means, may be cause for the Board to terminate my examination, invalidate my examination results, bar me from admission to future examinations or certification, and to take other appropriate actions.

\r\n

Professionalism forms the basis of medicine’s contract with society. The ABPN is concerned with those aspects of professionalism that are demonstrated through a physician’s clinical competence, commitment to lifelong learning \r\n and professional improvement, interpersonal skills, and ethical understanding and behavior. In its credentialing, certification, and CC/MOC programs, the ABPN seeks to assess and document that its candidates and diplomates possess and maintain these aspects of professionalism.

\r\n

Pursuant to HIPPA, any related regulations, and any applicable state laws, I agree not to use or disclose health information used or disclosed in any Board examination.

\r\n

I understand that the Board makes academic and scientific judgments in its evaluation of the results of its examinations, and that situations may occur, even through no fault of mine, that will render my examination results unreliable in \r\n the judgement of the Board. I agree that if the Board determines that the results of my examination are unreliable, the Board may require me to retake that examination.

\r\n

I consent to the fact that my certification status is public information and that the Board will make it publicly available. In addition, I authorize the Board to release information about me in accordance with the Board’s Privacy Policy,\r\n https://www.abpn.org/terms-of-use/, including but not limited to informing program director(s) from which I took training as to my performance on any or all of the Board’s examinations taken by me at any time. \r\n In addition, I also authorize the Board to, at its discretion, release information contained in this application, my examination results, and examination scores to researchers selected by the Board to study the testing and evaluation \r\n programs of the Board under appropriate conditions of confidentiality established by the Board. Any studies reported by the Board will contain information about candidates and diplomates only in the aggregate, and the names of individuals will not be revealed in any publications. \r\n I hereby release and agree to hold harmless the Board and any of the Board’s employees, directors or representatives from any liability arising out of the Board’s disclosing of information pertaining to me. This release and hold harmless includes liability for\r\n the inaccuracy of such information, so long as such information was provided in good faith.

\r\n

I HEREBY RELEASE AND DISCHARGE THE BOARD, its directors, officers, employees, examiners, representatives, and agents FROM ANY ACTIONS, SUITS, OBLIGATIONS, CLAIMS, OR DEMANDS arising out of, or in connection with this application, \r\n the grade or grades given with respect to any examination, or the failure of the Board to issue me such certificate.

\r\n

Notwithstanding the preceding release, if a claim is allowed, I AGREE AND CONSENT TO THE JURISDICTION AND THE LAWS OF ILLINOIS AND EXCLUSIVE VENUE IN LAKE COUNTY, ILLINOIS. In addition, I EXPRESSLY WAIVE ANY RIGHT TO ASSERT ANY CLAIMS \r\n (whether before a jury, judge, administrative judge or board or in arbitration) AGAINST THE BOARD AS A REPRESENTATIVE OR MEMBER IN ANY CLASS ACTION, except where such waiver is prohibited by law. To the extent either party is \r\n permitted to proceed with a class action, the parties agree that (i) the prevailing party shall not be entitled to recover attorneys’ fees or costs associated with pursuing the class action and (ii) the party who participates as \r\n a member of a class action will not submit a claim or otherwise participate in any recovery secured through the class action, by settlement or judgment.

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n I hereby declare under penalty of perjury that the information given in this application is true and correct to the best of my knowledge and belief. I intend to be legally bound by the foregoing.\r\n Please attest to the above before continuing\r\n \r\n \r\n
\r\n );\r\n}","import React, { useState } from \"react\";\r\nimport { Alert, Button, Card, Col, Form, Row } from \"react-bootstrap\";\r\nimport { CCAssessmentType } from \"../../Physician/Models/CCEnrollment\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport ArticlePathwayTerms from './ArticlePathwayTerms';\r\nimport ExamPathwayTerms from './ExamPathwayTerms';\r\nimport CcAssessmentPathwayEnrollment, { CcAssessmentPathwayEnrollmentCertificate } from \"../Models/CcAssessmentPathwayEnrollment\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\n\r\ninterface IProps {\r\n isSectionOpen: boolean;\r\n onSave?: () => void;\r\n onUpdate?: () => void;\r\n onOpen?: () => void;\r\n disabled?: boolean;\r\n isLoading?: boolean;\r\n onCompleteEnrollment: () => void;\r\n onPrevious: () => void;\r\n pathwayEnrollment: CcAssessmentPathwayEnrollment;\r\n updateCertificates: (certificates: Array) => void;\r\n}\r\n\r\nexport default function TermsAndAttestation(props: IProps){\r\n const [errorMessages, setErrorMessages] = useState([]);\r\n const [isSubmitDisabled, setIsSubmitDisabled] = useState(false);\r\n\r\n const getEnrolledCertificates = () => {\r\n return props.pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled);\r\n }\r\n\r\n const getAbccCertifications = () => {\r\n return props.pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled && _.isAbccEligible && _.ccAssessmentType == CCAssessmentType.Article);\r\n }\r\n\r\n const getExamCertifications = () => {\r\n return props.pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled && (_.ccAssessmentType == CCAssessmentType.Exam || _.ccAssessmentType == CCAssessmentType.Other));\r\n }\r\n\r\n const onSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setIsSubmitDisabled(true);\r\n\r\n // todo validate all attested\r\n if (validateSelection()){\r\n props.onCompleteEnrollment();\r\n }\r\n\r\n setIsSubmitDisabled(false);\r\n \r\n }\r\n\r\n const validateSelection = () => {\r\n let newErrorMessages = [];\r\n var unattestedCerts = props.pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled && _.ccAssessmentAttestationDate === null);\r\n if (unattestedCerts.length > 0)\r\n {\r\n newErrorMessages.push(\"You must agree to the terms for all pathways selected.\");\r\n }\r\n \r\n setErrorMessages(newErrorMessages);\r\n return newErrorMessages.length === 0;\r\n }\r\n\r\n const onUpdateCertificateAttestation = (certificate: CcAssessmentPathwayEnrollmentCertificate) => {\r\n var updated = deepCopy(props.pathwayEnrollment.ccEnrollmentCertificates);\r\n var index = updated.findIndex((_: CcAssessmentPathwayEnrollmentCertificate) => _.certificateId == certificate.certificateId);\r\n updated[index] = certificate;\r\n props.updateCertificates(updated);\r\n }\r\n\r\n const onPrevious = async (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n props.onPrevious();\r\n }\r\n\r\n\r\n if (props.isLoading || isSubmitDisabled) return \r\n return (\r\n \r\n { !(props.disabled) && !(isSubmitDisabled) &&\r\n \r\n {getEnrolledCertificates().length > 0 && \r\n \r\n POLICY STATEMENT\r\n \r\n \r\n \r\n
onSubmit(e)}>\r\n

Please review an accept the terms below:

\r\n {getAbccCertifications().length > 0 &&\r\n \r\n }\r\n {getExamCertifications().length > 0 &&\r\n \r\n }\r\n\r\n {errorMessages.length > 0 &&\r\n \r\n {errorMessages.map(errorMessage =>

{errorMessage}

)}\r\n
\r\n }\r\n {props.isLoading ? : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n
\r\n
}\r\n {getEnrolledCertificates().length == 0 && \r\n \r\n UNENROLL FROM CC\r\n \r\n \r\n \r\n
onSubmit(e)}>\r\n

You have chosen to unenroll all certificates from CC.

\r\n\r\n {props.isLoading ? : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n
\r\n
}\r\n
\r\n }\r\n
\r\n )\r\n}","import { useContext, useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Button, Col, Container, Row } from \"react-bootstrap\";\r\nimport ReviewRequirements from \"./ReviewRequirements\";\r\nimport SelectCertifications from \"./SelectCertifications\";\r\nimport TermsAndAttestation from \"./TermsAndAttestation\";\r\nimport { deepCopy } from \"../../Shared/Utility/DeepCopy\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport CcAssessmentPathwayEnrollment, { CcAssessmentPathwayEnrollmentCertificate } from \"../Models/CcAssessmentPathwayEnrollment\";\r\nimport Physician from \"../../Physician/Models/Physician\";\r\nimport { abpnClient } from \"../../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../../Auth/AuthProvider\";\r\nimport UpdateCCAssessmentPathwayModel from \"../Models/UpdateCCAssessmentPathwayModel\";\r\n\r\ninterface INavigation {\r\n sectionsComplete: number,\r\n activeSections: Array,\r\n}\r\n\r\nenum EnrollmentSection {\r\n Certifications,\r\n Requirements,\r\n Terms\r\n}\r\n\r\n\r\nexport default function ManageCCEnrollment(){\r\n const [physician, setPhysician] = useState(null);\r\n const [sectionNavigation, setSectionNav] = useState({sectionsComplete: null, activeSections: null});\r\n const [loading, setLoading] = useState(true);\r\n const authContext = useContext(AuthContext);\r\n const [pathwayEnrollment, setPathwayEnrollment] = useState(new CcAssessmentPathwayEnrollment());\r\n\r\n useEffect(() => {\r\n abpnClient.get(\"/api/physician\", authContext)\r\n .then(physician => {\r\n setPhysician(physician);\r\n \r\n abpnClient.get(\"/api/physician/GetCCAssessmentPathwayEnrollment\", authContext)\r\n .then (enrollment => {\r\n setPathwayEnrollment(enrollment);\r\n console.log(enrollment);\r\n let activeSections = [EnrollmentSection.Certifications];\r\n activeSections.push(EnrollmentSection.Requirements);\r\n activeSections.push(EnrollmentSection.Terms);\r\n var updated = deepCopy(sectionNavigation);\r\n updated.activeSections = activeSections;\r\n updated.sectionsComplete = 0;\r\n\r\n setSectionNav(updated);\r\n setLoading(false);\r\n })\r\n });\r\n }, []);\r\n\r\n const updateSectionsComplete = (index: number) => {\r\n var updatedNav = deepCopy(sectionNavigation);\r\n updatedNav.sectionsComplete = index;\r\n setSectionNav(updatedNav);\r\n }\r\n\r\n const previousSectionComplete = (section: EnrollmentSection) => {\r\n return (sectionNavigation.sectionsComplete === sectionNavigation.activeSections.indexOf(section));\r\n }\r\n\r\n const onSelectCertificationsContinue = () => {\r\n // Move to next section\r\n \r\n var enrolledcCertificates = pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled === true);\r\n if (enrolledcCertificates.length === 0){\r\n updateSectionsComplete(sectionNavigation.sectionsComplete + 2);\r\n }else{\r\n updateSectionsComplete(sectionNavigation.sectionsComplete + 1);\r\n }\r\n \r\n }\r\n\r\n const onUpdatedCertificates = (certificates: Array) => {\r\n var updated = deepCopy(pathwayEnrollment);\r\n updated.ccEnrollmentCertificates = certificates\r\n setPathwayEnrollment(updated);\r\n }\r\n\r\n const onReviewRequirementsContinue = () => {\r\n // Move to next section\r\n updateSectionsComplete(sectionNavigation.sectionsComplete + 1);\r\n }\r\n\r\n const onReviewRequirementsPrevious = () => {\r\n // Move to next section\r\n updateSectionsComplete(sectionNavigation.sectionsComplete - 1);\r\n }\r\n\r\n const history = useHistory();\r\n\r\n \r\n\r\n const onTermsCompleteEnrollment = async () => {\r\n const url = \"/api/Physician/UpdateCCAssessmentPathwayEnrollment\";\r\n var dto = new UpdateCCAssessmentPathwayModel(pathwayEnrollment);\r\n await abpnClient.post(url, dto, authContext).then(result => {\r\n setPathwayEnrollment(result);\r\n });\r\n\r\n history.push('/');\r\n\r\n }\r\n\r\n const onTermsPrevious = () => {\r\n // Move to next section\r\n var enrolledcCertificates = pathwayEnrollment.ccEnrollmentCertificates.filter(_ => _.isEnrolled === true);\r\n if (enrolledcCertificates.length === 0){\r\n updateSectionsComplete(sectionNavigation.sectionsComplete - 2);\r\n }else{\r\n updateSectionsComplete(sectionNavigation.sectionsComplete - 1);\r\n }\r\n \r\n }\r\n\r\n const isSectionDisabled = (section: EnrollmentSection) => {\r\n return (sectionNavigation.sectionsComplete !== sectionNavigation.activeSections.indexOf(section));\r\n }\r\n\r\n const onCancel = () => {\r\n history.push('/');\r\n }\r\n\r\n if (!(sectionNavigation.activeSections)) return \r\n return (\r\n \r\n \r\n \r\n
\r\n

Manage CC Enrollment

\r\n updateSectionsComplete(0)}\r\n isLoading={loading}\r\n onContinue={onSelectCertificationsContinue}\r\n certificates={pathwayEnrollment && pathwayEnrollment.ccEnrollmentCertificates}\r\n updateCertificates={onUpdatedCertificates}\r\n />\r\n updateSectionsComplete(sectionNavigation.activeSections.indexOf(EnrollmentSection.Requirements))}\r\n isLoading={loading} \r\n onContinue={onReviewRequirementsContinue}\r\n onPrevious={onReviewRequirementsPrevious}\r\n currentEnrollment={physician.currentCCEnrollment}\r\n pathwayEnrollment={pathwayEnrollment}\r\n />\r\n updateSectionsComplete(sectionNavigation.activeSections.indexOf(EnrollmentSection.Terms))}\r\n isLoading={loading}\r\n onCompleteEnrollment={onTermsCompleteEnrollment}\r\n pathwayEnrollment={pathwayEnrollment}\r\n onPrevious={onTermsPrevious}\r\n updateCertificates={onUpdatedCertificates}\r\n />\r\n \r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\n\r\n","import { CCAssessmentType } from \"../../Physician/Models/CCEnrollment\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\nimport CcAssessmentPathwayEnrollment, { CcAssessmentPathwayEnrollmentCertificate } from \"./CcAssessmentPathwayEnrollment\";\r\n\r\nexport default class UpdateCCAssessmentPathwayModel{\r\n constructor(pathwayEnrollment: CcAssessmentPathwayEnrollment) {\r\n this.cCEnrollmentId = pathwayEnrollment.ccEnrollmentId;\r\n this.cCEnrollmentCertificates = new Array();\r\n\r\n for (var i = 0; i < pathwayEnrollment.ccEnrollmentCertificates.length; i++){\r\n this.cCEnrollmentCertificates.push(new UpdateCCAssessmentPathwayCertificateModel(pathwayEnrollment.ccEnrollmentCertificates[i]));\r\n }\r\n }\r\n\r\n cCEnrollmentId: number;\r\n cCEnrollmentCertificates: Array\r\n}\r\n\r\nexport class UpdateCCAssessmentPathwayCertificateModel{\r\n constructor(enrollmentCertificate: CcAssessmentPathwayEnrollmentCertificate){\r\n this.certificateId = enrollmentCertificate.certificateId;\r\n this.isEnrolled = enrollmentCertificate.isEnrolled;\r\n this.cCAssessmentType = enrollmentCertificate.ccAssessmentType;\r\n this.cCAssessmentAttestationDate = getDateWithOffset(enrollmentCertificate.ccAssessmentAttestationDate);\r\n this.lastArticleAssessmentEnrolledDate = getDateWithOffset(enrollmentCertificate.lastArticleAssessmentEnrolledDate);\r\n this.enrollmentStartDate = getDateWithOffset(enrollmentCertificate.enrollmentStartDate);\r\n this.enrollmentEndDate = getDateWithOffset(enrollmentCertificate.enrollmentEndDate);\r\n \r\n }\r\n\r\n certificateId: number;\r\n isEnrolled: boolean;\r\n cCAssessmentType: CCAssessmentType;\r\n cCAssessmentAttestationDate: Date;\r\n lastArticleAssessmentEnrolledDate: Date;\r\n enrollmentStartDate: Date;\r\n enrollmentEndDate: Date;\r\n}","import { Fragment, useEffect, useContext, useState } from \"react\";\r\nimport { Row, Col, Card } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../Services/AbpnClient\";\r\nimport { AuthContext } from \"./Auth/AuthProvider\";\r\nimport { AssessmentResult } from \"./Dashboard/Models/Assessment\";\r\nimport AbpnSpinner from \"./Shared/Components/AbpnSpinner\";\r\nimport { ProfileContext } from \"../Components/Auth/ProfileProvider\";\r\nimport AssessmentCard from \"./Dashboard/Assessments/AssessmentCard\";\r\nimport { Banner } from \"./Shared/Components/Banner\";\r\n\r\nexport default function OtherBoardHome() {\r\n\r\n const [assessments, setAssessments] = useState>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const authContext = useContext(AuthContext);\r\n const { user } = useContext(ProfileContext);\r\n\r\n useEffect(()=>{\r\n const loadAssessments = async () => {\r\n setIsLoading(true);\r\n const results = await abpnClient.get>(`/api/OtherBoard/GetOtherBoardPhysicianLearningTracks`,authContext);\r\n setAssessments(results);\r\n setIsLoading(false);\r\n }\r\n\r\n if (user) {\r\n loadAssessments();\r\n }\r\n },[user]);\r\n\r\n if (!user) return \r\n return (\r\n \r\n \r\n \r\n {isLoading ? :\r\n \r\n \r\n \r\n Assessments\r\n \r\n \r\n \r\n \r\n \r\n {assessments.map((assessment: AssessmentResult, index: number) => {\r\n return \r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n );\r\n}","\r\nexport default class Fee {\r\n public feeAmount: number;\r\n public feeDescription: string;\r\n public feeType: FeeType;\r\n}\r\n\r\nexport enum FeeType {\r\n ApplicationFee = 1,\r\n ExaminationFeePrimaryInitial = 2,\r\n ExaminationFeeSubspecialtyInitial = 3,\r\n ExaminationFeeMoc = 4,\r\n ExaminationTransferInitial = 5,\r\n ExaminationTransferMoc = 6,\r\n LateFeeInitial = 7,\r\n LateFeeMoc = 8,\r\n ReturnedPaymentFee = 9,\r\n ExaminationFeeMocWithTwoModules = 10,\r\n ExaminationFeeMocWithThreeOrMoreModules = 11,\r\n CCAnnualFee = 12,\r\n ReseatingFee = 13,\r\n Refund = 14,\r\n DuplicateCertificate = 15,\r\n}","import { Fragment, useContext, useEffect, useState } from \"react\";\r\nimport { Card, Col, Row, Table } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../Services/AbpnClient\";\r\nimport { AuthContext } from \"./Auth/AuthProvider\";\r\nimport AbpnSpinner from \"./Shared/Components/AbpnSpinner\";\r\nimport { deepCopy } from \"./Shared/Utility/DeepCopy\";\r\nimport { getDateWithOffset } from \"./Shared/Utility/GetDateWithOffset\";\r\nimport { FeeType } from \"./Orders/Models/Fee\";\r\nimport Order, { OrderLineItem } from \"./Orders/Models/Order\";\r\nimport InvoiceModel from \"./Shared/Models/InvoiceModel\";\r\n\r\nexport default function OrdersAndInvoices() {\r\n\r\n const [orders, setOrders] = useState>([]);\r\n const [invoices, setInvoices] = useState>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n useEffect(() => {\r\n const loadOrdersAndInvoices = async () => {\r\n setIsLoading(true);\r\n const results = await abpnClient.get>('/api/order/GetOrders', authContext);\r\n const invoiceResults = await abpnClient.get>('/api/invoice/getPaidInvoicesForPhysician', authContext);\r\n setOrders(results);\r\n setInvoices(invoiceResults);\r\n\r\n let orderDateSort = (a: Order, b: Order) => {\r\n return getDateWithOffset(b.createdDate).getTime() - getDateWithOffset(a.createdDate).getTime();\r\n }\r\n\r\n let invoiceDateSort = (a: InvoiceModel, b: InvoiceModel) => {\r\n return getDateWithOffset(b.createDate).getTime() - getDateWithOffset(a.createDate).getTime();\r\n }\r\n\r\n let sortedOrders = results.sort(orderDateSort);\r\n setOrders(sortedOrders);\r\n\r\n let sortedInvoices = invoiceResults.sort(invoiceDateSort);\r\n setInvoices(sortedInvoices);\r\n setIsLoading(false);\r\n }\r\n\r\n loadOrdersAndInvoices();\r\n }, []);\r\n\r\n const getFees = (order: Order) => order.orderLineItems.filter(_ => _.feeType !== FeeType.Refund)\r\n const getRefunds = (order: Order) => order.orderLineItems.filter(_ => _.feeType === FeeType.Refund)\r\n const getFeesSubtotal = (order: Order) => getFees(order).map(_ => _.amount).reduce((a, b) => a + b, 0);\r\n const getRefundsSubtotal = (order: Order) => getRefunds(order).map(_ => _.amount).reduce((a, b) => a + b, 0);\r\n const getTotal = (order: Order) => order.orderLineItems.map(_ => _.amount).reduce((a, b) => a + b, 0);\r\n const getTotalPaid = (order: Order) => order.completedPayments.map(_ => _.amount).reduce((a, b) => a + b, 0);\r\n const getBalance = (order: Order) => getTotal(order) - getTotalPaid(order);\r\n\r\n const getFeeDescription = (orderLineItem: OrderLineItem) => {\r\n return orderLineItem.amount > 0 ? orderLineItem.description : orderLineItem.description + ' (Waived)'\r\n };\r\n\r\n const getFeeAmount = (orderLineItem: OrderLineItem) => {\r\n return orderLineItem.amount > 0 ? `$${Math.abs(orderLineItem.amount)}` : `- $${Math.abs(orderLineItem.amount)}`\r\n }\r\n\r\n const expandRow = (order: Order) => {\r\n let updatedOrders: Array = deepCopy(orders);\r\n let index = updatedOrders.findIndex(_ => _.orderId == order.orderId);\r\n updatedOrders[index].isExpanded = true;\r\n setOrders(updatedOrders);\r\n }\r\n\r\n const collapseRow = (order: Order) => {\r\n let updatedOrders: Array = deepCopy(orders);\r\n let index = updatedOrders.findIndex(_ => _.orderId == order.orderId);\r\n updatedOrders[index].isExpanded = false;\r\n setOrders(updatedOrders);\r\n }\r\n\r\n const expandInvoiceRow = (invoice: InvoiceModel) => {\r\n let updatedInvoices: Array = deepCopy(invoices);\r\n let index = updatedInvoices.findIndex(_ => _.invoiceNumber == invoice.invoiceNumber);\r\n updatedInvoices[index].isExpanded = true;\r\n setInvoices(updatedInvoices);\r\n }\r\n\r\n const collapseInvoiceRow = (invoice: InvoiceModel) => {\r\n let updatedInvoices: Array = deepCopy(invoices);\r\n let index = updatedInvoices.findIndex(_ => _.invoiceNumber == invoice.invoiceNumber);\r\n updatedInvoices[index].isExpanded = false;\r\n setInvoices(updatedInvoices);\r\n }\r\n\r\n const download = async (orderNumber: string) => {\r\n var response = await abpnClient.getResponse(`/api/order/DownloadOrderReceipt?orderNumber=${orderNumber}`, authContext)\r\n var blob = await response.blob();\r\n\r\n const downloadFileUrl = window.URL.createObjectURL(\r\n new Blob([blob]),\r\n );\r\n const link = document.createElement('a');\r\n link.href = downloadFileUrl;\r\n link.setAttribute(\r\n 'download',\r\n `OrderReceipt.pdf`,\r\n );\r\n\r\n // Append to html link element page\r\n document.body.appendChild(link);\r\n\r\n // Start download\r\n link.click();\r\n\r\n // Clean up and remove the link\r\n link.parentNode.removeChild(link);\r\n }\r\n\r\n const downloadInvoice = async (invoiceNumber: string) => {\r\n var response = await abpnClient.getResponse(`/api/invoice/DownloadInvoiceReceipt?invoiceNumber=${invoiceNumber}`, authContext)\r\n var blob = await response.blob();\r\n\r\n const downloadFileUrl = window.URL.createObjectURL(\r\n new Blob([blob]),\r\n );\r\n const link = document.createElement('a');\r\n link.href = downloadFileUrl;\r\n link.setAttribute(\r\n 'download',\r\n `Invoice #${invoiceNumber}.pdf`,\r\n );\r\n\r\n // Append to html link element page\r\n document.body.appendChild(link);\r\n\r\n // Start download\r\n link.click();\r\n\r\n // Clean up and remove the link\r\n link.parentNode.removeChild(link);\r\n }\r\n\r\n if (isLoading) return \r\n if (orders.length === 0 && invoices.length === 0) return
There are no receipts.
\r\n\r\n return (\r\n \r\n \r\n \r\n Invoices and Receipts\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {invoices.map((_, index) =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
IDDate
\r\n {_.invoiceNumber}\r\n \r\n {getDateWithOffset(_.createDate).toLocaleDateString()}\r\n \r\n \r\n {!_.isExpanded ?\r\n :\r\n \r\n }\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {_.lineItems.map((lineItem, lineItemIndex) => {\r\n if(lineItem.discountDescription)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n else\r\n return(\r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
DescriptionAmount
{lineItem.description}${lineItem.unitPrice}
{lineItem.discountDescription}- ${lineItem.discountAmount}
{lineItem.description}${lineItem.unitPrice}
Total${_.total}
 
Payment${_.appliedPayment.amount}
 
Balance${_.balance}
\r\n
\r\n \r\n \r\n )}\r\n {orders.map((_, index) =>\r\n \r\n \r\n \r\n {_.orderNumber}\r\n \r\n \r\n {getDateWithOffset(_.createdDate).toLocaleDateString()}\r\n \r\n \r\n \r\n {!_.isExpanded ?\r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {getFees(_).map(fee => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n  \r\n {_.completedPayments.map((payment, paymentIndex) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n {_.completedPayments.length > 0 &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n  \r\n \r\n }\r\n {getRefunds(_).map(refund => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n {getRefunds(_).length > 0 &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n  \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n  \r\n {_.installments?.map((installment, installmentIndex) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
{getFeeDescription(fee)}{getDateWithOffset(fee.incurredDate).toLocaleDateString()}{getFeeAmount(fee)}
Total${getFeesSubtotal(_)}
Payment{getDateWithOffset(payment.transactionDate).toLocaleDateString()}${payment.amount}
Paid${getTotalPaid(_)}
Refunded{getDateWithOffset(refund.createdDate).toLocaleDateString()}${refund.amount}
Refunded${getRefundsSubtotal(_)}
Balance${getBalance(_)}
Due by {getDateWithOffset(installment.dueDate).toLocaleDateString()}${installment.amount}
\r\n
\r\n \r\n
\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}","import { useContext, useEffect, useState } from \"react\";\r\nimport { Card, Col, Row, Table } from \"react-bootstrap\";\r\nimport { abpnClient } from \"../../../Services/AbpnClient\";\r\nimport { AuthContext } from \"../../Auth/AuthProvider\";\r\nimport AbpnSpinner from \"../../Shared/Components/AbpnSpinner\";\r\nimport { getDateWithOffset } from \"../../Shared/Utility/GetDateWithOffset\";\r\nimport Message, { MessageAttachment } from \"../Models/Message\";\r\n\r\nexport default function Messages() {\r\n\r\n const [messages, setMessages] = useState>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const authContext = useContext(AuthContext);\r\n\r\n useEffect(() => {\r\n const loadMessages = async () => {\r\n setIsLoading(true);\r\n const results = await abpnClient.get>('/api/physician/GetMessages', authContext);\r\n setMessages(results);\r\n setIsLoading(false);\r\n }\r\n\r\n if (!isLoading) {\r\n loadMessages();\r\n }\r\n }, [authContext]);\r\n\r\n const downloadMessageDocument = async (message: Message) => {\r\n var response = await abpnClient.getResponse(`/api/physician/DownloadMessageDocument?messageId=${message.messageId}`, authContext)\r\n var blob = await response.blob();\r\n\r\n const downloadFileUrl = window.URL.createObjectURL(\r\n new Blob([blob]),\r\n );\r\n const link = document.createElement('a');\r\n link.href = downloadFileUrl;\r\n link.setAttribute(\r\n 'download',\r\n `${message.messageTemplateName ? message.messageTemplateName : message.subject} Message Document.pdf`,\r\n );\r\n\r\n // Append to html link element page\r\n document.body.appendChild(link);\r\n\r\n // Start download\r\n link.click();\r\n\r\n // Clean up and remove the link\r\n link.parentNode.removeChild(link);\r\n }\r\n\r\n const downloadMessageAttachment = async (messageAttachment: MessageAttachment) => {\r\n var response = await abpnClient.getResponse(`/api/physician/DownloadMessageAttachment?messageAttachmentId=${messageAttachment.messageAttachmentId}`, authContext)\r\n var blob = await response.blob();\r\n\r\n const downloadFileUrl = window.URL.createObjectURL(\r\n new Blob([blob]),\r\n );\r\n const link = document.createElement('a');\r\n link.href = downloadFileUrl;\r\n link.setAttribute(\r\n 'download',\r\n `${messageAttachment.documentName}`,\r\n );\r\n\r\n // Append to html link element page\r\n document.body.appendChild(link);\r\n\r\n // Start download\r\n link.click();\r\n\r\n // Clean up and remove the link\r\n link.parentNode.removeChild(link);\r\n }\r\n\r\n if (isLoading) return \r\n if (messages.length === 0) return
There are no messages.
\r\n\r\n return (\r\n \r\n \r\n \r\n Messages\r\n \r\n \r\n {messages.length === 0 ?\r\n
There are no messages.
\r\n :\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {messages.map((_, index) =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
DateMessage TypeAttachments 
\r\n {getDateWithOffset(_.statusDate).toLocaleDateString()}\r\n \r\n {_.messageTemplateName}\r\n \r\n {_.attachments?.map(_ => {\r\n return \r\n })}\r\n \r\n \r\n
\r\n \r\n }\r\n
\r\n
\r\n
\r\n );\r\n}","\r\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\r\nimport Home from './Components/Home';\r\nimport { abpnClient } from './Services/AbpnClient';\r\nimport { ApplicationPaths } from './Services/Auth/AuthConstants';\r\nimport ApiAuthorizationRoutes from './Components/ApiAuthorizationRoutes';\r\nimport { OnBehalfOf } from './Components/Auth/OnBehalfOf';\r\nimport { appInsights } from './Services/AppInsights';\r\nimport Layout from './Components/Layout';\r\nimport '../src/App.scss'\r\nimport ErrorPage from './Components/ErrorPage';\r\nimport AvailableApplicationGrid from './Components/Dashboard/Applications/Components/AvailableApplicationGrid';\r\nimport { AuthorizeRoute } from './Components/Auth/AuthorizeRoute';\r\nimport { AuthProvider } from './Components/Auth/AuthProvider';\r\nimport { StaffOnlyRoute } from './Components/Auth/StaffOnlyRoute';\r\nimport Application from './Components/Apply/Components/Application';\r\nimport ExaminationReport from './Components/Examination/ExaminationReport';\r\nimport ExamHistory from './Components/Examination/ExamHistory';\r\nimport Unauthorized from './Components/Unauthorized';\r\nimport ManageActivities from './Components/ManageActivities/ManageActivities';\r\nimport { EmailNotFound } from './Components/Auth/EmailNotFound';\r\nimport AccountInformation from './Components/Account/AccountInformation';\r\nimport SearchForAccount from './Components/Auth/SearchForAccount';\r\nimport PersonalInformation from './Components/Auth/PersonalInformation';\r\nimport ManageCCEnrollment from './Components/CCEnrollment/Components/ManageCCEnrollment';\r\nimport { ProfileProvider } from './Components/Auth/ProfileProvider';\r\nimport OtherBoardHome from './Components/OtherBoardHome';\r\nimport InvoicesAndReceipts from './Components/InvoicesAndReceipts';\r\nimport Messages from './Components/Messages/Components/Messages';\r\n\r\nfunction App() {\r\n appInsights.load();\r\n\r\n const basename = '/physicianportal'\r\n const errorPageUrl = `${basename}/error`;\r\n\r\n abpnClient.setErrorPage(errorPageUrl);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}