{"version":3,"sources":["src/app/shared/services/rennova.service.ts","src/app/modules/document/services/exam-model.service.ts","src/app/modules/dispensation/modal-dispention/modal-dispention.component.ts","src/app/modules/dispensation/modal-dispention/modal-dispention.component.html","src/app/modules/dispensation/modal-dispention/modal-dispention.component.scss","src/app/shared/pipes/is-tel.pipe.ts","src/app/shared/services/state.service.ts","src/app/modules/document/document.component.scss","src/app/core/services/core.service.ts","src/app/shared/models/cpf-cnpj-api-errors.enum.ts","src/app/shared/models/health-professional.ts","src/app/shared/pipes/is-complete-name-pipe.pipe.ts","src/app/shared/models/professional-type.enum.ts","src/app/modules/document/pages/attestation/attestation.service.ts","src/app/shared/components/AppVersion/AppVersion.component.ts","src/app/modules/document/services/retention.service.ts","src/app/shared/components/dialog-modal/dialog-modal.component.ts","src/app/shared/components/dialog-modal/dialog-modal.component.html","src/app/shared/components/dialog-modal/dialog-modal.component.scss","src/app/shared/models/permission.enum.ts","src/app/core/services/auth.service.ts","src/app/shared/decorators/no-concurrent.ts","src/app/modules/patients/pages/modal-edit-pet/modal-edit-pet.component.ts","src/app/modules/patients/pages/modal-edit-pet/modal-edit-pet.component.html","src/app/modules/patients/pages/modal-edit-pet/modal-edit-pet.component.scss","src/app/modules/dispensation/consult/consult.component.ts","src/app/modules/dispensation/consult/consult.component.html","src/app/modules/dispensation/consult/consult.component.scss","src/app/modules/dispensation/guards/dispensation.guard.ts","src/app/modules/dispensation/register/register.component.html","src/app/modules/dispensation/register/register.component.ts","src/app/modules/dispensation/register/register.component.scss","src/app/modules/dispensation/consultempty/consult-empty.component.ts","src/app/modules/dispensation/consultempty/consult-empty.component.html","src/app/modules/dispensation/consultempty/consult-empty.component.scss","src/app/modules/dispensation/consultnotfound/consult-not-found.component.ts","src/app/modules/dispensation/consultnotfound/consult-not-found.component.html","src/app/modules/dispensation/consultnotfound/consult-not-found.component.scss","src/app/modules/dispensation/dispensation-routing.module.ts","src/app/modules/dispensation/dispensation.module.ts","src/app/shared/pipes/capitalize.pipe.ts","src/app/shared/pipes/formatted-cel.pipe.ts","src/app/shared/pipes/formatted-cnpj.pipe.ts","src/app/shared/pipes/formatted-cpf.pipe.ts","src/app/shared/pipes/formatted-mapa-sipeagro.pipe.ts","src/app/shared/pipes/safe.pipe.ts","src/app/shared/pipes/to-json.pipe.ts","src/app/shared/pipes/with-loading.pipe.ts","src/app/shared/pipes/sex-pet-parserd.pipe.ts","src/app/shared/pipes/pipes.module.ts","src/app/modules/dashboard/modal-edit-address-data/modal-edit-address-data.component.ts","src/app/modules/dashboard/modal-edit-address-data/modal-edit-address-data.component.html","src/app/modules/dashboard/modal-edit-address-data/modal-edit-address-data.component.scss","src/app/shared/components/modal-sucess-send-document/modal-sucess-send-document.component.ts","src/app/shared/components/modal-sucess-send-document/modal-sucess-send-document.component.html","src/app/shared/components/modal-sucess-send-document/modal-sucess-send-document.component.scss","src/app/core/services/validation.service.ts","src/app/modules/patients/pages/modal-select-pet/modal-select-pet.component.ts","src/app/modules/patients/pages/modal-select-pet/modal-select-pet.component.html","src/app/modules/patients/pages/modal-select-pet/modal-select-pet.component.scss","src/app/modules/pharmacist/services/pharmacist.service.ts","src/app/shared/services/bigboost.service.ts","src/environments/environment.ts","src/app/theme/symbols.ts","src/app/shared/pipes/formatted-cep.pipe.ts","src/app/modules/patients/enum/type-patient.ts","src/app/modules/patients/pages/modal-search/modal-search.component.ts","src/app/modules/patients/pages/modal-search/modal-search.component.html","src/app/modules/patients/pages/modal-search/modal-search.component.scss","src/app/modules/document/services/attestation-model.service.ts","src/app/modules/document/services/prescription-model.service.ts","src/app/modules/health-professional/services/health-professional.service.ts","src/app/modules/admin/admin.service.ts","src/app/modules/document/services/exam.service.ts","src/app/modules/document/services/orientation-model.service.ts","src/app/shared/models/pet-patient.ts","src/app/modules/document/services/infusion.service.ts","src/app/shared/components/modal-send-document/modal-send-document.component.ts","src/app/shared/components/modal-send-document/modal-send-document.component.html","src/app/shared/components/modal-send-document/modal-send-document.component.scss","src/app/modules/dispensation/modal-alert/modal-alert.component.ts","src/app/modules/dispensation/modal-alert/modal-alert.component.html","src/app/modules/dispensation/modal-alert/modal-alert.component.scss","src/app/shared/pipes/is-cpf.pipe.ts","src/app/modules/document/services/victa-protocol.service.ts","src/app/shared/modals/modal-add-product-rennova/modal-add-product-rennova.component.ts","src/app/shared/modals/modal-add-product-rennova/modal-add-product-rennova.component.html","src/app/shared/modals/modal-add-product-rennova/modal-add-product-rennova.component.scss","src/app/shared/directives/auto-size.directive.ts","src/app/shared/directives/cep.directive.ts","src/app/shared/directives/cpf-cnpj.directive.ts","src/app/shared/directives/digit-only.directive.ts","src/app/shared/directives/focus.directive.ts","src/app/shared/directives/only-numbers.directive.ts","src/app/shared/directives/patient-search.directive.ts","src/app/shared/directives/telephone.directive.ts","src/app/shared/directives/directives.module.ts","src/app/shared/layout/alternative-navbar-cip/alternative-navbar-cip.component.html","src/app/shared/layout/alternative-navbar-cip/alternative-navbar-cip.component.ts","src/app/shared/layout/alternative-navbar-cip/alternative-navbar-cip.component.scss","src/app/shared/layout/alternative-navbar/alternative-navbar.component.html","src/app/shared/layout/alternative-navbar/alternative-navbar.component.ts","src/app/shared/layout/alternative-navbar/alternative-navbar.component.scss","src/app/shared/layout/footer/footer-mobile/footer-mobile.component.ts","src/app/shared/layout/footer/footer-mobile/footer-mobile.component.html","src/app/shared/layout/footer/footer-mobile/footer-mobile.component.scss","src/app/shared/layout/footer/footer.component.html","src/app/shared/layout/footer/footer.component.ts","src/app/shared/layout/footer/footer.component.scss","src/app/shared/layout/icon-menu/icon-menu.component.html","src/app/shared/layout/icon-menu/icon-menu.component.ts","src/app/shared/layout/icon-menu/icon-menu.component.scss","src/app/shared/layout/navbar/navbar.component.ts","src/app/shared/layout/navbar/navbar.component.html","src/app/shared/layout/navbar/navbar.component.scss","src/app/shared/layout/sidebar-menu/sidebar-menu.component.html","src/app/shared/layout/sidebar-menu/sidebar-menu.component.ts","src/app/shared/layout/sidebar-menu/sidebar-menu.component.scss","src/app/shared/layout/layout.module.ts","src/app/shared/shared.module.ts","src/app/modules/entry/pages/login/login.component.ts","src/app/modules/entry/pages/login/login.component.html","src/app/modules/entry/pages/login/login.component.scss","src/app/modules/entry/pages/register/register.component.html","src/app/modules/entry/pages/register/modal-terms-and-conditions/modal-terms-and-conditions.component.ts","src/app/modules/entry/pages/register/modal-terms-and-conditions/modal-terms-and-conditions.component.html","src/app/modules/entry/pages/register/modal-terms-and-conditions/modal-terms-and-conditions.component.scss","src/app/modules/entry/pages/register/register.component.ts","src/app/modules/entry/pages/register/register.component.scss","src/app/modules/entry/pages/register/account-type.component.html","src/app/modules/entry/pages/register/account-type.component.ts","src/app/modules/entry/pages/register/account-type.component.scss","src/app/modules/entry/pages/welcome/welcome.component.ts","src/app/modules/entry/pages/welcome/welcome.component.html","src/app/modules/entry/pages/welcome/welcome.component.scss","src/app/modules/entry/pages/reset-password/reset-password.component.html","src/app/modules/entry/pages/reset-password/reset-password.component.scss","src/app/modules/entry/services/account.service.ts","src/app/modules/entry/pages/reset-password/reset-password.component.ts","src/app/modules/entry/pages/change-password/change-password.component.ts","src/app/modules/entry/pages/change-password/change-password.component.html","src/app/modules/entry/pages/change-password/change-password.component.scss","src/app/modules/entry/pages/activate-account/activate-account.component.html","src/app/modules/entry/pages/activate-account/activate-account.component.ts","src/app/modules/entry/pages/activate-account/activate-account.component.scss","src/app/modules/entry/pages/pharmacy-option/pharmacy-option.component.html","src/app/modules/entry/pages/pharmacy-option/pharmacy-option.component.ts","src/app/modules/entry/pages/pharmacy-option/pharmacy-option.component.scss","src/app/modules/entry/entry-routing.module.ts","src/app/modules/entry/pages/register/patient-form/patient-form.component.ts","src/app/modules/entry/pages/register/patient-form/patient-form.component.html","src/app/modules/entry/pages/register/patient-form/patient-form.component.scss","src/app/modules/entry/pages/register/pharmacy-form/pharmacy-form.component.html","src/app/shared/services/open-data.service.ts","src/app/modules/entry/pages/register/pharmacy-form/pharmacy-form.component.ts","src/app/modules/entry/pages/register/pharmacy-form/pharmacy-form.component.scss","src/app/modules/entry/pages/register/terms-and-conditions/terms-and-conditions.component.ts","src/app/modules/entry/pages/register/terms-and-conditions/terms-and-conditions.component.html","src/app/modules/entry/pages/register/terms-and-conditions/terms-and-conditions.component.scss","src/app/modules/entry/pages/register/health-professional-form/health-professional-form.component.ts","src/app/modules/entry/pages/register/health-professional-form/health-professional-form.component.html","src/app/modules/entry/pages/register/health-professional-form/health-professional-form.component.scss","src/app/modules/entry/pages/password-strength/password-strength.component.ts","src/app/modules/entry/pages/password-strength/password-strength.component.html","src/app/modules/entry/pages/password-strength/password-strength.component.scss","src/app/modules/entry/pages/register/underage-patient-form/responsible-form/responsible-form.component.html","src/app/modules/entry/pages/register/underage-patient-form/responsible-form/responsible-form.component.ts","src/app/modules/entry/pages/register/underage-patient-form/responsible-form/responsible-form.component.scss","src/app/modules/entry/pages/register/underage-patient-form/underage-patient-form.component.html","src/app/modules/entry/pages/register/underage-patient-form/underage-patient-form.component.ts","src/app/modules/entry/pages/register/underage-patient-form/underage-patient-form.component.scss","src/app/modules/entry/pages/register/responsible-patient-form/responsible-patient-form.component.ts","src/app/modules/entry/pages/register/responsible-patient-form/responsible-patient-form.component.html","src/app/modules/entry/pages/register/responsible-patient-form/responsible-patient-form.component.scss","src/app/modules/entry/entry.module.ts","src/app/shared/modals/modal-search/modal-search.component.ts","src/app/shared/modals/modal-search/modal-search.component.html","src/app/shared/modals/modal-search/modal-search.component.scss","src/app/shared/decorators/nativeAsync.ts","src/app/modules/dashboard/modal-pet-form/modal-pet-form.component.ts","src/app/modules/dashboard/modal-pet-form/modal-pet-form.component.html","src/app/modules/dashboard/modal-pet-form/modal-pet-form.component.scss","src/app/modules/pharmacy/services/pharmacy.service.ts","src/app/shared/components/modal-activate-account/modal-activate-account.component.ts","src/app/shared/components/modal-activate-account/modal-activate-account.component.html","src/app/shared/components/modal-activate-account/modal-activate-account.component.scss","src/app/shared/data/DateUtils.ts","node_modules/moment/locale sync ^\\.\\/.*$","src/app/modules/document/pages/model-add-favorite-document/model-add-favorite-document.component.ts","src/app/modules/document/pages/model-add-favorite-document/model-add-favorite-document.component.html","src/app/modules/document/pages/model-add-favorite-document/model-add-favorite-document.component.scss","src/app/shared/services/library.service.ts","src/app/modules/personalized-medications/services/manipulated-profile.service.ts","src/app/utils/md5.ts","src/app/shared/models/additional-feature-accept.enum.ts","src/app/shared/models/buyer.ts","src/app/shared/models/manipulated-profile.ts","src/app/shared/models/pharmacist.ts","src/app/modules/historic/historic.component.ts","src/app/modules/historic/historic.component.html","src/app/modules/historic/historic.component.scss","src/app/shared/charts/my-pie-chart/my-pie-chart.component.ts","src/app/shared/charts/my-pie-chart/my-pie-chart.component.html","src/app/shared/charts/my-pie-chart/my-pie-chart.component.scss","src/app/shared/components/add-button/add-button.component.ts","src/app/shared/components/add-button/add-button.component.html","src/app/shared/components/add-button/add-button.component.scss","src/app/shared/components/add-type-options/add-type-options.component.ts","src/app/shared/components/add-type-options/add-type-options.component.html","src/app/shared/components/add-type-options/add-type-options.component.scss","src/app/shared/components/auto-width-input-number/auto-width-input-number.component.html","src/app/shared/components/auto-width-input-number/auto-width-input-number.component.ts","src/app/shared/components/auto-width-input-number/auto-width-input-number.component.scss","src/app/shared/components/cid-form/cid-form.component.html","src/app/modules/document/services/cid.service.ts","src/app/shared/components/cid-form/cid-form.component.ts","src/app/shared/components/cid-form/cid-form.component.scss","src/app/shared/components/data-exam-form/data-exam-form.component.html","src/app/shared/components/data-exam-form/data-exam-form.component.ts","src/app/shared/components/data-exam-form/data-exam-form.component.scss","src/app/shared/components/form-data/address-data-form/address-data-form.component.ts","src/app/shared/components/form-data/address-data-form/address-data-form.component.html","src/app/shared/components/form-data/contacts-data-form/contacts-data-form.component.html","src/app/shared/components/form-data/contacts-data-form/contacts-data-form.component.ts","src/app/shared/components/form-data/personal-data-form/personal-data-form.component.ts","src/app/shared/components/form-data/personal-data-form/personal-data-form.component.html","src/app/shared/components/form-data/pet-data-form/pet-data-form.component.html","src/app/shared/components/form-data/pet-data-form/pet-data-form.component.ts","src/app/shared/components/form-data/pet-data-form/pet-data-form.component.scss","src/app/shared/components/form-data/underage-data-form/underage-data-form.component.html","src/app/shared/components/form-data/underage-data-form/underage-data-form.component.ts","src/app/shared/components/input-file/input-file.component.html","src/app/shared/components/input-file/input-file.component.ts","src/app/shared/components/input-file/input-file.component.scss","src/app/shared/components/input-password/input-password.component.html","src/app/shared/components/input-password/input-password.component.ts","src/app/shared/components/input-password/input-password.component.scss","src/app/shared/components/input-search-medicaments/input-search-medicaments.component.html","src/app/shared/components/input-search-medicaments/input-search-medicaments.component.ts","src/app/shared/components/input-search-medicaments/input-search-medicaments.component.scss","src/app/shared/components/medicament-form/medicament-form.component.ts","src/app/shared/components/medicament-form/medicament-form.component.html","src/app/shared/components/medicament-form/medicament-form.component.scss","src/app/shared/components/menu/menu.component.html","src/app/shared/components/menu/menu.component.ts","src/app/shared/components/menu/menu.component.scss","src/app/shared/components/model-form-pre-preenchido/model-form-pre-preenchido.component.ts","src/app/shared/components/model-form-pre-preenchido/model-form-pre-preenchido.component.html","src/app/shared/components/model-form-pre-preenchido/model-form-pre-preenchido.component.scss","src/app/shared/components/popover-button/popover-button.component.ts","src/app/shared/components/popover-button/popover-button.component.html","src/app/shared/components/popover-button/popover-button.component.scss","src/app/shared/components/rd-buttom-group-icon/rd-buttom-group-icon.component.ts","src/app/shared/components/rd-buttom-group-icon/rd-buttom-group-icon.component.html","src/app/shared/components/rd-buttom-group-icon/rd-buttom-group-icon.component.scss","src/app/shared/components/rd-tabs/rd-tabs.component.ts","src/app/shared/components/rd-tabs/rd-tabs.component.html","src/app/shared/components/rd-tabs/rd-tabs.component.scss","src/app/shared/components/text-box-form/text-box-form.component.ts","src/app/shared/components/text-box-form/text-box-form.component.html","src/app/shared/components/text-box-form/text-box-form.component.scss","src/app/shared/components/components.module.ts","src/app/shared/pipes/helpers.ts","src/app/shared/models/user-type.enum.ts","src/app/shared/modals/modal-buyer-data/modal-buyer-data.component.ts","src/app/shared/modals/modal-buyer-data/modal-buyer-data.component.html","src/app/shared/modals/modal-buyer-data/modal-buyer-data.component.scss","src/app/shared/modals/modal-protocols-library/modal-protocols-library.component.ts","src/app/shared/modals/modal-protocols-library/modal-protocols-library.component.html","src/app/shared/modals/modal-protocols-library/modal-protocols-library.component.scss","src/app/theme/theme.service.ts","src/app/utils/markFormGroup.ts","src/app/shared/models/prescription.ts","src/app/modules/dashboard/pages/index/index.component.scss","src/app/shared/components/modal-resend-documento-empty/modal-resend-documento-empty.component.ts","src/app/shared/components/modal-resend-documento-empty/modal-resend-documento-empty.component.html","src/app/shared/components/modal-resend-documento-empty/modal-resend-documento-empty.component.scss","src/app/modules/dashboard/dashboard.guard.ts","src/app/modules/dashboard/pages/index/index.component.html","src/app/modules/dashboard/modal-covid/modal-covid.component.ts","src/app/modules/dashboard/modal-covid/modal-covid.component.html","src/app/modules/dashboard/modal-covid/modal-covid.component.scss","src/app/modules/dashboard/modal-complement-info-patient/modal-complement-info-patient.component.ts","src/app/modules/dashboard/modal-complement-info-patient/modal-complement-info-patient.component.html","src/app/modules/dashboard/modal-complement-info-patient/modal-complement-info-patient.component.scss","src/app/modules/dashboard/pages/index/index.component.ts","src/app/modules/dashboard/dashboard-routing.module.ts","src/app/modules/dashboard/modal-cip-acceptance/modal-cip-acceptance.component.html","src/app/modules/dashboard/modal-cip-acceptance/modal-cip-acceptance.component.ts","src/app/modules/dashboard/modal-cip-acceptance/modal-cip-acceptance.component.scss","src/app/modules/dashboard/modal-rqe-warning/modal-rqe-warning.component.ts","src/app/modules/dashboard/modal-rqe-warning/modal-rqe-warning.component.html","src/app/modules/dashboard/modal-rqe-warning/modal-rqe-warning.component.scss","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/file-step/file-step.component.ts","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/file-step/file-step.component.html","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/file-step/file-step.component.scss","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/form-steps.component.html","src/app/modules/dashboard/modal-telemedicine-contract/modal-telemedicine-contract.component.scss","src/app/shared/data/Brazilian-banks.ts","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/subaccount-step/subaccount-step.component.ts","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/subaccount-step/subaccount-step.component.html","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/subaccount-step/subaccount-step.component.scss","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/subscription-step/subscription-step.component.ts","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/subscription-step/subscription-step.component.html","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/subscription-step/subscription-step.component.scss","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/form-steps.component.ts","src/app/modules/dashboard/modal-telemedicine-contract/form-steps/form-steps.component.scss","src/app/modules/dashboard/modal-telemedicine-contract/intro/intro.component.ts","src/app/modules/dashboard/modal-telemedicine-contract/intro/intro.component.html","src/app/modules/dashboard/modal-telemedicine-contract/intro/intro.component.scss","src/app/modules/dashboard/modal-telemedicine-contract/modal-telemedicine-contract.component.html","src/app/modules/dashboard/modal-telemedicine-contract/user-telemedicine.service.ts","src/app/modules/dashboard/modal-telemedicine-contract/modal-telemedicine-contract.component.ts","src/app/modules/dashboard/modal-telemedicine-contract/modal-telemedicine-contract.module.ts","src/app/modules/dashboard/modal-womens-month/modal-womens-month.component.ts","src/app/modules/dashboard/modal-womens-month/modal-womens-month.component.html","src/app/modules/dashboard/modal-womens-month/modal-womens-month.component.scss","src/app/modules/dashboard/dashboard.module.ts","src/app/utils/index.ts","src/app/shared/data/Fur.ts","src/app/modules/patients/services/patients.service.ts","src/app/modules/document/pages/prescription/unsigned-prescription-modal.component.ts","src/app/modules/document/pages/prescription/unsigned-prescription-modal.component.html","src/app/modules/document/pages/prescription/unsigned-prescription-modal.component.scss","src/app/modules/document/services/buyer.service.ts","src/app/shared/services/sweetalert.service.ts","src/$_lazy_route_resource lazy namespace object","src/app/modules/admin/listing/features-listing/specialties.service.ts","src/app/modules/user/user.service.ts","src/app/modules/document/services/pdf.service.ts","src/app/core/security/token/token.service.ts","src/app/core/usuario-inativo/usuario-inativo.component.ts","src/app/core/core.module.ts","src/app/modules/admin/listing/features-listing/additional-feature.service.ts","src/app/shared/pipes/formatted-tel.pipe.ts","src/app/modules/document/services/document.service.ts","src/app/modules/entry/services/register.service.ts","src/app/modules/patients/pages/modal-add-patient/modal-add-patient.component.ts","src/app/modules/patients/pages/modal-add-patient/modal-add-patient.component.html","src/app/modules/patients/pages/modal-add-patient/modal-add-patient.component.scss","src/app/modules/document/services/cr.service.ts","src/app/utils/removeFormGroupValidators.ts","src/app/modules/dashboard/modal-edit-personal-data/modal-edit-personal-data.component.ts","src/app/modules/dashboard/modal-edit-personal-data/modal-edit-personal-data.component.html","src/app/modules/dashboard/modal-edit-personal-data/modal-edit-personal-data.component.scss","src/app/shared/services/app-toast.service.ts","src/app/modules/document-v2/utils/Document.util.ts","src/app/modules/document/pages/model-list-favorite-document/model-list-favorite-document.component.ts","src/app/modules/document/pages/model-list-favorite-document/model-list-favorite-document.component.html","src/app/modules/document/pages/model-list-favorite-document/model-list-favorite-document.component.scss","src/app/theme/theme.directive.ts","src/app/theme/theme.module.ts","src/app/theme/theme-receita-digital.ts","src/app/theme/theme-mrd.ts","src/app/modules/document/services/prescription.service.ts","src/app/modules/patients/services/pet-patient.service.ts","src/app/utils/logInvalidForm.ts","src/app/shared/models/patient.ts","src/app/modules/document/pages/modal-select-layout/modal-select-layout.component.ts","src/app/modules/document/pages/modal-select-layout/modal-select-layout.component.html","src/app/modules/document/pages/modal-select-layout/modal-select-layout.component.scss","src/app/shared/utils/base64.utils.ts","src/app/modules/document/guards/document.guard.ts","src/app/modules/document/pages/confirmation/confirmation.component.html","src/app/modules/document/pages/confirmation/confirmation.component.ts","src/app/modules/document/pages/confirmation/confirmation.component.scss","src/app/modules/document/pages/retention-confirmation/retention-confirmation.component.html","src/app/modules/document/pages/retention-confirmation/retention-confirmation.component.ts","src/app/modules/document/pages/retention-confirmation/retention-confirmation.component.scss","src/app/modules/document/pages/listing/listing.component.html","src/app/modules/document/pages/listing/listing.component.ts","src/app/modules/document/pages/listing/listing.component.scss","src/app/modules/document/pages/prescription/upload-pdf.component.html","src/app/modules/document/pages/prescription/upload-pdf.component.ts","src/app/modules/document/pages/prescription/upload-pdf.component.scss","src/app/modules/document/document.component.html","src/app/modules/document/pages/modal-iframe/modal-iframe.component.ts","src/app/modules/document/pages/modal-iframe/modal-iframe.component.html","src/app/modules/document/pages/modal-iframe/modal-iframe.component.scss","src/app/modules/document/document.component.ts","src/app/modules/document/document-routing.module.ts","src/app/modules/document/pages/attestation/attestation.component.ts","src/app/modules/document/pages/attestation/attestation.component.html","src/app/modules/document/pages/attestation/attestation.component.scss","src/app/modules/document/pages/exam/exam.component.ts","src/app/modules/document/pages/exam/exam.component.html","src/app/modules/document/pages/exam/exam.component.scss","src/app/modules/document/pages/infusion-protocol/infusion-protocol.component.ts","src/app/modules/document/pages/infusion-protocol/infusion-protocol.component.html","src/app/modules/document/pages/infusion-protocol/infusion-protocol.component.scss","src/app/modules/document/pages/orientation/orientation.component.ts","src/app/modules/document/pages/orientation/orientation.component.html","src/app/modules/document/pages/orientation/orientation.component.scss","src/app/modules/document/pages/prescription/navigation.component.ts","src/app/modules/document/pages/prescription/navigation.component.scss","src/app/modules/document/pages/prescription/prescription.component.html","src/app/modules/document/pages/prescription/prescription.component.ts","src/app/modules/document/pages/prescription/prescription.component.scss","src/app/modules/document/document.module.ts","src/app/modules/admin/logs/logs.service.ts","src/app/shared/pipes/only-numbers.pipe.ts","src/app/shared/modals/modal-new-portal-digital-signatures/modal-new-portal-digital-signatures.component.ts","src/app/shared/modals/modal-new-portal-digital-signatures/modal-new-portal-digital-signatures.component.html","src/app/shared/modals/modal-new-portal-digital-signatures/modal-new-portal-digital-signatures.component.scss","src/app/modules/patients/components/simplified-patient-form/simplified-patient-form.component.ts","src/app/modules/patients/components/simplified-patient-form/simplified-patient-form.component.html","src/app/modules/patients/components/simplified-pet-patient-form/simplified-pet-patient-form.component.html","src/app/modules/patients/components/simplified-pet-patient-form/simplified-pet-patient-form.component.ts","src/app/modules/patients/components/simplified-pet-patient-form/simplified-pet-patient-form.component.scss","src/app/modules/patients/components/simplified-underage-patient-form/simplified-underage-patient-form.component.ts","src/app/modules/patients/components/simplified-underage-patient-form/simplified-underage-patient-form.component.html","src/app/modules/patients/pages/index/index.component.html","src/app/modules/patients/pages/modal-edit-patient/modal-edit-patient.component.ts","src/app/modules/patients/pages/modal-edit-patient/modal-edit-patient.component.html","src/app/modules/patients/pages/modal-edit-patient/modal-edit-patient.component.scss","src/app/modules/patients/pages/patient-details/patient-details.component.ts","src/app/modules/patients/pages/patient-details/patient-details.component.html","src/app/modules/patients/pages/patient-details/patient-details.component.scss","src/app/modules/patients/pages/modal-switch-responsible/modal-switch-responsible.component.ts","src/app/modules/patients/pages/modal-switch-responsible/modal-switch-responsible.component.html","src/app/modules/patients/pages/modal-switch-responsible/modal-switch-responsible.component.scss","src/app/modules/patients/pages/index/index.component.ts","src/app/modules/patients/pages/index/index.component.scss","src/app/modules/patients/pages/patient-record/float-button/float-button.component.html","src/app/modules/patients/pages/patient-record/float-button/float-button.component.ts","src/app/modules/patients/pages/patient-record/float-button/float-button.component.scss","src/app/modules/patients/pages/patient-record/patient-record.component.html","src/app/modules/patients/services/patient-record.service.ts","src/app/modules/patients/pages/patient-record/patient-record.component.ts","src/app/modules/patients/pages/patient-record/patient-record.component.scss","src/app/modules/patients/pages/patient-record/record-card/record-card.component.ts","src/app/modules/patients/pages/patient-record/record-card/record-card.component.html","src/app/modules/patients/pages/patient-record/record-card/record-card.component.scss","src/app/modules/patients/patients-routing.module.ts","src/app/modules/patients/patients.module.ts","src/app/shared/data/Brazilian-states.ts","src/app/modules/historic/modal-cancel-retention/modal-cancel-retention.component.ts","src/app/modules/historic/modal-cancel-retention/modal-cancel-retention.component.html","src/app/modules/historic/modal-cancel-retention/modal-cancel-retention.component.scss","src/app/modules/document/pages/modal-list-victa-protocol/modal-list-victa-protocol.component.ts","src/app/modules/document/pages/modal-list-victa-protocol/modal-list-victa-protocol.component.html","src/app/modules/document/pages/modal-list-victa-protocol/modal-list-victa-protocol.component.scss","src/app/modules/historic/form-filter/form-filter.component.ts","src/app/modules/historic/form-filter/form-filter.component.html","src/app/modules/historic/form-filter/form-filter.component.scss","src/app/modules/historic/historic-routing.module.ts","src/app/modules/historic/historic.module.ts","src/app/modules/document/pages/orientation/orientation.service.ts","src/app/modules/external-document/services/client-app.service.ts","src/app/core/services/xml-http-client.service.ts","src/app/modules/entry/services/cep.service.ts","src/app/modules/dashboard/modal-edit-pharmacy-technician/modal-edit-pharmacy-technician.component.ts","src/app/modules/dashboard/modal-edit-pharmacy-technician/modal-edit-pharmacy-technician.component.html","src/app/modules/dashboard/modal-edit-pharmacy-technician/modal-edit-pharmacy-technician.component.scss","src/app/shared/guards/auth.guard.ts","src/app/shared/resolvers/is-veterinarian.resolver.ts","src/app/modules/dashboard/my-data/my-data.component.html","src/app/modules/dashboard/modal-dependent-form/modal-dependent-form.component.ts","src/app/modules/dashboard/modal-dependent-form/modal-dependent-form.component.html","src/app/modules/dashboard/modal-dependent-form/modal-dependent-form.component.scss","src/app/modules/dashboard/modal-edit-pharmacy-covid/modal-edit-pharmacy-covid.component.ts","src/app/modules/dashboard/modal-edit-pharmacy-covid/modal-edit-pharmacy-covid.component.html","src/app/modules/dashboard/modal-edit-pharmacy-covid/modal-edit-pharmacy-covid.component.scss","src/app/modules/dashboard/my-data/my-data.component.ts","src/app/modules/dashboard/my-data/my-data.component.scss","src/app/modules/pharmacy/recipe/recipe.component.html","src/app/modules/pharmacy/recipe/recipe.component.ts","src/app/modules/pharmacy/recipe/recipe.component.scss","src/app/modules/system-update/system-update.component.ts","src/app/modules/system-update/system-update.component.html","src/app/modules/system-update/system-update.component.scss","src/app/shared/guards/entry.guard.ts","src/app/app-routing.module.ts","src/app/core/interceptors/http-interceptor.service.ts","src/app/app.service.ts","src/app/app.component.ts","src/app/app.component.html","src/app/app.component.scss","src/app/modules/model/select-prescription/select-prescription.component.ts","src/app/modules/model/select-prescription/select-prescription.component.html","src/app/modules/model/select-prescription/select-prescription.component.scss","src/app/modules/user/user.component.ts","src/app/modules/user/user.component.html","src/app/modules/user/user.component.scss","src/app/app.module.ts","src/main.ts"],"names":["API_UL","apiRoot","RennovaService","http","this","get","data","post","providedIn","ExamModelService","prescriberId","toPromise","modelId","orientationModel","put","params","delete","fb","ref","crService","isNewItem","medicamentItems","medications","loading","destroyed$","ReplaySubject","batchForm","group","number","medicationForm","ean","medicament","items","JSON","parse","stringify","valueChanges","pipe","filter","value","length","debounceTime","environment","takeUntil","subscribe","searchMedicament","err","console","error","next","complete","option","push","show","reset","event","stopPropagation","path","find","p","id","includes","elementIndex","document","getElementById","replace","splice","medicamentoBusca","nome","index","caixas","findIndex","caixa","forEach","item","close","reduce","acc","selector","template","IsTelPipe","tel","transform","ddd","parseInt","substring","telWithoutDDD","indexOf","charAt","name","StateService","localStorage","removeItem","appState","stateHash","from","toString","setItem","getItem","state","CoreService","_backendVersion","SMALL_LENGTH_VIEW_PORT","MEDIUM_LENGTH_VIEW_PORT","window","location","origin","toLowerCase","version","v","innerWidth","CpfCnpjApiErrors","HealthProfessional","professionalType","dentist","doctor","pharmacist","biomedic","veterinarian","IsCompleteNamePipe","exec","ProfessionalType","AttestationService","attestation","code","patientId","attestationId","AppVersionComponent","coreService","versionFront","getBackendVersion","versionBack","RetentionService","pdfService","dispensationCode","userId","retention","isRetentionsThirdParties","payload","reason","retentionId","pdf","openPdf","DialogModalComponent","modalService","exibirConteundoExterno","title","subtitle","subtitle2","tplModal","create","nzContent","tplContent","nzFooter","tplFooter","nzClosable","nzWidth","nzMaskClosable","nzOnCancel","nzOnOk","content","destroy","static","Permission","_localStorage","userService","jwtHelperService","token","isTokenExpired","isLoggedIn","user","features","some","f","decodeToken","email","password","tap","res","setSession","clearAvatar","mergeMap","_","target","propertyKey","descriptor","undefined","Object","getOwnPropertyDescriptor","originalMethod","prop","args","arguments","$$noConcurrent","Observable","subscriber","obs","apply","catchError","of","modalRef","cepService","petPatientService","isVeterinarian","displayAlert","submit","onClose","states","furs","Fur","labelAge","form","_id","required","species","sex","race","isApproximateAge","approximateAgeLabel","disabled","dateOfBirth","weight","fur","castration","temperament","microchipNumber","responsible","cpf","cpfValidator","fullname","membership","mothersName","cellphone","telephone","emailContact","address","uf","city","complement","street","neighborhood","cep","pendency","doNotShowAgainPetDataConfirmationModal","getSpecies","patchForm","checkApproximateAge","pet","diffBetweenDate","DateUtils","Date","setValue","result","disable","patchValue","speciesId","getSpeciesId","races","getRaces","date","toISOString","now","dd","String","getDate","padStart","mm","getMonth","getFullYear","enable","consult","erro","controls","logradouro","bairro","localidade","markFormGroup","getRawValue","valid","hide","emit","s","nativeAsync","router","prescriptionService","showDispensations","_allChecked","prescription","patient","healthProfessional","medicaments","every","m","checked","val","medicamentsChecked","getAge","dateStr","moment","isValid","diff","specialties","map","join","dispensations","navigate","DispensationGuard","pdfBase64","retentionService","authService","pharmacyService","notification","extraData","pharmacy","getPharmacy","pharmacyId","getPharmacyByUserId","hidden","include","notSelectedMedicaments","nzClassName","nzComponentParams","selectedMedicaments","modal","okText","afterOpen","getContentComponent","saveRetention","saveRentention","dispensation","thirdParties","base64","identifier","flatMap","medicationName","medicationDispense","apresentacaoCustomizada","quantity","lotNumber","laboratory","laboratorio","cnpj","businessName","business_name_entity","cnpj_entity","phone","prescriptionData","uuid","postDispensation","saveRetentionThirdParty","notify","href","batches","prescriber","saveRetentionOfThirdParties","ConsultEmpty","ConsultNotFound","routes","component","canActivate","DispensationRoutingModule","imports","forChild","providers","exports","DispensationModule","declarations","forRoot","CapitalizePipe","toUpperCase","slice","cel","receivedValue","FormattedCnpjPipe","FormattedCpfPipe","FormattedMapaSipeagroPipe","SafePipe","sanitizer","url","bypassSecurityTrustResourceUrl","ToJsonPipe","isObservable","startWith","SexPetParsedPipe","PipesModule","patientService","healthProfessionalService","pharmacistService","nzModalRef","updateUserEvent","userType","buildCommercialAddressForm","buildAddressForm","cepValidator","logo","isNew","commercialData","completeUser","execute","commercialDataIndex","update","add","stateService","closeModal","isSuccessMsg","isRennova","resend","setTitle","doNotShowAgainModalSuccessPrescription","listenDoNotShowAgainModalSuccessPrescription","switchMap","checkUi","ui","ValidationService","control","log","telefone","celular","setErrors","doNotMatch","emailConfirmation","match","errors","emailMatch","entries","dirty","confirmEmailInput","confirmEmailControl","emailControl","parent","updateValueAndValidity","toLocaleLowerCase","notMatch","mandatoryContact","Soma","Resto","strCPF","i","isCnpjValid","isString","Number","isInteger","Array","isArray","digitsOnly","test","validFormat","numbers","Set","calc","x","factor","sum","digits","format","max","invalidDate","getTime","toDate","invalidBirthdate","min","c","minLengthArray","arr","e","entry","formArray","prescriberPets","getPetsByResponsible","pets","hasDependent","addPetPatient","isAdding","initialState","isResponsible","existingPatient","class","backdrop","keyboard","updateListPatientEvent","PharmacistService","originHost","pharmacistId","BigboostService","birthdate","production","local","apiV1","host","plusGApp","envPlusSecretKey","envPlusSecretKeyIS","envKeySpecialty","envKeyMedicament","envAdminApiKey","maintenance","versionCheckURL","tempoDeValidadeDaSessao","appRedirectV2Enabled","appV2UrlValidationDocument","envCmSereneApiKey","THEMES","ACTIVE_THEME","FormattedCepPipe","TypePatientEnum","patientsService","bigboostService","addPatient","searchEvent","openModalAddPatientEvent","openModalSelectPetEvent","loadingSpinnerEvent","enumTypePatient","alertOptions","nzDuration","minLength","maxLength","noCpf","clearValidators","setValidators","VETERINARIAN","typePatientSelect","ADULT","patientLinked","Boolean","getPatientByCpf","isUnderAge","MINOR","addPatientToProfessional","mensage","status","consultCpf","menorIdade","nonMatchingCpf","getPatientsByUserId","typePatient","AttestationModelService","attestationModel","PrescriptionModelService","prescriptionModel","HealthProfessionalService","healthProfessionalId","petId","type","query","onlyNumbers","pageSize","skip","filtersFast","set","womenOver40","minors","adults","responsibleId","limit","response","blob","Blob","a","createElement","URL","createObjectURL","download","click","file","formData","FormData","append","commercialId","ADMIN_URL","AdminService","logsService","administrator","admin","dataType","filterForm","getPatientsByFilter","reponse","patients","getHealthProfessionalsByProfessionalType","getPharmaciesByFilter","getLogsByFilter","responseType","valor","patch","tenant","ExamService","isPet","material","examType","exam","examId","OrientationModelService","PetPatient","InfusionService","infusion","bsModalService","documentService","rennovaService","deviceService","sendDocumentRequired","showDownloadSignedPdf","doNotShowModalSuccessSendDocument","sendForm","emailChecked","smsChecked","whatsappChecked","sms","compose","celularValidator","whatsapp","validators","requiredEmail","requiredSms","requiredWhatsapp","listenFields","codeIsRennova","navigator","clipboard","writeText","linkAcesso","colorSetting","isDesktop","getPet","getPatient","elements","getElementsByClassName","setAttribute","footer","initForm","getPetById","emailStateinitial","markAsDirty","cellphoneStateInitial","sendEmailsRennova","showModalSuccessSendDocument","someFieldWasChecked","sendDocument","openWhatsAppTab","userLogin","getControllerUserUi","downloadOrGeneratePdf","documentText","getDocumentText","doctorName","getDoctorName","labelCpf","text","encodeURIComponent","open","getDocumentTextVet","getDocument","viewSucessMsg","afterInit","goBack","route","split","confirm","nzTitle","nzOkText","nzCancelText","sent","IsCpfPipe","numeros","digitos","soma","resultado","digitos_iguais","b","parseFloat","VictaProtocolService","groups","protocols","professionals","products","hasError","selectEvent","findAllProducts","findAll","product","active","AutoSizeDirective","elem","className","rows","resize","textarea","nativeElement","style","height","scrollHeight","ngControl","formattedCep","el","onlyNumbersPipe","inputMaxLength","changes","onChange","_inputChange","currentValue","fn","multi","provide","useExisting","DigitOnlyDirective","hasDecimalPoint","navigationKeys","decimal","decimalSeparator","Infinity","inputElement","pattern","regex","RegExp","maybeMin","isNaN","maybeMax","key","ctrlKey","metaKey","newValue","forecastValue","preventDefault","newNumber","pastedInput","getData","clipboardData","pasteData","textData","dataTransfer","focus","pastedContent","sanitizedContent","sanitizeInput","execCommand","setRangeText","selectionStart","start","selectionEnd","end","insertAtCursor","myField","myValue","startPos","endPos","pos","setSelectionRange","triggerEvent","createEvent","initEvent","dispatchEvent","input","isValidDecimal","allowedLength","string","selectedText","getSelection","oldValue","selection","FocusDirective","elementRef","OnlyNumbersDirective","regexStr","keyCode","ch","fromCharCode","renderer","isCPF","isCompleteName","removeAttribute","element","formattedTel","DirectivesModule","AlternativeNavbarCipComponent","themeService","permission","getActiveTheme","logout","getAvatar","avatar","avatarB64","cipFeature","accept","YES","isThemeActiveReceitaDigital","setTheme","FooterMobileComponent","FooterComponent","actualDate","isMobile","isViewPortMobile","IconMenuComponent","activeMenu","setStyle","Document","NavbarComponent","isLoggedOut","visible","functionalities","backendVersion$","events","closeMenu","getCompleteUser","addEventListener","getPharmacistData","getHealthProfessionalData","getPharmacistByUserId","getHealthProfessional","frontendVersion","sidebarMenu","sidebarMenuBlur","queryParams","navigateByUrl","LayoutModule","themes","theme","SharedModule","useValue","emitEvent","login","take","message","ModalTermsAndConditionsComponent","isVisible","_route","registerService","isDisabledButton","isCheckedTerms","routerParam","snapshot","paramMap","verifiedCpf","verified","public_pharmacy","throwError","modalTermsAndConditionsComponent","openModal","privacy","createUrlTree","consultCnpj","erroCodigo","values","markVerified","invalid","logInvalidForm","register","controlVerified","isRegisterDoctor","dadosProfissionais","cfm","pendenteValidacao","textoComplemento","dialogModal","createTplModal","httpError","errMsg","errCode","errorCode","createTplModalContent","contentModalErrorCfmValidate","contentModalErrorCfmConsult","isPharmacyPublic","alreadyExists","accountTypeForm","account","$event","accountCtrl","WelcomeComponent","accountService","accountField","sendEmail","confirmPassword","checkPasswords","mismatch","checkToken","changePassword","activatedRoute","passwordForm","isPasswordStrong","validatePassword","notEqual","weakPassword","activateAccount","PharmacyOptionComponent","pharmacies","selectedPharmacy","getCurrentNavigation","extras","getPharmacies","pharmacyUserId","pathMatch","redirectTo","EntryRoutingModule","isRegisteredByPatient","formChange","isProduction","valueTypeEntryPatient","nomeValidator","checkNoCpf","dateValidator","onResize","handleConsultCpf","addControl","validator","lastCpf","hasPendency","lastDateOfBirth","cpfCtrl","dateCtrl","existsPatient","showModalAddPatient","valueNoCpf","registeredByResponsible","setForm","resetForm","genero","nascimento","animations","opacity","OpenDataService","cnes","openDataService","cdr","STATUS_VALID","isLoading","cnpjValidator","fantasyName","cnae","description","cpfResponsible","confirmEmailValidator","licenseNumber","technicalResponsible","crf","listenAndApplyValitationsPublicPharmacy","detectChanges","distinctUntilChanged","handleConsultCnes","handleConsultCnpj","consultCnes","cnae_entity","cnae_entity_description","pharmacyInformation","business_name","fantasy_name","handleErrorMessageStatusCode102","setDataForm","notExists","fiscal","descricao","razao","fantasia","TermsAndConditionsComponent","specialtyService","i18n","specialtiesOptions","selectedSpecialties","buildForm","getSpecialties","addSpecialty","regionalCouncilLabel","setLocale","birthdateValidator","regionalCouncilNumber","label","mapaSipeagro","array","buildCommercialForm","getRegionalCouncilLabel","getSpecialtiesByType","unshift","specialtiesArray","buildSpecialtyForm","setControl","pop","mae","addressGroup","specialty","specialtiesForm","commercialForm","isDentist","rqe","rqeForm","markAsPristine","isStrong","msg","colors","setBarColors","pwdStrength","checkStrength","getColor","idx","col","getMessage","passedMatches","force","Math","count","consulted","responsibleForm","cpfForm","repeatNameCheckbox","nzChecked","hasPatient","patchFormConsult","hasAccount","disableForm","hideCpf","validateUnderAge","diffDate","ageDate","abs","getUTCFullYear","isNotMinor","updateList","showDependentForm","patientsCache","Map","_form","dependents","cacheDependentId","keys","removePatient","getPatientsById","EntryModule","ModalSearchComponent","param","hasFarmaRennovaFeature","requests","prescriptions","getPrescriptionsPatient","method","Promise","resolve","formatDate","PharmacyService","pharmaciId","isPublic","doNotShowAgainModalNewPortalDigitalSignatures","ModalActivateAccountComponent","closeAll","date1","date2","newDate1","newDate2","date1TimeStamp","date2TimeStamp","calcFormat","daysPassed","monthsPassed","yearsPassed","yrsTxt","mnthsTxt","daysTxt","totalDays","totalSecs","totalMins","totalHours","totalWeeks","round","totalMinutes","totalSeconds","trim","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","module","prescriptionModelService","orientationModelService","examModelService","attestationModelService","HTTP_STATUS_CONFLICT","documentType","typesOfDocuments","saveDocumentModel","documentModelForm","then","onSuccessCreateFavorite","catch","onFailureCreateFavorite","documentModel","buildPrescriptionForm","buildExamForm","buildAttestationForm","buildOrientationForm","setDocumentModel","setPrescritpionModel","setExamModel","setAttestationModel","setOrientationModel","addPrescription","medicamentId","principio","principle","prescribedQuantity","justification","titleOrientation","orientations","accumulator","medication","dosage","prescriptionTypeId","typeCr","medicamentosFormCtrl","formMedicamentos","arrayText","LibraryService","ManipulatedProfileService","manipulatedProfile","manipulatedProfileId","profileId","md5","hashStr","AdditionalFeatureAccept","Buyer","ManipulatedProfile","RASCUNHO","ENVIADO","Pharmacist","attestationService","examsService","orientationService","retentions","attestations","exams","retentionOfThirdParties","selectedTabIndex","selectedTab","tabs","paginationData","totalRecord","orderBy","sortOrder","scrollConfig","isVisibleModalCancelRetention","navTitle","getPatientByUserId","initData","getBaseFilter","loadPrescriptions","loadAttestations","loadExams","loadOrientations","loadRetentionOfThirdParties","concat","loadingFilter","getPrescriptionsByPrescriberUserId","getRetentionHistoryByFilter","getPrescriptionsByPatientId","dependent","getAttestationsByPrescriberUserId","getAttestationsByPatientId","getExamsByPrescriberUserId","getExamsByPatientId","getOrientationsByPrescriberUserId","getOrientationsByPatientId","getRetentionOfThirdPartiesHistoryByFilter","sessionStorage","clear","loadData","getRetentionHistory","pageIndex","regionalCouncil","getProfessionalTypeName","generatePdf","downloadThirdPartyPdf","isCodeRennova","orientation","updateListPrescriptionEvent","search","modalSendDocumentComponent","archive","unarchive","rennovaFeature","MyPieChartComponent","pieChartOptions","responsive","legend","position","labels","boxWidth","chart","_chart","total","display","baseChart","refresh","d","eventOnClick","onClickAddIndustrialized","onClickAddMedicamentFreeText","onClickAddDataExams","onClickAddTextBox","onClickonShowModelListFavoriteDocument","onClickShowCardCID","onClickAddViewFormAttestation","onClickAddPrecriptionRenew","onClickAddInfusion","onClickAddSereneProtocol","onClickOrientationSerene","viewIndutrialized","viewMedicmanetFreeText","viewDataExams","viewTextBox","viewListFavoriteDocument","viewShowCardCID","viewFormAttestation","viewPrecriptionRenew","viewInfusion","viewSereneLibrary","viewOrientationSerene","hover","AutoWidthInputNumberComponent","step","mobile","getScreenSize","_inputSize","calculateTextWidth","width","innerHeight","getContext","measureText","inputSize","isDisabled","qty","CID_API_URL","CidService","cidService","authorizedByPatient","showDescription","onClickRemoveCardCid","formEmitter","inputSearch","cids","addCid","listenSearchInput","removeControl","findAllByQuery","cid","newControlCid","formArrayItens","removeAt","examService","onClickRemoveCardDataExam","examsFiltereds","examList","at","hasDuplicatedExam","resetInputSearch","examGroup","tuss","idExam","showAlertMsg","alertMsg","isExternalRegister","validatorsFields","disableFields","removeValidators","enabledFields","patchValueForm","checkEmailExists","exists","PersonalDataFormComponent","isPatient","PATIENT","patchFormEvent","changeConsultResponsibleEvent","patientExists","textButton","transformTo","maxSize","placeholder","filename","filenameChange","files","size","reader","FileReader","onload","readAsDataURL","readAsText","InputPasswordComponent","isPasswordVisible","viewProviders","onMedicamentSelected","medicamentSelected","signed","onDelete","onSelect","unitsOfMeasurement","setTimeout","body","attestationDays","typeOfActivity","onClickRemove","attestationsDays","getAttestationsDays","typesOfActivity","getTypesOfActivity","PopoverButtonComponent","shape","placement","onClick","isRennovaFeature","onCLickTab","changeTabSelected","tabDefault","tabSelected","tab","onChangeText","listemText","ComponentsModule","numeroEspecial","numero","startsWith","UserType","buyerService","modelRef","cpfSearched","listnerFieldCpf","setMaskTelephone","statusChanges","isPatientBuyer","identity","CEL","TEL","CEL_TEL","cpfControl","valueCpf","valueIsPatientBuyer","searchData","cpfBuyer","getBuyerByCpf","buyer","findInfoPatientByCpf","save","consultCpfByCpf","libraryService","onAddProtocol","loadingLibraries","libraries","findAllLibraries","protocol","expanded","medicamentCR","loadMedicamentCR","loadingMedicament","medicamentsCR","categories","ThemeService","themeChange","isMrd","t","getTheme","propName","properties","formGroup","ctrl","Prescription","modalref","activateRouter","prefixCode","getTitlePet","DashboardGuard","covidForm","covid","valCovidDB","updateCompleteUser","nzModalService","isModalCipVisible","isModalRqeVisible","isModalWomanVisible","patientWithoutMandatoryInformationRegistered","showModalComplementInfoPatient","PHARMACY","openModalCovid","showModalEditPharmacyThechnical","checkCipAcceptance","checkRQE","womensMonth","hideWomensModal","showModalCovid","month","year","NO","afterClose","ignoreBackdropClick","imageChangedEvent","getPrescriptionByPdf","blobToBase64","DashboardRoutingModule","additionalFeatureService","isVisibleChange","userChange","refuseLoading","acceptLoading","setHeight","heightValue","documentElement","setProperty","NONE","refuseFeature","refreshToken","isAnswered","acceptFeature","healthProfessionalChange","showModalPersonalData","refuseRqe","saved","documentFile","BrazilianBanks","createdAt","updatedAt","deletedAt","isDeleted","profileChange","banks","commercialName","responsibleName","responsibleIdentity","techName","techIdentity","techEmail","bankData","bank","accountType","bankAgency","bankAgencyDigit","bankAccount","bankAccountDigit","zipCode","district","cityName","stateInitials","countryName","profile","personalForm","companyForm","lastCep","numeroRef","customer","creditCard","holder","cardNumber","validateCCNumber","expirationDate","validateExpDate","securityCode","setDate","numberInputRef","controlName","nextField","cancel","submitForm","emitTitle","advance","advanceStep","backStep","fileStepComponent","showWarning","errorMessage","subaccountStepComponent","subscriptionStepComponent","subaccount","subaccountForm","subscription","subscriptionForm","emails","fileForm","IntroComponent","ModalTelemedicineContractComponent","videoConferenceService","async","ModalTelemedicineContractModule","checkWomensMonth","DashboardModule","schemas","Furs","PATIENT_URL","PatientsService","cpfNewReponsible","UnsignedPrescriptionModalComponent","nzWrapClassName","BuyerService","ErrorEvent","alert","SweetalertService","fire","icon","showConfirmButton","timer","confirmButtonColor","allowOutsideClick","isConfirmed","showCancelButton","cancelButtonColor","confirmButtonText","cancelButtonText","titulo","detalhe","htmlTitle","isAlerta","detail","options","html","customClass","container","confirmButton","cancelButton","buttonsStyling","dismiss","logErroElemento","webpackEmptyAsyncContext","SpecialtiesService","UserService","profileAvatar$","tenantId","manipulatedAccepranceTerm","PdfService","_endpoint","draft","layout","showPrescriberCpf","_secretCode","onloadend","binary","atob","len","buffer","ArrayBuffer","view","Uint8Array","charCodeAt","appendChild","remove","jwtHelper","getToken","hasToken","_authService","_tokenService","_sweetalertService","_router","validadeSessao","quinzeSegundos","intervaloDeTempoParaVerificarSeUsuarioEstaAtivo","_validandoSessao","_tempoDeValidadeDaSessao","info","renovarTempoDeSessao","monitorarAtividadeDoUsuario","monitorarSeUsuarioEstaAtivo","clearInterval","_intervalId","validade","unix","verificarValidadeDoToken","bind","setInterval","usuarioEstaAtivo","deslogarUsuarioComNotificacao","tokenEstaExpirado","timeText","notificarWarningComOnClose","removeToken","pararMonitoramentoDeUsuarioInativo","removeEventListener","CoreModule","AdditionalFeatureService","additionalFeature","featureId","FormattedTelPipe","DocumentService","infusionService","_model","model","_patientForm","patientForm","_documentTypeSelected","useV1Endpoint","getAttestation","getExam","getOrientation","getInfusion","getPrescriptionbyCode","generateAndSavePdf","link","callbackUrl","showSendDocumentOnCallback","victaFeature","_plusGApp","_sharedKey","pdfUrl","buildSignPdfPayload","payloadB64","isBeta","urlParams","URLSearchParams","hostname","webhookUrl","username","preferPreview","security","allowAddNewDocument","allowDocumentType","payloadCallbackUrl","allowChangeUsername","getContent","src","signatureSetting","visibleSignatureField","visibleSignatureDateFormat","visibleSignatureCustomTemplateSrc","certificates","filters","validity","computeHmacUrl","payloadJson","payloadEncoded","btoa","nonce","floor","random","RegisterService","adminService","registerType","responsibleSaved","updateResponsible","saveResponsible","savePatient","patientSaved","saveAddPatient","savePetPatient","CrService","q","productName","tipo","translateClassification","classification","substance","factory","sku","prescription_type","removeFormGroupValidators","touched","currentDate","buildPatientForm","buildHealthProfessionalForm","buildPharmacistForm","buildPharmacyForm","isAdmin","emailForm","activationToken","userTypeLogged","getDateOfBirth","rqeCtrl","addSpecialties","utcOffset","printInvalidFields","valueEmail","AppToastService","duration","nzStyle","DocumentUtil","toast","hideEdit","editEvent","deleteEvent","loadingSearchMedicament","updateMedicaments","encapsulation","None","_elementRef","_themeService","_destroy$","Subject","updateTheme","classList","ngModule","themeReceitaDigital","favicon","themeMrd","PrescriptionService","savedPatient","medicamentsRetained","prescriptionCode","unMask","prefix","headers","secretCode","downloadPdfDocument","prescriptionId","PetPatientService","httpParams","k","Patient","selectLayout","patientDoesNotHaveAddress","setBackgroundColorFooter","showAddressForm","getInstance","emitEventAndCloseModal","addressValue","Base64Utils","decodeURIComponent","DocumentGuard","isPrescriber","ngZone","quantidade","allChecked","indeterminate","quantities","availableQuantity","allUnChecked","checkedNumber","refreshStatus","medicinesRetained","run","instance","saveRetentionFeedback","downloadPrescriptionPdf","getRetentionByCode","setInfoInMedicamentsRetained","medicamentRetained","preWriter","contact","hoje","diferencaAnos","initLoading","loadingMore","showPrescriptionTab","showDoctorTab","showPatientTab","UploadPdfComponent","fileList","postFilePdf","unsignedPrescriptionModal","onLoad","iframe","contentWindow","petService","victaProtocolService","manipulatedProfileService","nzBackfill","isPatientNotFound","patientCpf","adding","typesOfDocumentsOptions","documentTypes","documentForm","responsePlus","decode","getManipulatedProfile","fillForm","selectedDocumentModel","getDocumentModel","getManipulatedProfileById","documentsModel","getById","routeConfig","manipulatedprofile","toggleAdding","getPrescriberData","onChangePatient","showModalSelectPet","showModalSearch","inputValue","getPatients","handleResponse","source","valueWithoutCharacters","fullCpf","getPetsByResponsibleCpf","res1","getPets","patientInfo","responsibleExists","isOnlyNumbers","doc","documentSaved","hasDuplicatedMaterials","warn","duplicatedMaterials","findDuplicatedMaterials","duplicatedExams","findDuplicatedExams","findDuplicatedItems","field","sorted_arr","sort","results","selectPrescriptionLayout","saveDocument","previewPdf","generateAndOpenPdf","signPdf","getUrlToSignDocument","responsibleDoesNotHaveAddress","modalSelectLayout","updatedPatient","updatePatientAddress","savedDocumentAndPreviewPdfOrSignPdf","reject","restData","dataPatient","obj","constructor","getProtocols","documentsTemplate","getListDocumentsTemplates","showFavoritePrescriptionsModel","deleteDocumentModel","deleteById","getListByPrescriberId","documentTemplate","getFormError","modelSaved","DocumentRoutingModule","attestationForm","showPatientCpf","onChangeValue","hasForm","showJustification","getMaterials","materials","examForm","examListForm","formExamList","ex","addMaterial","examModel","examsForm","materialForm","formExamItem","examListIndex","filterExists","itemExists","getExamTypes","resFiltered","itemRes","examTypes","list","onChangeJustification","examIndex","protocolSelected","addProtocol","phasesGroups","phases","phase","observation","protocolGroup","protocolIndex","editMode","orientationForm","NavigationComponent","navbarBackGround","brandBackGround","disableNavigation","prescriptionForm","addRow","medicamentsFormCtrl","chooseMedicament","addedMedication","manipuled","removeEmptyMedicaments","addMedicament","medications$","selectedMedicament","formMedicaments","medicamentFormGroup","DocumentModule","LogsService","groupBy","OnlyNumbersPipe","ModalNewPortalDigitalSignaturesComponent","appToastService","doNotShowAgain","patchResponsibleExists","patchResponsibleNotExists","formResponsible","consultResponsible","patchFormResponsible","disabledFields","valuesDisableds","patchFormResponsiblePatientExists","patchFormResponsibleNotPatientExists","disabledFieldsForm","patientValues","disableInputs","isDependent","isUnderThirteenTearsOfAge","responsiblePets","petsCache","patientRecordStyle","recordsArea","tplTitle","hasPet","getPetsById","destroyTplModal","submitPetForm","assign","classModal","sucess","newPatientRegister","loadindSearch","loadindConfirm","loadindConfirmRegister","newResponsibleNotFound","resetLoadings","newResponsible","newReponsible","switchReponsiblePet","switchReponsiblePatient","switchReponsible","disabledButton","displayData","operating","dataSet","loadingSpinner","y","getPatientsByUserIdWithPagination","getPetsWithPagination","removePetPatient","requestPetPatients","requestPatients","allNames","searchForm","modalPatient","hasAccessNewModulePrescription","keyFilter","updateResponsilbePatient","newPatient","patientRecordForm","page","record","records","mainTag","PatientRecordComponent","patientRecordService","patientRecords","recordsToMerge","distinctTags","tags","filteredTags","merging","mergingRecords","all","getTags","requestPatientRecords","paginationIndex","docs","getRecords","children","offsetHeight","scrollTop","updateRecord","mainTagId","recordCreated","mergeRecords","mergeConfirmation","showCheckbox","refreshList","r","tag","parentId","selectChild","selectedTag","submitRecord","tagId","editable","recordInput","recordDeleted","setLoading","addNewRecordToMerge","editingTag","editing","showHistory","showOptions","recordUpdated","deleteRecord","newTag","showTagConfirmation","flag","updatingTag","innerText","PatientsRoutingModule","PatientsModule","BrazilianStates","sigla","activeChange","presentation","amount","measurement","application","preparation","note","isVet","archived","prescriberRegisterNumber","titles","HistoricRoutingModule","HistoricModule","OrientationService","orientationId","ClientAppService","apiKey","_apiKey","payloadChecksum","XmlHttpClient","opts","xhr","XMLHttpRequest","json","statusText","onerror","setRequestHeader","send","CepService","request","makeRequest","formp","sexos","isEditing","socialName","birthDate","formatBirthDate","onDestroyModal","checkLogin","isExpired","HEALTH_PROFESSIONAL","setFullYear","showModal","isPetDataVisible","MAX_FILE_SIZE_BYTES","execute$","updateUserData","privacyPolicy","visibility","updateAvatar","logoChangedEvent","uploadLogo","imageURL","removeLog","currenteDate","dispensationDate","preWriterRegister","EntryGuard","loadChildren","HomeModule","PublicDocumentModule","HealthProfessionalModule","DocumentV2Module","ExternalDocumentModule","ExternalDocumentV2Module","AdminModule","PharmacistModule","FavoriteModelsModule","PublicPharmacyModule","RedirectModule","config","preloadingStrategy","clientAppService","httpRequest","clone","externalApi","isExternalApi","idToken","handle","_versaoAtual","_TEMPO_VERICACAO_VERSAO","env","verificaVersao","first","hash","versao","versaoIsAlterada","confirmDialog","reload","versaoAtual","novaVersao","_location","titleService","_appService","cdf","ev","querySelector","iniciaVerificacaoVersao","SelectPrescriptionComponent","activeModal","UserComponent","AppModule","tokenGetter","useClass","bootstrap","bootstrapModule"],"mappings":"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K,SAAU,oBACVC,SCNa,ylBCAA,88CFmBW,EAAA,KAVb,wXGmMAmtC,GAAgB,QAAhBA,GAAgB,OAAA,EAAA,EAAA,CAAA,CAxI5B,OAAA,EAAA,EAAA,CAAS,CACRz7B,QAAS,CACP,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EAAcM,UACd,EAAA,EAAYA,QAAQ,CAClB+b,OAAQ,CAACC,EAAA,EAAqBA,EAAA,GAC9BvI,OAAQ9nB,EAAA,EAAYqC,WAGtB,GAAA,EACA,EAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,EAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,GAEF+R,aAAc,CACZi1B,EACA,GACAtC,EACA,EAAA,EACA,GACA,GAAA,EACA,GAAA,EACA,GAAA,EACA2G,GACA,EACAkB,GACA,EACA,EACArC,EACA,GACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,GAAA,EACA,EAAA,GAEFr4B,QAAS,CACPm1B,EACA,GACAtC,EACA,EAAA,EACA,GACA,GAAA,EACA,GAAA,EACA,GAAA,EACA2G,GACA,EACAkB,GACA,EACA,EACArC,EACA,GACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,EAAA,EAEA,GAAA,EACA,EAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAAA,EACA,GAA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,MAAO,KACPl4D,KAAM,YAER,CACER,GAAI,IACJ04D,MAAO,KACPl4D,KAAM,SAER,CACER,GAAI,IACJ04D,MAAO,KACPl4D,KAAM,YAER,CACER,GAAI,IACJ04D,MAAO,KACPl4D,KAAM,oBAER,CACER,GAAI,IACJ04D,MAAO,KACPl4D,KAAM,qBAER,CACER,GAAI,IACJ04D,MAAO,KACPl4D,KAAM,YAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,eAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,gBAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,sBAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,eAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,WAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,cAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,cAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,YAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,aAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,kBAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,uBAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,eAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,WAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,qBAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,kBAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,WAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,gBAER,CACER,GAAI,KACJ04D,MAAO,KACPl4D,KAAM,mKC7HG,EAA6B,MASxC,YACUgU,EACA7E,EACAH,GAFA,KAAAgF,WAAAA,EACA,KAAA7E,aAAAA,EACA,KAAAH,iBAAAA,EATV,KAAA3K,0BAA2B,EAC3B,KAAAlH,SAAU,EACD,KAAAgyB,WAAY,EACX,KAAA4V,4BAA8B,IAAI,EAAA,EAC5C,KAAAxgC,OAAS,GAQT,YAEA,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","sourceRoot":"webpack:///","sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\nimport { ProductRennova } from '../models/product-rennova';\n\nconst API_UL = `${environment.apiRoot}rennova`;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RennovaService {\n  constructor(private http: HttpClient) {}\n\n  findAll(): Observable<ProductRennova[]> {\n    return this.http.get<ProductRennova[]>(`${API_UL}/products`);\n  }\n\n  sendDocument(data) {\n    return this.http.post(`${API_UL}/send-document`, data);\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\n\nexport const EXAM_MODEL_URL = 'exam-model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ExamModelService {\n  constructor(private http: HttpClient) {}\n\n  getListByPrescriberId(prescriberId: any): any {\n    return this.http\n      .get(`${environment.apiRoot}${EXAM_MODEL_URL}?prescriberId=${prescriberId}`)\n      .toPromise();\n  }\n\n  getById(modelId: string) {\n    return this.http.get(`${environment.apiRoot}${EXAM_MODEL_URL}/${modelId}`).toPromise();\n  }\n\n  create(orientationModel: any) {\n    return this.http.post(`${environment.apiRoot}${EXAM_MODEL_URL}`, orientationModel).toPromise();\n  }\n\n  update(orientationModel: any, modelId: string) {\n    return this.http\n      .put(`${environment.apiRoot}${EXAM_MODEL_URL}/${modelId}`, orientationModel)\n      .toPromise();\n  }\n\n  deleteById(modelId: string, prescriberId = '') {\n    const params = prescriberId ? { prescriberId } : {};\n    return this.http\n      .delete(`${environment.apiRoot}${EXAM_MODEL_URL}/${modelId}`, { params })\n      .toPromise();\n  }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { CrService } from '@app/modules/document/services/cr.service';\nimport { environment } from '@env/environment';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime, filter, takeUntil } from 'rxjs/operators';\nimport { MedicamentoBusca } from '../models/register-class';\n\n@Component({\n  selector: 'app-modal-dispention',\n  templateUrl: './modal-dispention.component.html',\n  styleUrls: ['./modal-dispention.component.scss']\n})\nexport class ModalDispentionComponent implements OnInit, OnDestroy {\n  medicament: any;\n  dispesationForm: FormGroup;\n  isNewItem = true;\n  medicamentItems: MedicamentoBusca[] = [];\n\n  batchForm: FormGroup;\n  medicationForm: FormGroup;\n\n  medications = [];\n  loading = false;\n\n  private destroyed$ = new ReplaySubject<boolean>();\n\n  constructor(private fb: FormBuilder, private ref: NzModalRef, private crService: CrService) {\n    this.batchForm = this.fb.group({ number: [''] });\n    this.medicationForm = this.fb.group({ ean: [''] });\n  }\n\n  ngOnInit() {\n    if (this.medicament.items) {\n      // deep copy\n      this.medicamentItems = JSON.parse(JSON.stringify(this.medicament.items));\n    }\n\n    this.medicationForm\n      .get('ean')\n      .valueChanges.pipe(\n        filter(value => value && value.length >= 3),\n        debounceTime(environment.debounceTime),\n        takeUntil(this.destroyed$)\n      )\n      .subscribe(value => {\n        try {\n          this.loading = true;\n          this.crService.searchMedicament(value).subscribe(medications => {\n            this.medications = medications;\n          });\n        } catch (err) {\n          console.error(err);\n        }\n        this.loading = false;\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed$.next(true);\n    this.destroyed$.complete();\n  }\n\n  selectMedicament(option: any) {\n    this.medicamentItems.push({ ...option, show: true });\n    this.isNewItem = false;\n    this.medications = [];\n    this.medicationForm.reset();\n  }\n\n  deleteMedicament(event) {\n    event.stopPropagation();\n    const path = event.path.find(p => p.id && p.id.includes('item-'));\n    if (path) {\n      const element = document.getElementById(path.id);\n      const elementIndex = element.id.replace('item-', '');\n      this.medicamentItems.splice(+elementIndex, 1);\n    }\n\n    if (!this.medicamentItems.length) {\n      this.isNewItem = true;\n    }\n  }\n\n  deleteBox(medicamentoBusca: MedicamentoBusca, nome: string) {\n    const index = medicamentoBusca.caixas.findIndex(caixa => caixa.nome === nome);\n    medicamentoBusca.caixas.splice(index, 1);\n  }\n\n  addBox(medicamentoBusca: MedicamentoBusca) {\n    const number = this.batchForm.get('number').value;\n    if (number) {\n      if (!medicamentoBusca.caixas) {\n        medicamentoBusca.caixas = [];\n      }\n\n      medicamentoBusca.caixas.push({ nome: number });\n      this.batchForm.get('number').reset();\n    }\n  }\n\n  newItem() {\n    this.isNewItem = true;\n    this.medicamentItems.forEach(item => (item.show = false));\n  }\n\n  cancel() {\n    this.reset();\n    this.ref.close();\n  }\n\n  private reset() {\n    this.batchForm.reset();\n    this.medicationForm.reset();\n    this.medicamentItems = [];\n    this.isNewItem = true;\n  }\n\n  finish() {\n    this.medicamentItems.forEach(item => (item.show = false));\n    this.medicament.items = this.medicamentItems;\n    this.medicamentItems = [];\n    this.ref.close();\n  }\n\n  get invalidForm() {\n    return (\n      (!this.medicamentItems.length && !this.medicament.items) ||\n      this.medicamentItems.reduce((acc, item) => acc || !item.caixas || !item.caixas.length, false)\n    );\n  }\n}\n","export default \"<div theme>\\n  <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"cancel()\\\">\\n    <span aria-hidden=\\\"true\\\">&times;</span>\\n  </button>\\n  <h1 class=\\\"titulo\\\">Dispensar Medicamento</h1>\\n\\n  <div class=\\\"modal-body pt-3 pb-3\\\">\\n    <p class=\\\"title1\\\">{{ medicament.name }}</p>\\n    <!-- <p class=\\\"title2\\\">{{ medicament.dosage }}</p> -->\\n    <p class=\\\"title3\\\">{{ medicament.dosage }}</p>\\n\\n    <nz-collapse>\\n      <nz-collapse-panel\\n        *ngFor=\\\"let item of medicamentItems; let i = index\\\"\\n        [nzHeader]=\\\"item.nome\\\"\\n        [nzActive]=\\\"item.show\\\"\\n        [nzExtra]=\\\"extraTpl\\\"\\n        [id]=\\\"'item-' + i\\\"\\n      >\\n        <p class=\\\"title3 mb-1\\\">{{ item.nome }} - {{ item.apresentacaoCustomizada }}</p>\\n        <p class=\\\"title4 mb-1\\\">{{ item.principio }}</p>\\n        <p class=\\\"title3 mb-1\\\">{{ item.laboratorio }}</p>\\n        <p class=\\\"title3 mt-2\\\">\\n          Intercambialidade:\\n          <nz-switch\\n            [(ngModel)]=\\\"item.intercambialidade\\\"\\n            nzCheckedChildren=\\\"Sim\\\"\\n            nzUnCheckedChildren=\\\"Não\\\"\\n          ></nz-switch>\\n        </p>\\n        <p class=\\\"title5\\\" *ngIf=\\\"item.caixas?.length\\\">\\n          <span class=\\\"badge-caixa\\\">{{ item.caixas.length }}</span> Quantas unidades desse produto\\n        </p>\\n\\n        <div class=\\\"row m-0\\\">\\n          <div class=\\\"col-12 m-0\\\" *ngFor=\\\"let caixa of item.caixas\\\">\\n            <span class=\\\"title3\\\">\\n              <label class=\\\"title6\\\">Número de lote caixa:</label> {{ caixa.nome }}\\n            </span>\\n            <a class=\\\"remove-icon\\\" (click)=\\\"deleteBox(item, caixa.nome)\\\">\\n              <i class=\\\"fa fa-trash-solid\\\" style=\\\"font-size: 16px;\\\"></i>\\n            </a>\\n            <hr class=\\\"m-0\\\" />\\n          </div>\\n\\n          <div class=\\\"col-10 pl-0 mt-2\\\">\\n            <form nz-form [formGroup]=\\\"batchForm\\\">\\n              <nz-form-item class=\\\"m-0\\\">\\n                <nz-form-control>\\n                  <input\\n                    nz-input\\n                    formControlName=\\\"number\\\"\\n                    placeholder=\\\"Digite aqui o número do lote da caixa\\\"\\n                    maxlength=\\\"20\\\"\\n                  />\\n                </nz-form-control>\\n              </nz-form-item>\\n            </form>\\n          </div>\\n\\n          <div class=\\\"col-2 align-self-center pl-0 mt-2\\\">\\n            <a class=\\\"add-icon\\\" (click)=\\\"addBox(item)\\\">\\n              <i class=\\\"fa fa-plus\\\" style=\\\"font-size: 20px;\\\"></i>\\n            </a>\\n          </div>\\n        </div>\\n      </nz-collapse-panel>\\n    </nz-collapse>\\n    <ng-template #extraTpl>\\n      <i nz-icon nzType=\\\"delete\\\" (click)=\\\"deleteMedicament($event)\\\"></i>\\n    </ng-template>\\n\\n    <div class=\\\"row mt-2 mb-2\\\" *ngIf=\\\"isNewItem\\\">\\n      <div class=\\\"col-12\\\" [formGroup]=\\\"medicationForm\\\">\\n        <nz-input-group [nzSuffix]=\\\"suffixEan\\\">\\n          <input\\n            nz-input\\n            formControlName=\\\"ean\\\"\\n            [nzAutocomplete]=\\\"autoMedication\\\"\\n            placeholder=\\\"Digite aqui o nome do medicamento ou código de barras para buscar\\\"\\n            maxlength=\\\"250\\\"\\n          />\\n          <nz-autocomplete #autoMedication nzBackfill>\\n            <nz-auto-option\\n              (click)=\\\"selectMedicament(option)\\\"\\n              *ngFor=\\\"let option of medications\\\"\\n              class=\\\"mao\\\"\\n            >\\n              <div>{{ option?.nome }}, &nbsp;</div>\\n              <div>{{ option.apresentacaoCustomizada }},&nbsp;</div>\\n              <div></div>\\n              <div>{{ option?.tipo }}</div>\\n            </nz-auto-option>\\n          </nz-autocomplete>\\n        </nz-input-group>\\n        <ng-template #suffixEan>\\n          <i nz-icon nzType=\\\"loading\\\" *ngIf=\\\"loading\\\" class=\\\"pr-2\\\"></i>\\n          <i nz-icon nzType=\\\"barcode\\\" nzTheme=\\\"outline\\\" style=\\\"font-size: 20px;\\\"></i>\\n        </ng-template>\\n      </div>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-3 d-flex justify-content-start\\\">\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-icon btn-cancel btn-add text-capitalize btn-save\\\"\\n        (click)=\\\"cancel()\\\"\\n      >\\n        <span class=\\\"btn-inner--text\\\">CANCELAR</span>\\n      </button>\\n    </div>\\n\\n    <div class=\\\"col-4 d-flex justify-content-center\\\">\\n      <button\\n        *ngIf=\\\"!invalidForm\\\"\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-icon btn-cancel btn-add text-capitalize btn-save\\\"\\n        (click)=\\\"newItem()\\\"\\n      >\\n        <span class=\\\"btn-inner--text\\\">NOVO ITEM</span>\\n      </button>\\n    </div>\\n\\n    <div class=\\\"col-5 d-flex justify-content-end\\\">\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-icon btn-add text-capitalize btn-save\\\"\\n        [ngClass]=\\\"invalidForm ? 'btn-cancel' : 'btn-info'\\\"\\n        (click)=\\\"finish()\\\"\\n        [disabled]=\\\"invalidForm\\\"\\n      >\\n        <span class=\\\"btn-inner--text\\\">CONCLUIR MEDICAMENTO</span>\\n      </button>\\n    </div>\\n  </div>\\n</div>\\n\";","export default \".modal-header {\\n  background-color: #4cbca3;\\n  font-family: \\\"probold\\\";\\n}\\n\\n.titulo {\\n  text-align: center;\\n  font-size: 35px;\\n  font-family: \\\"probold\\\";\\n  color: var(--color-title);\\n}\\n\\n.btn-cancel {\\n  color: #fff;\\n  background-color: #8c8c8c;\\n  border-color: #8c8c8c;\\n  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08);\\n}\\n\\n.btn-save {\\n  padding-top: 7px;\\n  padding-bottom: 7px;\\n  margin-top: 13px;\\n  margin-bottom: 5px;\\n}\\n\\n.title1 {\\n  font-size: 18px;\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n  font-weight: bold;\\n}\\n\\n.title2 {\\n  font-size: 16px;\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n  opacity: 0.8;\\n}\\n\\n.title3 {\\n  font-size: 14px;\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n}\\n\\n.title4 {\\n  font-size: 14px;\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n  opacity: 0.8;\\n}\\n\\n.title5 {\\n  font-size: 14px;\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n  font-weight: bold;\\n}\\n\\n.title6 {\\n  font-size: 12px;\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n  opacity: 0.8;\\n}\\n\\n.badge-caixa {\\n  display: inline-block;\\n  min-width: 10px;\\n  padding: 4px 7px;\\n  font-size: 12px;\\n  font-weight: 700;\\n  line-height: 1;\\n  color: #fff;\\n  text-align: center;\\n  white-space: nowrap;\\n  vertical-align: middle;\\n  background-color: #0b6054;\\n  border-radius: 10px;\\n  margin-right: 5px;\\n}\\n\\n.btn {\\n  font-size: 12px;\\n}\\n\\n.modal-body {\\n  max-height: 600px;\\n  overflow: auto;\\n}\\n\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n  margin-bottom: 0.5rem;\\n}\\n\\n::ng-deep .modal-dispensation .ant-input-group > .ant-input:first-child,\\n::ng-deep .modal-dispensation .ant-input-group-addon:first-child {\\n  border-radius: 10px;\\n}\\n\\n::ng-deep .modal-dispensation .ant-switch-checked {\\n  background-color: var(--bg-color-secondary);\\n}\\n\\n::ng-deep .modal-dispensation .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {\\n  border-color: var(--color-input-border-hover);\\n}\";","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport { OnlyNumbersPipe } from '@app/shared/pipes/only-numbers.pipe';\r\n\r\n@Pipe({\r\n  name: 'isTel'\r\n})\r\n@Injectable()\r\nexport class IsTelPipe implements PipeTransform {\r\n  transform(value): boolean {\r\n    if (!!value) {\r\n      const onlyNumbers = new OnlyNumbersPipe();\r\n      const tel = onlyNumbers.transform(value);\r\n      const ddd = parseInt(tel.substring(0, 2), 10);\r\n      const telWithoutDDD = tel.substring(2, tel.length);\r\n      if (ddd <= 10 || ddd >= 100) {\r\n        return false;\r\n      }\r\n      return !(\r\n        (telWithoutDDD.length !== 8 && telWithoutDDD.length !== 9) ||\r\n        (telWithoutDDD.length === 9 && [7, 8, 9].indexOf(parseInt(telWithoutDDD.charAt(0), 10)) === -1)\r\n      );\r\n    }\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { Buffer } from 'buffer';\n\nexport interface AppState {\n  isRennova: boolean;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class StateService {\n  removeAppState() {\n    localStorage.removeItem('state');\n  }\n\n  set data(appState: AppState) {\n    const stateHash = Buffer.from(JSON.stringify(appState)).toString('base64');\n    localStorage.setItem('state', stateHash);\n  }\n\n  get data(): AppState {\n    const stateHash = localStorage.getItem('state');\n    if (!stateHash) {\n      return;\n    }\n    const state = Buffer.from(stateHash, 'base64').toString('ascii');\n    return JSON.parse(state) as AppState;\n  }\n}\n","export default \"::ng-deep .ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {\\n  box-shadow: 0 9px 18px rgba(0, 0, 0, 0.18);\\n}\\n::ng-deep .ant-drawer.ant-drawer-open .ant-drawer-mask {\\n  opacity: 0.11;\\n}\\n::ng-deep .ant-drawer-body {\\n  padding-top: 0;\\n  height: 75vh;\\n  overflow: auto;\\n}\\n::ng-deep .ant-drawer-open {\\n  top: 80px;\\n}\\n::ng-deep .menu-drawer {\\n  top: 80px;\\n  background-color: #007260;\\n  border: 1px solid #007260;\\n}\\n::ng-deep .menu-drawer .ant-drawer-content {\\n  background-color: transparent;\\n}\\n::ng-deep .inner-menu {\\n  display: flex;\\n  flex-direction: column;\\n}\\n::ng-deep .inner-menu .menu-icon {\\n  align-self: flex-end;\\n  margin: 20px 0;\\n}\\n::ng-deep .inner-menu .menu-icon .fa {\\n  font-size: 20px;\\n  color: white;\\n}\\n::ng-deep .inner-menu .menu li {\\n  padding: 20px 0;\\n}\\n::ng-deep .inner-menu .menu a {\\n  color: white;\\n  font-family: \\\"problack\\\";\\n  font-size: 18px;\\n  text-transform: uppercase;\\n}\\n::ng-deep .inner-menu .menu a:focus {\\n  text-decoration: none;\\n}\\n::ng-deep .inner-menu .menu a .fa {\\n  margin-right: 10px;\\n}\\n::ng-deep .medicationAutoComplete {\\n  margin-top: 17px;\\n}\\n.toolbar {\\n  display: flex;\\n}\\n.toolbar .menu-toggler {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 0;\\n  border-radius: 0;\\n  width: 80px;\\n  filter: drop-shadow(0px 3px 6px rgba(0, 0, 0, 0.16));\\n  margin: 0;\\n}\\n.toolbar .menu-toggler .fa:before {\\n  font-size: 22px;\\n}\\n.toolbar .menu-toggler,\\n.toolbar .toolbar-options {\\n  height: 80px;\\n}\\n.toolbar .toolbar-menu {\\n  flex: 1;\\n}\\n.toolbar .toolbar-menu .toolbar-options {\\n  background-color: #f5f5f5;\\n  display: flex;\\n  align-items: center;\\n  justify-content: flex-end;\\n  padding-right: 40px;\\n  padding-left: 60px;\\n}\\n.toolbar .toolbar-menu .toolbar-options .btn {\\n  font-family: \\\"problack\\\", sans-serif;\\n}\\n.toolbar .toolbar-menu .toolbar-options .btn-green {\\n  background-color: #87ebe1;\\n  border-color: #87ebe1;\\n  color: #1b403a;\\n}\\n.toolbar .toolbar-menu .toolbar-options .btn-default {\\n  background-color: #afafaf;\\n  border-color: #afafaf;\\n  color: white;\\n}\\n.toolbar .toolbar-menu .toolbar-tags {\\n  background-color: #ebebeb;\\n  height: 40px;\\n  border-radius: 0 0 10px 10px;\\n}\\n.prescription {\\n  padding-top: 2rem;\\n  padding-left: 9.6rem;\\n  padding-right: 10rem;\\n  height: calc(100vh - 8.125rem);\\n  overflow-y: auto;\\n}\\n.prescription .doc-type {\\n  margin-right: 25px;\\n}\\n.prescription .hospital-brand {\\n  position: relative;\\n  display: flex;\\n  align-self: flex-end;\\n  justify-content: center;\\n  flex-direction: column;\\n  align-items: center;\\n  padding-top: 15px;\\n}\\n.prescription .hospital-brand nz-dropdown {\\n  align-self: flex-end;\\n}\\n.prescription .hospital-brand .rectangles {\\n  display: flex;\\n  flex-wrap: wrap;\\n  width: 48px;\\n}\\n.prescription .hospital-brand .rectangles .rectangle {\\n  width: 24px;\\n  height: 24px;\\n}\\n.prescription .hospital-brand .rectangles .rectangle.bg-light-alt {\\n  background-color: #4d4d4d;\\n}\\n.prescription .hospital-brand .hospital-name {\\n  font-family: \\\"probold\\\";\\n  font-size: 23px;\\n  color: #4d4d4d;\\n  margin-top: 10px;\\n}\\n.prescription .hospital-brand .arrow-circle {\\n  font-size: 24px;\\n  color: #4d4d4d;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n}\\n.prescription form .input-name {\\n  background-color: transparent;\\n  border-color: transparent;\\n  font-family: \\\"Times New Roman\\\", Times, serif, \\\"proregular\\\", \\\"Source Serif Pro\\\", \\\"sans-serif\\\";\\n  color: #920505 !important;\\n  font-size: 40px;\\n  height: auto;\\n  border-radius: 0;\\n  border-bottom: 1px solid;\\n}\\n.prescription form .input-name::-moz-placeholder {\\n  color: rgba(146, 5, 5, 0.306);\\n}\\n.prescription form .input-name::placeholder, .prescription form .input-name {\\n  color: rgba(146, 5, 5, 0.306);\\n}\\n@media (max-width: 1025px) {\\n  .prescription form .input-name {\\n    font-size: 20px;\\n  }\\n}\\n.prescription form .input-name:hover {\\n  border-bottom: 1px dashed #4d4d4d;\\n}\\n.prescription form .input-name:focus {\\n  border-bottom: 1px dashed #4d4d4d;\\n  box-shadow: none;\\n}\\n.add-prescription {\\n  padding: 20px 0;\\n  border-top: 1px solid #f5f5f5;\\n  min-height: 81px;\\n  display: flex;\\n  justify-content: center;\\n}\\n@media (max-width: 1025px) {\\n  .add-prescription .btn-icon .btn-inner--text {\\n    font-size: 13px;\\n    word-break: break-word;\\n  }\\n}\\n.add-prescription.adding-bg {\\n  background-color: #f5f5f5;\\n  border-top: 1px solid transparent;\\n}\\n.add-prescription .btn-add-name {\\n  background-color: var(--bg-color-primary);\\n  border: 1px solid var(--bg-color-primary);\\n  color: var(--color-white);\\n  padding: 0px 10px;\\n  margin: 10px;\\n}\\n.add-prescription .btn-add-outiline {\\n  display: flex;\\n  padding: 0 0 0 8px;\\n  height: 40px;\\n  align-items: center;\\n  border-radius: 10px;\\n  overflow: hidden;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n  background-color: var(--bg-color-secondary);\\n  color: var(--color-white);\\n}\\n.add-prescription .btn-add-outiline .btn-inner--icon {\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 40px;\\n  width: 50px;\\n}\\n.add-patient {\\n  border: 0;\\n  padding-left: 20px;\\n  padding-bottom: 0;\\n  min-height: 75px;\\n}\\n.footer {\\n  height: 50px;\\n  padding: 0;\\n  border: 0;\\n  z-index: 1;\\n  background-color: var(--bg-footer);\\n}\\n.footer .btn {\\n  box-shadow: none;\\n  border-radius: 0;\\n  height: 100%;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding-top: 0.725rem;\\n  background-color: var(--bg-color-btn-save);\\n  color: var(--color-white);\\n}\\n@media (max-width: 1025px) {\\n  .footer .btn {\\n    font-size: 11px;\\n  }\\n}\\n.footer .btn i {\\n  margin-left: 10px;\\n}\\n.footer .btn i:before {\\n  font-size: 16px;\\n}\\n.medicationNameInput {\\n  background-color: transparent;\\n  border-color: transparent;\\n  height: 100%;\\n  box-shadow: none;\\n}\\ntextarea {\\n  resize: none;\\n  background-color: transparent;\\n  border: 0;\\n  border-radius: 0;\\n  box-shadow: none;\\n  padding-left: 12px;\\n  color: #4d4d4d;\\n  font-size: 18px;\\n}\\ntextarea:hover, textarea:focus {\\n  border-color: transparent;\\n  box-shadow: none;\\n}\\n.free-prescription {\\n  display: flex;\\n}\\n.free-prescription .break-line {\\n  margin-left: 7px;\\n  white-space: pre-wrap;\\n}\\n.toolbar {\\n  display: flex;\\n}\\n.toolbar .menu-toggler {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 0;\\n  border-radius: 0;\\n  width: 80px;\\n  filter: drop-shadow(0px 3px 6px rgba(0, 0, 0, 0.16));\\n  margin: 0;\\n}\\n.toolbar .menu-toggler .fa:before {\\n  font-size: 22px;\\n}\\n.toolbar .menu-toggler,\\n.toolbar .toolbar-options {\\n  height: 80px;\\n}\\n.toolbar .toolbar-menu {\\n  flex: 1;\\n}\\n.toolbar .toolbar-menu .toolbar-options {\\n  background-color: #f5f5f5;\\n  display: flex;\\n  align-items: center;\\n  justify-content: flex-end;\\n  padding-right: 40px;\\n  padding-left: 60px;\\n}\\n.toolbar .toolbar-menu .toolbar-options .btn {\\n  font-family: \\\"problack\\\", sans-serif;\\n}\\n.toolbar .toolbar-menu .toolbar-options .btn-green {\\n  background-color: #87ebe1;\\n  border-color: #87ebe1;\\n  color: #1b403a;\\n}\\n.toolbar .toolbar-menu .toolbar-options .btn-default {\\n  background-color: #afafaf;\\n  border-color: #afafaf;\\n  color: white;\\n}\\n.toolbar .toolbar-menu .toolbar-tags {\\n  background-color: #ebebeb;\\n  height: 40px;\\n  border-radius: 0 0 10px 10px;\\n}\\n@media (max-width: 1025px) {\\n  section.section.container-fluid.prescription.d-flex.flex-column {\\n    padding: 20px;\\n  }\\n\\n  .ant-form-item-children input {\\n    font-size: 16px;\\n  }\\n}\\n.label-name-patient {\\n  font-size: 16pt;\\n}\\n@media (min-width: 940px) {\\n  .label-name-patient {\\n    font-size: 28pt;\\n  }\\n}\\n.label-name-patient__icon {\\n  font-size: 12pt;\\n  cursor: pointer;\\n  color: red;\\n}\\n@media (min-width: 940px) {\\n  .label-name-patient__icon {\\n    font-size: 18pt;\\n  }\\n}\";","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\nimport { Observable, of } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { version } from '../../../../package.json';\n\n@Injectable({ providedIn: 'root' })\nexport class CoreService {\n  private _backendVersion = '';\n\n  readonly SMALL_LENGTH_VIEW_PORT = 474;\n  readonly MEDIUM_LENGTH_VIEW_PORT = 768;\n\n  constructor(private http: HttpClient) {}\n\n  get isMrd() {\n    return window.location.origin.toLowerCase().includes('meureceituario');\n  }\n\n  get frontendVersion(): string {\n    return version;\n  }\n\n  getBackendVersion(): Observable<string> {\n    if (this._backendVersion) {\n      return of(this._backendVersion);\n    }\n    return this.http.get<any>(`${environment.apiRoot}info`).pipe(\n      map(({ version: v }) => v),\n      tap(v => (this._backendVersion = v))\n    );\n  }\n\n  isViewPortMobile(): boolean {\n    return window.innerWidth <= this.SMALL_LENGTH_VIEW_PORT;\n  }\n\n  isViewPortTablet(): boolean {\n    return window.innerWidth <= this.MEDIUM_LENGTH_VIEW_PORT;\n  }\n}\n","export enum CpfCnpjApiErrors {\r\n  INVALID_TOKEN = 1000,\r\n  INSUFFICIENT_CREDITS = 1001,\r\n  SUSPENDED_ACCOUNT = 1002,\r\n  BLACKLIST = 1003,\r\n  PACKAGE_UNAVAILABLE = 1004,\r\n  IS_NOT_POSSIBLE_TO_CONSULT = 1005,\r\n  OFFLINE_SUPPLIER = 1006,\r\n  CPF_INVALID = 100,\r\n  CPF_WITH_11_DIGIT = 101,\r\n  CPF_DOES_NOT_EXIST = 102,\r\n  CNPJ_INVALID = 200,\r\n  CNPJ_WITH_11_DIGIT = 201,\r\n  CNPJ_DOES_NOT_EXIST = 202\r\n}\r\n","import { Address } from './address';\nimport { Comercial } from './comercial';\nimport { User } from './decodedLoginToken';\nimport { ProfessionalType } from './professional-type.enum';\nimport { Specialty } from './specialty';\n\nexport type statusServiceCFM = 'SERVICE_AVAILABLE' | 'SERVICE_UNAVAILABLE';\n\nexport type CfmData = {\n  validate: {\n    isValid: boolean;\n    status: statusServiceCFM;\n  };\n  consult: {\n    name?: string;\n    uf?: string;\n    specialties?: string[];\n    updateDate?: string;\n    inscription?: {\n      code?: string;\n      description?: string;\n    };\n    situation?: {\n      code?: string;\n      status?: string;\n      description?: string;\n    };\n    isValid: boolean;\n    status: statusServiceCFM;\n    errorCode?: string;\n    errorMessage?: string;\n    error?: any;\n  };\n  pendenteValidacao?: boolean;\n};\n\nexport class HealthProfessional {\n  _id: string;\n  userId: string;\n  user: User;\n  professionalType: ProfessionalType;\n  name: string;\n  fullname: string;\n  cpf: string;\n  regionalCouncilNumber: {\n    label: string;\n    number: string;\n    uf: string;\n  };\n  specialties: Specialty[];\n  cellphone: string;\n  telephone: string;\n  otherPhones?: string[];\n  otherEmails?: string[];\n  personalAddress?: Address;\n  dateOfBirth?: Date;\n  sex?: string;\n  commercialData?: Comercial[];\n  pets?: any[];\n  cfm?: CfmData | any;\n\n  loading?: boolean;\n  loadingRevalidate?: boolean;\n  loadingTenant?: boolean;\n\n  static getRegionalCouncilLabel(professionalType: string) {\n    const RegionalCouncilLabels = {\n      dentist: 'CRO',\n      doctor: 'CRM',\n      pharmacist: 'CRF',\n      biomedic: 'CRBM1',\n      veterinarian: 'CRMV'\n    };\n    return RegionalCouncilLabels[professionalType];\n  }\n\n  static getProfessionalTypeName(professionalType: string) {\n    const RegionalCouncilLabels = {\n      dentist: 'Dentista',\n      doctor: 'Médico',\n      pharmacist: 'Farmacêutico',\n      biomedic: 'Biomédico',\n      veterinarian: 'Veterinário'\n    };\n    return RegionalCouncilLabels[professionalType];\n  }\n\n  static getProfessionalTypeNameLabel(professionalType: string) {\n    const RegionalCouncilLabels = {\n      dentist: 'Dentista',\n      doctor: 'Médico(a)',\n      pharmacist: 'Farmacêutico',\n      biomedic: 'Biomédico',\n      veterinarian: 'Veterinário(a)'\n    };\n    return RegionalCouncilLabels[professionalType];\n  }\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'isCompleteName'\r\n})\r\n@Injectable()\r\nexport class IsCompleteNamePipe implements PipeTransform {\r\n  transform(name: string): boolean {\r\n    return !!/^[a-záàâãéèêíïóôõöúçñ']+\\s[a-záàâãéèêíïóôõöúçñ ']+$/gi.exec(name);\r\n  }\r\n}\r\n","export enum ProfessionalType {\n  DOCTOR = 'doctor',\n  DENTIST = 'dentist',\n  PHARMACIST = 'pharmacist',\n  BIOMEDIC = 'biomedic',\n  VETERINARIAN = 'veterinarian'\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { environment } from '@env/environment';\nimport { Attestation } from '@app/shared/models/attestation';\n\nexport const ATTESTATION = `attestation`;\nexport const ATTESTATION_PRESCRIBER = `attestation/prescriber`;\nexport const ATTESTATION_PATIENT_URL = `attestation/patient`;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AttestationService {\n  constructor(private http: HttpClient) {}\n\n  public save(attestation): Observable<any> {\n    if (attestation.code) {\n      return this.http.put(`${environment.apiRoot}${ATTESTATION}/${attestation.code}`, attestation);\n    }\n    return this.http.post(`${environment.apiRoot}${ATTESTATION}`, attestation);\n  }\n\n  public getAllPrescriberAttestations(prescriberId: string): Observable<Attestation[]> {\n    return this.http.get<Attestation[]>(`${environment.apiRoot}${ATTESTATION}`, {\n      params: { prescriberId }\n    });\n  }\n\n  public getAttestationsByPrescriberUserId(prescriberId: string, filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${ATTESTATION_PRESCRIBER}/${prescriberId}`, {\n      params: filter\n    });\n  }\n\n  public getAllPatientsAttestations(patientId: string) {\n    return this.http.get<Attestation[]>(`${environment.apiRoot}${ATTESTATION}`, {\n      params: { patientId }\n    });\n  }\n\n  getAttestationsByPatientId(patientId: string, filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${ATTESTATION_PATIENT_URL}/${patientId}`, {\n      params: filter\n    });\n  }\n\n  getAttestation(code: string) {\n    return this.http.get(`${environment.apiRoot}${ATTESTATION}/${code}`);\n  }\n\n  getByFilter(filter: any): Promise<Attestation[]> {\n    return this.http\n      .get<Attestation[]>(`${environment.apiRoot}${ATTESTATION}/filter`, {\n        params: filter\n      })\n      .toPromise();\n  }\n\n  delete(attestationId: number): Observable<any> {\n    return this.http.delete(`${environment.apiRoot}${ATTESTATION}/${attestationId}`);\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CoreService } from '@app/core/services/core.service';\n\nimport { version } from '../../../../../package.json';\n\n@Component({\n  selector: 'app-AppVersion',\n  template: `\n    <div style=\"padding: 10px;\">\n      <p>\n        Varsão do Backend: <strong>{{ versionBack }}</strong>\n      </p>\n\n      <p>\n        Varsão do Frontend: <strong>{{ versionFront }}</strong>\n      </p>\n    </div>\n  `\n})\nexport class AppVersionComponent implements OnInit {\n  versionFront: string = version;\n  versionBack: string;\n\n  constructor(private coreService: CoreService) {}\n\n  ngOnInit() {\n    this.coreService.getBackendVersion().subscribe(version => {\n      this.versionBack = version;\n    });\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { PdfService } from '@app/modules/document/services/pdf.service';\nimport { PdfData } from '@app/shared/models/pdf-data';\nimport { Retention } from '@app/shared/models/retention';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\n\nconst RETENTION_URL = 'retention';\n\n@Injectable({ providedIn: 'root' })\nexport class RetentionService {\n  constructor(private http: HttpClient, private pdfService: PdfService) {}\n\n  public getRetentionByCode(dispensationCode: string): Observable<Retention> {\n    return this.http.get<Retention>(`${environment.apiRoot}${RETENTION_URL}/find/${dispensationCode}`);\n  }\n  public getRetentions(): Observable<Retention[]> {\n    return this.http.get<Retention[]>(`${environment.apiRoot}${RETENTION_URL}`);\n  }\n\n  getRetentionsByFilter(filter: any): Observable<Retention[]> {\n    return this.http.get<Retention[]>(`${environment.apiRoot}${RETENTION_URL}/filter`, {\n      params: filter\n    });\n  }\n\n  getRetentionOfThirdPartiesHistory(userId: string) {\n    return this.http.get<any[]>(`${environment.apiRoot}${RETENTION_URL}/third-parties/${userId}`);\n  }\n\n  getRetentionOfThirdPartiesHistoryByFilter(userId: string, filter: any) {\n    return this.http.get<any>(`${environment.apiRoot}${RETENTION_URL}/third-parties/filter/${userId}`, {\n      params: filter\n    });\n  }\n\n  saveRetentionOfThirdParties(retention: any) {\n    return this.http.post(`${environment.apiRoot}${RETENTION_URL}/third-parties`, retention).toPromise();\n  }\n\n  cancel(data, isRetentionsThirdParties: boolean): Observable<any> {\n    const payload = { userId: data.userId, reason: data.reason };\n    return this.http.put(\n      `${environment.apiRoot}${RETENTION_URL}/third-parties/${data.retentionId}/cancel?retentionsThirdParties=${isRetentionsThirdParties}`,\n      {\n        payload\n      }\n    );\n  }\n\n  async downloadThirdPartyPdf(id: string) {\n    const pdf = await this.http\n      .get<PdfData>(`${environment.apiRoot}${RETENTION_URL}/third-parties/${id}/pdf`)\n      .toPromise();\n    this.pdfService.openPdf(pdf);\n  }\n}\n","import { Component, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd';\r\n\r\n@Component({\r\n  selector: 'app-dialog-modal',\r\n  templateUrl: './dialog-modal.component.html',\r\n  styleUrls: ['./dialog-modal.component.scss']\r\n})\r\nexport class DialogModalComponent {\r\n  tplModal: NzModalRef;\r\n  exibirConteundoExterno = false;\r\n\r\n  @Input() title?: string;\r\n  @Input() subtitle?: string;\r\n  @Input() subtitle2?: string;\r\n\r\n  @ViewChild('tplContent', { static: true })\r\n  tplContent: TemplateRef<{}>;\r\n\r\n  @ViewChild('tplFooter', { static: true })\r\n  tplFooter: TemplateRef<{}>;\r\n\r\n  constructor(private modalService: NzModalService) {}\r\n\r\n  createTplModal(title: string, subtitle: string, subtitle2?: string): void {\r\n    this.title = title;\r\n    this.subtitle = subtitle;\r\n    this.subtitle2 = subtitle2;\r\n    this.tplModal = this.modalService.create({\r\n      nzContent: this.tplContent,\r\n      nzFooter: this.tplFooter,\r\n      nzClosable: false,\r\n      nzWidth: 650,\r\n      nzMaskClosable: false,\r\n      nzOnCancel: () => {},\r\n      nzOnOk: () => {}\r\n    });\r\n  }\r\n\r\n  createTplModalContent(content: TemplateRef<{}>): void {\r\n    this.tplModal = this.modalService.create({\r\n      nzContent: content,\r\n      nzFooter: this.tplFooter,\r\n      nzClosable: false,\r\n      nzWidth: 650,\r\n      nzMaskClosable: false,\r\n      nzOnCancel: () => {},\r\n      nzOnOk: () => {}\r\n    });\r\n  }\r\n\r\n  destroyTplModal(): void {\r\n    this.tplModal.destroy();\r\n  }\r\n}\r\n","export default \"<ng-template #tplContent let-params let-ref=\\\"tplModal\\\">\\r\\n  <div class=\\\"container\\\">\\r\\n    <h4 class=\\\"title text-modal\\\" theme>\\r\\n      {{ title }}\\r\\n    </h4>\\r\\n    <p>{{ subtitle }}</p>\\r\\n    <p *ngIf=\\\"subtitle2\\\">{{ subtitle2 }}</p>\\r\\n  </div>\\r\\n</ng-template>\\r\\n<ng-template #tplFooter>\\r\\n  <div class=\\\"container modal-footer d-flex align-items-end flex-column\\\" theme>\\r\\n    <div class=\\\"row\\\">\\r\\n      <button class=\\\"btn btn-ok\\\" (click)=\\\"destroyTplModal()\\\">\\r\\n        Ok\\r\\n      </button>\\r\\n    </div>\\r\\n  </div>\\r\\n</ng-template>\\r\\n\";","export default \".title {\\n  text-transform: none;\\n  font-size: 50px;\\n  line-height: normal;\\n}\\n\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n}\\n\\n.text-modal {\\n  color: var(--bg-color-primary) !important;\\n}\\n\\n.modal-footer {\\n  padding: 10px 32px;\\n  background-color: var(--bg-modal-header);\\n}\\n\\n.modal-footer .btn {\\n  font-size: 12px;\\n}\\n\\n::ng-deep .ant-modal-body {\\n  text-align: center;\\n  padding-bottom: 0;\\n}\\n\\n::ng-deep .ant-modal-content {\\n  border-radius: 10px;\\n  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);\\n  max-height: 460px;\\n}\\n\\n::ng-deep .ant-modal-footer {\\n  border-radius: 0 0 10px 10px;\\n  border-top: 0;\\n  padding: 0 !important;\\n}\";","export enum Permission {\r\n  BASIC = 'basic',\r\n  MASTER = 'master',\r\n  MANAGER = 'manager'\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { UserService } from '@app/modules/user/user.service';\r\nimport { NoConcurrent } from '@app/shared/decorators/no-concurrent';\r\nimport { User } from '@app/shared/models/decodedLoginToken';\r\nimport { LoginResponse } from '@app/shared/models/loginResponse';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { environment } from '@env/environment';\r\nimport { LocalStorage } from '@ngx-pwa/local-storage';\r\nimport JwtDecode from 'jwt-decode';\r\nimport { of } from 'rxjs/internal/observable/of';\r\nimport { mergeMap, tap } from 'rxjs/operators';\r\n\r\nexport const USER_URL = 'user';\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n  constructor(\r\n    private http: HttpClient,\r\n    private _localStorage: LocalStorage,\r\n    private userService: UserService,\r\n    private jwtHelperService: JwtHelperService\r\n  ) {}\r\n\r\n  get token(): string {\r\n    return localStorage.getItem('token');\r\n  }\r\n\r\n  get isLoggedIn(): boolean {\r\n    return this.token && !this.jwtHelperService.isTokenExpired(this.token);\r\n  }\r\n\r\n  get isLoggedOut(): boolean {\r\n    return !this.isLoggedIn;\r\n  }\r\n\r\n  get hasAccessNewModulePrescription() {\r\n    return this.user() && this.user().features.some(f => f.name === 'Novo Modulo Prescrição');\r\n  }\r\n\r\n  user(): User {\r\n    return this.token && this.decodeToken(this.token);\r\n  }\r\n\r\n  @NoConcurrent()\r\n  login({ email, password }: { email: string; password: string }) {\r\n    return this.http.post(`${environment.apiRoot}${USER_URL}/login`, { email, password }).pipe(\r\n      tap((res: LoginResponse) => {\r\n        this.setSession(res.token);\r\n        this.userService.clearAvatar();\r\n      })\r\n    );\r\n  }\r\n\r\n  refreshToken() {\r\n    return this.http.get(`${environment.apiRoot}${USER_URL}/refresh`).pipe(\r\n      tap((res: LoginResponse) => this.setSession(res.token)),\r\n      mergeMap(_ => of(this.user()))\r\n    );\r\n  }\r\n\r\n  logout() {\r\n    this._localStorage.removeItem('id_token').subscribe();\r\n    this._localStorage.removeItem('expire_at').subscribe();\r\n    localStorage.removeItem('extra_data');\r\n    localStorage.removeItem('userId');\r\n    localStorage.removeItem('userType');\r\n    localStorage.removeItem('fullUserId');\r\n    localStorage.removeItem('token');\r\n    localStorage.removeItem('hideWomensModal');\r\n    this.userService.clearAvatar();\r\n  }\r\n\r\n  decodeToken(token: string): any {\r\n    return JwtDecode(token);\r\n  }\r\n\r\n  private setSession(token: string) {\r\n    localStorage.setItem('token', token);\r\n    this._localStorage.setItem('id_token', token).subscribe();\r\n  }\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nexport function NoConcurrent() {\r\n  return (target, propertyKey: string, descriptor: PropertyDescriptor) => {\r\n    // save a reference to the original method this way we keep the values currently in the\r\n    // descriptor and don't overwrite what another decorator might have done to the descriptor.\r\n    if (descriptor === undefined) {\r\n      descriptor = Object.getOwnPropertyDescriptor(target, propertyKey);\r\n    }\r\n    const originalMethod: any = descriptor.value;\r\n\r\n    // editing the descriptor/value parameter\r\n    descriptor.value = function() {\r\n      const prop: any = target[propertyKey];\r\n      const args: any = arguments;\r\n\r\n      if (prop.$$noConcurrent) {\r\n        return prop.$$noConcurrent;\r\n      }\r\n\r\n      return new Observable(subscriber => {\r\n        const obs: Observable<any> = originalMethod.apply(this, args);\r\n        prop.$$noConcurrent = obs;\r\n        obs\r\n          .pipe(\r\n            catchError((err: Response | any) => {\r\n              // console.log('no concurrent: received error');\r\n              delete prop.$$noConcurrent;\r\n              subscriber.error(err);\r\n              subscriber.complete();\r\n              return of();\r\n            })\r\n          )\r\n          .subscribe(res => {\r\n            delete prop.$$noConcurrent;\r\n            subscriber.next(res);\r\n            subscriber.complete();\r\n          });\r\n      });\r\n    };\r\n\r\n    // return edited descriptor as opposed to overwriting the descriptor\r\n    return descriptor;\r\n  };\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { CepService } from '@app/modules/entry/services/cep.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { Furs } from '@app/shared/data/Fur';\nimport { BrazilState, Fur, Patient } from '@app/shared/models';\nimport { PetPatient } from '@app/shared/models/pet-patient';\nimport { Race } from '@app/shared/models/races';\nimport { Species } from '@app/shared/models/species';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { PetPatientService } from '../../services/pet-patient.service';\nimport { DateUtils } from './../../../../shared/data/DateUtils';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-modal-edit-pet',\n  templateUrl: './modal-edit-pet.component.html',\n  styleUrls: ['./modal-edit-pet.component.scss']\n})\nexport class ModalEditPetComponent implements OnInit {\n  @Input() pet: PetPatient;\n  @Input() isVeterinarian = false;\n  @Input() isConfirmation: boolean;\n  @Input() displayAlert = true;\n  @Output() submit = new EventEmitter<Patient>();\n  @Output() onClose = new EventEmitter<Patient>();\n\n  states: BrazilState[] = BrazilianStates;\n  loading = false;\n  species: Species[];\n  races: Race[];\n  furs: Fur[] = Furs;\n\n  labelAge = 'Idade';\n\n  form = this.fb.group({\n    _id: [null],\n    name: ['', Validators.required],\n    species: ['', Validators.required],\n    sex: ['', Validators.required],\n    race: ['', Validators.required],\n    isApproximateAge: [],\n    approximateAgeLabel: [\n      {\n        value: '',\n        disabled: true\n      }\n    ],\n    dateOfBirth: ['', Validators.required],\n    weight: [null],\n    fur: [''],\n    castration: [false, Validators.required],\n    temperament: [''],\n    microchipNumber: [''],\n    responsible: this.fb.group({\n      _id: [''],\n      cpf: ['', [Validators.required, ValidationService.cpfValidator]],\n      fullname: ['', Validators.required],\n      name: ['', Validators.required],\n      sex: ['', Validators.required],\n      dateOfBirth: ['', Validators.required],\n      membership: this.fb.group({\n        mothersName: ['']\n      }),\n      cellphone: [''],\n      telephone: [''],\n      email: ['', Validators.email],\n      emailContact: ['', Validators.email],\n      address: this.fb.group({\n        uf: [''],\n        city: [''],\n        complement: [''],\n        number: [''],\n        street: [''],\n        neighborhood: [''],\n        cep: ['']\n      }),\n      pendency: [null]\n    }),\n    doNotShowAgainPetDataConfirmationModal: [false]\n  });\n\n  constructor(\n    private modalRef: BsModalRef,\n    private fb: FormBuilder,\n    private cepService: CepService,\n    private petPatientService: PetPatientService\n  ) {}\n\n  @nativeAsync\n  async ngOnInit() {\n    this.species = await this.petPatientService.getSpecies().toPromise();\n    this.patchForm();\n\n    this.checkApproximateAge(this.pet.isApproximateAge);\n\n    this.form.get('dateOfBirth').valueChanges.subscribe(dateOfBirth => {\n      if (dateOfBirth) {\n        const diffBetweenDate = DateUtils.diffBetweenDate(new Date(), dateOfBirth);\n\n        this.form.get('approximateAgeLabel').setValue(diffBetweenDate.result);\n      }\n    });\n\n    if (!this.isVeterinarian) {\n      this.form.get('weight').disable();\n      this.form.get('fur').disable();\n      this.form.get('castration').disable();\n      this.form.get('temperament').disable();\n      this.form.get('microchipNumber').disable();\n    }\n  }\n\n  @nativeAsync\n  private async patchForm() {\n    this.form.patchValue(this.pet);\n\n    if (this.pet.species) {\n      const speciesId = this.getSpeciesId(this.pet.species);\n      this.races = await this.petPatientService.getRaces(speciesId).toPromise();\n    }\n\n    const date = new Date(this.pet.dateOfBirth);\n    this.form.get('dateOfBirth').setValue(date.toISOString().substring(0, 10));\n\n    this.form.get('responsible').patchValue(this.pet.responsible);\n  }\n\n  get cpfCtrl() {\n    return this.form.get('cpf');\n  }\n\n  get dateCtrl() {\n    return this.form.get('dateOfBirth');\n  }\n\n  get currentDate() {\n    const now = new Date();\n    const dd = String(now.getDate()).padStart(2, '0');\n    const mm = String(now.getMonth() + 1).padStart(2, '0');\n    const yyyy = now.getFullYear();\n    return `${yyyy}-${mm}-${dd}`;\n  }\n\n  get isDependent() {\n    return this.pet.responsible;\n  }\n\n  checkRepeatName(value: boolean) {\n    if (value) {\n      this.form.get('name').setValue(this.form.get('fullname').value);\n      this.form.get('name').disable();\n    } else {\n      this.form.get('name').enable();\n    }\n  }\n\n  @nativeAsync\n  async onKey(event: any) {\n    if (event.target.value.length === 10) {\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\n      const data = await this.cepService.consult(cep);\n      if (!data.erro) {\n        this.form.controls['address'].patchValue({\n          uf: data.uf,\n          street: data.logradouro,\n          neighborhood: data.bairro,\n          city: data.localidade,\n          number: null,\n          cep: data.cep\n        });\n      }\n    }\n  }\n\n  submitForm() {\n    markFormGroup(this.form);\n    const form = this.form.getRawValue();\n\n    if (this.form.valid) {\n      this.modalRef.hide();\n      this.submit.emit(form);\n    }\n  }\n\n  close() {\n    this.modalRef.hide();\n    this.onClose.emit();\n  }\n\n  private getSpeciesId(title: string) {\n    const species = this.species.find(s => s.title === title);\n    return species._id;\n  }\n  @nativeAsync\n  async setSpecies(title: any) {\n    const speciesId = this.getSpeciesId(title);\n    await this.getRaces(speciesId);\n  }\n  @nativeAsync\n  async getRaces(speciesId: string) {\n    this.form.get('race').setValue('');\n    this.races = await this.petPatientService.getRaces(speciesId).toPromise();\n  }\n\n  checkApproximateAge(value: boolean) {\n    if (value) {\n      this.labelAge = 'Idade Aproximada';\n    } else {\n      this.labelAge = 'Idade';\n    }\n  }\n}\n","export default \"<div class=\\\"modal-header\\\" theme>\\n  <h4 class=\\\"modal-title pull-left text-white\\\">\\n    <span *ngIf=\\\"isVeterinarian\\\">\\n      {{ isConfirmation ? 'Dados do Paciente' : 'Editar paciente' }}\\n    </span>\\n    <span *ngIf=\\\"!isVeterinarian\\\">Editar Pet</span>\\n  </h4>\\n  <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"close()\\\">\\n    <span aria-hidden=\\\"true\\\">&times;</span>\\n  </button>\\n</div>\\n\\n<div class=\\\"modal-body\\\" theme>\\n  <nz-alert\\n    class=\\\"mb-4\\\"\\n    nzType=\\\"warning\\\"\\n    nzMessage=\\\"Confirme ou atualize os dados do pet.\\\"\\n    *ngIf=\\\"displayAlert\\\"\\n  ></nz-alert>\\n  <form nz-form [formGroup]=\\\"form\\\">\\n    <div class=\\\"row justify-content-between\\\">\\n      <div [ngClass]=\\\"isDependent ? 'col-md-12' : 'col-md-6'\\\">\\n        <div class=\\\"row align-items-center\\\">\\n          <div class=\\\"col-md\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"species\\\">Espécie<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <select\\n                  id=\\\"species\\\"\\n                  nz-input\\n                  formControlName=\\\"species\\\"\\n                  class=\\\"capitalize\\\"\\n                  (change)=\\\"setSpecies($event.target.value)\\\"\\n                >\\n                  <option value=\\\"\\\" selected>Selecionar</option>\\n                  <option *ngFor=\\\"let spec of species\\\" [value]=\\\"spec.title\\\">{{ spec.title }}</option>\\n                </select>\\n                <nz-form-explain *ngIf=\\\"form.get('species').dirty && form.get('species').errors\\\">\\n                  <ng-container *ngIf=\\\"form.get('species').hasError('required')\\\">\\n                    Campo obrigatório, por favor selecione a espécie.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-md\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"race\\\">Raça <span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <select\\n                  nz-input\\n                  id=\\\"race\\\"\\n                  formControlName=\\\"race\\\"\\n                  class=\\\"capitalize\\\"\\n                  *ngIf=\\\"races?.length > 0; else raceInput\\\"\\n                >\\n                  <option value=\\\"\\\" selected>Selecionar</option>\\n                  <option *ngFor=\\\"let race of races\\\" [value]=\\\"race.title\\\">{{ race.title }}</option>\\n                </select>\\n                <ng-template #raceInput>\\n                  <input nz-input id=\\\"race\\\" formControlName=\\\"race\\\" autocomplete=\\\"disabled\\\" />\\n                </ng-template>\\n                <nz-form-explain *ngIf=\\\"form.get('race').dirty && form.get('race').errors\\\">\\n                  <ng-container *ngIf=\\\"form.get('race').hasError('required')\\\">\\n                    Campo obrigatório, por favor selecione a raça.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"row justify-content-between\\\">\\n      <div class=\\\"col-12\\\">\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"nome\\\">Nome do Pet<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              placeholder=\\\"ex: Rex\\\"\\n              formControlName=\\\"name\\\"\\n              id=\\\"nome\\\"\\n              maxlength=\\\"128\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n            <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\n              <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\n                Campo obrigatório, por favor digite o nome e sobrenome.\\n              </ng-container>\\n              <ng-container\\n                *ngIf=\\\"!form.get('name').hasError('required') && form.get('name').hasError('nome')\\\"\\n              >\\n                Por favor digite o nome e sobrenome.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"row\\\">\\n      <div class=\\\"col-md\\\">\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"weight\\\">Peso (kg)</nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              type=\\\"number\\\"\\n              formControlName=\\\"weight\\\"\\n              placeholder=\\\"0.0\\\"\\n              id=\\\"weight\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n\\n            <nz-form-explain *ngIf=\\\"form.get('weight').dirty && form.get('weight').errors\\\">\\n              <ng-container *ngIf=\\\"form.get('weight').hasError('required')\\\">\\n                Campo obrigatório, por favor digite data de nascimento.\\n              </ng-container>\\n              <ng-container\\n                *ngIf=\\\"!form.get('weight').hasError('required') && form.get('weight').hasError('weight')\\\"\\n              >\\n                Nome inválido.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n\\n      <div class=\\\"col-md\\\">\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"sex\\\">Sexo <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n              <option value=\\\"M\\\">Macho</option>\\n              <option value=\\\"F\\\">Fêmea</option>\\n            </select>\\n            <nz-form-explain *ngIf=\\\"form.get('sex').dirty && form.get('sex').errors\\\">\\n              <ng-container *ngIf=\\\"form.get('sex').hasError('required')\\\">\\n                Campo obrigatório, por favor selecione o sexo.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"row\\\">\\n      <div class=\\\"col-md\\\">\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"dateOfBirth\\\"\\n            >Data de nascimento <span class=\\\"mandatory\\\"> *</span></nz-form-label\\n          >\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              type=\\\"date\\\"\\n              formControlName=\\\"dateOfBirth\\\"\\n              placeholder=\\\"DD/MM/AAAA\\\"\\n              id=\\\"dateOfBirth\\\"\\n              [max]=\\\"currentDate\\\"\\n            />\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n\\n      <div class=\\\"col-md\\\">\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"approximateAge\\\">{{ labelAge }}</nz-form-label>\\n          <nz-form-control>\\n            <input nz-input id=\\\"approximateAge\\\" formControlName=\\\"approximateAgeLabel\\\" />\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"row\\\">\\n      <div class=\\\"col-md\\\">\\n        <label\\n          nz-checkbox\\n          formControlName=\\\"isApproximateAge\\\"\\n          style=\\\"font-size: 16px; margin-bottom: 8px;\\\"\\n          (nzCheckedChange)=\\\"checkApproximateAge($event)\\\"\\n          >Idade aproximada</label\\n        >\\n      </div>\\n    </div>\\n\\n    <div class=\\\"row mt-2 mb-2\\\" *ngIf=\\\"!isVeterinarian\\\">\\n      <div class=\\\"col-md\\\">\\n        <nz-form-label nzFor=\\\"weight\\\">Informação de preenchimento pelo profissional</nz-form-label>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"row\\\">\\n      <div class=\\\"col-md\\\">\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"fur\\\">Pelagem</nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <select\\n              [disabled]=\\\"!isVeterinarian\\\"\\n              formControlName=\\\"fur\\\"\\n              id=\\\"fur\\\"\\n              nz-input\\n              nzPlaceHolder=\\\"Selecione\\\"\\n            >\\n              <option *ngFor=\\\"let fur of furs\\\" [value]=\\\"fur.title\\\" class=\\\"capitalize\\\">{{\\n                fur.title | capitalize\\n              }}</option>\\n            </select>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n\\n      <div class=\\\"col-md\\\">\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"castration\\\">Castração</nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <select\\n              [disabled]=\\\"!isVeterinarian\\\"\\n              formControlName=\\\"castration\\\"\\n              id=\\\"castration\\\"\\n              nz-input\\n              nzPlaceHolder=\\\"Selecione\\\"\\n            >\\n              <option [ngValue]=\\\"true\\\">Sim</option>\\n              <option [ngValue]=\\\"false\\\">Não</option>\\n            </select>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"row\\\">\\n      <div class=\\\"col\\\">\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"temperament\\\">Temperamento</nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <select formControlName=\\\"temperament\\\" id=\\\"temperament\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n              <option value=\\\"aggressive\\\">Agressivo</option>\\n              <option value=\\\"fearful\\\">Medroso</option>\\n              <option value=\\\"dominant\\\">Dominante</option>\\n              <option value=\\\"hyperactive\\\">Hiperativo</option>\\n              <option value=\\\"alert\\\">Alerta</option>\\n              <option value=\\\"docile\\\">Dócil</option>\\n            </select>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n      <div class=\\\"col\\\">\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"microchipNumber\\\">Nº do Microchip</nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              formControlName=\\\"microchipNumber\\\"\\n              id=\\\"microchipNumber\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n  </form>\\n</div>\\n\\n<div class=\\\"modal-footer\\\" theme [formGroup]=\\\"form\\\">\\n  <label\\n    nz-checkbox\\n    formControlName=\\\"doNotShowAgainPetDataConfirmationModal\\\"\\n    style=\\\"font-size: 14px;\\\"\\n    *ngIf=\\\"isVeterinarian\\\"\\n    >Não mostrar novamente</label\\n  >\\n  <div></div>\\n\\n  <div class=\\\"footer-btns\\\">\\n    <button class=\\\"ok-btn\\\" nz-button class=\\\"btn-secondary\\\" (click)=\\\"close()\\\">\\n      {{ isConfirmation ? 'Fechar' : 'Cancelar' }}\\n    </button>\\n    <button class=\\\"ok-btn\\\" nz-button class=\\\"btn-primary\\\" (click)=\\\"submitForm()\\\">\\n      Salvar <i class=\\\"fa\\\"></i>\\n    </button>\\n  </div>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \"::ng-deep .modal-content {\\n  align-items: normal;\\n}\\n::ng-deep .modal-content .modal-footer {\\n  display: flex;\\n  justify-content: space-between;\\n}\\n::ng-deep .modal-content .modal-footer .footer-btns {\\n  width: 40%;\\n  display: flex;\\n  justify-content: space-between;\\n}\";","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { PrescriptionService } from '@app/modules/document/services/prescription.service';\nimport * as moment from 'moment';\n\n@Component({\n  selector: 'app-consult',\n  templateUrl: './consult.component.html',\n  styleUrls: ['./consult.component.scss']\n})\nexport class ConsultComponent {\n  prescription: any;\n  showDispensations = true;\n  private _allChecked = false;\n\n  constructor(private router: Router, private prescriptionService: PrescriptionService) {\n    this.prescription = this.prescriptionService.prescription;\n  }\n\n  get patient() {\n    return this.prescription.patient;\n  }\n\n  get healthProfessional() {\n    return this.prescription.healthProfessional;\n  }\n\n  get medicaments() {\n    return this.prescription.medicaments;\n  }\n\n  get allChecked() {\n    return this.medicaments.every(m => m.checked);\n  }\n\n  set allChecked(val: boolean) {\n    this._allChecked = val;\n  }\n\n  get someChecked() {\n    return this.medicaments.some(m => m.checked);\n  }\n\n  get indeterminate() {\n    const medicamentsChecked = this.medicaments.reduce((acc, m) => acc + !!m.checked, 0);\n    return medicamentsChecked > 0 && medicamentsChecked < this.medicaments.length;\n  }\n\n  updateAllChecked(): void {\n    this.medicaments.forEach(m => (m.checked = this._allChecked));\n  }\n\n  getPatientAge() {\n    return this.getAge(this.patient.dateOfBirth);\n  }\n\n  getAge(dateStr: string) {\n    const now = moment(new Date());\n    const date = moment(dateStr);\n    return date.isValid() ? now.diff(date, 'years') : '';\n  }\n\n  getSpecialties(specialties: any[]) {\n    return specialties.map(s => s.title).join(', ');\n  }\n\n  get hasDispensation(): boolean {\n    return this.medicaments.find(m => m.dispensations && m.dispensations.length);\n  }\n\n  register(): void {\n    this.router.navigate([`/dispensation/register`]);\n  }\n}\n","export default \"<app-alternative-navbar titleIcon=\\\"fas fa-history\\\"></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n\\n<div class=\\\"container my-4\\\" theme>\\n  <div class=\\\"container-fluid patient-card p-3\\\">\\n    <h3>PACIENTE: {{ patient.name }}</h3>\\n    <h3>CPF: {{ patient.cpf | mask: '000.000.000-00' }}</h3>\\n    <h4 *ngIf=\\\"patient.address as address\\\">\\n      Endereço: {{ address.street }}, {{ address.number }} - {{ address.neighborhood }},\\n      {{ address.city }}, {{ address.uf }} -\\n      {{ address.cep | mask: '00.000-000' }}\\n    </h4>\\n    <h4 *ngIf=\\\"getPatientAge()\\\">Idade: {{ getPatientAge() }} anos</h4>\\n  </div>\\n\\n  <div class=\\\"container-fluid professional-card p-3\\\">\\n    <h3 class=\\\"label-medico\\\">MÉDICO: {{ healthProfessional.name }}</h3>\\n    <h4 class=\\\"label-medico\\\" *ngIf=\\\"healthProfessional.regionalCouncilNumber as rcn\\\">\\n      {{ rcn.label }}: {{ rcn.number }}/{{ rcn.uf }}\\n    </h4>\\n  </div>\\n\\n  <div class=\\\"container-fluid medicaments-card p-3\\\">\\n    <ng-container *ngIf=\\\"hasDispensation\\\">\\n      <p id=\\\"alert\\\">Atenção! Existem vendas registradas para esta receita!</p>\\n      <p>\\n        <button *ngIf=\\\"showDispensations\\\" class=\\\"btn btn-icon p-2\\\" (click)=\\\"showDispensations = false\\\">\\n          <em class=\\\"fa fa-eye\\\"></em>&nbsp;Ocultar Dispensações&nbsp;\\n        </button>\\n        <button\\n          *ngIf=\\\"!showDispensations\\\"\\n          class=\\\"btn btn-icon btn-show-dispensations p-2\\\"\\n          (click)=\\\"showDispensations = true\\\"\\n        >\\n          <em class=\\\"fa fa-eye-slash\\\"></em>&nbsp;Mostrar Dispensações&nbsp;\\n        </button>\\n      </p>\\n    </ng-container>\\n\\n    <p id=\\\"instructions\\\">\\n      Selecione abaixo os medicamentos que deseja dispensar para começar.\\n    </p>\\n\\n    <div class=\\\"checkbox-group m-2\\\">\\n      <label\\n        nz-checkbox\\n        id=\\\"select-all\\\"\\n        [(ngModel)]=\\\"allChecked\\\"\\n        (nzCheckedChange)=\\\"updateAllChecked()\\\"\\n        [nzIndeterminate]=\\\"indeterminate\\\"\\n        >SELECIONAR TODOS</label\\n      >\\n      <div class=\\\"checkbox-item\\\" *ngFor=\\\"let medicament of medicaments\\\">\\n        <label nz-checkbox class=\\\"medicament-name\\\" [(ngModel)]=\\\"medicament.checked\\\">{{\\n          medicament.name\\n        }}</label>\\n        <p class=\\\"pl-4\\\">{{ medicament.dosage }}</p>\\n\\n        <ng-container *ngIf=\\\"showDispensations && medicament.dispensations\\\">\\n          <div class=\\\"dispensation pl-5\\\" *ngFor=\\\"let dispensation of medicament.dispensations\\\">\\n            <em class=\\\"fas fa-calendar-alt\\\"\\n              >&nbsp; {{ dispensation.lastUpdated | date: 'dd/MM/yyyy HH:mm' }}</em\\n            >\\n            <p>{{ dispensation.name }}</p>\\n            <p class=\\\"mb-4\\\">Lote: {{ dispensation.batch.lotNumber }}</p>\\n          </div>\\n        </ng-container>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"footer bg-dark d-flex align-items-center fixed-bottom justify-content-end\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-success\\\" (click)=\\\"register()\\\" [disabled]=\\\"!someChecked\\\">\\n      CONTINUAR PARA DISPENSAÇÃO\\n      <em class=\\\"fa fa-arrow-right\\\"></em>\\n    </button>\\n  </div>\\n</div>\\n\";","export default \"h3 {\\n  margin: 0;\\n  font-size: 18px;\\n  color: var(--color-white);\\n  font-weight: bold;\\n}\\n\\nh4 {\\n  margin: 0;\\n  font-size: 16px;\\n  color: var(--color-white);\\n}\\n\\n.patient-card {\\n  background-color: var(--bg-color-secondary);\\n}\\n\\np {\\n  color: var(--color-card-pacientes);\\n  font-family: \\\"proregular\\\";\\n}\\n\\n.professional-card {\\n  background-color: #1c413a;\\n  margin-top: -8px !important;\\n}\\n\\n.medicaments-card {\\n  background-color: var(--bg-color-cinza-claro);\\n}\\n\\n.medicaments-card #alert {\\n  text-align: center;\\n  color: red;\\n}\\n\\n.medicaments-card #select-all {\\n  color: var(--bg-color-primary);\\n}\\n\\n.medicaments-card p {\\n  text-align: center;\\n}\\n\\n.medicaments-card .button {\\n  text-align: center;\\n}\\n\\n.medicaments-card .btn-icon {\\n  border-radius: 10px;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n}\\n\\n.medicaments-card .btn-show-dispensations {\\n  background-color: var(--bg-color-secondary);\\n}\\n\\n.medicaments-card label {\\n  display: block;\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 16px;\\n  margin-top: 20px;\\n}\\n\\n.medicaments-card .checkbox-item p {\\n  text-align: unset;\\n}\\n\\n.medicaments-card .checkbox-item .medicament-name {\\n  font-size: 18px;\\n  font-family: \\\"probold\\\", sans-serif;\\n}\\n\\n.medicaments-card .checkbox-item .dispensation i {\\n  color: black;\\n  opacity: 0.8;\\n  font-style: normal;\\n}\\n\\n.medicaments-card .checkbox-item .dispensation p {\\n  margin: 0;\\n}\\n\\n.medicaments-card .title2 {\\n  font-size: 16px;\\n  font-family: \\\"proregular\\\", sans-serif;\\n  opacity: 0.8;\\n}\\n\\n.medicaments-card .title3 {\\n  font-size: 14px;\\n  font-family: \\\"proregular\\\", sans-serif;\\n}\";","import { PrescriptionService } from '@app/modules/document/services/prescription.service';\nimport { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\n\n@Injectable()\nexport class DispensationGuard implements CanActivate {\n  constructor(private router: Router, private prescriptionService: PrescriptionService) {}\n\n  canActivate(): boolean {\n    if (!this.prescriptionService.prescription) {\n      this.prescriptionService.pdfBase64 = null;\n      this.router.navigate(['']);\n      return false;\n    }\n\n    return true;\n  }\n}\n","export default \"<app-alternative-navbar titleIcon=\\\"fas fa-history\\\"></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n\\n<div class=\\\"container my-4\\\" theme>\\n  <div class=\\\"container-fluid patient p-3\\\" *ngIf=\\\"patient?.name\\\" >\\n    <label>PACIENTE: {{ patient.name }}</label>\\n  </div>\\n  <div class=\\\"container-fluid professional p-3\\\" *ngIf=\\\"healthProfessional?.name\\\" >\\n    <label>MÉDICO: {{ healthProfessional.name }}</label>\\n  </div>\\n\\n  <nz-collapse [nzBordered]=\\\"false\\\" *ngIf=\\\"notSelectedMedicaments.length\\\" >\\n    <nz-collapse-panel\\n      nzHeader=\\\"Medicamentos não selecionados\\\"\\n      class=\\\"not-selected-medicaments\\\"\\n      [ngClass]=\\\"{ 'pb-3': selectedCount(notSelectedMedicaments) }\\\"\\n    >\\n      <div class=\\\"checkbox-item\\\" *ngFor=\\\"let medicament of notSelectedMedicaments\\\">\\n        <label nz-checkbox class=\\\"medicament-name\\\" [(ngModel)]=\\\"medicament.include\\\">{{\\n          medicament.name\\n        }}</label>\\n        <p class=\\\"pl-4\\\">{{ medicament.dosage }}</p>\\n      </div>\\n\\n      <button\\n        *ngIf=\\\"selectedCount(notSelectedMedicaments)\\\"\\n        class=\\\"btn btn-icon btn-add-outiline text-capitalize trash-solid-position\\\"\\n        type=\\\"button\\\"\\n        (click)=\\\"includeMedicaments()\\\"\\n      >\\n        <span class=\\\"btn-inner--text\\\"\\n          >Incluir ({{ selectedCount(notSelectedMedicaments) }}) medicamento<span\\n            *ngIf=\\\"selectedCount(notSelectedMedicaments) > 1\\\"\\n            >s</span\\n          ></span\\n        >\\n        <span class=\\\"btn-inner--icon\\\" theme><i class=\\\"fa fa-plus\\\"></i></span>\\n      </button>\\n    </nz-collapse-panel>\\n  </nz-collapse>\\n\\n  <div class=\\\"container-fluid medico-selecionado p-3\\\">\\n    <span>Medicamentos selecionados</span>\\n  </div>\\n\\n  <div\\n    class=\\\"container-fluid medico-selecionado-conteudo selected-medicaments pt-3 mb-2\\\"\\n    *ngFor=\\\"let medicament of selectedMedicaments\\\"\\n  >\\n    <button\\n      type=\\\"button\\\"\\n      class=\\\"close pull-right\\\"\\n      aria-label=\\\"Close\\\"\\n      (click)=\\\"showModalAlert(medicament)\\\"\\n    >\\n      <span aria-hidden=\\\"true\\\" style=\\\"font-size: 2rem;\\\">&times;</span>\\n    </button>\\n\\n    <button\\n      *ngIf=\\\"medicament.items?.length\\\"\\n      type=\\\"button\\\"\\n      class=\\\"close pull-right mr-3\\\"\\n      aria-label=\\\"Close\\\"\\n      (click)=\\\"showModal(medicament)\\\"\\n    >\\n      <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-pencil-solid\\\"></i></span>\\n    </button>\\n\\n    <label class=\\\"pl-4 m-0\\\">{{ medicament.name }}</label>\\n    <p class=\\\"pl-4\\\">{{ medicament.dosage }}</p>\\n\\n    <div\\n      class=\\\"container-fluid medico-selecionado-conteudo pt-3 pb-3 d-flex justify-content-center\\\"\\n      *ngIf=\\\"!medicament.items || !medicament.items.length\\\"\\n    >\\n      <button\\n        class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n        type=\\\"button\\\"\\n        (click)=\\\"showModal(medicament)\\\"\\n      >\\n        <span class=\\\"btn-inner--text\\\">Adicionar Dispensação</span>\\n        <span class=\\\"btn-inner--icon\\\" theme><i class=\\\"fa fa-plus\\\"></i></span>\\n      </button>\\n    </div>\\n\\n    <nz-collapse class=\\\"caixas pb-3\\\" *ngIf=\\\"medicament.items?.length\\\">\\n      <nz-collapse-panel\\n        *ngFor=\\\"let item of medicament.items\\\"\\n        nzHeader=\\\"{{ item.nome }} - {{ item.apresentacaoCustomizada }}\\\"\\n      >\\n        <p class=\\\"title4 mb-1\\\">{{ item.principio }}</p>\\n        <p class=\\\"title3 mb-1\\\">{{ item.laboratorio }}</p>\\n        <p class=\\\"title3 mt-2\\\">\\n          <span\\n            class=\\\"exchange-icon\\\"\\n            [ngStyle]=\\\"{ 'background-color': item.intercambialidade ? '#5ce1c2' : '#ebebeb' }\\\"\\n            ><i class=\\\"fas fa-exchange\\\"></i\\n          ></span>\\n          Intercambialidade?\\n          {{ item.intercambialidade ? 'Sim' : 'Não' }}\\n        </p>\\n        <p class=\\\"title5 m-0\\\" *ngIf=\\\"item.caixas?.length\\\">\\n          <span class=\\\"badge-caixa\\\">{{ item.caixas.length }}</span> Quantas unidades desse produto:\\n          {{ item.caixas.length }}\\n        </p>\\n        <p class=\\\"title6 pl-4 m-0 ml-1\\\" *ngFor=\\\"let caixa of item.caixas\\\">\\n          Número de lote caixa: {{ caixa.nome }}\\n        </p>\\n      </nz-collapse-panel>\\n    </nz-collapse>\\n  </div>\\n</div>\\n\\n<div class=\\\"footer bg-dark d-flex align-items-center fixed-bottom justify-content-end\\\">\\n  <button\\n    type=\\\"button\\\"\\n    class=\\\"btn btn-success\\\"\\n    (click)=\\\"finish()\\\"\\n    theme\\n    [disabled]=\\\"!selectedMedicaments.length || dispensedMedicaments < selectedMedicaments.length\\\"\\n  >\\n    CONFIRMAR VENDA ({{ dispensedMedicaments }}/{{ selectedMedicaments.length }})\\n    <i class=\\\"fa fa-arrow-right\\\"></i>\\n  </button>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { PrescriptionService } from '@app/modules/document/services/prescription.service';\nimport { RetentionService } from '@app/modules/document/services/retention.service';\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\nimport { ModalBuyerDataComponent } from '@app/shared/modals/modal-buyer-data/modal-buyer-data.component';\nimport { Pharmacy } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { ModalAlertComponent } from '../modal-alert/modal-alert.component';\nimport { ModalDispentionComponent } from '../modal-dispention/modal-dispention.component';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-register',\n  templateUrl: './register.component.html',\n  styleUrls: ['./register.component.scss']\n})\nexport class RegisterComponent implements OnInit {\n  loading = false;\n  prescription: any;\n  private pharmacy: Pharmacy;\n  thirdParties: any;\n  prescriptionData: any;\n  hash: any;\n\n  constructor(\n    private router: Router,\n    private prescriptionService: PrescriptionService,\n    private retentionService: RetentionService,\n    private authService: AuthService,\n    private pharmacyService: PharmacyService,\n    private modalService: NzModalService,\n    private notification: AppToastService\n  ) {\n    this.prescription = this.prescriptionService.prescription;\n  }\n\n  async ngOnInit() {\n    const extraData = JSON.parse(localStorage.getItem('extra_data'));\n    if (extraData) {\n      this.pharmacy = await this.pharmacyService.getPharmacy(extraData.pharmacyId).toPromise();\n    } else {\n      this.pharmacy = await this.pharmacyService.getPharmacyByUserId(this.user._id).toPromise();\n    }\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  get patient() {\n    return this.prescription.patient;\n  }\n\n  get healthProfessional() {\n    return this.prescription.healthProfessional;\n  }\n\n  get medicaments() {\n    return this.prescription.medicaments;\n  }\n\n  get notSelectedMedicaments() {\n    return this.medicaments.filter(m => !m.checked && !m.hidden);\n  }\n\n  get selectedMedicaments() {\n    return this.medicaments.filter(m => m.checked);\n  }\n\n  selectedCount(medicaments: any) {\n    return medicaments.filter(m => m.include).length;\n  }\n\n  remove(medicament: any) {\n    medicament.checked = false;\n  }\n\n  @nativeAsync\n  async includeMedicaments() {\n    this.notSelectedMedicaments.forEach(m => {\n      if (m.include) {\n        m.checked = true;\n        m.include = false;\n      }\n    });\n  }\n\n  showModal(medicament: any) {\n    this.modalService.create({\n      nzContent: ModalDispentionComponent,\n      nzClassName: 'modal-dispensation',\n      nzComponentParams: {\n        medicament: medicament\n      },\n      nzClosable: false,\n      nzFooter: null,\n      nzWidth: 600\n    });\n  }\n\n  showModalAlert(medicament: any) {\n    this.modalService.create({\n      nzContent: ModalAlertComponent,\n      nzClassName: 'modal-alert',\n      nzComponentParams: {\n        medicament: medicament\n      },\n      nzClosable: false,\n      nzFooter: null\n    });\n  }\n\n  get dispensedMedicaments() {\n    return this.selectedMedicaments.filter(m => m.items).length;\n  }\n  @nativeAsync\n  async finish() {\n    const modal = this.modalService.create({\n      nzContent: ModalBuyerDataComponent,\n      nzComponentParams: {\n        patient: this.prescription.patient,\n        okText: 'Finalizar dispensação'\n      },\n      nzFooter: null,\n      nzWidth: 900\n    });\n\n    modal.afterOpen.subscribe(_ => {\n      modal.getContentComponent().saveRetention.subscribe(cpf => this.saveRentention(modal, cpf));\n    });\n  }\n\n  @nativeAsync\n  private async saveRentention(modal: any, cpf: string) {\n    try {\n      let dispensation: {};\n      if (this.prescription.thirdParties) {\n        const base64 = this.prescriptionService.pdfBase64.substring(\n          this.prescriptionService.pdfBase64.indexOf(',') + 1\n        );\n        dispensation = {\n          identifier: '',\n          thirdParties: true,\n          medicaments: this.selectedMedicaments.flatMap(medicament => {\n            return medicament.items.flatMap(item => {\n              return item.caixas.map(caixa => ({\n                medicationName: 'unknown',\n                medicationDispense: `${item.nome} - ${item.apresentacaoCustomizada}`,\n                quantity: 1,\n                lotNumber: caixa.nome,\n                laboratory: {\n                  name: item.laboratorio,\n                  cnpj: item.cnpj\n                }\n              }));\n            });\n          }),\n          pharmacy: {\n            name: this.pharmacy.businessName || this.pharmacy.business_name_entity,\n            cnpj: this.pharmacy.cnpj || this.pharmacy.cnpj_entity,\n            phone: this.pharmacy.telephone,\n            address: this.pharmacy.address\n          },\n          prescriptionData: base64\n        };\n      } else {\n        dispensation = {\n          identifier: this.prescription.identifier,\n          thirdParties: false,\n          medicaments: this.selectedMedicaments.flatMap(medicament => {\n            return medicament.items.flatMap(item => {\n              return item.caixas.map(caixa => ({\n                uuid: medicament.uuid,\n                medicationName: medicament.name,\n                medicationDispense: `${item.nome} - ${item.apresentacaoCustomizada}`,\n                quantity: 1,\n                lotNumber: caixa.nome,\n                laboratory: {\n                  name: item.laboratorio,\n                  cnpj: item.cnpj\n                }\n              }));\n            });\n          }),\n          pharmacy: {\n            name: this.pharmacy.businessName || this.pharmacy.business_name_entity,\n            cnpj: this.pharmacy.cnpj || this.pharmacy.cnpj_entity,\n            phone: this.pharmacy.telephone,\n            address: this.pharmacy.address\n          }\n        };\n      }\n\n      this.loading = true;\n      await this.prescriptionService.postDispensation(dispensation);\n      await this.saveRetentionThirdParty(cpf);\n      this.prescriptionService.pdfBase64 = null;\n      this.notification.notify('success', 'Sucesso', 'Dispensação realizada com sucesso');\n      window.location.href = '/dashboard';\n      modal.close();\n    } catch (err) {\n      console.error(err);\n      this.notification.notify('error', 'Erro', 'Ocorreu um erro ao realizar a dispensação');\n    }\n    this.loading = false;\n  }\n\n  private saveRetentionThirdParty(cpf: string) {\n    const medications = this.selectedMedicaments.flatMap(medicament => {\n      return medicament.items.map(\n        (item: {\n          ean: string;\n          nome: string;\n          apresentacaoCustomizada: any;\n          caixas: any[];\n          laboratorio: any;\n          cnpj: string;\n        }) => ({\n          ean: item.ean,\n          name: `${item.nome} - ${item.apresentacaoCustomizada}`,\n          batches: item.caixas.map(caixa => caixa.nome),\n          laboratory: {\n            name: item.laboratorio,\n            cnpj: item.cnpj\n          }\n        })\n      );\n    });\n\n    const retention = {\n      pdf: this.prescriptionService.pdfBase64,\n      cpf,\n      pharmacy: this.pharmacy.id,\n      prescriber: this.healthProfessional,\n      medications\n    };\n    return this.retentionService.saveRetentionOfThirdParties(retention);\n  }\n}\n","export default \".patient {\\n  background-color: #17c6ac;\\n  font-family: \\\"probold\\\", sans-serif;\\n}\\n.patient label {\\n  color: rgba(0, 0, 0, 0.8);\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 1.5rem;\\n  margin: 0;\\n}\\n.professional {\\n  background-color: #65f2da;\\n  font-family: \\\"probold\\\", sans-serif;\\n}\\n.professional label {\\n  color: rgba(0, 0, 0, 0.8);\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 1.5rem;\\n  margin: 0;\\n}\\n.trash-solid-position {\\n  border: 0;\\n  float: right;\\n}\\n.not-selected-medicaments {\\n  background-color: #e8fdfa;\\n  font-size: 16px;\\n}\\n.not-selected-medicaments .checkbox-item p {\\n  text-align: unset;\\n}\\n.not-selected-medicaments .checkbox-item .medicament-name {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 18px;\\n}\\n.not-selected-medicaments .checkbox-item .dispensation i {\\n  color: black;\\n  font-style: normal;\\n  opacity: 0.8;\\n}\\n.not-selected-medicaments .checkbox-item .dispensation p {\\n  margin: 0;\\n}\\n.selected-medicaments {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 18px;\\n}\\n.selected-medicaments label {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 18px;\\n}\\n.selected-medicaments p {\\n  color: var(--color-card-pacientes);\\n  font-family: \\\"proregular\\\";\\n}\\n.btn-add-outiline {\\n  align-items: center;\\n  background-color: var(--bg-color-secondary);\\n  border-radius: 10px;\\n  border: 0;\\n  color: var(--color-white);\\n  display: flex;\\n  font-family: \\\"probold\\\", sans-serif;\\n  height: 40px;\\n  overflow: hidden;\\n  padding: 0 0 0 8px;\\n}\\n.btn-add-outiline .btn-inner--icon {\\n  align-items: center;\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n  display: flex;\\n  height: 40px;\\n  justify-content: center;\\n  width: 50px;\\n}\\n.medico-selecionado {\\n  background-color: #4d4d4d;\\n  border-radius: 7px 7px 0px 0px;\\n  color: #fff;\\n  font-size: 16px;\\n}\\n.medico-selecionado-conteudo {\\n  background-color: #ebebeb;\\n  border-radius: 5px;\\n  color: #4d4d4d;\\n}\\n.medico-selecionado-conteudo .title1 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 18px;\\n  font-weight: 800;\\n}\\n.medico-selecionado-conteudo .title2 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 16px;\\n  opacity: 0.8;\\n}\\n.medico-selecionado-conteudo .title3 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 14px;\\n}\\n.cursor {\\n  cursor: pointer;\\n}\\n.caixas .title1 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 18px;\\n  font-weight: bold;\\n}\\n.caixas .title2 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 16px;\\n  opacity: 0.8;\\n}\\n.caixas .title3 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 14px;\\n}\\n.caixas .title4 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 14px;\\n  opacity: 0.8;\\n}\\n.caixas .title5 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 14px;\\n  font-weight: bold;\\n}\\n.caixas .title6 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 12px;\\n  opacity: 0.8;\\n}\\n.caixas .badge-caixa {\\n  background-color: #0b6054;\\n  border-radius: 10px;\\n  color: #fff;\\n  display: inline-block;\\n  font-size: 12px;\\n  font-weight: 700;\\n  line-height: 1;\\n  margin-right: 5px;\\n  min-width: 10px;\\n  padding: 4px 7px;\\n  text-align: center;\\n  vertical-align: middle;\\n  white-space: nowrap;\\n}\\n::ng-deep .ant-collapse-borderless > .ant-collapse-item:last-child {\\n  border-color: #ebebeb;\\n  border-radius: 0px 0px 7px 7px;\\n  border-style: solid;\\n  border-width: 1px;\\n}\\n.exchange-icon {\\n  background-color: #ebebeb;\\n  border-radius: 60px;\\n  box-shadow: 0px 0px 2px #888;\\n  display: inline-block;\\n  font-size: 12px;\\n  margin-right: 5px;\\n  padding: 0 1px;\\n  padding: 0.5em 0.6em;\\n}\";","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { PrescriptionService } from '@app/modules/document/services/prescription.service';\n\n@Component({\n  selector: 'app-consult-empty',\n  templateUrl: './consult-empty.component.html',\n  styleUrls: ['./consult-empty.component.scss']\n})\nexport class ConsultEmpty implements OnInit {\n  loading = false;\n  prescription: any;\n  showDispensations = true;\n  pharmacy: any;\n\n  constructor(private router: Router, private prescriptionService: PrescriptionService) {\n    this.prescription = this.prescriptionService.prescription;\n  }\n\n  ngOnInit() {}\n\n  register(): void {\n    this.prescriptionService.prescription = {\n      thirdParties: true,\n      medicaments: [\n        {\n          hidden: true,\n          checked: true\n        }\n      ]\n    };\n    this.router.navigate([`/dispensation/register`]);\n  }\n\n  get medicaments() {\n    return this.prescription.medicaments;\n  }\n}\n","export default \"<app-alternative-navbar titleIcon=\\\"fas fa-history\\\"></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n\\n<div class=\\\"container mt-4\\\" theme>\\n  <form (submit)=\\\"register()\\\">\\n    <div class=\\\"row justify-content-md-center\\\">\\n      <div>\\n        <div class=\\\"container-serp\\\">\\n          <div class=\\\"document-serp d-flex column\\\">\\n            <img alt=\\\"border\\\" src=\\\"assets/icons/consultemptyborder.svg\\\" />\\n            <div>\\n              <h1>PDF localizado em nossa base!</h1>\\n              <h2>Atenção! Existem vendas registradas para esta receita!</h2>\\n              <p>\\n                Esta receita não foi gerada pela Receita Digital e nem pelos nossos parceiros, mas\\n                existem registros de vendas para este PDF. <br />\\n                <br />\\n                Isso significa que alguma outra farmácia já recebeu este mesmo arquivo PDF e registrou a\\n                venda de medicamentos. <br />\\n                <br />Confira o histórico abaixo antes de fazer novas vendas:\\n              </p>\\n            </div>\\n          </div>\\n\\n          <div class=\\\"document-serp medicaments-card d-flex column\\\">\\n            <div class=\\\"checkbox-group m-2\\\">\\n              <div class=\\\"checkbox-item\\\" *ngFor=\\\"let medicament of medicaments\\\">\\n                <ng-container *ngIf=\\\"showDispensations && medicament.dispensations\\\">\\n                  <div class=\\\"dispensation pl-5\\\" *ngFor=\\\"let dispensation of medicament.dispensations\\\">\\n                    <em class=\\\"fas fa-calendar-alt calendar\\\">&nbsp; {{ dispensation.lastUpdated | date: 'dd/MM/yyyy\\n                      HH:mm'\\n                      }}</em>\\n                    <div class=\\\"box\\\">\\n                      <p class=\\\"title1\\\" title=\\\"Nome\\\">{{ dispensation.name }}</p>\\n\\n                      <span class=\\\"quantity\\\" title=\\\"Quantidade\\\">{{ dispensation.quantity }}</span>\\n\\n                    </div>\\n                  </div>\\n                </ng-container>\\n              </div>\\n            </div>\\n          </div>\\n\\n          <button class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\" type=\\\"submit\\\">\\n            <span class=\\\"btn-inner--text\\\">Adicionar Dispensação</span>\\n            <span class=\\\"btn-inner--icon\\\" theme><em class=\\\"fa fa-plus\\\"></em></span>\\n          </button>\\n        </div>\\n      </div>\\n    </div>\\n  </form>\\n\\n  <div class=\\\"footer bg-dark d-flex align-items-center fixed-bottom\\\">\\n    <div class=\\\"back-dispensation\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" (click)=\\\"register()\\\" theme>\\n        <em class=\\\"fa fa-arrow-left\\\"></em>\\n        CANCELAR DISPENSAÇÃO\\n      </button>\\n    </div>\\n\\n    <div class=\\\"go-dispensation\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-success\\\" (click)=\\\"register()\\\" theme>\\n        CONTINUAR PARA DISPENSAÇÃO\\n        <em class=\\\"fa fa-arrow-right\\\"></em>\\n      </button>\\n    </div>\\n  </div>\\n</div>\\n\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \".btn-add-outiline {\\n  align-items: center;\\n  background-color: var(--bg-color-secondary);\\n  border-radius: 10px;\\n  border: 0;\\n  color: var(--color-white);\\n  display: flex;\\n  font-family: \\\"probold\\\", sans-serif;\\n  height: 40px;\\n  overflow: hidden;\\n  padding: 0 0 0 8px;\\n}\\n.btn-add-outiline .btn-inner--icon {\\n  align-items: center;\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n  display: flex;\\n  height: 40px;\\n  justify-content: center;\\n  width: 50px;\\n}\\n.container-serp {\\n  align-items: center;\\n  display: flex;\\n  flex-direction: column;\\n}\\n.document-serp {\\n  background: #ebebeb;\\n  border-bottom-left-radius: 25px;\\n  border-top-right-radius: 25px;\\n  color: white;\\n  margin-bottom: 5%;\\n  padding: 50px;\\n  width: auto;\\n}\\n@media screen and (min-width: 768px) {\\n  .document-serp {\\n    max-height: 60vh;\\n    overflow-y: auto;\\n    width: 40rem;\\n  }\\n}\\n.document-serp h1 {\\n  color: #1b403a;\\n  font-family: \\\"Source Sans Pro Bold\\\";\\n  font-size: 24pt;\\n  font-weight: bold !important;\\n}\\n.document-serp h2 {\\n  color: red;\\n  font-family: \\\"Source Sans Pro Semibold\\\";\\n  font-size: 20px;\\n  font-weight: bold;\\n}\\n.document-serp p {\\n  color: #1b403a;\\n  font-family: \\\"Source Sans Pro Light\\\";\\n  font-size: 18px;\\n}\\n.document-serp img {\\n  margin-top: -3%;\\n  position: absolute;\\n  right: 32%;\\n}\\n.go-dispensation,\\n.back-dispensation {\\n  width: 50%;\\n  height: 100%;\\n  display: flex;\\n}\\n.go-dispensation .btn-secondary,\\n.back-dispensation .btn-secondary {\\n  background: gray;\\n  border: none;\\n}\\n.go-dispensation {\\n  justify-content: end;\\n}\\n.back-dispensation {\\n  justify-content: start;\\n}\\n.medicaments-card {\\n  padding-left: 0px !important;\\n  border-top-right-radius: 0 !important;\\n}\\n.medicaments-card #alert {\\n  text-align: center;\\n  color: red;\\n}\\n.medicaments-card #select-all {\\n  color: var(--bg-color-primary);\\n}\\n.medicaments-card p {\\n  text-align: center;\\n}\\n.medicaments-card .button {\\n  text-align: center;\\n}\\n.medicaments-card .btn-icon {\\n  border-radius: 10px;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n}\\n.medicaments-card .btn-show-dispensations {\\n  background-color: var(--bg-color-secondary);\\n}\\n.medicaments-card label {\\n  display: block;\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 16px;\\n  margin-top: 20px;\\n}\\n.medicaments-card .checkbox-item p {\\n  text-align: unset;\\n}\\n.medicaments-card .checkbox-item .medicament-name {\\n  font-size: 18px;\\n  font-family: \\\"probold\\\", sans-serif;\\n}\\n.medicaments-card .checkbox-item .dispensation .box {\\n  display: flex;\\n  justify-content: space-between;\\n  width: 105%;\\n  margin-bottom: 5%;\\n}\\n.medicaments-card .checkbox-item .dispensation .box .title1 {\\n  color: #1e1e1e;\\n  font-family: \\\"Source Sans Pro Extralight\\\";\\n  font-size: 14px;\\n  text-transform: uppercase;\\n}\\n.medicaments-card .checkbox-item .dispensation .box .quantity {\\n  font-family: \\\"Source Sans Pro Semibold\\\";\\n  color: white;\\n  font-size: 14px;\\n  background: #0b6054;\\n  width: 20px;\\n  height: 20px;\\n  border-radius: 34px;\\n  text-align: center;\\n}\\n.medicaments-card .checkbox-item .dispensation .calendar {\\n  color: black !important;\\n}\\n.medicaments-card .checkbox-item .dispensation i {\\n  color: black;\\n  opacity: 0.8;\\n  font-style: normal;\\n}\\n.medicaments-card .checkbox-item .dispensation p {\\n  margin: 0;\\n}\\n.medicaments-card .title2 {\\n  font-size: 16px;\\n  font-family: \\\"proregular\\\", sans-serif;\\n  opacity: 0.8;\\n}\\n.medicaments-card .title3 {\\n  font-size: 14px;\\n  font-family: \\\"proregular\\\", sans-serif;\\n}\";","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { PrescriptionService } from '@app/modules/document/services/prescription.service';\n\n@Component({\n  selector: 'app-consult-not-found',\n  templateUrl: './consult-not-found.component.html',\n  styleUrls: ['./consult-not-found.component.scss']\n})\nexport class ConsultNotFound implements OnInit {\n  loading = false;\n  prescription: any;\n  showDispensations = true;\n\n  constructor(private router: Router, private prescriptionService: PrescriptionService) {\n    this.prescription = this.prescriptionService.prescription;\n  }\n\n  ngOnInit() {}\n\n  register(): void {\n    this.router.navigate([`/dispensation/register`]);\n  }\n}\n","export default \"<app-alternative-navbar titleIcon=\\\"fas fa-history\\\"></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n\\n<div class=\\\"container mt-4\\\" theme>\\n  <form (submit)=\\\"register()\\\">\\n    <div class=\\\"row justify-content-md-center\\\">\\n      <div>\\n        <div class=\\\"container-serp\\\">\\n          <div class=\\\"document-serp d-flex column\\\">\\n            <img alt=\\\"border\\\" src=\\\"assets/icons/consultnullborder.svg\\\" />\\n            <div>\\n              <h1>Receita não encontrada em nosso sistema!</h1>\\n              <p>\\n                Esta receita não foi gerada pela Receita Digital e nem pelos nossos <br /> parceiros.\\n\\n                Também não existe registro para este PDF. <br />\\n\\n                Clique abaixo para registrar as primeiras vendas. <br />\\n              </p>\\n            </div>\\n          </div>\\n\\n          <button class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\" type=\\\"submit\\\">\\n            <span class=\\\"btn-inner--text\\\">Adicionar Dispensação</span>\\n            <span class=\\\"btn-inner--icon\\\" theme><em class=\\\"fa fa-plus\\\"></em></span>\\n          </button>\\n        </div>\\n      </div>\\n    </div>\\n  </form>\\n\\n  <div class=\\\"footer bg-dark d-flex align-items-center fixed-bottom\\\">\\n    <div class=\\\"back-dispensation\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" (click)=\\\"register()\\\" theme>\\n        <em class=\\\"fa fa-arrow-left\\\"></em>\\n        CANCELAR DISPENSAÇÃO\\n      </button>\\n    </div>\\n\\n    <div class=\\\"go-dispensation\\\">\\n      <button type=\\\"button\\\" class=\\\"btn btn-success\\\" (click)=\\\"register()\\\" theme>\\n        CONTINUAR PARA DISPENSAÇÃO\\n        <em class=\\\"fa fa-arrow-right\\\"></em>\\n      </button>\\n    </div>\\n  </div>\\n</div>\\n\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \".btn-add-outiline {\\n  align-items: center;\\n  background-color: var(--bg-color-secondary);\\n  border-radius: 10px;\\n  border: 0;\\n  color: var(--color-white);\\n  display: flex;\\n  font-family: \\\"probold\\\", sans-serif;\\n  height: 40px;\\n  overflow: hidden;\\n  padding: 0 0 0 8px;\\n}\\n.btn-add-outiline .btn-inner--icon {\\n  align-items: center;\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n  display: flex;\\n  height: 40px;\\n  justify-content: center;\\n  width: 50px;\\n}\\n.container-serp {\\n  align-items: center;\\n  display: flex;\\n  flex-direction: column;\\n}\\n.document-serp {\\n  background: #17C6AC;\\n  border-bottom-left-radius: 25px;\\n  border-top-right-radius: 25px;\\n  color: white;\\n  margin-bottom: 5%;\\n  padding: 50px;\\n  width: auto;\\n}\\n@media screen and (min-width: 768px) {\\n  .document-serp {\\n    width: 40rem;\\n  }\\n}\\n.document-serp h1 {\\n  font-size: 20pt;\\n  color: white;\\n  font-weight: bold;\\n  font-family: \\\"Source Sans Pro Bold\\\";\\n  font-size: 24px;\\n}\\n.document-serp p {\\n  color: white;\\n  font-family: \\\"Source Sans Pro Light\\\";\\n  font-size: 18px;\\n}\\n.document-serp img {\\n  fill: #65F2DA;\\n  position: absolute;\\n}\\n@media screen and (min-width: 1901px) {\\n  .document-serp img {\\n    margin-top: -3%;\\n    right: 32%;\\n  }\\n}\\n@media screen and (max-width: 1900px) {\\n  .document-serp img {\\n    margin-top: -4%;\\n    right: 25%;\\n  }\\n}\\n.go-dispensation,\\n.back-dispensation {\\n  width: 50%;\\n  height: 100%;\\n  display: flex;\\n}\\n.go-dispensation .btn-secondary,\\n.back-dispensation .btn-secondary {\\n  background: gray;\\n  border: none;\\n}\\n.go-dispensation {\\n  justify-content: end;\\n}\\n.back-dispensation {\\n  justify-content: start;\\n}\";","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ConsultComponent } from './consult/consult.component';\nimport { DispensationGuard } from './guards/dispensation.guard';\nimport { RegisterComponent } from './register/register.component';\nimport { ConsultEmpty } from './consultempty/consult-empty.component';\nimport { ConsultNotFound } from './consultnotfound/consult-not-found.component';\n\nconst routes: Routes = [\n  { path: 'consult', component: ConsultComponent, canActivate: [DispensationGuard] },\n  { path: 'consult-empty', component: ConsultEmpty, canActivate: [DispensationGuard] },\n  { path: 'consult-not-found', component: ConsultNotFound, canActivate: [DispensationGuard] },\n  { path: 'register', component: RegisterComponent, canActivate: [DispensationGuard] }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  providers: [DispensationGuard],\n  exports: [RouterModule]\n})\nexport class DispensationRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedModule } from '@app/shared';\nimport { NgxLoadingModule } from 'ngx-loading';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { ConsultComponent } from './consult/consult.component';\nimport { DispensationRoutingModule } from './dispensation-routing.module';\nimport { RegisterComponent } from './register/register.component';\nimport { ConsultNotFound } from './consultnotfound/consult-not-found.component';\nimport { ConsultEmpty } from './consultempty/consult-empty.component';\n\n@NgModule({\n  declarations: [ConsultComponent, RegisterComponent, ConsultNotFound, ConsultEmpty],\n  imports: [\n    CommonModule,\n    SharedModule,\n    DispensationRoutingModule,\n    NgxMaskModule.forRoot(),\n    NgxLoadingModule.forRoot({})\n  ]\n})\nexport class DispensationModule {}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'capitalize'\n})\n@Injectable()\nexport class CapitalizePipe implements PipeTransform {\n  // first letter uppercase and the others lowercase\n  transform(value: string): string {\n    return value && value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n  }\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport { OnlyNumbersPipe } from '@app/shared/pipes/only-numbers.pipe';\r\nimport { numeroEspecial } from './helpers';\r\n\r\nconst INITIAL_LEN_TEL = 4;\r\n\r\n@Pipe({\r\n  name: 'formattedCel'\r\n})\r\n@Injectable()\r\nexport class FormattedCelPipe implements PipeTransform {\r\n  transform(value): string {\r\n    if (value && value !== '') {\r\n      let cel;\r\n      const receivedValue = value ? new OnlyNumbersPipe().transform(value) : value;\r\n      if (numeroEspecial(receivedValue) && receivedValue.length === 8) {\r\n        cel = receivedValue.substring(0, 4) + '-' + receivedValue.substring(4, receivedValue.length - 4);\r\n      } else if (numeroEspecial(receivedValue) && receivedValue.length > 8) {\r\n        cel =\r\n          receivedValue.substring(0, 4) +\r\n          '-' +\r\n          receivedValue.substring(4, receivedValue.length - 4) +\r\n          '-' +\r\n          receivedValue.substring(receivedValue.length - 4, receivedValue.length);\r\n      } else if (receivedValue.length > 2 && receivedValue.length <= 7) {\r\n        cel = `(${receivedValue.substring(0, 2)}) ${receivedValue.substring(2)}`;\r\n      } else if (receivedValue.length <= 2) {\r\n        cel = receivedValue.substring(0, 7);\r\n      } else if (receivedValue.length === 9) {\r\n        cel = `(${receivedValue.substring(0, 2)}) ${receivedValue.substring(\r\n          2,\r\n          8\r\n        )}-${receivedValue.substring(8, receivedValue.length)}`;\r\n      } else {\r\n        cel = `(${receivedValue.substring(0, 2)}) ${receivedValue.substring(\r\n          2,\r\n          7\r\n        )}-${receivedValue.substring(7, receivedValue.length)}`;\r\n      }\r\n      return cel;\r\n    }\r\n  }\r\n\r\n  transform2(value): string {\r\n    if (value && value !== '') {\r\n      let cel;\r\n      const receivedValue = value ? new OnlyNumbersPipe().transform(value) : value;\r\n      if (numeroEspecial(receivedValue) && receivedValue.length === 8) {\r\n        cel = receivedValue.substring(0, 4) + '-' + receivedValue.substring(4, receivedValue.length - 4);\r\n      } else if (numeroEspecial(receivedValue) && receivedValue.length > 8) {\r\n        cel =\r\n          receivedValue.substring(0, 4) +\r\n          '-' +\r\n          receivedValue.substring(4, receivedValue.length - 4) +\r\n          '-' +\r\n          receivedValue.substring(receivedValue.length - 4, receivedValue.length);\r\n      } else if (receivedValue.length > 2 && receivedValue.length <= 7) {\r\n        cel = `(${receivedValue.substring(0, 2)}) ${receivedValue.substring(2)}`;\r\n      } else if (receivedValue.length <= 2) {\r\n        cel = receivedValue.substring(0, 7);\r\n      } else {\r\n        cel = `(${receivedValue.substring(0, 2)}) ${receivedValue.substring(\r\n          2,\r\n          7\r\n        )}-${receivedValue.substring(7, receivedValue.length)}`;\r\n      }\r\n      return cel;\r\n    }\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'formattedCnpj'\r\n})\r\nexport class FormattedCnpjPipe implements PipeTransform {\r\n  transform(value: string): string {\r\n    if (value && value !== '') {\r\n      return value.replace(/(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})/g, '$1.$2.$3/$4-$5');\r\n    }\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'formattedCpf'\r\n})\r\nexport class FormattedCpfPipe implements PipeTransform {\r\n  transform(value: string): string {\r\n    return value && value.replace(/(\\d{3})(\\d{3})(\\d{3})(\\d{2})/g, '$1.$2.$3-$4');\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'formattedMapaSipeagro'\n})\nexport class FormattedMapaSipeagroPipe implements PipeTransform {\n  transform(value: string): string {\n    return value && value.replace(/(\\d{5})(\\d{4})/g, '$1/$2');\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n  name: 'safe'\n})\nexport class SafePipe implements PipeTransform {\n  constructor(private sanitizer: DomSanitizer) {}\n  transform(url: string) {\n    return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n  }\n}\n","import { PipeTransform, Pipe } from '@angular/core';\n\n@Pipe({\n  name: 'toJSON'\n})\nexport class ToJsonPipe implements PipeTransform {\n  transform(value = '{}'): string {\n    return JSON.stringify(JSON.parse(value), null, 2);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isObservable, of } from 'rxjs';\nimport { catchError, map, startWith } from 'rxjs/operators';\n\n@Pipe({\n  name: 'withLoading'\n})\nexport class WithLoadingPipe implements PipeTransform {\n  transform(val: unknown) {\n    return isObservable(val)\n      ? val.pipe(\n          map((value: unknown) => ({ loading: false, value })),\n          startWith({ loading: true }),\n          catchError(error => of({ loading: false, error }))\n        )\n      : val;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'sexPetParsed'\n})\nexport class SexPetParsedPipe implements PipeTransform {\n  transform(value: string): string {\n    if (value && value !== '') {\n      return value === 'M' ? 'Macho' : 'Fêmea';\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { CapitalizePipe } from './capitalize.pipe';\r\nimport { FormattedCelPipe } from './formatted-cel.pipe';\r\nimport { FormattedCepPipe } from './formatted-cep.pipe';\r\nimport { FormattedCnpjPipe } from './formatted-cnpj.pipe';\r\nimport { FormattedCpfPipe } from './formatted-cpf.pipe';\r\nimport { FormattedMapaSipeagroPipe } from './formatted-mapa-sipeagro.pipe';\r\nimport { FormattedTelPipe } from './formatted-tel.pipe';\r\nimport { IsCompleteNamePipe } from './is-complete-name-pipe.pipe';\r\nimport { IsCpfPipe } from './is-cpf.pipe';\r\nimport { IsTelPipe } from './is-tel.pipe';\r\nimport { OnlyNumbersPipe } from './only-numbers.pipe';\r\nimport { SafePipe } from './safe.pipe';\r\nimport { ToJsonPipe } from './to-json.pipe';\r\nimport { WithLoadingPipe } from './with-loading.pipe';\r\nimport { SexPetParsedPipe } from './sex-pet-parserd.pipe';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [\r\n    IsCompleteNamePipe,\r\n    FormattedTelPipe,\r\n    FormattedCelPipe,\r\n    IsTelPipe,\r\n    OnlyNumbersPipe,\r\n    IsCpfPipe,\r\n    FormattedCepPipe,\r\n    FormattedCpfPipe,\r\n    FormattedCnpjPipe,\r\n    SafePipe,\r\n    ToJsonPipe,\r\n    FormattedMapaSipeagroPipe,\r\n    CapitalizePipe,\r\n    WithLoadingPipe,\r\n    SexPetParsedPipe\r\n  ],\r\n  exports: [\r\n    IsCompleteNamePipe,\r\n    FormattedTelPipe,\r\n    FormattedCelPipe,\r\n    IsTelPipe,\r\n    OnlyNumbersPipe,\r\n    IsCpfPipe,\r\n    FormattedCepPipe,\r\n    FormattedCpfPipe,\r\n    FormattedCnpjPipe,\r\n    SafePipe,\r\n    ToJsonPipe,\r\n    FormattedMapaSipeagroPipe,\r\n    CapitalizePipe,\r\n    WithLoadingPipe,\r\n    SexPetParsedPipe\r\n  ]\r\n})\r\nexport class PipesModule {}\r\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ValidationService } from '@app/core/services/validation.service';\r\nimport { CepService } from '@app/modules/entry/services/cep.service';\r\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\r\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\r\nimport { PharmacistService } from '@app/modules/pharmacist/services/pharmacist.service';\r\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\r\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\r\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\r\nimport { BrazilState } from '@app/shared/models';\r\nimport { User } from '@app/shared/models/decodedLoginToken';\r\nimport { markFormGroup } from '@app/utils/markFormGroup';\r\nimport { NzModalRef } from 'ng-zorro-antd/modal';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'app-modal-edit-address-data',\r\n  templateUrl: './modal-edit-address-data.component.html',\r\n  styleUrls: ['./modal-edit-address-data.component.scss']\r\n})\r\nexport class ModalEditAddressDataComponent implements OnInit {\r\n  user: User;\r\n  completeUser: any;\r\n  isNew: boolean;\r\n  userType: string;\r\n  commercialData: any;\r\n  commercialDataIndex: number;\r\n  loading = false;\r\n  form: FormGroup;\r\n\r\n  states: BrazilState[] = BrazilianStates;\r\n\r\n  @Output() updateUserEvent = new EventEmitter<any>();\r\n\r\n  constructor(\r\n    private fb: FormBuilder,\r\n    private cepService: CepService,\r\n    private patientService: PatientsService,\r\n    private healthProfessionalService: HealthProfessionalService,\r\n    private pharmacyService: PharmacyService,\r\n    private pharmacistService: PharmacistService,\r\n    private nzModalRef: NzModalRef\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    if (this.userType === 'healthProfessional') {\r\n      this.buildCommercialAddressForm();\r\n    } else {\r\n      this.buildAddressForm();\r\n    }\r\n  }\r\n  get title() {\r\n    return this.userType === 'patient' ? 'ENDEREÇO' : 'DADOS EMPRESARIAIS';\r\n  }\r\n\r\n  private buildCommercialAddressForm() {\r\n    this.form = this.fb.group({\r\n      email: ['', Validators.email],\r\n      name: ['', Validators.required],\r\n      telephone: ['', Validators.required],\r\n      cellphone: [''],\r\n      address: this.fb.group({\r\n        uf: ['', Validators.required],\r\n        city: ['', Validators.required],\r\n        complement: [''],\r\n        number: ['', Validators.required],\r\n        street: ['', Validators.required],\r\n        neighborhood: ['', Validators.required],\r\n        cep: ['', [Validators.required, ValidationService.cepValidator]]\r\n      }),\r\n      logo: ['']\r\n    });\r\n\r\n    if (!this.isNew) {\r\n      this.form.patchValue(this.commercialData);\r\n    }\r\n  }\r\n\r\n  private buildAddressForm() {\r\n    this.form = this.fb.group({\r\n      address: this.fb.group({\r\n        uf: ['', Validators.required],\r\n        city: ['', Validators.required],\r\n        complement: [''],\r\n        number: ['', Validators.required],\r\n        street: ['', Validators.required],\r\n        neighborhood: ['', Validators.required],\r\n        cep: ['', [Validators.required, ValidationService.cepValidator]]\r\n      })\r\n    });\r\n    this.form.controls.address.patchValue(this.completeUser.address);\r\n  }\r\n\r\n  submitForm() {\r\n    markFormGroup(this.form);\r\n    if (this.form.valid) {\r\n      this.loading = true;\r\n      this.form.disable();\r\n      let execute = new Observable();\r\n      switch (this.userType) {\r\n        case 'healthProfessional':\r\n          if (this.isNew) {\r\n            this.completeUser.commercialData.push(this.form.value);\r\n          } else {\r\n            this.completeUser.commercialData[this.commercialDataIndex] = this.form.value;\r\n          }\r\n          execute = this.healthProfessionalService.update(this.completeUser.userId, this.completeUser);\r\n          break;\r\n        case 'pharmacy':\r\n          this.completeUser.address = this.form.value.address;\r\n          execute = this.pharmacyService.update(this.completeUser._id, this.completeUser);\r\n          break;\r\n        case 'pharmacist':\r\n          this.completeUser.address = this.form.value.address;\r\n          execute = this.pharmacistService.update(this.completeUser._id, this.completeUser);\r\n          break;\r\n\r\n        default:\r\n          this.completeUser.address = this.form.value.address;\r\n          execute = this.patientService.update(this.completeUser._id, this.completeUser);\r\n      }\r\n\r\n      execute\r\n        .subscribe(data => {\r\n          this.nzModalRef.close(data);\r\n        })\r\n        .add(() => {\r\n          this.loading = false;\r\n          this.nzModalRef.destroy();\r\n        });\r\n    }\r\n  }\r\n\r\n  @nativeAsync\r\n  async onKey(event: any) {\r\n    if (event.target.value.length === 10) {\r\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\r\n      const data = await this.cepService.consult(cep);\r\n      if (!data.erro) {\r\n        this.form.controls['address'].patchValue({\r\n          uf: data.uf,\r\n          street: data.logradouro,\r\n          neighborhood: data.bairro,\r\n          city: data.localidade,\r\n          number: null,\r\n          cep: data.cep\r\n        });\r\n      }\r\n    }\r\n  }\r\n}\r\n","export default \"<div theme>\\r\\n  <header>\\r\\n    <span class=\\\"title\\\">\\r\\n      {{ title }}\\r\\n    </span>\\r\\n  </header>\\r\\n\\r\\n  <div class=\\\"modal-body\\\">\\r\\n    <form nz-form [formGroup]=\\\"form\\\" (ngSubmit)=\\\"submitForm()\\\">\\r\\n      <ng-container *ngIf=\\\"userType === 'healthProfessional'\\\">\\r\\n        <div>\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"name\\\">Nome <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n            <nz-form-control>\\r\\n              <nz-input-group>\\r\\n                <input\\r\\n                  type=\\\"text\\\"\\r\\n                  nz-input\\r\\n                  formControlName=\\\"name\\\"\\r\\n                  placeholder=\\\"Nome\\\"\\r\\n                  maxlength=\\\"128\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n              </nz-input-group>\\r\\n              <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\r\\n                <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor digite o seu nome e sobrenome.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n\\r\\n          <div class=\\\"row\\\">\\r\\n            <div class=\\\"col-md-6\\\">\\r\\n              <nz-form-item *ngIf=\\\"form.get('telephone') as telephone\\\">\\r\\n                <nz-form-label nzFor=\\\"telephone\\\"\\r\\n                  >Telefone 1 <span class=\\\"mandatory\\\">*</span></nz-form-label\\r\\n                >\\r\\n                <nz-form-control>\\r\\n                  <nz-input-group>\\r\\n                    <input\\r\\n                      nz-input\\r\\n                      type=\\\"text\\\"\\r\\n                      formControlName=\\\"telephone\\\"\\r\\n                      placeholder=\\\"(21) 92222-2222\\\"\\r\\n                      [mask]=\\\"telephone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\r\\n                      autocomplete=\\\"disabled\\\"\\r\\n                    />\\r\\n                  </nz-input-group>\\r\\n                  <nz-form-explain *ngIf=\\\"telephone.dirty && telephone.errors\\\">\\r\\n                    <ng-container *ngIf=\\\"telephone.hasError('required')\\\">\\r\\n                      Campo obrigatório, por favor digite seu telefone para contato.\\r\\n                    </ng-container>\\r\\n                  </nz-form-explain>\\r\\n                </nz-form-control>\\r\\n              </nz-form-item>\\r\\n            </div>\\r\\n            <div class=\\\"col-md-6\\\">\\r\\n              <nz-form-item *ngIf=\\\"form.get('cellphone') as cellphone\\\">\\r\\n                <nz-form-label nzFor=\\\"cellphone\\\">Telefone 2</nz-form-label>\\r\\n                <nz-form-control>\\r\\n                  <nz-input-group>\\r\\n                    <input\\r\\n                      nz-input\\r\\n                      type=\\\"text\\\"\\r\\n                      formControlName=\\\"cellphone\\\"\\r\\n                      placeholder=\\\"(21) 92222-2222\\\"\\r\\n                      [mask]=\\\"cellphone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\r\\n                      autocomplete=\\\"disabled\\\"\\r\\n                    />\\r\\n                  </nz-input-group>\\r\\n                </nz-form-control>\\r\\n              </nz-form-item>\\r\\n            </div>\\r\\n          </div>\\r\\n\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"email\\\">E-mail</nz-form-label>\\r\\n            <nz-form-control nzErrorTip=\\\"E-mail inválido, por favor digite um endereço e-mail correto\\\">\\r\\n              <nz-input-group>\\r\\n                <input\\r\\n                  type=\\\"text\\\"\\r\\n                  nz-input\\r\\n                  formControlName=\\\"email\\\"\\r\\n                  placeholder=\\\"usuário@email.com\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n              </nz-input-group>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n          <hr />\\r\\n        </div>\\r\\n      </ng-container>\\r\\n\\r\\n      <div *ngIf=\\\"form.get('address') as addressGroup\\\" [formGroup]=\\\"addressGroup\\\">\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"cep\\\">CEP <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n          <nz-form-control nzErrorTip=\\\"Campo obrigatório, por favor digite o seu CEP.\\\">\\r\\n            <nz-input-group>\\r\\n              <input\\r\\n                (keyup)=\\\"onKey($event)\\\"\\r\\n                type=\\\"text\\\"\\r\\n                nz-input\\r\\n                formControlName=\\\"cep\\\"\\r\\n                placeholder=\\\"CEP\\\"\\r\\n                mask=\\\"00.000-000\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n            </nz-input-group>\\r\\n            <nz-form-explain *ngIf=\\\"addressGroup.get('cep').dirty && addressGroup.get('cep').errors\\\">\\r\\n              <ng-container *ngIf=\\\"addressGroup.get('cep').hasError('required')\\\">\\r\\n                Campo obrigatório, por favor digite o cep.\\r\\n              </ng-container>\\r\\n              <ng-container\\r\\n                *ngIf=\\\"\\r\\n                  !addressGroup.get('cep').hasError('required') &&\\r\\n                  addressGroup.get('cep').hasError('cep')\\r\\n                \\\"\\r\\n              >\\r\\n                Cep inválido.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <div class=\\\"row\\\">\\r\\n          <div class=\\\"col-7\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"street\\\">Logradouro <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n              <nz-form-control nzErrorTip=\\\"Campo obrigatório, por favor digite o seu Logradouro.\\\">\\r\\n                <nz-input-group>\\r\\n                  <input\\r\\n                    type=\\\"text\\\"\\r\\n                    nz-input\\r\\n                    formControlName=\\\"street\\\"\\r\\n                    placeholder=\\\"Logradouro\\\"\\r\\n                    maxlength=\\\"128\\\"\\r\\n                    autocomplete=\\\"disabled\\\"\\r\\n                  />\\r\\n                </nz-input-group>\\r\\n                <nz-form-explain\\r\\n                  *ngIf=\\\"addressGroup.get('street').dirty && addressGroup.get('street').errors\\\"\\r\\n                >\\r\\n                  <ng-container *ngIf=\\\"addressGroup.get('street').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor digite o logradouro.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n          <div class=\\\"col-5\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"number\\\">Número <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n              <nz-form-control nzErrorTip=\\\"Campo obrigatório, por favor digite o seu número.\\\">\\r\\n                <nz-input-group>\\r\\n                  <input\\r\\n                    nz-input\\r\\n                    formControlName=\\\"number\\\"\\r\\n                    placeholder=\\\"Número\\\"\\r\\n                    maxlength=\\\"10\\\"\\r\\n                    autocomplete=\\\"disabled\\\"\\r\\n                  />\\r\\n                </nz-input-group>\\r\\n                <nz-form-explain\\r\\n                  *ngIf=\\\"addressGroup.get('number').dirty && addressGroup.get('number').errors\\\"\\r\\n                >\\r\\n                  <ng-container *ngIf=\\\"addressGroup.get('number').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor digite o número.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n        </div>\\r\\n\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"complement\\\">Complemento</nz-form-label>\\r\\n          <nz-form-control>\\r\\n            <nz-input-group>\\r\\n              <input\\r\\n                type=\\\"text\\\"\\r\\n                nz-input\\r\\n                formControlName=\\\"complement\\\"\\r\\n                placeholder=\\\"Complemento\\\"\\r\\n                maxlength=\\\"128\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n            </nz-input-group>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"neighborhood\\\">Bairro <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n          <nz-form-control nzErrorTip=\\\"Campo obrigatório, por favor digite o seu Bairro.\\\">\\r\\n            <nz-input-group>\\r\\n              <input\\r\\n                type=\\\"text\\\"\\r\\n                nz-input\\r\\n                formControlName=\\\"neighborhood\\\"\\r\\n                placeholder=\\\"Bairro\\\"\\r\\n                maxlength=\\\"128\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n            </nz-input-group>\\r\\n            <nz-form-explain\\r\\n              *ngIf=\\\"addressGroup.get('neighborhood').dirty && addressGroup.get('neighborhood').errors\\\"\\r\\n            >\\r\\n              <ng-container *ngIf=\\\"addressGroup.get('neighborhood').hasError('required')\\\">\\r\\n                Campo obrigatório, por favor digite o bairro.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <div class=\\\"row\\\">\\r\\n          <div class=\\\"col-7\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"city\\\">Cidade <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n              <nz-form-control nzErrorTip=\\\"Campo obrigatório, por favor digite o seu Cidade.\\\">\\r\\n                <nz-input-group>\\r\\n                  <input\\r\\n                    type=\\\"text\\\"\\r\\n                    nz-input\\r\\n                    formControlName=\\\"city\\\"\\r\\n                    placeholder=\\\"Cidade\\\"\\r\\n                    maxlength=\\\"64\\\"\\r\\n                    autocomplete=\\\"disabled\\\"\\r\\n                  />\\r\\n                </nz-input-group>\\r\\n                <nz-form-explain\\r\\n                  *ngIf=\\\"addressGroup.get('city').dirty && addressGroup.get('city').errors\\\"\\r\\n                >\\r\\n                  <ng-container *ngIf=\\\"addressGroup.get('city').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor digite a cidade.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n          <div class=\\\"col-5\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"uf\\\">UF <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n              <nz-form-control\\r\\n                nzHasFeedback\\r\\n                nzErrorTip=\\\"Campo obrigatório, por favor selecione o UF do CRM\\\"\\r\\n              >\\r\\n                <nz-select\\r\\n                  formControlName=\\\"uf\\\"\\r\\n                  id=\\\"uf\\\"\\r\\n                  nzShowSearch\\r\\n                  nzAllowClear\\r\\n                  nzDropdownClassName=\\\"account-select\\\"\\r\\n                  nzPlaceHolder=\\\"Selecione\\\"\\r\\n                >\\r\\n                  <nz-option\\r\\n                    *ngFor=\\\"let state of states\\\"\\r\\n                    [nzLabel]=\\\"state?.sigla\\\"\\r\\n                    [nzValue]=\\\"state?.sigla\\\"\\r\\n                  >\\r\\n                  </nz-option>\\r\\n                </nz-select>\\r\\n                <nz-form-explain *ngIf=\\\"addressGroup.get('uf').dirty && addressGroup.get('uf').errors\\\">\\r\\n                  <ng-container *ngIf=\\\"addressGroup.get('uf').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor selecione o UF.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n        </div>\\r\\n      </div>\\r\\n    </form>\\r\\n\\r\\n    <div *ngIf=\\\"loading\\\">\\r\\n      <ng-template #indicatorTemplate><i nz-icon nzType=\\\"loading\\\"></i></ng-template>\\r\\n      <nz-spin nzSimple [nzIndicator]=\\\"indicatorTemplate\\\"> </nz-spin>\\r\\n    </div>\\r\\n\\r\\n    <button class=\\\"btn btn-icon btn-ok btn-save\\\" type=\\\"button\\\" (click)=\\\"submitForm()\\\">\\r\\n      <span class=\\\"btn-inner--text\\\">SALVAR</span>\\r\\n    </button>\\r\\n  </div>\\r\\n</div>\\r\\n\";","export default \"header {\\n  width: 100%;\\n  padding: 16px 24px;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 4px 4px 0 0;\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  background-color: var(--bg-modal-header);\\n  color: var(--color-white);\\n}\\nheader .title {\\n  margin: 0;\\n  font-weight: 500;\\n  color: var(--color-white);\\n  font-size: 16px;\\n  line-height: 22px;\\n  word-wrap: break-word;\\n}\\n.modal-body {\\n  padding-bottom: 40px;\\n  margin-top: 37px;\\n  height: 50vh;\\n  overflow-y: scroll;\\n}\\n.modal-body input {\\n  border-radius: 10px;\\n}\\n.modal-body button {\\n  float: right;\\n}\\ni {\\n  font-size: 24px;\\n}\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n.mandatory {\\n  color: red;\\n}\\n.btn {\\n  font-size: 12px;\\n}\";","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { UserService } from '@app/modules/user/user.service';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { StateService } from '@app/shared/services/state.service';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { switchMap } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-modal-sucess-send-document',\n  templateUrl: './modal-sucess-send-document.component.html',\n  styleUrls: ['./modal-sucess-send-document.component.scss']\n})\nexport class ModalSucessSendDocumentComponent implements OnInit {\n  @Output() closeModal = new EventEmitter<any>();\n  isSuccessMsg = true;\n  title: string;\n  code: string;\n  resend: boolean;\n  colorSetting: ColorSetting;\n\n  form: FormGroup;\n\n  constructor(\n    public modalRef: BsModalRef,\n    private fb: FormBuilder,\n    private userService: UserService,\n    private authService: AuthService,\n    private stateService: StateService\n  ) {}\n\n  get rennovaFeature(): boolean {\n    const user: User = this.authService.user();\n    return (\n      user &&\n      user.features.some(f => f.name === 'Rennova') &&\n      this.stateService.data &&\n      this.stateService.data.isRennova\n    );\n  }\n\n  ngOnInit() {\n    if (this.resend) {\n      this.setTitle();\n    } else {\n      this.form = this.fb.group({\n        doNotShowAgainModalSuccessPrescription: [false]\n      });\n      this.listenDoNotShowAgainModalSuccessPrescription();\n    }\n  }\n  setTitle() {\n    switch (this.code[0]) {\n      case 'P':\n      case 'I':\n        this.title = `Receita ${this.resend ? 're' : ''}enviada com sucesso!`;\n        break;\n      case 'A':\n        this.title = `Atestado ${this.resend ? 're' : ''}enviado com sucesso!`;\n        break;\n      case 'E':\n        this.title = `Exame ${this.resend ? 're' : ''}enviado com sucesso!`;\n        break;\n      case 'O':\n      default:\n        this.title = `Documento ${this.resend ? 're' : ''}enviado com sucesso!`;\n    }\n  }\n\n  close(): void {\n    this.modalRef.hide();\n    this.closeModal.emit();\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  listenDoNotShowAgainModalSuccessPrescription() {\n    this.form\n      .get('doNotShowAgainModalSuccessPrescription')\n      .valueChanges.pipe(\n        switchMap(value =>\n          this.userService.checkUi({ ...this.user.ui, doNotShowAgainModalSuccessPrescription: value })\n        )\n      )\n      .subscribe();\n  }\n}\n","export default \"<div class=\\\"modal-body\\\" theme>\\n  <div *ngIf=\\\"!resend\\\">\\n    <p style=\\\"font-weight: bold; text-align: justify;\\\" *ngIf=\\\"isSuccessMsg && !rennovaFeature\\\">\\n      O link da Receita Digital foi enviado com sucesso! Se precisar, este documento poderá ser acessado\\n      pelo seu Histórico de Documentos ou diretamente no perfil do paciente em\\n      <a href=\\\"https://receitadigital.com/\\\">receitadigital.com</a>\\n    </p>\\n\\n    <p style=\\\"font-weight: bold;text-align: justify;\\\" *ngIf=\\\"isSuccessMsg && rennovaFeature\\\">\\n      O link da Receita Digital foi enviado com sucesso! Se precisar, este documento poderá ser acessado\\n      pelo seu Histórico de Documentos.\\n    </p>\\n\\n    <p style=\\\"font-weight: bold;text-align: justify;\\\" *ngIf=\\\"!isSuccessMsg && !rennovaFeature\\\">\\n      Você optou por não enviar o link de acesso de forma automática. Mas fique tranquilo, este documento\\n      poderá ser acessado pelo seu Histórico de Documentos e diretamente no perfil do paciente em\\n      <a href=\\\"https://receitadigital.com/\\\">receitadigital.com</a>\\n    </p>\\n\\n    <p style=\\\"font-weight: bold;text-align: justify;\\\" *ngIf=\\\"!isSuccessMsg && rennovaFeature\\\">\\n      Você optou por não enviar o link de acesso de forma automática. Mas fique tranquilo, este documento\\n      poderá ser acessado pelo seu Histórico de Documentos.\\n    </p>\\n\\n    <form [formGroup]=\\\"form\\\">\\n      <label nz-checkbox formControlName=\\\"doNotShowAgainModalSuccessPrescription\\\"\\n        >Não mostrar novamente</label\\n      >\\n    </form>\\n  </div>\\n\\n  <div *ngIf=\\\"resend\\\">\\n    <h4 class=\\\"title\\\" [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">\\n      {{ title }}\\n    </h4>\\n    <p>Código do documento: {{ code }}</p>\\n  </div>\\n</div>\\n\\n<div\\n  class=\\\"modal-footer\\\"\\n  [ngStyle]=\\\"{\\n    'background-color': colorSetting?.secondary,\\n    color: colorSetting?.secondary\\n  }\\\"\\n  theme\\n>\\n  <button\\n    (click)=\\\"close()\\\"\\n    class=\\\"btn\\\"\\n    theme\\n    [ngStyle]=\\\"\\n      colorSetting && {\\n        'background-color': colorSetting?.primary,\\n        'border-color': colorSetting?.primary\\n      }\\n    \\\"\\n  >\\n    Ok\\n  </button>\\n</div>\\n\";","export default \".title {\\n  text-transform: none;\\n  font-size: 40px;\\n  line-height: normal;\\n}\\n\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n}\\n\\n.modal-body {\\n  text-align: center;\\n}\\n\\n.modal-footer {\\n  background-color: var(--bg-color-secondary);\\n  padding: 8px;\\n}\\n\\n.modal-footer .btn {\\n  font-size: 12px;\\n  color: #ebebeb;\\n  text-decoration: none;\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n\\n.modal-footer .btn.btn-primary {\\n  background-color: #1b403a;\\n  border-color: #1b403a;\\n}\\n\\n.modal-footer .btn.btn-black {\\n  background-color: #363636;\\n  border-color: #363636;\\n}\";","import { Injectable } from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  FormArray,\r\n  FormControl,\r\n  FormGroup,\r\n  ValidationErrors,\r\n  ValidatorFn\r\n} from '@angular/forms';\r\nimport { CoreModule } from '@app/core';\r\nimport { numeroEspecial } from '@app/shared/pipes/helpers';\r\nimport { IsCompleteNamePipe } from '@app/shared/pipes/is-complete-name-pipe.pipe';\r\nimport { IsTelPipe } from '@app/shared/pipes/is-tel.pipe';\r\nimport { OnlyNumbersPipe } from '@app/shared/pipes/only-numbers.pipe';\r\nimport * as moment from 'moment';\r\n\r\n@Injectable({\r\n  providedIn: CoreModule\r\n})\r\nexport class ValidationService {\r\n  constructor() {}\r\n\r\n  static nomeValidator(control: FormControl): { [key: string]: boolean } | null {\r\n    if (control.value === '' || new IsCompleteNamePipe().transform(control.value)) {\r\n      return null;\r\n    } else {\r\n      return { nome: true };\r\n    }\r\n  }\r\n\r\n  static telefoneValidator(control: FormControl): { [key: string]: boolean } | null {\r\n    console.log('Telefone: ', control.value);\r\n    if (control.value === '') {\r\n      return null;\r\n    }\r\n    if (numeroEspecial(control.value) && new OnlyNumbersPipe().transform(control.value).length >= 8) {\r\n      return null;\r\n    } else if (new IsTelPipe().transform(control.value)) {\r\n      return null;\r\n    } else {\r\n      return { telefone: true };\r\n    }\r\n  }\r\n\r\n  static celularValidator2(control: FormControl): { [key: string]: boolean } | null {\r\n    if (control.value === '') {\r\n      return null;\r\n    }\r\n    if (numeroEspecial(control.value) && new OnlyNumbersPipe().transform(control.value).length >= 8) {\r\n      return null;\r\n    } else if (new IsTelPipe().transform(control.value)) {\r\n      return null;\r\n    } else {\r\n      return { celular: true };\r\n    }\r\n  }\r\n\r\n  static celularValidator(control: FormControl): { [key: string]: boolean } | null {\r\n    if (control.value === '') {\r\n      return null;\r\n    }\r\n    if (new OnlyNumbersPipe().transform(control.value).length === 11) {\r\n      return null;\r\n    } else {\r\n      return { celular: true };\r\n    }\r\n  }\r\n\r\n  static passwordConfirmationValidator(control: FormControl): { [key: string]: boolean } | null {\r\n    if (control.get('password').value === control.get('passwordConfirmation').value) {\r\n      return null;\r\n    }\r\n    control.get('passwordConfirmation').setErrors({ doNotMatch: true });\r\n  }\r\n\r\n  static cepValidator(control: FormControl): { [key: string]: boolean } | null {\r\n    if (!control.value || new OnlyNumbersPipe().transform(control.value).length === 8) {\r\n      return null;\r\n    }\r\n    return { cep: true };\r\n  }\r\n\r\n  static emailMatch(control: FormControl): { emailMatch: boolean } {\r\n    const email = control.get('email');\r\n    const emailConfirmation = control.get('emailConfirmation');\r\n    if (email && emailConfirmation) {\r\n      const match = email.value === emailConfirmation.value;\r\n      const errors = emailConfirmation.errors || {};\r\n      let error = null;\r\n\r\n      if (match) {\r\n        delete errors.emailMatch;\r\n        error = errors;\r\n      } else {\r\n        error = { ...errors, emailMatch: true };\r\n      }\r\n\r\n      if (Object.entries(error).length === 0) {\r\n        error = null;\r\n      }\r\n\r\n      if (emailConfirmation.dirty) {\r\n        emailConfirmation.setErrors(error);\r\n      }\r\n\r\n      return error;\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  static confirmEmailValidator(confirmEmailInput: string) {\r\n    let confirmEmailControl: FormControl;\r\n    let emailControl: FormControl;\r\n\r\n    return (control: FormControl) => {\r\n      if (!control.parent) {\r\n        return null;\r\n      }\r\n\r\n      if (!confirmEmailControl) {\r\n        confirmEmailControl = control;\r\n        emailControl = control.parent.get(confirmEmailInput) as FormControl;\r\n        emailControl.valueChanges.subscribe(() => {\r\n          confirmEmailControl.updateValueAndValidity();\r\n        });\r\n      }\r\n\r\n      if (emailControl.value.toLocaleLowerCase() !== confirmEmailControl.value.toLocaleLowerCase()) {\r\n        return { notMatch: true };\r\n      }\r\n\r\n      return null;\r\n    };\r\n  }\r\n\r\n  static mandatoryContact(control: FormControl): { emailMatch: boolean } {\r\n    if (control.get('cellphone').value !== '' || control.get('telephone').value !== '') {\r\n      control.get('cellphone').setErrors(null);\r\n      control.get('telephone').setErrors(null);\r\n\r\n      return null;\r\n    }\r\n    control.get('cellphone').setErrors({ mandatoryContact: true });\r\n    control.get('telephone').setErrors({ mandatoryContact: true });\r\n  }\r\n\r\n  static cpfValidator({ value }: FormControl): { [key: string]: boolean } | null {\r\n    let Soma;\r\n    let Resto;\r\n    Soma = 0;\r\n    const strCPF = value && value.replace(/[^0-9]+/g, '');\r\n    if (!strCPF) {\r\n      return null;\r\n    }\r\n    if (\r\n      strCPF === '00000000000' ||\r\n      strCPF === '11111111111' ||\r\n      strCPF === '22222222222' ||\r\n      strCPF === '33333333333' ||\r\n      strCPF === '44444444444' ||\r\n      strCPF === '55555555555' ||\r\n      strCPF === '66666666666' ||\r\n      strCPF === '77777777777' ||\r\n      strCPF === '88888888888' ||\r\n      strCPF === '99999999999'\r\n    ) {\r\n      return { cpf: true };\r\n    }\r\n\r\n    for (let i = 1; i <= 9; i++) {\r\n      Soma = Soma + parseInt(strCPF.substring(i - 1, i)) * (11 - i);\r\n    }\r\n    Resto = (Soma * 10) % 11;\r\n\r\n    if (Resto === 10 || Resto === 11) {\r\n      Resto = 0;\r\n    }\r\n    if (Resto !== parseInt(strCPF.substring(9, 10))) {\r\n      return { cpf: true };\r\n    }\r\n\r\n    Soma = 0;\r\n    for (let i = 1; i <= 10; i++) {\r\n      Soma = Soma + parseInt(strCPF.substring(i - 1, i)) * (12 - i);\r\n    }\r\n    Resto = (Soma * 10) % 11;\r\n\r\n    if (Resto === 10 || Resto === 11) {\r\n      Resto = 0;\r\n    }\r\n    if (Resto !== parseInt(strCPF.substring(10, 11))) {\r\n      return { cpf: true };\r\n    }\r\n    return null;\r\n  }\r\n\r\n  static cnpjValidator(control: FormControl): { [key: string]: boolean } | null {\r\n    return ValidationService.isCnpjValid(control.value) ? null : { cnpj: true };\r\n  }\r\n\r\n  static isCnpjValid(value) {\r\n    if (!value) {\r\n      return false;\r\n    }\r\n\r\n    // Aceita receber o valor como string, número ou array com todos os dígitos\r\n    const isString = typeof value === 'string';\r\n    const validTypes = isString || Number.isInteger(value) || Array.isArray(value);\r\n\r\n    // Elimina valor em formato inválido\r\n    if (!validTypes) {\r\n      return false;\r\n    }\r\n\r\n    // Filtro inicial para entradas do tipo string\r\n    if (isString) {\r\n      // Limita ao máximo de 18 caracteres, para CNPJ formatado\r\n      if (value.length > 18) {\r\n        return false;\r\n      }\r\n\r\n      // Teste Regex para veificar se é uma string apenas dígitos válida\r\n      const digitsOnly = /^\\d{14}$/.test(value);\r\n      // Teste Regex para verificar se é uma string formatada válida\r\n      const validFormat = /^\\d{2}.\\d{3}.\\d{3}\\/\\d{4}-\\d{2}$/.test(value);\r\n\r\n      // Se o formato é válido, usa um truque para seguir o fluxo da validação\r\n      if (digitsOnly || validFormat) {\r\n        true;\r\n      }\r\n      // Se não, retorna inválido\r\n      else {\r\n        return false;\r\n      }\r\n    }\r\n\r\n    // Guarda um array com todos os dígitos do valor\r\n    const match = value.toString().match(/\\d/g);\r\n    const numbers = Array.isArray(match) ? match.map(Number) : [];\r\n\r\n    // Valida a quantidade de dígitos\r\n    if (numbers.length !== 14) {\r\n      return false;\r\n    }\r\n\r\n    // Elimina inválidos com todos os dígitos iguais\r\n    const items = Array.from(new Set(numbers));\r\n    if (items.length === 1) {\r\n      return false;\r\n    }\r\n\r\n    // Cálculo validador\r\n    const calc = x => {\r\n      const slice = numbers.slice(0, x);\r\n      let factor = x - 7;\r\n      let sum = 0;\r\n\r\n      for (let i = x; i >= 1; i--) {\r\n        const n = slice[x - i];\r\n        sum += n * factor--;\r\n        if (factor < 2) {\r\n          factor = 9;\r\n        }\r\n      }\r\n\r\n      const result = 11 - (sum % 11);\r\n\r\n      return result > 9 ? 0 : result;\r\n    };\r\n\r\n    // Separa os 2 últimos dígitos de verificadores\r\n    const digits = numbers.slice(12);\r\n\r\n    // Valida 1o. dígito verificador\r\n    const digit0 = calc(12);\r\n    if (digit0 !== digits[0]) {\r\n      return false;\r\n    }\r\n\r\n    // Valida 2o. dígito verificador\r\n    const digit1 = calc(13);\r\n    return digit1 === digits[1];\r\n  }\r\n\r\n  static dateValidator({ format = 'DDMMYYYY', max = new Date() } = {}): ValidatorFn {\r\n    return (control: AbstractControl): ValidationErrors | null => {\r\n      if (control.value.length !== format.length) {\r\n        return { invalidDate: true };\r\n      }\r\n\r\n      const date = moment(control.value, format);\r\n      if (!date.isValid()) {\r\n        return { invalidDate: true };\r\n      }\r\n\r\n      if (max && max.getTime() < date.toDate().getTime()) {\r\n        return { invalidDate: true };\r\n      }\r\n\r\n      return null;\r\n    };\r\n  }\r\n\r\n  static birthdateValidator(): ValidatorFn {\r\n    return (control: AbstractControl): ValidationErrors | null => {\r\n      const age = moment().diff(moment(control.value, 'DDMMYYYY'), 'years', false);\r\n      if (age < 18) {\r\n        return { invalidBirthdate: true };\r\n      }\r\n      return null;\r\n    };\r\n  }\r\n\r\n  static minLengthArray(min: number): ValidatorFn {\r\n    return (c: AbstractControl): { [key: string]: any } => {\r\n      if (c.value.length >= min) {\r\n        return null;\r\n      }\r\n\r\n      return { minLengthArray: true };\r\n    };\r\n  }\r\n\r\n  static printInvalidFields(form: FormGroup) {\r\n    const arr = Object.entries(form.controls)\r\n      .map(e => ({ entry: e[0], value: e[1].valid }))\r\n      .filter(e => !e.value);\r\n    console.log(arr);\r\n  }\r\n\r\n  static atLeastOne(formArray: FormArray): ValidatorFn {\r\n    return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n      return !formArray.controls.length ? { required: true } : null;\r\n    };\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { PetPatient } from '@app/shared/models/pet-patient';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { ModalAddPatientComponent } from '../modal-add-patient/modal-add-patient.component';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-modal-select-pet',\n  templateUrl: './modal-select-pet.component.html',\n  styleUrls: ['./modal-select-pet.component.scss']\n})\nexport class ModalSelectPetComponent implements OnInit {\n  @Input() pets: any;\n  @Input() prescriber: any;\n  @Input() responsible: any;\n  @Output() submit = new EventEmitter<any>();\n\n  private prescriberPets: PetPatient[] = [];\n\n  constructor(\n    public modalRef: BsModalRef,\n    private healthProfessionalService: HealthProfessionalService,\n    private modalService: BsModalService\n  ) {}\n\n  ngOnInit(): void {\n    this.healthProfessionalService\n      .getPetsByResponsible(this.responsible._id)\n      .subscribe((pets: PetPatient[]) => (this.prescriberPets = pets));\n  }\n  @nativeAsync\n  async selectOrAddPatient(pet: PetPatient) {\n    if (!this.hasDependent(pet)) {\n      await this.addPetPatient(pet);\n    }\n    this.submit.emit({\n      pet,\n      isAdding: false\n    });\n  }\n\n  @nativeAsync\n  async addPetPatient(pet: PetPatient) {\n    try {\n      await this.healthProfessionalService.addPetPatient(pet._id).toPromise();\n    } catch (err) {\n      console.error(err);\n    }\n  }\n\n  hasDependent(pet: PetPatient): boolean {\n    const pets = this.prescriberPets;\n    return pets.some(p => p._id === pet._id);\n  }\n\n  showModalAddPatient() {\n    const initialState = {\n      prescriber: this.prescriber,\n      patient: this.responsible,\n      isResponsible: true,\n      existingPatient: true\n    };\n    const modal = this.modalService.show(ModalAddPatientComponent, {\n      class: 'modal-lg',\n      initialState,\n      backdrop: 'static',\n      keyboard: false\n    });\n\n    modal.content.updateListPatientEvent.subscribe((pet: PetPatient) => {\n      modal.hide();\n      this.modalRef.hide();\n      this.submit.emit({\n        pet,\n        isAdding: true\n      });\n    });\n  }\n}\n","export default \"<div class=\\\"modal-header\\\" theme>\\n  <h4 class=\\\"modal-title pull-left text-white\\\">\\n    Selecionar Pet\\n    <h5 style=\\\"color: #0b6054;\\\">Tutor(a)/Responsável: {{ responsible?.fullname }}</h5>\\n    <label style=\\\"font-size: 14px; margin-top: -5px; color: #0b6054; margin-bottom: 0;\\\"\\n      >Selecione o Pet na lista abaixo ou adicione um novo pet para este Tutor/Responsável</label\\n    >\\n  </h4>\\n\\n  <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n    <span aria-hidden=\\\"true\\\">&times;</span>\\n  </button>\\n</div>\\n<div class=\\\"modal-body\\\">\\n  <div *ngIf=\\\"pets.length > 0\\\" style=\\\"height: 300px; overflow: auto;\\\">\\n    <div\\n      style=\\\"color: #0000EE; text-decoration: underline; padding: 3px; cursor: pointer;\\\"\\n      *ngFor=\\\"let pet of pets\\\"\\n      (click)=\\\"selectOrAddPatient(pet)\\\"\\n    >\\n      {{ pet.name | titlecase }}\\n    </div>\\n  </div>\\n  <p *ngIf=\\\"pets.length == 0\\\">O Responsável/Tutor ainda não possui nenhum pet cadastrado</p>\\n</div>\\n<div class=\\\"modal-footer\\\">\\n  <button class=\\\"btn btn-primary\\\" (click)=\\\"showModalAddPatient()\\\">\\n    adicionar novo pet\\n  </button>\\n</div>\\n\";","export default \".modal-header {\\n  width: 500px;\\n  font-family: \\\"probold\\\";\\n}\\n\\n.modal-body {\\n  width: 100% !important;\\n  margin-top: 10px;\\n  display: flex;\\n  flex-direction: column;\\n  justify-content: center;\\n}\\n\\n.modal-body .list-item-icon .fa {\\n  margin-right: 15px;\\n}\\n\\n.modal-body ul li {\\n  font-family: \\\"prolight\\\";\\n  font-size: 15px;\\n  margin-right: 0;\\n}\\n\\n.modal-body ul li .ant-divider {\\n  background: #838383;\\n}\\n\\n.modal-body ul li .ant-divider-vertical {\\n  margin: 0 20px;\\n  height: 20px;\\n}\\n\\n.btn-icon {\\n  padding: 5px;\\n  margin: 0 0 5px 5px;\\n  border: 0;\\n  box-shadow: none;\\n  background-color: transparent;\\n}\";","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Pharmacist, Pharmacy } from '@app/shared/models';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\n\nconst PHARMACIST_URL = 'pharmacist';\nconst PHARMACIST_PHARMACY_URL = 'pharmacist/pharmacy';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PharmacistService {\n  constructor(private http: HttpClient) {}\n\n  save(pharmacist: any): Observable<Pharmacist> {\n    pharmacist.originHost = window.location.origin;\n    return this.http.post<Pharmacist>(`${environment.apiRoot}${PHARMACIST_URL}`, pharmacist);\n  }\n\n  update(id: string, data: any): Observable<Pharmacist> {\n    return this.http.put<Pharmacist>(`${environment.apiRoot}${PHARMACIST_URL}/${id}`, data);\n  }\n\n  getPharmacistsByPharmacyId(pharmacyId: string, filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${PHARMACIST_PHARMACY_URL}/${pharmacyId}`, {\n      params: filter\n    });\n  }\n\n  getPharmacistByUserId(userId: string): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${PHARMACIST_URL}/user/${userId}`);\n  }\n\n  getPharmacyByCpf(cpf: string): Observable<Pharmacist> {\n    return this.http.get<Pharmacist>(`${environment.apiRoot}${PHARMACIST_URL}/cpf/${cpf}`);\n  }\n\n  getPharmaciesByFilter(filter: any): Observable<any> {\n    return this.http.get<Pharmacist[]>(`${environment.apiRoot}${PHARMACIST_URL}/filter`, {\n      params: filter\n    });\n  }\n\n  getPharmacies(pharmacistId) {\n    return this.http.get<Pharmacy[]>(\n      `${environment.apiRoot}${PHARMACIST_URL}/pharmacies/${pharmacistId}`\n    );\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\nimport { DataBigboostConsult } from '../models/paciente';\nimport { ResponseSearchCnpj } from '../models/reponse-search-cnpj';\n\nconst API_UL = `${environment.apiRoot}bigboost`;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BigboostService {\n  constructor(private http: HttpClient) {}\n\n  consultCpf(cpf: string, birthdate?: string): Observable<DataBigboostConsult> {\n    const params = birthdate ? { birthdate } : {};\n    return this.http.get<DataBigboostConsult>(`${API_UL}/cpf/${cpf}`, { params });\n  }\n\n  consultCnpj(cnpj: string): Promise<ResponseSearchCnpj> {\n    return this.http.get<ResponseSearchCnpj>(`${API_UL}/cnpj/${cnpj}`).toPromise();\n  }\n}\n","export const environment = {\n  production: true,\n  local: false,\n  environment: 'prod',\n  apiRoot: 'https://api.receitadigital.com/api/',\n  apiV1: 'https://api.receitadigital.com/v1',\n  host: 'https://app.receitadigital.com/',\n  plusGApp: 'https://assine.gosigner.com.br',\n  envPlusSecretKey: '637e2ffee279a02ff6d1ccec224d01db',\n  envPlusSecretKeyIS: 'a5e82ce673fe7007f96fb2c2b7fce055',\n  envKeySpecialty: 'fr1MzCU8RC3YPIX8prW9EalrEfoYiWqi8afdVbDk',\n  envKeyMedicament: 'wBwNQLTg2t3bTFWjNhgZ01iFEnJC3Mu05D4G23IE',\n  envAdminApiKey: 'RfMlZ8UB8GiRkdfeN4c5COCL58ldtauB',\n  debounceTime: 300,\n  maintenance: false,\n  template: '',\n  versionCheckURL: 'https://app.receitadigital.com/version.json',\n  tempoDeValidadeDaSessao: 240,\n  appRedirectV2Enabled: true,\n  appV2UrlValidationDocument: 'https://app2.receitadigital.com/d/v',\n  envCmSereneApiKey: 'HIFJDEFD49490440EI2B1H9C1C4DFBJ2'\n};\n","import { InjectionToken } from '@angular/core';\n\nexport const THEMES = new InjectionToken('THEMES');\nexport const ACTIVE_THEME = new InjectionToken('ACTIVE_THEME');\n\nexport interface Theme {\n  title: string;\n  name: string;\n  favicon: string;\n  properties: any;\n}\n\nexport interface ThemeOptions {\n  themes: Theme[];\n  active: string;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { OnlyNumbersPipe } from './only-numbers.pipe';\r\n\r\n@Pipe({\r\n  name: 'formattedCep'\r\n})\r\nexport class FormattedCepPipe implements PipeTransform {\r\n  transform(value: string): string {\r\n    if (value && value !== '') {\r\n      let cep;\r\n      const receivedValue = value ? new OnlyNumbersPipe().transform(value) : value;\r\n      if (receivedValue.length <= 5) {\r\n        cep = receivedValue.substring(0, receivedValue.length);\r\n      } else {\r\n        cep = `${receivedValue.substring(0, 5)}-${receivedValue.substring(5, receivedValue.length)}`;\r\n      }\r\n      return cep;\r\n    }\r\n  }\r\n}\r\n","export enum TypePatientEnum {\n  ADULT = 'ADULT',\n  MINOR = 'MINOR'\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\nimport { DateUtils } from '@app/shared/data/DateUtils';\nimport { HealthProfessional, Patient } from '@app/shared/models';\nimport { ProfessionalType } from '@app/shared/models/professional-type.enum';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BigboostService } from '@app/shared/services/bigboost.service';\nimport { markFormGroup } from '@app/utils';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { TypePatientEnum } from '../../enum/type-patient';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-modal-search',\n  templateUrl: './modal-search.component.html',\n  styleUrls: ['./modal-search.component.scss']\n})\nexport class ModalSearchComponent implements OnInit {\n  @Input() user: any;\n  @Input() prescriber: HealthProfessional;\n  @Input() addPatient = false;\n  @Input() cpf: string;\n  @Output() searchEvent = new EventEmitter();\n  @Output() openModalAddPatientEvent = new EventEmitter<any>();\n  @Output() openModalSelectPetEvent = new EventEmitter<any>();\n  @Output() updateListPatientEvent = new EventEmitter<any>();\n  @Output() loadingSpinnerEvent = new EventEmitter<boolean>();\n\n  form: FormGroup;\n  loading = false;\n  showPetsList: boolean;\n\n  enumTypePatient = TypePatientEnum;\n  typePatientSelect: TypePatientEnum;\n\n  alertOptions = {\n    nzDuration: 5000\n  };\n\n  constructor(\n    private fb: FormBuilder,\n    public modalRef: BsModalRef,\n    private patientsService: PatientsService,\n    private healthProfessionalService: HealthProfessionalService,\n    private notification: AppToastService,\n    private bigboostService: BigboostService\n  ) {}\n\n  ngOnInit() {\n    this.form = this.fb.group({\n      cpf: [\n        this.cpf,\n        [\n          Validators.required,\n          Validators.minLength(11),\n          Validators.maxLength(11),\n          ValidationService.cpfValidator\n        ]\n      ],\n      dateOfBirth: [],\n      noCpf: [this.isVeterinarian]\n    });\n\n    this.form.get('noCpf').valueChanges.subscribe(value => {\n      if (value) {\n        this.form.get('dateOfBirth').clearValidators();\n      } else {\n        this.form.get('dateOfBirth').setValidators([Validators.required]);\n      }\n    });\n  }\n\n  get noCpf() {\n    return this.form.value.noCpf;\n  }\n\n  get isVeterinarian(): boolean {\n    return this.prescriber && this.prescriber.professionalType === ProfessionalType.VETERINARIAN;\n  }\n\n  @nativeAsync\n  async search() {\n    markFormGroup(this.form);\n    if (this.form.valid) {\n      const { cpf, noCpf, dateOfBirth } = this.form.value;\n      this.loadingSpinnerEvent.emit(true);\n\n      if (!noCpf && this.typePatientSelect === this.enumTypePatient.ADULT) {\n        const patientLinked = await this.patientLinked(cpf);\n        if (Boolean(patientLinked)) {\n          this.notification.notify(\n            'warning',\n            'Aviso',\n            'O paciente informado já existe na sua lista de pacientes'\n          );\n          this.loadingSpinnerEvent.emit(false);\n          this.modalRef.hide();\n          return;\n        }\n      }\n\n      try {\n        const patient = await this.getPatientByCpf(cpf);\n        const isUnderAge = DateUtils.isUnderAge(patient.dateOfBirth);\n        if (this.isVeterinarian) {\n          this.openModalSelectPetEvent.emit({ patient });\n        } else if (\n          !noCpf &&\n          ((this.typePatientSelect === this.enumTypePatient.ADULT && !isUnderAge) ||\n            (this.typePatientSelect === this.enumTypePatient.MINOR && isUnderAge))\n        ) {\n          await this.addPatientToProfessional(patient._id);\n          this.updateListPatientEvent.emit(patient);\n          this.notification.notify(\n            'warning',\n            'Aviso',\n            'O Paciente informado já existe! Adicionando o mesmo na sua lista de pacientes'\n          );\n        } else if (isUnderAge) {\n          let mensage = '';\n          if (this.typePatientSelect === this.enumTypePatient.ADULT) {\n            mensage = 'O CPF é de um paciente menor, tente novamente como Paciente Menor';\n          } else if (this.typePatientSelect === this.enumTypePatient.MINOR && noCpf) {\n            mensage = 'CPF é de um menor, tente novamente com o CPF do responsável';\n          } else {\n            mensage = 'O CPF é de um paciente maior, tente novamente como Paciente Maior';\n          }\n\n          this.notification.notify('warning', 'Aviso', mensage);\n        } else if (this.typePatientSelect === this.enumTypePatient.MINOR && !noCpf) {\n          this.notification.notify(\n            'warning',\n            'Aviso',\n            'O CPF é de um paciente maior, tente novamente como Paciente Maior'\n          );\n        } else {\n          this.openModalAddPatientEvent.emit({\n            patient: patient,\n            isResponsible: noCpf,\n            existingPatient: true\n          });\n        }\n        this.modalRef.hide();\n      } catch (err) {\n        if (err.status === 404) {\n          this.consultCpf(cpf, noCpf, dateOfBirth);\n        } else {\n          this.notification.notify('error', 'Atenção', 'Ocorreu um erro ao tentar buscar paciente.');\n        }\n      }\n    }\n    this.loadingSpinnerEvent.emit(false);\n  }\n  @nativeAsync\n  async consultCpf(cpf: string, noCpf: boolean, dateOfBirth?: string) {\n    try {\n      this.loadingSpinnerEvent.emit(true);\n      const consult = await this.bigboostService.consultCpf(cpf, dateOfBirth).toPromise();\n      this.modalRef.hide();\n      this.loadingSpinnerEvent.emit(false);\n      if (consult.menorIdade && this.enumTypePatient.ADULT === this.typePatientSelect) {\n        this.notification.notify(\n          'warning',\n          'Aviso',\n          'O CPF é de um paciente menor, tente novamente como Paciente Menor'\n        );\n      } else if (\n        !consult.menorIdade &&\n        !noCpf &&\n        this.enumTypePatient.MINOR === this.typePatientSelect\n      ) {\n        this.notification.notify(\n          'warning',\n          'Aviso',\n          ' O CPF é de um paciente maior, tente novamente como Paciente Maior'\n        );\n      } else if (consult.menorIdade && noCpf) {\n        this.notification.notify(\n          'warning',\n          'Aviso',\n          'CPF é de um menor, tente novamente com o CPF do responsável'\n        );\n      } else {\n        this.openModalAddPatientEvent.emit({\n          patient: consult,\n          isResponsible: noCpf || this.isVeterinarian,\n          existingPatient: false\n        });\n      }\n    } catch (error) {\n      if (error.status === 401) {\n        this.notification.notify(\n          'warning',\n          'Aviso',\n          'A data de nascimento não pertence a este CPF. Favor digitar novamente.'\n        );\n        this.loadingSpinnerEvent.emit(false);\n        this.form.get('dateOfBirth').setErrors({ nonMatchingCpf: true });\n        return;\n      }\n      if (error.status === 404) {\n        this.modalRef.hide();\n        this.notification.notify(\n          'error',\n          'Error ao consultar CPF',\n          'CPF não localizado na Receita Federal. Verifique as informações digitadas e tente novamente. Em caso de dúvidas, entre em contato com nosso atendimento',\n          8000\n        );\n        this.loadingSpinnerEvent.emit(false);\n\n        return;\n      }\n      this.notification.notify(\n        'error',\n        'Atenção',\n        'A importação de dados do CPF está com instabilidade, preencha manualmente ou tente novamente mais tarde.'\n      );\n      this.openModalAddPatientEvent.emit({\n        patient: null,\n        isResponsible: noCpf,\n        existingPatient: false\n      });\n    }\n  }\n\n  tratarPacienteAdulto(patient: Patient) {\n    const isUnderAge = DateUtils.isUnderAge(patient.dateOfBirth);\n    if (isUnderAge) {\n    } else {\n    }\n  }\n  @nativeAsync\n  async patientLinked(cpf: string) {\n    const result = await this.healthProfessionalService\n      .getPatientsByUserId(cpf, this.user._id)\n      .toPromise();\n\n    return result.length ? result[0] : null;\n  }\n\n  changeTypePatient(typePatient: TypePatientEnum) {\n    this.typePatientSelect = typePatient;\n    if (this.typePatientSelect === this.enumTypePatient.MINOR) {\n      this.form.get('dateOfBirth').setValidators([Validators.required]);\n    }\n  }\n  @nativeAsync\n  private async addPatientToProfessional(patientId: string) {\n    await this.healthProfessionalService.addPatient(this.prescriber._id, patientId).toPromise();\n  }\n  @nativeAsync\n  private async getPatientByCpf(cpf: string) {\n    return await this.patientsService.getPatientByCpf(cpf).toPromise();\n  }\n}\n","export default \"<div class=\\\"modal-header\\\" theme>\\n  <h4 class=\\\"modal-title pull-left text-white\\\" *ngIf=\\\"addPatient; else templateTitleSearch\\\">\\n    Adicionar paciente <span *ngIf=\\\"typePatientSelect === enumTypePatient.MINOR\\\">menor</span>\\n  </h4>\\n  <ng-template #templateTitleSearch>\\n    <h4 class=\\\"modal-title pull-left text-white\\\">\\n      Buscar paciente\\n    </h4>\\n  </ng-template>\\n\\n  <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n    <span aria-hidden=\\\"true\\\">&times;</span>\\n  </button>\\n</div>\\n<div theme *ngIf=\\\"typePatientSelect || isVeterinarian; else templateSelectTypePatient\\\">\\n  <form [formGroup]=\\\"form\\\" (submit)=\\\"search()\\\">\\n    <div class=\\\"modal-body\\\">\\n      <p>\\n        Digite abaixo o CPF do\\n        <span [ngClass]=\\\"{ 'red-bold': noCpf || isVeterinarian }\\\">{{\\n          noCpf || isVeterinarian ? 'responsável' : 'paciente'\\n        }}</span\\n        >.\\n      </p>\\n      <div style=\\\"width: calc(100% - 50px);\\\" class=\\\"mb-3\\\">\\n        <div class=\\\"d-flex flex-column\\\">\\n          <div\\n            class=\\\"d-flex align-items-start\\\"\\n            [ngClass]=\\\"\\n              !noCpf && typePatientSelect === enumTypePatient.MINOR\\n                ? 'justify-content-around'\\n                : 'justify-content-center'\\n            \\\"\\n          >\\n            <div class=\\\"d-flex flex-column\\\">\\n              <nz-form-item>\\n                <nz-form-label nzFor=\\\"cpf\\\">CPF <span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    id=\\\"cpf\\\"\\n                    formControlName=\\\"cpf\\\"\\n                    placeholder=\\\"000.000.000-00\\\"\\n                    mask=\\\"000.000.000-00\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                </nz-form-control>\\n              </nz-form-item>\\n              <label\\n                *ngIf=\\\"addPatient && typePatientSelect === enumTypePatient.MINOR\\\"\\n                nz-checkbox\\n                class=\\\"mb-3\\\"\\n                formControlName=\\\"noCpf\\\"\\n                >Menor sem CPF?</label\\n              >\\n            </div>\\n            <nz-form-item\\n              *ngIf=\\\"typePatientSelect === enumTypePatient.MINOR && !this.form.get('noCpf').value\\\"\\n            >\\n              <nz-form-label nzFor=\\\"dateOfBirth\\\"\\n                >Data de nascimento<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n              >\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  nz-input\\n                  id=\\\"dateOfBirth\\\"\\n                  type=\\\"date\\\"\\n                  formControlName=\\\"dateOfBirth\\\"\\n                  placeholder=\\\"DD/MM/AAAA\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n              </nz-form-control>\\n            </nz-form-item>\\n            <button\\n              class=\\\"ok-btn btn-salvar\\\"\\n              [ngClass]=\\\"{ 'ml-3': noCpf || typePatientSelect === enumTypePatient.ADULT }\\\"\\n              nz-button\\n              type=\\\"submit\\\"\\n              theme\\n            >\\n              Pesquisar <i class=\\\"fa\\\"></i>\\n            </button>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </form>\\n</div>\\n\\n<ng-template #templateSelectTypePatient>\\n  <div class=\\\"modal-body\\\">\\n    <p>O Paciente é:</p>\\n    <div\\n      style=\\\"\\n        display: flex;\\n        justify-content: space-around;\\n        margin-bottom: 20px;\\n        width: calc(100% - 150px);\\n      \\\"\\n    >\\n      <button\\n        nz-button\\n        theme\\n        class=\\\"btn-select-type-patient\\\"\\n        (click)=\\\"changeTypePatient(enumTypePatient.ADULT)\\\"\\n      >\\n        Adulto\\n      </button>\\n      <button\\n        nz-button\\n        theme\\n        class=\\\"btn-select-type-patient\\\"\\n        (click)=\\\"changeTypePatient(enumTypePatient.MINOR)\\\"\\n      >\\n        Menor\\n      </button>\\n    </div>\\n  </div>\\n</ng-template>\\n\";","export default \".modal-header {\\n  width: 500px;\\n  font-family: \\\"probold\\\";\\n}\\n\\n.modal-body {\\n  width: 100% !important;\\n  margin-top: 10px;\\n  padding: 0px;\\n  display: flex;\\n  align-items: center;\\n  flex-direction: column;\\n  justify-content: center;\\n}\\n\\n.modal-body input {\\n  height: 40px;\\n}\\n\\n.modal-body .submit {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  position: relative;\\n  z-index: 1;\\n  right: -118px;\\n  top: -28px;\\n  font-size: 15px;\\n  margin: 0px;\\n  width: 30px;\\n}\\n\\n.modal-body .submit i {\\n  cursor: pointer;\\n}\\n\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n  text-align: center;\\n}\\n\\n.red-bold {\\n  color: red;\\n  font-weight: bold;\\n}\\n\\n.btn-salvar,\\n.btn-salvar:hover {\\n  margin-top: 32px;\\n  color: var(--color-white);\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n\\n.btn-select-type-patient {\\n  width: 120px;\\n  height: 50px;\\n  font-size: 20px;\\n  border: 1px solid #bcfdef;\\n  background-color: #f1fffc;\\n  border-radius: 10px;\\n  color: #363636;\\n  font-weight: 500;\\n}\\n\\n.btn-select-type-patient:hover {\\n  box-shadow: 3px 2px 39px -11px #7d7d7d;\\n}\";","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\n\nexport const ATTESTATION_MODEL_URL = 'attestation-model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AttestationModelService {\n  constructor(private http: HttpClient) {}\n\n  getListByPrescriberId(prescriberId: any): any {\n    return this.http\n      .get(`${environment.apiRoot}${ATTESTATION_MODEL_URL}?prescriberId=${prescriberId}`)\n      .toPromise();\n  }\n\n  getById(modelId: string) {\n    return this.http.get(`${environment.apiRoot}${ATTESTATION_MODEL_URL}/${modelId}`).toPromise();\n  }\n\n  create(attestationModel: any) {\n    return this.http\n      .post(`${environment.apiRoot}${ATTESTATION_MODEL_URL}`, attestationModel)\n      .toPromise();\n  }\n\n  update(attestationModel: any, modelId: string) {\n    return this.http\n      .put(`${environment.apiRoot}${ATTESTATION_MODEL_URL}/${modelId}`, attestationModel)\n      .toPromise();\n  }\n\n  deleteById(modelId: string, prescriberId = '') {\n    const params = prescriberId ? { prescriberId } : {};\n    return this.http\n      .delete(`${environment.apiRoot}${ATTESTATION_MODEL_URL}/${modelId}`, { params })\n      .toPromise();\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\n\nexport const PRESCRIPTION_MODEL_URL = 'prescription-model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PrescriptionModelService {\n  constructor(private http: HttpClient) {}\n\n  getListByPrescriberId(prescriberId: any): any {\n    const params = { prescriberId };\n    return this.http.get(`${environment.apiRoot}${PRESCRIPTION_MODEL_URL}`, { params }).toPromise();\n  }\n\n  getById(modelId: string, prescriberId = '') {\n    const params = prescriberId ? { prescriberId } : {};\n    return this.http\n      .get(`${environment.apiRoot}${PRESCRIPTION_MODEL_URL}/${modelId}`, { params })\n      .toPromise();\n  }\n\n  create(prescriptionModel: any, prescriberId = '') {\n    const params = prescriberId ? { prescriberId } : {};\n    return this.http\n      .post(`${environment.apiRoot}${PRESCRIPTION_MODEL_URL}`, prescriptionModel, { params })\n      .toPromise();\n  }\n\n  update(prescriptionModel: any, modelId: string, prescriberId = '') {\n    const params = prescriberId ? { prescriberId } : {};\n    return this.http\n      .put(`${environment.apiRoot}${PRESCRIPTION_MODEL_URL}/${modelId}`, prescriptionModel, { params })\n      .toPromise();\n  }\n\n  deleteById(modelId: string, prescriberId = '') {\n    const params = prescriberId ? { prescriberId } : {};\n    return this.http\n      .delete(`${environment.apiRoot}${PRESCRIPTION_MODEL_URL}/${modelId}`, { params })\n      .toPromise();\n  }\n}\n","import { PetPatient } from './../../../shared/models/pet-patient';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { HealthProfessional, Patient } from '@app/shared/models';\r\nimport { User } from '@app/shared/models/decodedLoginToken';\r\nimport { environment } from '@env/environment';\r\nimport { CroppedEvent } from 'ngx-photo-editor';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport const HEALTH_PROFESSIONAL_URL = 'health-professional';\r\nexport const NEW_PATIENT_URL = 'new-patient';\r\nexport const ADD_PATIENT_URL = 'add-patient';\r\nexport const REMOVE_PATIENT_URL = 'remove-patient';\r\nexport const REMOVE_PET_PATIENT_URL = 'remove-pet-patient';\r\nexport const USER_URL = 'user';\r\n\r\ninterface UploadResponse {\r\n  message: string;\r\n  url: string;\r\n}\r\n@Injectable({ providedIn: 'root' })\r\nexport class HealthProfessionalService {\r\n  constructor(private http: HttpClient) {}\r\n\r\n  save(healthProfessional: HealthProfessional): Observable<HealthProfessional> {\r\n    return this.http.post<HealthProfessional>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}`,\r\n      healthProfessional\r\n    );\r\n  }\r\n\r\n  savePatient(healthProfessionalId: string, patient: Patient): Observable<Patient> {\r\n    return this.http.post<Patient>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${healthProfessionalId}/${NEW_PATIENT_URL}`,\r\n      patient\r\n    );\r\n  }\r\n\r\n  savePetPatient(patient: Patient): Observable<Patient> {\r\n    return this.http.post<Patient>(`${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/pets`, patient);\r\n  }\r\n\r\n  addPatient(healthProfessionalId: string, patientId: any): Observable<HealthProfessional> {\r\n    return this.http.put<HealthProfessional>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${healthProfessionalId}/${ADD_PATIENT_URL}`,\r\n      { patientId: patientId }\r\n    );\r\n  }\r\n\r\n  addPetPatient(petId: string): Observable<HealthProfessional> {\r\n    return this.http.put<HealthProfessional>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/pets/${petId}`,\r\n      { petId }\r\n    );\r\n  }\r\n\r\n  removePatient(healthProfessionalId: string, patientId: any): Observable<HealthProfessional> {\r\n    return this.http.put<HealthProfessional>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${healthProfessionalId}/${REMOVE_PATIENT_URL}`,\r\n      { patientId: patientId }\r\n    );\r\n  }\r\n\r\n  removePetPatient(healthProfessionalId: string, patientId: any): Observable<HealthProfessional> {\r\n    return this.http.put<HealthProfessional>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${healthProfessionalId}/${REMOVE_PET_PATIENT_URL}`,\r\n      { patientId: patientId }\r\n    );\r\n  }\r\n\r\n  getUser(userId): Observable<User> {\r\n    return this.http.get<User>(`${environment.apiRoot}${USER_URL}/${userId}`);\r\n  }\r\n\r\n  getHealthProfessional(id: string): Observable<HealthProfessional> {\r\n    return this.http.get<HealthProfessional>(`${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${id}`);\r\n  }\r\n\r\n  getHealthProfessionalByCpf(cpf: string, type?: string): Observable<HealthProfessional> {\r\n    const params = type ? { type } : {};\r\n    return this.http.get<HealthProfessional>(`${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${cpf}`, {\r\n      params\r\n    });\r\n  }\r\n\r\n  getPatientsById(id: string, userId: string): Observable<Patient[]> {\r\n    return this.http.get<Patient[]>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${userId}/patients/${id}`\r\n    );\r\n  }\r\n\r\n  getPetsById(id: string, userId: string): Observable<Patient[]> {\r\n    return this.http.get<Patient[]>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${userId}/pet-patients/${id}`\r\n    );\r\n  }\r\n\r\n  getPatientsByUserId(query: string, userId: string): Observable<Patient[]> {\r\n    if (query !== null && !this.onlyNumbers(query)) {\r\n      query = query.toLocaleLowerCase();\r\n    }\r\n    return this.http.get<Patient[]>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${userId}/patients?query=${query}`\r\n    );\r\n  }\r\n\r\n  getPatientsByUserIdWithPagination(\r\n    query: string,\r\n    userId: string,\r\n    pageSize: number,\r\n    skip: number,\r\n    filtersFast: { womenOver40: boolean; minors: boolean; adults: boolean }\r\n  ): Observable<any> {\r\n    let params = new HttpParams()\r\n      .set('skip', skip.toString())\r\n      .set('pageSize', pageSize.toString())\r\n      .set('womenOver40', `${filtersFast.womenOver40}`)\r\n      .set('minors', `${filtersFast.minors}`)\r\n      .set('adults', `${filtersFast.adults}`);\r\n\r\n    if (query !== null) {\r\n      if (!this.onlyNumbers(query)) {\r\n        query = query.toLocaleLowerCase();\r\n      }\r\n      params = params.set('query', query);\r\n    }\r\n    return this.http.get<any>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${userId}/patients/filter`,\r\n      { params }\r\n    );\r\n  }\r\n\r\n  getPets(query: string): Observable<Patient[]> {\r\n    if (query) {\r\n      query = query.toLocaleLowerCase();\r\n    }\r\n\r\n    return this.http.get<Patient[]>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/pets?query=${query}`\r\n    );\r\n  }\r\n\r\n  getPetsWithPagination(query: string, pageSize: number, skip: number): Observable<any> {\r\n    let params = new HttpParams().set('skip', skip.toString()).set('pageSize', pageSize.toString());\r\n    if (query !== null) {\r\n      if (!this.onlyNumbers(query)) {\r\n        query = query.toLocaleLowerCase();\r\n      }\r\n      params = params.set('query', query);\r\n    }\r\n    return this.http.get<any>(`${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/pets/filter`, {\r\n      params\r\n    });\r\n  }\r\n\r\n  getPetsByResponsible(responsibleId: string) {\r\n    return this.http.get<PetPatient[]>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/pets?responsibleId=${responsibleId}`\r\n    );\r\n  }\r\n\r\n  private onlyNumbers(value: string): Boolean {\r\n    return value && value.match(/^[0-9]+$/) != null;\r\n  }\r\n\r\n  getHealthProfessionals(): Observable<HealthProfessional[]> {\r\n    return this.http.get<HealthProfessional[]>(`${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}`);\r\n  }\r\n\r\n  getHealthProfessionalsByProfessionalType(professionalType: string, filter: any): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/professional-type/${professionalType}`,\r\n      {\r\n        params: filter\r\n      }\r\n    );\r\n  }\r\n\r\n  getHealthProfessionalsByFilter(\r\n    filter: any,\r\n    skip?: string,\r\n    limit?: string\r\n  ): Observable<HealthProfessional[]> {\r\n    const params = new HttpParams()\r\n      .set('filter', JSON.stringify(filter))\r\n      .set('skip', skip)\r\n      .set('limit', limit);\r\n\r\n    return this.http.get<HealthProfessional[]>(`${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}`, {\r\n      params\r\n    });\r\n  }\r\n\r\n  getHealthProfessionalByUserId(userId: string): Observable<HealthProfessional> {\r\n    return this.http.get<HealthProfessional>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/user/${userId}`\r\n    );\r\n  }\r\n  addCommercialData(userId: string, commercialData: any) {\r\n    return this.http.put<HealthProfessional>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/add-commercial-data/${userId}`,\r\n      commercialData\r\n    );\r\n  }\r\n\r\n  update(id: string, data: any): Observable<HealthProfessional> {\r\n    return this.http.put<HealthProfessional>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/user/${id}`,\r\n      data\r\n    );\r\n  }\r\n\r\n  resolvePending(professionalType: string) {\r\n    return this.http.put(`${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/pendency`, {\r\n      professionalType\r\n    });\r\n  }\r\n\r\n  exportData() {\r\n    return this.http\r\n      .get(`${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/export`)\r\n      .subscribe((response: any) => {\r\n        const blob = new Blob([response.data], { type: 'text/csv' });\r\n        const a = document.createElement('a');\r\n        a.href = URL.createObjectURL(blob);\r\n        a.download = 'medicos.csv';\r\n        a.click();\r\n      });\r\n  }\r\n\r\n  uploadDocument(base64: string) {\r\n    return this.http.post<UploadResponse>(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/upload-document`,\r\n      { base64 }\r\n    );\r\n  }\r\n\r\n  importPatients(healthProfessionalId: string, file: Blob) {\r\n    const formData = new FormData();\r\n    formData.append('patients', file);\r\n    return this.http\r\n      .post<{ count: number }>(\r\n        `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${healthProfessionalId}/patients/import`,\r\n        formData\r\n      )\r\n      .toPromise();\r\n  }\r\n\r\n  unsubscribe(id: string) {\r\n    return this.http.delete(`${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${id}`);\r\n  }\r\n\r\n  uploadLogo({ file, base64 }: CroppedEvent, commercialId: string) {\r\n    const data = new FormData();\r\n\r\n    data.append('logo', file);\r\n    return this.http\r\n      .put<any>(\r\n        `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/commercial-data/${commercialId}/logo`,\r\n        data\r\n      )\r\n      .toPromise();\r\n  }\r\n\r\n  removeLog(commercialId: string) {\r\n    return this.http.delete(\r\n      `${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/commercial-data/${commercialId}/logo`\r\n    );\r\n  }\r\n\r\n  refreshCrmStatus(healthProfessionalId: string) {\r\n    return this.http\r\n      .put(`${environment.apiRoot}${HEALTH_PROFESSIONAL_URL}/${healthProfessionalId}/cfm`, {})\r\n      .toPromise();\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\r\nimport { HealthProfessional, Patient, Pharmacy } from '@app/shared/models';\r\nimport { Administrator } from '@app/shared/models/admin';\r\nimport { Prescription } from '@app/shared/models/prescription';\r\nimport { environment } from '@env/environment';\r\nimport { Observable } from 'rxjs';\r\nimport { PatientsService } from '../patients/services/patients.service';\r\nimport { PharmacyService } from '../pharmacy/services/pharmacy.service';\r\nimport { LogsService } from './logs/logs.service';\r\nimport { map } from 'rxjs/operators';\r\n\r\nconst ADMIN_URL = 'administrator';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AdminService {\r\n  constructor(\r\n    private http: HttpClient,\r\n    private fb: FormBuilder,\r\n    private patientService: PatientsService,\r\n    private healthProfessionalService: HealthProfessionalService,\r\n    private pharmacyService: PharmacyService,\r\n    private logsService: LogsService\r\n  ) {}\r\n\r\n  save(administrator: Administrator): Observable<Administrator> {\r\n    return this.http.post<Administrator>(`${environment.apiRoot}${ADMIN_URL}`, administrator);\r\n  }\r\n\r\n  update(id: string, admin: any): Promise<Administrator> {\r\n    return this.http.put<Administrator>(`${environment.apiRoot}${ADMIN_URL}/${id}`, admin).toPromise();\r\n  }\r\n\r\n  getAdmins(filter?: any): Promise<Administrator[]> {\r\n    return this.http\r\n      .get<Administrator[]>(`${environment.apiRoot}${ADMIN_URL}`, {\r\n        params: filter\r\n      })\r\n      .toPromise();\r\n  }\r\n\r\n  deleteAdmin(id: string) {\r\n    return this.http.delete(`${environment.apiRoot}${ADMIN_URL}/${id}`).toPromise();\r\n  }\r\n\r\n  filterData(\r\n    dataType: string,\r\n    filterForm: any\r\n  ): Observable<HealthProfessional[] | Patient[] | Pharmacy[] | Prescription> {\r\n    switch (dataType) {\r\n      case 'patients':\r\n        return this.patientService\r\n          .getPatientsByFilter(filterForm)\r\n          .pipe(map(reponse => reponse.patients));\r\n      case 'doctors':\r\n        return this.healthProfessionalService.getHealthProfessionalsByProfessionalType(\r\n          'doctor',\r\n          filterForm\r\n        );\r\n      case 'dentists':\r\n        return this.healthProfessionalService.getHealthProfessionalsByProfessionalType(\r\n          'dentist',\r\n          filterForm\r\n        );\r\n      case 'pharmacies':\r\n        return this.pharmacyService.getPharmaciesByFilter(filterForm);\r\n      case 'logs':\r\n        return this.logsService.getLogsByFilter(filterForm);\r\n    }\r\n  }\r\n\r\n  async exportData(dataType: string, filter: any) {\r\n    const params = {\r\n      dataType,\r\n      ...filter\r\n    };\r\n    const response = await this.http\r\n      .get<any>(`${environment.apiRoot}${ADMIN_URL}/export`, {\r\n        params,\r\n        responseType: 'blob' as 'json'\r\n      })\r\n      .toPromise();\r\n    const a = document.createElement('a');\r\n    a.href = URL.createObjectURL(response);\r\n    a.download = `${dataType}.xls`;\r\n    a.click();\r\n  }\r\n\r\n  getClientApps(): Observable<any> {\r\n    return this.http.get(`${environment.apiV1}/clients`);\r\n  }\r\n\r\n  toggleTentat(userType: string, userId: string, valor: string) {\r\n    return this.http.patch(`${environment.apiRoot}${ADMIN_URL}/${userType}/${userId}/tenant`, {\r\n      tenant: valor\r\n    });\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ExamType } from '@app/shared/models';\nimport { Exam } from '@app/shared/models/exam';\nimport { ExamBase } from '@app/shared/models/ExamBase';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\n\nconst EXAM_URL = 'exam';\nconst EXAM_BASE_URL = 'exams-base';\nexport const EXAM_PRESCRIBER = `exam/prescriber`;\nconst EXAM_PATIENT = `exam/patient`;\nconst TYPES_URL = 'types';\n@Injectable({\n  providedIn: 'root'\n})\nexport class ExamService {\n  constructor(private http: HttpClient) {}\n  uploadExams(file: File, isPet: boolean) {\n    const formData = new FormData();\n    formData.append('file', file);\n    return this.http.post(`${environment.apiRoot}${EXAM_BASE_URL}/import?isPet=${isPet}`, formData);\n  }\n\n  findAllByQuery(query: string, isVeterinarian: boolean) {\n    return this.http.get<ExamBase[]>(\n      `${environment.apiRoot}${EXAM_BASE_URL}?query=${query}&pet=${isVeterinarian}`\n    );\n  }\n\n  public getMaterials(): Observable<string[]> {\n    return this.http.get<string[]>(`${environment.apiRoot}${EXAM_URL}/${TYPES_URL}/materials`);\n  }\n\n  public getExamTypes(material: string, examType: string): Observable<ExamType[]> {\n    return this.http.get<ExamType[]>(\n      `${environment.apiRoot}${EXAM_URL}/${TYPES_URL}?material=${material}&examType=${examType}`\n    );\n  }\n\n  public save(exam: Exam) {\n    if (exam.code) {\n      return this.http.put(`${environment.apiRoot}${EXAM_URL}/${exam.code}`, exam);\n    }\n    return this.http.post(`${environment.apiRoot}${EXAM_URL}`, exam);\n  }\n\n  public getAllPrescriberExams(prescriberId: string) {\n    return this.http.get<Exam[]>(`${environment.apiRoot}${EXAM_URL}`, {\n      params: { prescriberId }\n    });\n  }\n\n  public getExamsByPrescriberUserId(prescriberId: string, filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${EXAM_PRESCRIBER}/${prescriberId}`, {\n      params: filter\n    });\n  }\n\n  public getAllPatientExams(patientId: string) {\n    return this.http.get<Exam[]>(`${environment.apiRoot}${EXAM_URL}`, {\n      params: { patientId }\n    });\n  }\n\n  getExamsByPatientId(patientId: string, filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${EXAM_PATIENT}/${patientId}`, { params: filter });\n  }\n\n  getExam(code: string) {\n    return this.http.get(`${environment.apiRoot}${EXAM_URL}/${code}`);\n  }\n\n  getByFilter(filter: any): Promise<Exam[]> {\n    return this.http\n      .get<Exam[]>(`${environment.apiRoot}${EXAM_URL}/filter`, {\n        params: filter\n      })\n      .toPromise();\n  }\n\n  delete(examId: number): Observable<any> {\n    return this.http.delete(`${environment.apiRoot}${EXAM_URL}/${examId}`);\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\n\nexport const ORIENTATION_MODEL_URL = 'orientation-model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OrientationModelService {\n  constructor(private http: HttpClient) {}\n\n  getListByPrescriberId(prescriberId: any): any {\n    return this.http\n      .get(`${environment.apiRoot}${ORIENTATION_MODEL_URL}?prescriberId=${prescriberId}`)\n      .toPromise();\n  }\n\n  getById(modelId: string) {\n    return this.http.get(`${environment.apiRoot}${ORIENTATION_MODEL_URL}/${modelId}`).toPromise();\n  }\n\n  create(orientationModel: any) {\n    return this.http\n      .post(`${environment.apiRoot}${ORIENTATION_MODEL_URL}`, orientationModel)\n      .toPromise();\n  }\n\n  update(orientationModel: any, modelId: string) {\n    return this.http\n      .put(`${environment.apiRoot}${ORIENTATION_MODEL_URL}/${modelId}`, orientationModel)\n      .toPromise();\n  }\n\n  deleteById(modelId: string, prescriberId = '') {\n    const params = prescriberId ? { prescriberId } : {};\n    return this.http\n      .delete(`${environment.apiRoot}${ORIENTATION_MODEL_URL}/${modelId}`, { params })\n      .toPromise();\n  }\n}\n","import { Patient } from './patient';\n\nexport class PetPatient {\n  _id?: string;\n  id?: string;\n  name?: string;\n  sex?: string;\n  race?: string;\n  isApproximateAge?: boolean;\n  approximateAge?: number;\n  dateOfBirth?: Date | string;\n  weight?: number;\n  fur?: string;\n  species?: string;\n  castration?: string;\n  img?: string;\n  temperament?: string;\n  microchipNumber?: string;\n  responsible?: Patient;\n  doNotShowAgainPetDataConfirmationModal?: boolean;\n}\n","import { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Patient } from '@app/shared/models/patient';\nimport { environment } from '@env/environment';\nimport { HealthProfessional } from '@app/shared/models/health-professional';\nimport { Infusion, InfusionRequest } from '@app/shared/models/infusion';\n\nconst INFUSIONS_URL = 'infusions';\n\nexport class Orientation {\n  _id: string;\n  code: string;\n  createdAt: Date;\n  status: string;\n  type: string;\n  patient: Patient;\n  healthProfessional: HealthProfessional;\n  title: string;\n  orientations: string[];\n  local: any;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InfusionService {\n  constructor(private http: HttpClient) {}\n\n  save(infusion: InfusionRequest) {\n    if (infusion.code) {\n      return this.http.put<Infusion>(\n        `${environment.apiRoot}${INFUSIONS_URL}/${infusion.code}`,\n        infusion\n      );\n    }\n    return this.http.post(`${environment.apiRoot}${INFUSIONS_URL}`, infusion);\n  }\n\n  getInfusion(code: string): Observable<Infusion> {\n    return this.http.get<Infusion>(`${environment.apiRoot}${INFUSIONS_URL}/${code}`);\n  }\n\n  getByFilter(filter: any) {\n    return this.http\n      .get<Orientation[]>(`${environment.apiRoot}${INFUSIONS_URL}/filter`, {\n        params: filter\n      })\n      .toPromise();\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { DocumentService } from '@app/modules/document/services/document.service';\nimport { PrescriptionService } from '@app/modules/document/services/prescription.service';\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\nimport { PetPatientService } from '@app/modules/patients/services/pet-patient.service';\nimport { UserService } from '@app/modules/user/user.service';\nimport { Patient } from '@app/shared/models';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { RennovaService } from '@app/shared/services/rennova.service';\nimport { StateService } from '@app/shared/services/state.service';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { ModalResendDocumentoEmptyComponent } from '../modal-resend-documento-empty/modal-resend-documento-empty.component';\nimport { ModalSucessSendDocumentComponent } from '../modal-sucess-send-document/modal-sucess-send-document.component';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { environment } from '@env/environment';\nimport { DeviceDetectorService } from 'ngx-device-detector';\n\n@Component({\n  selector: 'app-modal-send-document',\n  templateUrl: './modal-send-document.component.html',\n  styleUrls: ['./modal-send-document.component.scss']\n})\nexport class ModalSendDocumentComponent implements OnInit {\n  @Input() colorSetting: ColorSetting;\n  @Output() closeModal = new EventEmitter<any>();\n\n  tplModal: NzModalRef;\n\n  @ViewChild('tplTitle')\n  tplTitle: TemplateRef<{}>;\n\n  @ViewChild('tplContent', { static: true })\n  tplContent: TemplateRef<{}>;\n\n  @ViewChild('tplFooter', { static: true })\n  tplFooter: TemplateRef<{}>;\n\n  title: string;\n  code: string;\n  loading = false;\n  resend = false;\n  sendDocumentRequired = false;\n  showDownloadSignedPdf = true;\n  doNotShowModalSuccessSendDocument = false;\n\n  cellphoneStateInitial: string;\n  emailStateinitial: string;\n\n  private patient: Patient;\n\n  sendForm: FormGroup;\n\n  constructor(\n    private fb: FormBuilder,\n    private modalService: NzModalService,\n    private bsModalService: BsModalService,\n    private patientService: PatientsService,\n    private petPatientService: PetPatientService,\n    private authService: AuthService,\n    private prescriptionService: PrescriptionService,\n    private notification: AppToastService,\n    private userService: UserService,\n    private documentService: DocumentService,\n    private stateService: StateService,\n    private router: Router,\n    private rennovaService: RennovaService,\n    private deviceService: DeviceDetectorService\n  ) {\n    this.sendForm = this.fb.group(\n      {\n        name: [''],\n        emailChecked: [false],\n        smsChecked: [false],\n        whatsappChecked: [false],\n        patientId: [''],\n        sms: ['', Validators.compose([ValidationService.celularValidator])],\n        email: ['', Validators.email],\n        whatsapp: ['', Validators.compose([ValidationService.celularValidator])]\n      },\n      { validators: [Validators.compose([this.requiredEmail, this.requiredSms, this.requiredWhatsapp])] }\n    );\n  }\n\n  ngOnInit() {\n    if (!this.isRennova) {\n      this.listenFields();\n    }\n  }\n\n  get userLogin(): User {\n    return this.authService.user();\n  }\n\n  get isRennova() {\n    return this.stateService.data && this.stateService.data.isRennova && this.codeIsRennova();\n  }\n\n  get emailChecked() {\n    return this.sendForm.get('emailChecked').value;\n  }\n\n  get smsChecked() {\n    return this.sendForm.get('smsChecked').value;\n  }\n\n  get whatsappChecked() {\n    return this.sendForm.get('whatsappChecked').value;\n  }\n\n  get email() {\n    return this.sendForm.get('email');\n  }\n\n  get sms() {\n    return this.sendForm.get('sms');\n  }\n\n  get whatsapp() {\n    return this.sendForm.get('whatsapp');\n  }\n\n  get linkAcesso() {\n    if (environment.appRedirectV2Enabled) {\n      return `${environment.appV2UrlValidationDocument}/${this.code}`;\n    }\n    return `${window.location.origin}/p/${this.code}`;\n  }\n\n  requiredEmail(control: FormControl): { [key: string]: boolean } | null {\n    if (!control.get('emailChecked').value) {\n      control.get('email').setErrors(null);\n    } else if (!control.get('email').value) {\n      control.get('email').setErrors({ requiredEmail: true });\n    }\n    return null;\n  }\n\n  requiredSms(control: FormControl): { [key: string]: boolean } | null {\n    if (!control.get('smsChecked').value) {\n      control.get('sms').setErrors(null);\n    } else if (!control.get('sms').value) {\n      control.get('sms').setErrors({ requiredSms: true });\n    }\n    return null;\n  }\n\n  requiredWhatsapp(control: FormControl): { [key: string]: boolean } | null {\n    if (!control.get('whatsappChecked').value) {\n      control.get('whatsapp').setErrors(null);\n    } else if (!control.get('whatsapp').value) {\n      control.get('whatsapp').setErrors({ requiredWhatsapp: true });\n    }\n    return null;\n  }\n\n  copyLinkAccess() {\n    navigator.clipboard.writeText(this.linkAcesso);\n    this.notification.notify('success', 'Sucesso', 'Link de acesso copiado!');\n  }\n\n  @nativeAsync\n  async createTplModal(\n    code: string,\n    patientId: string,\n    {\n      title = '',\n      resend = false,\n      sendDocumentRequired = false,\n      showDownloadSignedPdf = true,\n      isPet = false,\n      colorSetting = null,\n      doNotShowModalSuccessSendDocument = false\n    } = {}\n  ) {\n    this.code = code;\n    this.resend = resend;\n    this.sendDocumentRequired = sendDocumentRequired;\n    this.showDownloadSignedPdf = showDownloadSignedPdf && this.deviceService.isDesktop();\n    this.colorSetting = colorSetting;\n    this.doNotShowModalSuccessSendDocument = doNotShowModalSuccessSendDocument;\n\n    switch (code[0]) {\n      case 'P':\n      case 'I':\n      case 'V':\n        this.title = 'Receita salva com sucesso!';\n        break;\n      case 'A':\n        this.title = 'Atestado salvo com sucesso!';\n        break;\n      case 'E':\n        this.title = 'Pedido de exame salvo com sucesso!';\n        break;\n      case 'O':\n        this.title = 'Documento de orientações salvo com sucesso!';\n        break;\n      default: {\n        if (code.substring(0, 3) === 'REN') {\n          this.title = 'Documento enviado com sucesso!';\n        } else {\n          this.title = 'Documento salvo com sucesso!';\n        }\n      }\n    }\n\n    if (title) {\n      this.title = title;\n    }\n\n    this.create();\n\n    if (isPet) {\n      await this.getPet(patientId);\n    } else {\n      await this.getPatient(patientId);\n    }\n  }\n\n  private create() {\n    this.tplModal = this.modalService.create({\n      nzContent: this.tplContent,\n      nzFooter: this.tplFooter,\n      nzClosable: false,\n      nzWidth: 650,\n      nzMaskClosable: false,\n      nzClassName: 'modal-send-document',\n      nzOnOk: () => {},\n      nzOnCancel: () => {}\n    });\n\n    this.tplModal.afterOpen.subscribe(() => {\n      const elements = document.getElementsByClassName('ant-modal-footer');\n      if (elements && this.colorSetting) {\n        elements[0].setAttribute('style', `background-color: ${this.colorSetting.footer}`);\n      }\n    });\n  }\n  @nativeAsync\n  async getPatient(patientId: string) {\n    try {\n      this.loading = true;\n      this.patient = await this.patientService.getPatient(patientId).toPromise();\n      this.initForm(this.patient);\n    } catch (error) {\n      console.error(error);\n    }\n    this.loading = false;\n  }\n  @nativeAsync\n  async getPet(petId: string) {\n    try {\n      this.loading = true;\n      const { responsible } = await this.petPatientService.getPetById(petId).toPromise();\n      this.patient = responsible;\n      if (this.patient) {\n        this.initForm(this.patient);\n      }\n    } catch (error) {\n      console.error(error);\n    }\n    this.loading = false;\n  }\n\n  private initForm(patient: Patient) {\n    this.emailStateinitial = patient.user && (patient.user.emailContact || patient.user.email);\n    if (!this.emailStateinitial && patient.responsible && patient.responsible.user) {\n      this.emailStateinitial = patient.responsible.user.emailContact || patient.responsible.user.email;\n    }\n\n    if (this.emailStateinitial) {\n      this.sendForm.get('email').setValue(this.emailStateinitial);\n      this.sendForm.get('emailChecked').setValue(!!this.emailStateinitial);\n      this.sendForm.get('email').markAsDirty();\n    }\n\n    this.cellphoneStateInitial = patient.cellphone || patient.telephone;\n    if (patient.responsible) {\n      this.cellphoneStateInitial = patient.responsible.cellphone || patient.responsible.telephone;\n    }\n    this.sendForm.get('sms').setValue(this.cellphoneStateInitial);\n    this.sendForm.get('smsChecked').setValue(!!this.cellphoneStateInitial);\n    this.sendForm.get('sms').markAsDirty();\n    this.sendForm.get('whatsapp').setValue(this.cellphoneStateInitial);\n    this.sendForm.get('whatsappChecked').setValue(!!this.cellphoneStateInitial);\n    this.sendForm.get('whatsapp').markAsDirty();\n    this.sendForm.get('patientId').setValue(patient._id);\n  }\n  sendRennova() {\n    this.sendEmailsRennova(this.code);\n    this.showModalSuccessSendDocument();\n    this.tplModal.close();\n  }\n  @nativeAsync\n  async send() {\n    markFormGroup(this.sendForm);\n    try {\n      if (this.sendForm.valid) {\n        if (this.someFieldWasChecked) {\n          this.loading = true;\n          const data = {\n            email: this.emailChecked ? this.sendForm.value.email : undefined,\n            sms: this.smsChecked ? this.sendForm.value.sms : undefined,\n            name: this.sendForm.value.name,\n            code: this.code,\n            patientId: this.sendForm.value.patientId,\n            originHost: window.location.origin\n          };\n          await this.patientService.sendDocument(data).toPromise();\n\n          if (this.whatsappChecked) {\n            await this.openWhatsAppTab();\n          }\n        }\n\n        if (this.resend) {\n          this.showModalSuccessSendDocument();\n        } else if (this.userLogin) {\n          this.loading = true;\n          const { doNotShowAgainModalSuccessPrescription } = await this.userService\n            .getControllerUserUi(this.userLogin._id)\n            .toPromise();\n\n          if (!doNotShowAgainModalSuccessPrescription) {\n            this.showModalSuccessSendDocument();\n          }\n        }\n        this.loading = false;\n      }\n\n      this.close();\n    } catch (error) {\n      this.loading = false;\n    }\n  }\n\n  get someFieldWasChecked(): boolean {\n    return this.smsChecked || this.whatsappChecked || this.emailChecked;\n  }\n\n  async downloadPrescriptionPdf(code: string) {\n    try {\n      this.loading = true;\n      await this.prescriptionService.downloadOrGeneratePdf(code);\n      this.notification.notify('success', 'Sucesso', 'Download realizado com sucesso!');\n    } catch (err) {\n      console.error(err);\n    }\n    this.loading = false;\n  }\n\n  @nativeAsync\n  private async openWhatsAppTab() {\n    const documentText = this.getDocumentText(this.code);\n    const doctorName = await this.getDoctorName();\n\n    const labelCpf = this.code[0] === 'V' ? 'responsável' : 'paciente';\n\n    const text = `Olá, ${this.patient.name}! ${documentText} ${doctorName}.\nClique no link e visualize o documento digitando os 4 primeiros dígitos do CPF do ${labelCpf}: ${this.linkAcesso}\nEm caso de dúvidas, acesse o atendimento em receitadigital.com`;\n\n    const whatsapp = this.sendForm.value.whatsapp;\n    const phone = `55${whatsapp}`;\n    const encodedText = encodeURIComponent(text);\n    const url = `https://wa.me/${phone}?text=${encodedText}`;\n\n    window.open(url, '_blank');\n  }\n\n  private getDocumentText(code: string) {\n    switch (code[0]) {\n      case 'P':\n      case 'I':\n        return 'Aqui está a sua *Receita Digital* enviada';\n      case 'A':\n        return 'Aqui está o seu *Atestado* enviado';\n      case 'E':\n        return 'Aqui está o seu *Pedido de Exame* enviado';\n      case 'V':\n        return this.getDocumentTextVet();\n      case 'O':\n      default:\n        return 'Aqui está o seu *Documento* enviado';\n    }\n  }\n\n  getDocumentTextVet() {\n    switch (this.code.substring(0, 4)) {\n      case 'VETE':\n        return `Aqui está o pedido de *Exame(s)* do seu Pet enviado`;\n      case 'VETA':\n        return `Aqui está o *Atestado* do seu Pet enviado`;\n      case 'VETO':\n        return `Aqui está o *Documento* do seu Pet enviado`;\n      default:\n        return `Aqui está a *Receita Digital* do seu Pet enviada`;\n    }\n  }\n\n  @nativeAsync\n  private async getDoctorName() {\n    if (this.userLogin) {\n      if (this.userLogin.sex === 'F') {\n        return `pela Dra. ${this.userLogin.name}`;\n      }\n      return `pelo Dr. ${this.userLogin.name}`;\n    }\n\n    const { healthProfessional } = await this.documentService.getDocument(this.code);\n    if (healthProfessional.sex === 'F') {\n      return `pela Dra. ${healthProfessional.name}`;\n    }\n    return `pelo Dr. ${healthProfessional.name}`;\n  }\n\n  private showModalSuccessSendDocument() {\n    if (this.doNotShowModalSuccessSendDocument) {\n      return;\n    }\n    const viewSucessMsg =\n      (this.emailChecked && this.email.value) ||\n      (this.smsChecked && this.sms.value) ||\n      (this.whatsappChecked && this.whatsapp.value);\n\n    if (!viewSucessMsg && this.resend) {\n      const initialState = { code: this.code };\n      const modal = this.bsModalService.show(ModalResendDocumentoEmptyComponent, {\n        initialState,\n        backdrop: 'static',\n        keyboard: false\n      });\n      modal.content.afterInit.subscribe(() => {\n        this.close();\n      });\n\n      modal.content.goBack.subscribe(() => {\n        this.create();\n      });\n    } else {\n      const initialState = {\n        code: this.code,\n        resend: this.resend,\n        colorSetting: this.colorSetting,\n        isSuccessMsg: viewSucessMsg,\n        patientId: this.patient._id\n      };\n      const modal = this.bsModalService.show(ModalSucessSendDocumentComponent, {\n        initialState,\n        backdrop: 'static',\n        keyboard: false\n      });\n\n      modal.content.closeModal.subscribe(() => {\n        this.close(true);\n        const route = this.router.url.split('?')[0];\n        this.router.navigate([route]);\n      });\n    }\n  }\n\n  confirmClose() {\n    if (this.resend) {\n      this.close();\n    } else {\n      this.modalService.confirm({\n        nzTitle: 'Atenção',\n        nzContent: 'Tem certeza que deseja cancelar o envio do documento?',\n        nzOkText: 'Sim',\n        nzCancelText: 'Não',\n        nzOnOk: () => this.close()\n      });\n    }\n  }\n\n  close(sent?: boolean) {\n    this.tplModal.destroy();\n    this.closeModal.emit(sent);\n  }\n\n  private listenFields() {\n    this.sendForm.get('emailChecked').valueChanges.subscribe(checked => {\n      if (!checked) {\n        this.sendForm.get('email').setValue(this.emailStateinitial);\n      }\n    });\n\n    this.sendForm.get('smsChecked').valueChanges.subscribe(checked => {\n      if (!checked) {\n        this.sendForm.get('sms').setValue(this.cellphoneStateInitial);\n      }\n    });\n\n    this.sendForm.get('whatsappChecked').valueChanges.subscribe(checked => {\n      if (!checked) {\n        this.sendForm.get('whatsapp').setValue(this.cellphoneStateInitial);\n      }\n    });\n  }\n\n  private sendEmailsRennova(code: string) {\n    this.rennovaService.sendDocument({ code }).subscribe();\n  }\n\n  codeIsRennova() {\n    return this.code && this.code.substring(0, 3) === 'REN';\n  }\n}\n","export default \"<ng-template #tplContent>\\n  <div class=\\\"d-flex flex-column justify-content-center align-items-center\\\">\\n    <h1 class=\\\"title\\\" [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">\\n      {{ title }}\\n    </h1>\\n    <p>Código do documento: {{ code }}</p>\\n  </div>\\n\\n  <div class=\\\"container send-document\\\" [formGroup]=\\\"sendForm\\\" theme *ngIf=\\\"!isRennova\\\">\\n    <p>Seu paciente já pode consultar esse documento no Portal do Paciente!</p>\\n    <h6 [ngStyle]=\\\"{ color: colorSetting?.secondary }\\\">\\n      <span *ngIf=\\\"sendDocumentRequired; else notRequired\\\">\\n        Selecione ao menos uma opção para {{ resend ? 'reenviar' : 'enviar' }} o link para o paciente.\\n      </span>\\n      <ng-template #notRequired>\\n        Deseja {{ resend ? 'reenviar' : 'enviar' }} o link para o paciente?\\n      </ng-template>\\n    </h6>\\n\\n    <ng-template #addOnBeforeTemplateEmail>\\n      <label nz-checkbox formControlName=\\\"emailChecked\\\">E-mail</label>\\n    </ng-template>\\n    <ng-template #addOnBeforeTemplateSms>\\n      <label nz-checkbox formControlName=\\\"smsChecked\\\">SMS</label>\\n    </ng-template>\\n    <ng-template #addOnBeforeTemplateWhatsapp>\\n      <label nz-checkbox formControlName=\\\"whatsappChecked\\\">WhatsApp</label>\\n    </ng-template>\\n    <div class=\\\"inputs responsive\\\">\\n      <nz-form-item>\\n        <nz-form-control>\\n          <nz-input-group [nzAddOnBefore]=\\\"addOnBeforeTemplateEmail\\\">\\n            <input\\n              nz-input\\n              formControlName=\\\"email\\\"\\n              placeholder=\\\"Digite um e-mail\\\"\\n              [ngClass]=\\\"{ disabled: !emailChecked }\\\"\\n              [ngStyle]=\\\"{\\n                'background-color': colorSetting?.inputBackground,\\n                'border-color': colorSetting?.inputBorder,\\n                color: colorSetting?.primary\\n              }\\\"\\n            />\\n          </nz-input-group>\\n          <nz-form-explain *ngIf=\\\"email.dirty && email.errors\\\">\\n            <ng-container *ngIf=\\\"email.hasError('requiredEmail')\\\">\\n              Informe um e-mail para envio\\n            </ng-container>\\n            <ng-container *ngIf=\\\"!email.hasError('requiredEmail') && email.invalid\\\">\\n              E-mail inválido, por favor digite um e-mail válido.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item>\\n        <nz-form-control>\\n          <nz-input-group [nzAddOnBefore]=\\\"addOnBeforeTemplateSms\\\">\\n            <input\\n              nz-input\\n              formControlName=\\\"sms\\\"\\n              mask=\\\"(00) 00000-0000\\\"\\n              placeholder=\\\"Digite um número de celular\\\"\\n              [ngClass]=\\\"{ disabled: !smsChecked }\\\"\\n              [ngStyle]=\\\"{\\n                'background-color': colorSetting?.inputBackground,\\n                'border-color': colorSetting?.inputBorder,\\n                color: colorSetting?.primary\\n              }\\\"\\n            />\\n          </nz-input-group>\\n          <nz-form-explain *ngIf=\\\"sms.dirty && sms.errors\\\">\\n            <ng-container *ngIf=\\\"sms.hasError('requiredSms')\\\">\\n              Informe um telefone celular para envio\\n            </ng-container>\\n            <ng-container *ngIf=\\\"!sms.hasError('requiredSms') && sms.hasError('celular')\\\">\\n              Celular inválido, por favor digite um número válido.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item>\\n        <nz-form-control>\\n          <nz-input-group [nzAddOnBefore]=\\\"addOnBeforeTemplateWhatsapp\\\">\\n            <input\\n              nz-input\\n              formControlName=\\\"whatsapp\\\"\\n              mask=\\\"(00) 00000-0000\\\"\\n              placeholder=\\\"Digite um número de celular\\\"\\n              [ngClass]=\\\"{ disabled: !whatsappChecked }\\\"\\n              [ngStyle]=\\\"{\\n                'background-color': colorSetting?.inputBackground,\\n                'border-color': colorSetting?.inputBorder,\\n                color: colorSetting?.primary\\n              }\\\"\\n            />\\n          </nz-input-group>\\n          <nz-form-explain *ngIf=\\\"whatsapp.dirty && whatsapp.errors\\\">\\n            <ng-container *ngIf=\\\"whatsapp.hasError('requiredWhatsapp')\\\">\\n              Informe um telefone celular para envio\\n            </ng-container>\\n            <ng-container *ngIf=\\\"!whatsapp.hasError('requiredWhatsapp') && whatsapp.hasError('celular')\\\">\\n              Celular inválido, por favor digite um número válido.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n  <div class=\\\"d-flex flex-column justify-content-start align-items-start\\\">\\n    <h6 class=\\\"d-block\\\" *ngIf=\\\"showDownloadSignedPdf\\\">\\n      Para baixar o PDF assinado,\\n      <a class=\\\"link\\\" href=\\\"javascript:;\\\" (click)=\\\"downloadPrescriptionPdf(code)\\\">clique aqui!</a>\\n    </h6>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"col-6-md pl-3\\\">\\n        Link de acesso ao documento:\\n      </div>\\n      <div class=\\\"col-6-md pl-md-1 pl-3\\\">\\n        <a class=\\\"link\\\" [href]=\\\"linkAcesso\\\" target=\\\"_blank\\\">{{ linkAcesso }}</a>\\n        <i\\n          (click)=\\\"copyLinkAccess()\\\"\\n          style=\\\"cursor: pointer;\\\"\\n          class=\\\"ml-2\\\"\\n          nz-icon\\n          nzType=\\\"copy\\\"\\n          nzTheme=\\\"outline\\\"\\n        ></i>\\n      </div>\\n    </div>\\n  </div>\\n</ng-template>\\n\\n<ng-template #tplFooter>\\n  <div\\n    class=\\\"container d-flex align-items-end flex-column modal-footer\\\"\\n    theme\\n    [ngStyle]=\\\"{\\n      'background-color': colorSetting?.secondary,\\n      color: colorSetting?.secondary\\n    }\\\"\\n  >\\n    <div class=\\\"row\\\">\\n      <button\\n        (click)=\\\"isRennova ? sendRennova() : send()\\\"\\n        class=\\\"btn btn-ok\\\"\\n        [disabled]=\\\"\\n          !sendForm.valid || (sendDocumentRequired && !emailChecked && !smsChecked && !whatsappChecked)\\n        \\\"\\n        [ngStyle]=\\\"{\\n          'background-color': colorSetting?.primary,\\n          'border-color': colorSetting?.primary\\n        }\\\"\\n      >\\n        Finalizar\\n      </button>\\n    </div>\\n  </div>\\n</ng-template>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \".title {\\n  text-transform: none;\\n  font-size: 40px;\\n  line-height: normal;\\n}\\n@media (max-width: 1025px) {\\n  .title {\\n    font-size: 22px;\\n    line-height: 24px;\\n  }\\n}\\np {\\n  color: #363636;\\n  font-family: \\\"prolight\\\";\\n  font-size: 18px;\\n  text-align: center;\\n}\\n.print-without-sign {\\n  font-size: 12px;\\n  color: #1b403a;\\n  margin-bottom: 0;\\n}\\n.print-without-sign a:not(.btn) {\\n  font-family: \\\"problack\\\";\\n  text-decoration: underline;\\n}\\n.modal-footer {\\n  padding: 10px 32px;\\n  background-color: var(--bg-modal-header);\\n}\\n.modal-footer .btn {\\n  font-size: 12px;\\n}\\n.link {\\n  color: blue;\\n  text-decoration: underline;\\n}\\n::ng-deep .modal-send-document .ant-modal-content {\\n  border-radius: 10px;\\n  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);\\n}\\n::ng-deep .modal-send-document .ant-modal-confirm .ant-modal-confirm-btns {\\n  float: none;\\n}\\n::ng-deep .modal-send-document .ant-input-group-addon {\\n  width: 93px;\\n}\\n::ng-deep .modal-send-document .ant-modal-footer {\\n  border-radius: 0 0 10px 10px;\\n  border-top: 0;\\n  padding: 0 !important;\\n}\\n@media (max-width: 1025px) {\\n  .container.send-document {\\n    padding: 0;\\n  }\\n  .container.send-document .sub-title {\\n    font-size: 18px;\\n    line-height: 18px;\\n  }\\n\\n  .inputs.responsive {\\n    padding: 0;\\n  }\\n  .inputs.responsive .ant-form-item label {\\n    margin-top: 0px;\\n    font-size: 14px !important;\\n  }\\n}\\n.disabled {\\n  pointer-events: none;\\n  opacity: 0.6;\\n  -webkit-appearance: none;\\n  -moz-appearance: none;\\n}\";","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\nimport { ReplaySubject } from 'rxjs';\n\n@Component({\n  selector: 'app-modal-alert',\n  templateUrl: './modal-alert.component.html',\n  styleUrls: ['./modal-alert.component.scss']\n})\nexport class ModalAlertComponent implements OnInit, OnDestroy {\n  medicament: any;\n\n  private destroyed$ = new ReplaySubject<boolean>();\n\n  constructor(private fb: FormBuilder, private ref: NzModalRef, private notification: AppToastService) {}\n\n  ngOnInit() {\n    console.log(this.medicament);\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed$.next(true);\n    this.destroyed$.complete();\n  }\n  cancel() {\n    this.ref.close();\n  }\n\n  remove(medicament: any) {\n    medicament.checked = false;\n    this.ref.close();\n  }\n}\n","export default \"<button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"cancel()\\\">\\n  <span aria-hidden=\\\"true\\\">&times;</span>\\n</button>\\n<h1 class=\\\"title-alert\\\">Atenção</h1>\\n\\n<p class=\\\"alert-message mb-1\\\">\\n  Deseja excluir o medicamento\\n</p>\\n\\n<span class=\\\"medicament-info\\\">\\n  {{ medicament.name }}\\n</span>\\n\\n<p class=\\\"alert-message mb-1\\\">\\n  da sua lista de dispensação?\\n</p>\\n\\n<p class=\\\"text-message mb-1\\\">\\n  Você pode excluir um medicamento da sua lista de dispensação caso o comprador/paciente não vá\\n  comprá-lo. Ao fazer isso, o registro da dispensação não será efetuado no sistema. Mas fique tranquilo!\\n  Você poderá incluir este medicamento novamente em uma dispensação futura!\\n</p>\\n\\n<div class=\\\"row baseboard mb-3 pb-3 mt-3 pt-3\\\">\\n  <div class=\\\"col-6\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-icon text-capitalize btn-keep\\\" (click)=\\\"cancel()\\\">\\n      <span class=\\\"btn-inner--text\\\">MANTER MEDICAMENTO</span>\\n    </button>\\n  </div>\\n\\n  <div class=\\\"col-6\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-icon text-capitalize btn-remove\\\" (click)=\\\"remove(medicament)\\\">\\n      <span class=\\\"btn-inner--text\\\">EXCLUIR MEDICAMENTO</span>\\n    </button>\\n  </div>\\n</div>\\n\";","export default \".title-alert {\\n  color: #1ae0c2;\\n  font-size: 45px;\\n  text-align: center;\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n  font-weight: 800;\\n}\\n\\n.alert-message {\\n  color: #0b6054;\\n  font-size: 25px;\\n  text-align: center;\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n}\\n\\n.text-message {\\n  color: #363636;\\n  font-size: 14px;\\n  text-align: center;\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n}\\n\\n.baseboard {\\n  background-color: #1ae0c2;\\n  margin-left: -24px;\\n  margin-right: -24px;\\n}\\n\\n.btn-keep {\\n  color: #363636;\\n  background-color: white;\\n  border-color: white;\\n}\\n\\n.btn-remove {\\n  background-color: #1c413a;\\n  color: #fff;\\n}\\n\\n.medicament-info {\\n  color: #0b6054;\\n  font-size: 25px;\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n  font-weight: 800;\\n}\\n\\n::ng-deep .modal-alert .ant-modal-body {\\n  text-align: center;\\n  padding-bottom: 0;\\n}\\n\\n::ng-deep .modal-alert .ant-modal-content {\\n  border-radius: 10px;\\n  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);\\n  max-height: 460px;\\n}\\n\\n::ng-deep .modal-alert .ant-modal-footer {\\n  border-radius: 0 0 10px 10px;\\n  border-top: 0;\\n  padding: 0 !important;\\n}\";","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'isCpf'\r\n})\r\n@Injectable()\r\nexport class IsCpfPipe implements PipeTransform {\r\n  transform(value: string): any {\r\n    if (value) {\r\n      value = value.toString().replace(/[^\\d]+/g, '');\r\n      let numeros, digitos, soma, i, resultado, digitos_iguais;\r\n\r\n      digitos_iguais = 1;\r\n\r\n      if (value.length < 11) {\r\n        return false;\r\n      }\r\n\r\n      for (i = 0; i < value.length - 1; i++) {\r\n        if (value.charAt(i) !== value.charAt(i + 1)) {\r\n          digitos_iguais = 0;\r\n          break;\r\n        }\r\n      }\r\n\r\n      if (!digitos_iguais) {\r\n        numeros = value.substring(0, 9);\r\n        digitos = value.substring(9);\r\n        soma = 0;\r\n        for (let b = 10; b > 1; b--) {\r\n          soma += numeros.charAt(10 - b) * b;\r\n        }\r\n\r\n        resultado = soma % 11 < 2 ? 0 : 11 - (soma % 11);\r\n        if (resultado !== parseFloat(digitos.charAt(0))) {\r\n          return false;\r\n        }\r\n        numeros = value.substring(0, 10);\r\n        soma = 0;\r\n\r\n        for (let a = 11; a > 1; a--) {\r\n          soma += numeros.charAt(11 - a) * a;\r\n        }\r\n        resultado = soma % 11 < 2 ? 0 : 11 - (soma % 11);\r\n        return resultado === parseFloat(digitos.charAt(1));\r\n      } else {\r\n        return false;\r\n      }\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ProtocolGroup } from '@app/shared/models/protocol';\nimport { environment } from '@env/environment';\nimport { map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class VictaProtocolService {\n  constructor(private http: HttpClient) {}\n\n  getProtocols(professionalType: string, params = {}) {\n    return this.http\n      .get<ProtocolGroup[]>(`${environment.apiRoot}victa-protocols`, { params })\n      .pipe(\n        map(groups => {\n          groups.forEach(group => {\n            group.protocols = group.protocols.filter(({ professionals }) =>\n              professionals.includes(professionalType)\n            );\n          });\n          return groups.filter(({ protocols }) => protocols.length);\n        })\n      )\n      .toPromise();\n  }\n\n  import(file: File) {\n    const formData = new FormData();\n    formData.append('file', file);\n    return this.http.post(`${environment.apiRoot}victa-protocols/import`, formData).toPromise();\n  }\n}\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { RennovaService } from '@app/shared/services/rennova.service';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { ProductRennova } from './../../models/product-rennova';\n\n@Component({\n  selector: 'app-modal-add-product-rennova',\n  templateUrl: './modal-add-product-rennova.component.html',\n  styleUrls: ['./modal-add-product-rennova.component.scss']\n})\nexport class ModalAddProductRennovaComponent implements OnInit {\n  products: ProductRennova[] = [];\n  loading = false;\n  hasError = false;\n\n  @Output() selectEvent = new EventEmitter<ProductRennova>();\n\n  constructor(\n    public modalRef: BsModalRef,\n    private rennovaService: RennovaService,\n    private notification: AppToastService\n  ) {}\n\n  ngOnInit(): void {\n    this.findAllProducts();\n  }\n  findAllProducts() {\n    this.loading = true;\n    this.rennovaService.findAll().subscribe(\n      products => {\n        this.products = products;\n      },\n      () => {\n        this.notification.notify('error', 'Ocorreu um erro ao buscar produtos da rennova.', '');\n        this.modalRef.hide();\n      },\n      () => {\n        this.loading = false;\n      }\n    );\n  }\n\n  activeChange(product: ProductRennova) {\n    product.active = !product.active;\n  }\n\n  onSelect(product: ProductRennova) {\n    this.selectEvent.emit(product);\n    this.modalRef.hide();\n  }\n}\n","export default \"<div class=\\\"modal-container\\\">\\n  <div theme class=\\\"modal-header\\\">\\n    <h4 class=\\\"modal-title pull-left text-white\\\">Produtos Rennova</h4>\\n    <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button>\\n  </div>\\n  <div class=\\\"align-flex-center\\\" *ngIf=\\\"loading\\\">\\n    <nz-spin nzSimple></nz-spin>\\n  </div>\\n  <div class=\\\"modal-body\\\" *ngIf=\\\"!loading && products?.length > 0\\\">\\n    <nz-list nzBordered>\\n      <nz-list-item *ngFor=\\\"let product of products\\\">\\n        <div class=\\\"d-flex flex-column w-100\\\">\\n          <div class=\\\"item-container align-items-center\\\">\\n            <div class=\\\"d-flex align-items-center\\\">\\n              <div (click)=\\\"activeChange(product)\\\" style=\\\"padding: 10px;\\\">\\n                <i nz-icon nzType=\\\"right\\\" *ngIf=\\\"!product.active\\\" nzTheme=\\\"outline\\\"></i>\\n                <i nz-icon nzType=\\\"down\\\" *ngIf=\\\"product.active\\\" nzTheme=\\\"outline\\\"></i>\\n              </div>\\n              <span style=\\\"margin-top: 3px; font-weight: 600;\\\"> {{ product.name }}</span>\\n            </div>\\n            <button class=\\\"ok-btn btn-selecionar\\\" nz-button (click)=\\\"onSelect(product)\\\">\\n              Adicionar\\n            </button>\\n          </div>\\n          <div class=\\\"p-3\\\" *ngIf=\\\"product?.active\\\">\\n            <div *ngFor=\\\"let item of product.items\\\">\\n              <h6>{{ item.name }}</h6>\\n              <ul *ngIf=\\\"item.descriptions.length > 0\\\">\\n                <li *ngFor=\\\"let obj of item.descriptions\\\">\\n                  <div class=\\\"d-flex\\\">\\n                    <span style=\\\"text-align: justify; font-family: monospace;\\\">\\n                      {{ obj?.fullDescription }}\\n                    </span>\\n                  </div>\\n                </li>\\n              </ul>\\n            </div>\\n            <p style=\\\"font-weight: 700; text-align: justify;\\\">{{ product.observation }}</p>\\n          </div>\\n        </div>\\n      </nz-list-item>\\n    </nz-list>\\n  </div>\\n  <div class=\\\"align-flex-center\\\" *ngIf=\\\"!loading && products?.length === 0\\\">\\n    <h5>Nenhum produto cadastrado</h5>\\n  </div>\\n</div>\\n\";","export default \".modal-container {\\n  width: 374px;\\n}\\n@media (min-width: 1025px) {\\n  .modal-container {\\n    width: 500px;\\n  }\\n}\\n.modal-container .modal-header {\\n  font-family: \\\"probold\\\";\\n}\\n.modal-container .modal-body {\\n  padding: 10px;\\n}\\n.modal-container .item-container {\\n  flex: 1;\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  border-bottom: 1px solid #dcdcdc;\\n  background-color: #dcdcdc;\\n  min-height: 40px;\\n}\\n.modal-container .item-container i {\\n  cursor: pointer;\\n}\\n.modal-container .item-container .ant-list-item::ng-deep {\\n  padding: 0;\\n}\\n.modal-container .ok-btn {\\n  background-color: #00d3b2;\\n  color: white;\\n  margin-right: 15px;\\n  border: none;\\n}\\n.align-flex-center {\\n  height: 42px;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n::ng-deep .ant-list-bordered .ant-list-item {\\n  padding: 0;\\n}\\n::ng-deep .ant-spin-dot-item {\\n  background-color: #095147;\\n}\";","import { AfterViewInit, Directive, ElementRef, HostBinding, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: 'textarea[appAutoSize]'\r\n})\r\nexport class AutoSizeDirective implements AfterViewInit {\r\n  @HostBinding('class.overflow-hidden') className = true;\r\n  @HostBinding('attr.rows') rows = 1;\r\n\r\n  constructor(private elem: ElementRef) {}\r\n\r\n  public ngAfterViewInit() {\r\n    this.resize();\r\n  }\r\n\r\n  @HostListener('input')\r\n  private resize() {\r\n    const textarea = this.elem.nativeElement as HTMLTextAreaElement;\r\n    // Reset textarea height to auto that correctly calculate the new height\r\n    textarea.style.height = 'auto';\r\n    // Set new height\r\n    textarea.style.height = `${textarea.scrollHeight}px`;\r\n  }\r\n}\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\nimport { FormattedCepPipe } from '@app/shared/pipes/formatted-cep.pipe';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n  selector: '[appCep]'\r\n})\r\nexport class CepDirective {\r\n  constructor(private ngControl: NgControl) {}\r\n\r\n  private formattedCep = new FormattedCepPipe();\r\n\r\n  @HostListener('input', ['$event'])\r\n  onInputChange(event: Event | any) {\r\n    this.cep(event.target.value);\r\n  }\r\n\r\n  cep(value: string): void {\r\n    this.ngControl.control.setValue(this.formattedCep.transform(value));\r\n  }\r\n}\r\n","import { Directive, ElementRef, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\nimport * as CNPJ from '@fnando/cnpj';\r\nimport * as CPF from '@fnando/cpf';\r\nimport { OnlyNumbersPipe } from '@app/shared/pipes';\r\n\r\n@Directive({\r\n  selector: `[appCPF],[cnpj]`,\r\n  providers: [\r\n    {\r\n      multi: true,\r\n      provide: NG_VALIDATORS,\r\n      useExisting: CpfCnpjDirective\r\n    }\r\n  ]\r\n})\r\nexport class CpfCnpjDirective implements Validator, OnChanges {\r\n  @Input()\r\n  cpf: string;\r\n  @Input()\r\n  cnpj: string;\r\n  private inputMaxLength: number;\r\n  private onChange: () => void;\r\n  private onlyNumbersPipe = new OnlyNumbersPipe();\r\n\r\n  constructor(private el: ElementRef) {}\r\n\r\n  @HostBinding('attr.maxlength')\r\n  get maxlength() {\r\n    return this.inputMaxLength;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (this.onChange) {\r\n      this.onChange();\r\n      const { cnpj, cpf } = changes;\r\n      this._inputChange((cnpj || ({} as any)).currentValue || (cpf || ({} as any)).currentValue);\r\n    }\r\n  }\r\n\r\n  validate(c: AbstractControl): { [key: string]: any } {\r\n    if (this.cpf) {\r\n      const cpf = CPF.isValid(this.cpf);\r\n      return cpf ? null : { cpf: true };\r\n    } else if (this.cnpj) {\r\n      const cnpj = CNPJ.isValid(this.cnpj);\r\n      return cnpj ? null : { cnpj: true };\r\n    }\r\n  }\r\n\r\n  registerOnValidatorChange?(fn: () => void): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  private _inputChange(text: string) {\r\n    const value = this.onlyNumbersPipe.transform(text);\r\n    const { nativeElement } = this.el;\r\n    if (value) {\r\n      if (this.cnpj) {\r\n        nativeElement.value = CNPJ.format(value);\r\n        this.inputMaxLength = 14;\r\n      } else {\r\n        nativeElement.value = CPF.format(value);\r\n        this.inputMaxLength = 11;\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n  selector: '[appDigitOnly],[digitOnly]'\n})\nexport class DigitOnlyDirective implements OnChanges {\n  private hasDecimalPoint = false;\n  private navigationKeys = [\n    'Backspace',\n    'Delete',\n    'Tab',\n    'Escape',\n    'Enter',\n    'Home',\n    'End',\n    'ArrowLeft',\n    'ArrowRight',\n    'Clear',\n    'Copy',\n    'Paste'\n  ];\n\n  @Input() decimal = false;\n  @Input() decimalSeparator = '.';\n  @Input() min = -Infinity;\n  @Input() max = Infinity;\n  @Input() pattern?: string | RegExp;\n  private regex: RegExp;\n  inputElement: HTMLInputElement;\n\n  constructor(public el: ElementRef) {\n    this.inputElement = el.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.pattern) {\n      this.regex = this.pattern ? RegExp(this.pattern) : null;\n    }\n\n    if (changes.min) {\n      const maybeMin = Number(this.min);\n      this.min = isNaN(maybeMin) ? -Infinity : maybeMin;\n    }\n\n    if (changes.max) {\n      const maybeMax = Number(this.max);\n      this.max = isNaN(maybeMax) ? Infinity : maybeMax;\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeyDown(e: KeyboardEvent): any {\n    if (\n      this.navigationKeys.indexOf(e.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\n      (e.key === 'a' && e.ctrlKey === true) || // Allow: Ctrl+A\n      (e.key === 'c' && e.ctrlKey === true) || // Allow: Ctrl+C\n      (e.key === 'v' && e.ctrlKey === true) || // Allow: Ctrl+V\n      (e.key === 'x' && e.ctrlKey === true) || // Allow: Ctrl+X\n      (e.key === 'a' && e.metaKey === true) || // Allow: Cmd+A (Mac)\n      (e.key === 'c' && e.metaKey === true) || // Allow: Cmd+C (Mac)\n      (e.key === 'v' && e.metaKey === true) || // Allow: Cmd+V (Mac)\n      (e.key === 'x' && e.metaKey === true) // Allow: Cmd+X (Mac)\n    ) {\n      // let it happen, don't do anything\n      return;\n    }\n\n    let newValue = '';\n\n    if (this.decimal && e.key === this.decimalSeparator) {\n      newValue = this.forecastValue(e.key);\n      if (newValue.split(this.decimalSeparator).length > 2) {\n        // has two or more decimal points\n        e.preventDefault();\n        return;\n      } else {\n        this.hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\n        return; // Allow: only one decimal point\n      }\n    }\n\n    // Ensure that it is a number and stop the keypress\n    if (e.key === ' ' || isNaN(Number(e.key))) {\n      e.preventDefault();\n      return;\n    }\n\n    newValue = newValue || this.forecastValue(e.key);\n    // check the input pattern RegExp\n    if (this.regex) {\n      if (!this.regex.test(newValue)) {\n        e.preventDefault();\n        return;\n      }\n    }\n\n    const newNumber = Number(newValue);\n    if (newNumber > this.max || newNumber < this.min) {\n      e.preventDefault();\n    }\n  }\n\n  @HostListener('paste', ['$event'])\n  onPaste(event: any): void {\n    let pastedInput: string;\n    if (window['clipboardData']) {\n      // Browser is IE\n      pastedInput = window['clipboardData'].getData('text');\n    } else if (event.clipboardData && event.clipboardData.getData) {\n      // Other browsers\n      pastedInput = event.clipboardData.getData('text/plain');\n    }\n\n    this.pasteData(pastedInput);\n    event.preventDefault();\n  }\n\n  @HostListener('drop', ['$event'])\n  onDrop(event: DragEvent): void {\n    const textData = event.dataTransfer.getData('text');\n    this.inputElement.focus();\n    this.pasteData(textData);\n    event.preventDefault();\n  }\n\n  private pasteData(pastedContent: string): void {\n    const sanitizedContent = this.sanitizeInput(pastedContent);\n    const pasted = document.execCommand('insertText', false, sanitizedContent);\n    if (!pasted) {\n      if (this.inputElement.setRangeText) {\n        const { selectionStart: start, selectionEnd: end } = this.inputElement;\n        this.inputElement.setRangeText(sanitizedContent, start, end, 'end');\n      } else {\n        // Browser does not support setRangeText, e.g. IE\n        this.insertAtCursor(this.inputElement, sanitizedContent);\n      }\n    }\n    if (this.decimal) {\n      this.hasDecimalPoint = this.inputElement.value.indexOf(this.decimalSeparator) > -1;\n    }\n  }\n\n  // The following 2 methods were added from the below article for browsers that do not support setRangeText\n  // https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position\n  private insertAtCursor(myField: HTMLInputElement, myValue: string): void {\n    const startPos = myField.selectionStart;\n    const endPos = myField.selectionEnd;\n\n    myField.value =\n      myField.value.substring(0, startPos) +\n      myValue +\n      myField.value.substring(endPos, myField.value.length);\n\n    const pos = startPos + myValue.length;\n    myField.focus();\n    myField.setSelectionRange(pos, pos);\n\n    this.triggerEvent(myField, 'input');\n  }\n\n  private triggerEvent(el: HTMLInputElement, type: string): void {\n    if ('createEvent' in document) {\n      // modern browsers, IE9+\n      const e = document.createEvent('HTMLEvents');\n      e.initEvent(type, false, true);\n      el.dispatchEvent(e);\n    }\n  }\n  // end stack overflow code\n\n  private sanitizeInput(input: string): string {\n    let result = '';\n    if (this.decimal && this.isValidDecimal(input)) {\n      const regex = new RegExp(`[^0-9${this.decimalSeparator}]`, 'g');\n      result = input.replace(regex, '');\n    } else {\n      result = input.replace(/[^0-9]/g, '');\n    }\n\n    const maxLength = this.inputElement.maxLength;\n    if (maxLength > 0) {\n      // the input element has maxLength limit\n      const allowedLength = maxLength - this.inputElement.value.length;\n      result = allowedLength > 0 ? result.substring(0, allowedLength) : '';\n    }\n    return result;\n  }\n\n  private isValidDecimal(string: string): boolean {\n    if (!this.hasDecimalPoint) {\n      return string.split(this.decimalSeparator).length <= 2;\n    } else {\n      // the input element already has a decimal separator\n      const selectedText = this.getSelection();\n      if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\n        return string.split(this.decimalSeparator).length <= 2;\n      } else {\n        return string.indexOf(this.decimalSeparator) < 0;\n      }\n    }\n  }\n\n  private getSelection(): string {\n    return this.inputElement.value.substring(\n      this.inputElement.selectionStart,\n      this.inputElement.selectionEnd\n    );\n  }\n\n  private forecastValue(key: string): string {\n    const selectionStart = this.inputElement.selectionStart;\n    const selectionEnd = this.inputElement.selectionEnd;\n    const oldValue = this.inputElement.value;\n    const selection = oldValue.substring(selectionStart, selectionEnd);\n    return selection\n      ? oldValue.replace(selection, key)\n      : oldValue.substring(0, selectionStart) + key + oldValue.substring(selectionStart);\n  }\n}\n","import { Directive, ElementRef, Input, AfterViewInit } from '@angular/core';\n\n@Directive({\n  selector: '[appFocus]'\n})\nexport class FocusDirective implements AfterViewInit {\n  @Input() focus: boolean;\n\n  constructor(private elementRef: ElementRef) {}\n\n  ngAfterViewInit() {\n    if (this.focus) {\n      this.elementRef.nativeElement.focus();\n    }\n  }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n  selector: '[onlyNumbers]'\n})\nexport class OnlyNumbersDirective {\n  regexStr = '^[0-9]*$';\n\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent) {\n    if (\n      [46, 8, 9, 27, 13, 110, 190].indexOf(event.keyCode) !== -1 ||\n      // Allow: Ctrl+A\n      (event.keyCode == 65 && event.ctrlKey === true) ||\n      // Allow: Ctrl+C\n      (event.keyCode == 67 && event.ctrlKey === true) ||\n      // Allow: Ctrl+V\n      (event.keyCode == 86 && event.ctrlKey === true) ||\n      // Allow: Ctrl+X\n      (event.keyCode == 88 && event.ctrlKey === true) ||\n      // Allow: home, end, left, right\n      (event.keyCode >= 35 && event.keyCode <= 39)\n    ) {\n      // let it happen, don't do anything\n      return;\n    }\n    const ch = String.fromCharCode(event.keyCode);\n    const regEx = new RegExp(this.regexStr);\n    if (regEx.test(ch)) {\n      return;\n    } else {\n      event.preventDefault();\n    }\n  }\n}\n","import { Directive, ElementRef, HostBinding, HostListener, Renderer2 } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\nimport { IsCpfPipe } from '@app/shared/pipes/is-cpf.pipe';\r\nimport * as CPF from '@fnando/cpf';\r\nimport { IsCompleteNamePipe, OnlyNumbersPipe } from '@app/shared/pipes';\r\n\r\n@Directive({\r\n  selector: '[appPatientSearch]',\r\n  providers: [\r\n    {\r\n      multi: true,\r\n      provide: NG_VALIDATORS,\r\n      useExisting: PatientSearchDirective\r\n    }\r\n  ]\r\n})\r\nexport class PatientSearchDirective implements Validator {\r\n  private inputMaxLength: number;\r\n  private onChange: (value: string) => void;\r\n  private isCPF = new IsCpfPipe();\r\n  private isCompleteName = new IsCompleteNamePipe();\r\n  private onlyNumbers = new OnlyNumbersPipe();\r\n\r\n  constructor(private el: ElementRef, private renderer: Renderer2) {}\r\n\r\n  @HostBinding('attr.maxlength')\r\n  get maxlength() {\r\n    return this.inputMaxLength;\r\n  }\r\n\r\n  validate(c: AbstractControl): { [key: string]: any } {\r\n    if (this.onlyNumbers.transform(c.value)) {\r\n      const cpf = this.isCPF.transform(c.value);\r\n      return cpf ? null : { cpf: true };\r\n    }\r\n    return this.isCompleteName.transform(c.value) ? null : { nome: true };\r\n  }\r\n\r\n  registerOnValidatorChange?(fn: () => void): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  @HostListener('input', ['$event.target.value'])\r\n  private _inputChange(text: string) {\r\n    const { nativeElement } = this.el;\r\n    if (this.isCPF.transform(text)) {\r\n      nativeElement.value = CPF.format(nativeElement.value);\r\n      this.inputMaxLength = 11;\r\n    } else {\r\n      this.renderer.removeAttribute(nativeElement, 'maxlength');\r\n    }\r\n\r\n    if (this.onChange) {\r\n      this.onChange(text);\r\n    }\r\n  }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\nimport { FormattedTelPipe } from '@app/shared/pipes/formatted-tel.pipe';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n  selector: '[appTelephone]'\r\n})\r\nexport class TelephoneDirective {\r\n  @Input()\r\n  telephone: string;\r\n\r\n  constructor(private element: ElementRef, private ngControl: NgControl) {}\r\n\r\n  private formattedTel = new FormattedTelPipe();\r\n  @HostListener('input', ['$event'])\r\n  onInputChange(event: Event | any) {\r\n    this.tel(event.target.value);\r\n  }\r\n\r\n  tel(value: string): void {\r\n    this.ngControl.control.setValue(this.formattedTel.transform(value));\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { AutoSizeDirective } from './auto-size.directive';\r\nimport { CepDirective } from './cep.directive';\r\nimport { CpfCnpjDirective } from './cpf-cnpj.directive';\r\nimport { DigitOnlyDirective } from './digit-only.directive';\r\nimport { FocusDirective } from './focus.directive';\r\nimport { OnlyNumbersDirective } from './only-numbers.directive';\r\nimport { PatientSearchDirective } from './patient-search.directive';\r\nimport { TelephoneDirective } from './telephone.directive';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [\r\n    CpfCnpjDirective,\r\n    TelephoneDirective,\r\n    AutoSizeDirective,\r\n    FocusDirective,\r\n    PatientSearchDirective,\r\n    CepDirective,\r\n    DigitOnlyDirective,\r\n    OnlyNumbersDirective\r\n  ],\r\n  exports: [\r\n    CpfCnpjDirective,\r\n    TelephoneDirective,\r\n    AutoSizeDirective,\r\n    FocusDirective,\r\n    PatientSearchDirective,\r\n    CepDirective,\r\n    DigitOnlyDirective,\r\n    OnlyNumbersDirective\r\n  ]\r\n})\r\nexport class DirectivesModule {}\r\n","export default \"<header id=\\\"alternative-navbar\\\">\\n  <nav class=\\\"navbar navbar-expand-lg navbar-light\\\">\\n    <div>\\n      <a class=\\\"navbar-brand\\\" (click)=\\\"redirect()\\\" style=\\\"margin-top: -118px;\\\">\\n        <img\\n          [src]=\\\"isThemeActiveReceitaDigital() ? 'assets/img/logo-03.png' : 'assets/img/mrd/logo-03.png'\\\"\\n          [alt]=\\\"isThemeActiveReceitaDigital() ? 'Logo Receita Digital' : 'Logo MRD'\\\"\\n        />\\n      </a>\\n      <app-icon-menu></app-icon-menu>\\n    </div>\\n\\n    <div class=\\\"container-fluid-new pb-5\\\">\\n      <div class=\\\"row flex-wrap justify-content-md-center\\\">\\n        <div class=\\\"col-md-12\\\">\\n          <div class=\\\"collapse navbar-collapse\\\" id=\\\"navbar-default\\\">\\n            <ul class=\\\"navbar-nav\\\">\\n              <li class=\\\"nav-item\\\">\\n                <a href=\\\"#\\\" class=\\\"nav-link\\\" (click)=\\\"$event.preventDefault()\\\">\\n                  <div class=\\\"photo\\\" *ngIf=\\\"user\\\">\\n                    <img [alt]=\\\"user.name\\\" class=\\\"img-fluid\\\" src=\\\"/assets/img/default-avatar.png\\\" />\\n                  </div>\\n                </a>\\n              </li>\\n              <h1 class=\\\"navbar-text\\\" *ngIf=\\\"user.userType === 'pharmacy'\\\">\\n                <h2 class=\\\"card-title color-white\\\">{{ completeUser?.businessName }}</h2>\\n                <h6 class=\\\"card-subtitle mb-2 color-white\\\">\\n                  CNPJ: {{ completeUser?.cnpj | mask: '00.000.000/0000-00' }}\\n                </h6>\\n              </h1>\\n              <h1 class=\\\"navbar-text\\\" *ngIf=\\\"user.userType === 'pharmacist'\\\">\\n                <h2 class=\\\"card-title color-white\\\">{{ user?.name }}</h2>\\n                <h6 class=\\\"card-subtitle mb-2 color-white\\\">\\n                  CPF: {{ user?.cpf | mask: '000.000.000-00' }}\\n                </h6>\\n              </h1>\\n            </ul>\\n            <ul class=\\\"navbar-nav ml-lg-auto align-items-center\\\">\\n              <li class=\\\"nav-item\\\">\\n                <a (click)=\\\"logout()\\\" class=\\\"nav-link nav-link-icon logoutIcon\\\">\\n                  <i class=\\\"fa fa-exit icon-exit\\\"></i>\\n                </a>\\n              </li>\\n            </ul>\\n          </div>\\n        </div>\\n\\n        <div class=\\\"col-md-2 tile-container ml-2 mr-2\\\">\\n          <a routerLink=\\\"/dashboard\\\">\\n            <div class=\\\"card\\\">\\n              <div class=\\\"card-body carddispensar\\\">\\n                <div class=\\\"align-items-center flex-column justify-content-center\\\">\\n                  <label class=\\\"font-white padding font-card\\\"\\n                    >DISPENSAR<br />\\n                    <i class=\\\"fas fa-plus-square\\\" style=\\\"color: #fff;\\\"></i>\\n                  </label>\\n                </div>\\n              </div>\\n            </div>\\n          </a>\\n        </div>\\n\\n        <div class=\\\"col-md-2 tile-container ml-2 mr-2\\\" *ngIf=\\\"user?.userType === 'pharmacy'\\\">\\n          <a routerLink=\\\"/historic\\\">\\n            <div class=\\\"card\\\">\\n              <div class=\\\"card-body cardhistorico\\\">\\n                <div class=\\\"align-items-center flex-column justify-content-center\\\">\\n                  <label class=\\\"font-white padding font-card\\\"\\n                    >HISTÓRICO DE<br />RETENÇÕES&nbsp;\\n                    <i class=\\\"fa fa-history\\\" style=\\\"color: #fff;\\\"></i>\\n                  </label>\\n                </div>\\n              </div>\\n            </div>\\n          </a>\\n        </div>\\n\\n        <div class=\\\"col-md-2 tile-container ml-2 mr-2\\\" *ngIf=\\\"user?.userType === 'pharmacy'\\\">\\n          <a routerLink=\\\"/pharmacist/\\\">\\n            <div class=\\\"card\\\">\\n              <div class=\\\"card-body cardfarmaceuticos\\\">\\n                <div class=\\\"align-items-center flex-column justify-content-center\\\">\\n                  <label class=\\\"font-green padding font-card\\\"\\n                    >FARMACÊUTICOS<br />\\n                    <i class=\\\"fa fa-user-friends\\\"></i>\\n                  </label>\\n                </div>\\n              </div>\\n            </div>\\n          </a>\\n        </div>\\n\\n        <div class=\\\"col-md-2 tile-container ml-2 mr-2\\\">\\n          <a routerLink=\\\"/profile\\\">\\n            <div class=\\\"card\\\">\\n              <div class=\\\"card-body cardarquivopdfs\\\">\\n                <div class=\\\"align-items-center flex-column justify-content-center\\\">\\n                  <label class=\\\"font-green padding font-card\\\"\\n                    >MEUS DADOS<br />\\n                    <i class=\\\"fa fa-account-box\\\"></i>\\n                  </label>\\n                </div>\\n              </div>\\n            </div>\\n          </a>\\n        </div>\\n      </div>\\n    </div>\\n  </nav>\\n</header>\\n\";","import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { ThemeService } from '@app/theme';\n\n@Component({\n  selector: 'app-alternative-navbar-cip',\n  templateUrl: './alternative-navbar-cip.component.html',\n  styleUrls: ['./alternative-navbar-cip.component.scss']\n})\nexport class AlternativeNavbarCipComponent {\n  @Input() completeUser: any;\n\n  constructor(\n    private router: Router,\n    private themeService: ThemeService,\n    private authService: AuthService\n  ) {}\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  redirect() {\n    const { permission, userType } = this.user;\n    const url = permission === 'basic' || userType !== 'admin' ? '/dashboard' : '/admin';\n    this.router.navigate([url]);\n  }\n\n  isThemeActiveReceitaDigital() {\n    const active = this.themeService.getActiveTheme();\n    return active.name === 'theme-receita-digital';\n  }\n\n  logout() {\n    this.authService.logout();\n    this.router.navigate(['entry/login']);\n  }\n}\n","export default \".navbar-brand {\\n  height: 100%;\\n  width: 80px;\\n  flex: 0 0 80px;\\n  margin: 0;\\n  justify-content: center;\\n  display: flex;\\n  align-items: center;\\n}\\n\\n.backgroundcolorgreen {\\n  background-color: #1c413a;\\n}\\n\\n.navbar-brand img {\\n  height: 100px;\\n}\\n\\n.container-fluid-new {\\n  background-color: #17c6ac;\\n  margin-left: 7px;\\n  margin-top: 7px;\\n  width: 100%;\\n  border-radius: 7px;\\n}\\n\\n.navbar {\\n  position: relative;\\n  filter: drop-shadow(0 3px 6px rgba(128, 128, 128, 0.16));\\n  border-radius: 5px;\\n  padding: 0;\\n  background-color: white;\\n}\\n\\n.navbar .nav-link {\\n  padding-right: 0.4rem;\\n  padding-left: 0.4rem;\\n}\\n\\n.navbar .navbar-header {\\n  display: flex;\\n  align-items: center;\\n}\\n\\n.navbar .navbar-header .navbar-text {\\n  font-size: 25px;\\n  font-family: \\\"prosemibold\\\", sans-serif;\\n  margin-left: 16px;\\n  margin-bottom: 0;\\n  color: var(--on-background-header);\\n}\\n\\n.navbar .navbar-header .navbar-text i {\\n  font-size: 20px;\\n  margin-left: 10px;\\n}\\n\\n.navbar.bg-primary .nav-link,\\n.navbar.bg-primary .navbar-text {\\n  color: white;\\n}\\n\\n.container-fluid {\\n  background-color: #17c6ac;\\n}\\n\\n.paddingtopbottom {\\n  padding-bottom: 25px;\\n  padding-top: 25px;\\n}\\n\\n.card {\\n  position: relative;\\n  background-color: #17c6ac;\\n}\\n\\n.font-white {\\n  color: #ffffff;\\n}\\n\\n.padding {\\n  padding-bottom: 5px;\\n}\\n\\n.font-green {\\n  color: #1c413a;\\n}\\n\\n.font-card {\\n  font-family: \\\"Source Sans Pro\\\", sans-serif;\\n  font-weight: bold;\\n  cursor: pointer;\\n  font-size: 18px;\\n}\\n\\n.carddispensar {\\n  background-color: #1c413a;\\n  color: #ffffff;\\n  text-align: center;\\n  border-radius: 5px;\\n  padding: 30px;\\n  min-height: 100px;\\n}\\n\\n.cardarquivopdfs {\\n  background-color: #ebebeb;\\n  color: #1c413a;\\n  text-align: center;\\n  border-radius: 5px;\\n  padding: 30px;\\n  min-height: 100px;\\n}\\n\\n.cardhistorico {\\n  background-color: #0b6054;\\n  color: #ffffff;\\n  text-align: center;\\n  border-radius: 5px;\\n  padding: 30px;\\n  min-height: 100px;\\n}\\n\\n.cardfarmaceuticos {\\n  background-color: #65f2da;\\n  color: #1c413a;\\n  text-align: center;\\n  border-radius: 5px;\\n  padding: 30px;\\n  min-height: 100px;\\n}\\n\\n.tile-container {\\n  padding: 0px;\\n}\\n\\n.tile-container .option-title {\\n  text-align: center !important;\\n}\\n\\n.jumbotron {\\n  padding: 2rem 1rem;\\n  margin-bottom: 2rem;\\n  background-color: #17c6ac;\\n  border-radius: 0.3rem;\\n}\\n\\n.tiles {\\n  height: 120px;\\n  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);\\n  text-transform: uppercase;\\n  font-size: 20px;\\n  color: white;\\n  font-family: \\\"problack\\\", sans-serif;\\n  transition: all 300ms ease;\\n}\\n\\n.tiles.card-nova-prescricao {\\n  background-color: var(--background-card-prescricao);\\n}\\n\\n.tiles.card-historico-prescricao {\\n  background-color: var(--background-card-historico);\\n}\\n\\n.tiles.card-pacientes {\\n  background-color: var(--background-card-pacientes);\\n  color: var(--color-card-pacientes);\\n}\\n\\n.tiles.card-meus-dados {\\n  background-color: var(--background-card-meus-dados);\\n}\\n\\n.tiles.card-tele-consulta {\\n  background-color: var(--background-card-tele-consulta);\\n}\\n\\n.tiles.card-agenda-virtual {\\n  background-color: var(--backgorund-card-agenda-virtual);\\n}\\n\\n.tiles:hover {\\n  transform: translateY(-1px);\\n  z-index: 1;\\n}\\n\\n.logoutIcon.white {\\n  color: #fff;\\n}\\n\\n.logoutIcon.green {\\n  color: #1ae0c2;\\n}\\n\\n.logoutIcon.primary {\\n  color: #0b6054;\\n}\\n\\n.logoutIcon.default {\\n  color: #ffffff;\\n}\\n\\n.logoutIcon.info {\\n  color: #17c6ac;\\n}\\n\\n.logoutIcon.success {\\n  color: #00d3b2;\\n}\\n\\n.icon-exit {\\n  color: var(--on-background-header);\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\n.h1,\\n.h2,\\n.h3,\\n.h4,\\n.h5,\\n.h6 {\\n  margin-bottom: 0.5rem;\\n  font-family: inherit;\\n  font-weight: 400;\\n  line-height: 1.5;\\n  color: #ffffff;\\n}\\n\\n.color-white {\\n  color: #ffffff !important;\\n}\\n\\n.photo {\\n  display: inline-block;\\n  height: 60px;\\n  width: 60px;\\n  border-radius: 50%;\\n  vertical-align: middle;\\n  overflow: hidden;\\n}\\n\\n@media screen and (max-width: 500px) {\\n  .navbar .navbar-header {\\n    margin-left: 30px;\\n    margin-top: -10px;\\n  }\\n  .navbar .navbar-header .navbar-text {\\n    margin-left: 6px;\\n  }\\n  .navbar .navbar-header .navbar-text i {\\n    font-size: 12px;\\n  }\\n}\";","export default \"<app-alternative-navbar-cip\\r\\n  *ngIf=\\\"hasCipFeature; else templateOld\\\"\\r\\n  [completeUser]=\\\"completeUser\\\"\\r\\n></app-alternative-navbar-cip>\\r\\n\\r\\n<!-- ************************************************************************************************************** -->\\r\\n<ng-template #templateOld>\\r\\n  <header id=\\\"alternative-navbar\\\">\\r\\n    <nav class=\\\"navbar navbar-expand-lg navbar-light\\\">\\r\\n      <a class=\\\"navbar-brand\\\" (click)=\\\"redirect()\\\">\\r\\n        <img\\r\\n          [src]=\\\"isThemeActiveReceitaDigital() ? 'assets/img/logo-03.png' : 'assets/img/mrd/logo-03.png'\\\"\\r\\n          [alt]=\\\"isThemeActiveReceitaDigital() ? 'Logo Receita Digital' : 'Logo MRD'\\\"\\r\\n        />\\r\\n      </a>\\r\\n      <div class=\\\"container-fluid\\\">\\r\\n        <div class=\\\"collapse navbar-collapse\\\" id=\\\"navbar-default\\\">\\r\\n          <div class=\\\"navbar-header\\\">\\r\\n            <app-icon-menu *ngIf=\\\"user?.userType !== 'admin'\\\"></app-icon-menu>\\r\\n            <h1 class=\\\"navbar-text\\\" *ngIf=\\\"title\\\">\\r\\n              <span class=\\\"pipe-menu\\\">|</span> {{ title }}\\r\\n              <i class=\\\"fa icon-title\\\" [ngClass]=\\\"titleIcon\\\"></i>\\r\\n            </h1>\\r\\n          </div>\\r\\n\\r\\n          <ul class=\\\"navbar-nav ml-lg-auto align-items-center \\\">\\r\\n            <li class=\\\"nav-item\\\" *ngIf=\\\"false\\\">\\r\\n              <button (click)=\\\"toggle()\\\">Mudar Tema</button>\\r\\n            </li>\\r\\n            <li class=\\\"nav-item\\\" *ngIf=\\\"user\\\">\\r\\n              <a routerLink=\\\"/profile\\\" class=\\\"nav-link\\\">\\r\\n                <div title=\\\"Meus Dados\\\">\\r\\n                  <ng-container *ngIf=\\\"avatarB64; else noAvatar\\\">\\r\\n                    <img [alt]=\\\"user.name\\\" class=\\\"avatar\\\" [src]=\\\"avatarB64\\\" />\\r\\n                  </ng-container>\\r\\n                  <ng-template #noAvatar>\\r\\n                    <img\\r\\n                      [alt]=\\\"user.name\\\"\\r\\n                      class=\\\"avatar\\\"\\r\\n                      src=\\\"/assets/img/default-avatar.png\\\"\\r\\n                      *ngIf=\\\"user.sex !== 'F'\\\"\\r\\n                    />\\r\\n                    <img\\r\\n                      [alt]=\\\"user.name\\\"\\r\\n                      class=\\\"avatar\\\"\\r\\n                      src=\\\"/assets/img/default-avatar.F.png\\\"\\r\\n                      *ngIf=\\\"user.sex === 'F'\\\"\\r\\n                    />\\r\\n                  </ng-template>\\r\\n                </div>\\r\\n              </a>\\r\\n            </li>\\r\\n            <li class=\\\"nav-item\\\">\\r\\n              <a (click)=\\\"logout()\\\" class=\\\"nav-link nav-link-icon logoutIcon\\\">\\r\\n                <i class=\\\"fa fa-exit icon-exit\\\"></i>\\r\\n              </a>\\r\\n            </li>\\r\\n          </ul>\\r\\n        </div>\\r\\n      </div>\\r\\n    </nav>\\r\\n  </header>\\r\\n</ng-template>\\r\\n\";","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '@app/core/services/auth.service';\r\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\r\nimport { UserService } from '@app/modules/user/user.service';\r\nimport { AdditionalFeatureAccept } from '@app/shared/models';\r\nimport { ThemeService } from '@app/theme';\r\n\r\n@Component({\r\n  selector: 'app-alternative-navbar',\r\n  templateUrl: './alternative-navbar.component.html',\r\n  styleUrls: ['./alternative-navbar.component.scss']\r\n})\r\nexport class AlternativeNavbarComponent implements OnInit {\r\n  @Input() title: string;\r\n  @Input() titleIcon: string;\r\n  completeUser: any;\r\n  avatarB64: string;\r\n\r\n  constructor(\r\n    private authService: AuthService,\r\n    private router: Router,\r\n    private themeService: ThemeService,\r\n    private pharmacyService: PharmacyService,\r\n    private userService: UserService\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    if (this.user.userType === 'pharmacy') {\r\n      this.pharmacyService\r\n        .getPharmacyByUserId(this.user._id)\r\n        .subscribe(res => (this.completeUser = res));\r\n    }\r\n\r\n    this.userService.getAvatar().subscribe(avatar => (this.avatarB64 = avatar));\r\n  }\r\n\r\n  get user() {\r\n    return this.authService.user();\r\n  }\r\n\r\n  get hasCipFeature() {\r\n    const cipFeature = this.user && this.user.features.find(f => f.name === 'CIP');\r\n    return cipFeature && cipFeature.accept === AdditionalFeatureAccept.YES;\r\n  }\r\n\r\n  redirect() {\r\n    const { permission, userType } = this.user;\r\n    const url = permission === 'basic' || userType !== 'admin' ? '/dashboard' : '/admin';\r\n    window.location.href = url;\r\n  }\r\n\r\n  toggle() {\r\n    if (this.isThemeActiveReceitaDigital()) {\r\n      this.themeService.setTheme('theme-mrd');\r\n    } else {\r\n      this.themeService.setTheme('theme-receita-digital');\r\n    }\r\n  }\r\n\r\n  isThemeActiveReceitaDigital() {\r\n    const active = this.themeService.getActiveTheme();\r\n    return active.name === 'theme-receita-digital';\r\n  }\r\n\r\n  logout() {\r\n    this.authService.logout();\r\n    this.router.navigate(['entry/login']);\r\n  }\r\n}\r\n","export default \".navbar-brand {\\n  height: 100%;\\n  width: 80px;\\n  flex: 0 0 80px;\\n  margin: 0;\\n  justify-content: center;\\n  display: flex;\\n  align-items: center;\\n  background-color: white;\\n}\\n\\n.navbar {\\n  background-color: var(--background-header);\\n  height: 80px;\\n  padding: 0;\\n  position: relative;\\n  filter: drop-shadow(0 3px 6px rgba(128, 128, 128, 0.16));\\n}\\n\\n.navbar .nav-link {\\n  padding-right: 0.4rem;\\n  padding-left: 0.4rem;\\n}\\n\\n.navbar .navbar-header {\\n  display: flex;\\n  align-items: center;\\n}\\n\\n.navbar .navbar-header .navbar-text {\\n  font-size: 25px;\\n  font-family: \\\"prosemibold\\\", sans-serif;\\n  margin-left: 16px;\\n  margin-bottom: 0;\\n  color: var(--on-background-header);\\n}\\n\\n.navbar .navbar-header .navbar-text i {\\n  font-size: 20px;\\n  margin-left: 10px;\\n}\\n\\n.navbar.bg-primary .nav-link,\\n.navbar.bg-primary .navbar-text {\\n  color: white;\\n}\\n\\n.logoutIcon.white {\\n  color: #fff;\\n}\\n\\n.logoutIcon.green {\\n  color: #1ae0c2;\\n}\\n\\n.logoutIcon.primary {\\n  color: #0b6054;\\n}\\n\\n.logoutIcon.default {\\n  color: #ffffff;\\n}\\n\\n.logoutIcon.info {\\n  color: #17c6ac;\\n}\\n\\n.logoutIcon.success {\\n  color: #00d3b2;\\n}\\n\\n.icon-exit {\\n  color: var(--on-background-header);\\n}\\n\\n@media screen and (max-width: 500px) {\\n  .navbar .navbar-header {\\n    margin-left: 30px;\\n    margin-top: -10px;\\n  }\\n  .navbar .navbar-header .navbar-text {\\n    margin-left: 6px;\\n  }\\n  .navbar .navbar-header .navbar-text i {\\n    font-size: 12px;\\n  }\\n}\";","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-footer-mobile',\n  templateUrl: './footer-mobile.component.html',\n  styleUrls: ['./footer-mobile.component.scss']\n})\nexport class FooterMobileComponent implements OnInit {\n  @Input() frontendVersion: string;\n  @Input() backendVersion: string;\n\n  constructor() {}\n\n  ngOnInit() {}\n}\n","export default \"<footer theme>\\n  <div class=\\\"d-flex align-items-center\\\">\\n    <div class=\\\"d-flex flex-fill\\\">\\n      <a class=\\\"mr-3 helpContainer\\\" href=\\\"https://ajuda.receitadigital.com\\\"><i class=\\\"fa fa-comments mr-1\\\"></i>Fale Conosco.</a>\\n    </div>\\n  </div>\\n  <div class=\\\"box-version-and-social-medias\\\">\\n    <div class=\\\"versions\\\">\\n      <span class=\\\"m-2\\\">F: {{ frontendVersion }}</span>\\n      <span class=\\\"m-2\\\">B: {{ backendVersion }}</span>\\n    </div>\\n    <div class=\\\"social-medias\\\">\\n      <a href=\\\"https://www.instagram.com/receitadigital\\\" target=\\\"_blank\\\" style=\\\"    margin-right: 10px;\\\"\\n        ><i class=\\\"fa fa-instagram\\\"></i\\n      ></a>\\n      <a href=\\\"https://www.facebook.com/ReceitaDigital/\\\" target=\\\"_blank\\\" style=\\\"    margin-right: 10px;\\\"\\n        ><i class=\\\"fa fa-facebook\\\"></i\\n      ></a>\\n      <a href=\\\"https://www.linkedin.com/company/receitadigital/\\\" target=\\\"_blank\\\"\\n        ><i class=\\\"fa fa-linkedin\\\"></i\\n      ></a>\\n    </div>\\n  </div>\\n</footer>\\n\";","export default \"footer {\\n  background: var(--background-section);\\n  position: absolute;\\n  bottom: 0;\\n  width: 100%;\\n  color: #fff;\\n  height: 65px;\\n  z-index: 999;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  box-sizing: border-box;\\n}\\n\\n.box-version-and-social-medias {\\n  width: 100%;\\n  height: 10px;\\n  display: flex;\\n  justify-content: space-between;\\n}\\n\\n.versions {\\n  display: flex;\\n  width: 100%;\\n  align-items: center;\\n  justify-content: center;\\n}\\n\\n.social-medias {\\n  width: 100%;\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n}\\n\\n.social-medias a {\\n  color: #fff;\\n}\";","export default \"<footer class=\\\"footer\\\">\\r\\n  <div class=\\\"d-flex flex-fill\\\" *ngIf=\\\"isThemeActiveReceitaDigital()\\\">\\r\\n    <a class=\\\"mr-3 helpContainer\\\" target=\\\"_blank\\\" href=\\\"https://ajuda.receitadigital.com\\\"><i class=\\\"fa fa-comments mr-1\\\"></i>Fale Conosco.</a>\\r\\n  </div>\\r\\n</footer>\\r\\n\";","import { Component, HostListener } from '@angular/core';\r\nimport { CoreService } from '@app/core/services/core.service';\r\nimport { ThemeService } from '@app/theme';\r\n\r\n@Component({\r\n  selector: 'app-footer',\r\n  templateUrl: './footer.component.html',\r\n  styleUrls: ['./footer.component.scss']\r\n})\r\nexport class FooterComponent {\r\n  actualDate = new Date();\r\n  isMobile = false;\r\n\r\n  @HostListener('window:resize', ['$event'])\r\n  onResize(event) {\r\n    this.isMobile = this.coreService.isViewPortMobile();\r\n  }\r\n\r\n  constructor(private themeService: ThemeService, private coreService: CoreService) {}\r\n\r\n  isThemeActiveReceitaDigital() {\r\n    const active = this.themeService.getActiveTheme();\r\n    return active.name === 'theme-receita-digital';\r\n  }\r\n}\r\n","export default \"footer {\\n  background: var(--background-section);\\n  position: absolute;\\n  bottom: 0;\\n  width: 100%;\\n  display: flex;\\n  height: 50px;\\n  z-index: 999;\\n}\\n\\n.footer {\\n  justify-content: space-between;\\n  align-items: center;\\n}\\n\\n.footer .versions {\\n  display: flex;\\n}\\n\\n.footer .box-marca-and-social-medias {\\n  display: flex;\\n  align-items: center;\\n}\\n\\n.footer .container-fluid {\\n  padding: 0 30px;\\n}\\n\\n@media (max-width: 1025px) {\\n  .footer .container-fluid {\\n    padding: 0 20px 0 10px;\\n  }\\n}\\n\\n.footer a i {\\n  font-size: 14px;\\n}\\n\\n.footer .copyright {\\n  font-size: 10px;\\n}\\n\\n@media (max-width: 414px) {\\n  .footer {\\n    height: 60px;\\n  }\\n  .footer .versions {\\n    position: absolute;\\n    top: 22px;\\n    left: 0;\\n  }\\n  .footer .social-icons {\\n    position: absolute;\\n    right: 7px;\\n    top: 30px;\\n  }\\n  .footer .box-marca {\\n    position: absolute;\\n    left: 15%;\\n    width: 100%;\\n    top: 5px;\\n  }\\n}\\n\\n.footer div {\\n  justify-content: center !important;\\n}\\n\\n@media (min-width: 800px) {\\n  .footer div {\\n    justify-content: flex-end !important;\\n  }\\n}\";","export default \"<div id=\\\"icon-menubar\\\">\\n  <i class=\\\"fa fa-subject icon-menu\\\" theme (click)=\\\"toggleMenu()\\\"></i>\\n</div>\\n\";","import { DOCUMENT } from '@angular/common';\nimport { Component, OnInit, Inject, Renderer2 } from '@angular/core';\n\n@Component({\n  selector: 'app-icon-menu',\n  templateUrl: './icon-menu.component.html',\n  styleUrls: ['./icon-menu.component.scss']\n})\nexport class IconMenuComponent implements OnInit {\n  static activeMenu = false;\n  constructor(@Inject(DOCUMENT) private document: Document, private renderer: Renderer2) {}\n\n  ngOnInit() {}\n\n  toggleMenu() {\n    IconMenuComponent.activeMenu = !IconMenuComponent.activeMenu;\n    if (IconMenuComponent.activeMenu) {\n      this.renderer.setStyle(this.document.getElementById('siderbar-menu'), 'left', '0');\n      this.renderer.setStyle(this.document.getElementById('siderbar-menu-blur'), 'left', '0');\n    } else {\n      this.renderer.setStyle(this.document.getElementById('siderbar-menu'), 'left', '-330px');\n      this.renderer.setStyle(this.document.getElementById('siderbar-menu-blur'), 'left', '-100%');\n    }\n  }\n}\n","export default \".icon-menu,\\n.pipe-menu {\\n  color: var(--color-icon-menu);\\n  font-size: 25px;\\n}\\n\\n.icon-menu:hover {\\n  cursor: pointer;\\n  transition: 0.3s all;\\n  color: var(--color-icon-menu);\\n}\\n\\n@media screen and (max-width: 500px) {\\n  #icon-menubar {\\n    margin-top: 15px;\\n    margin-left: 15px;\\n  }\\n\\n  .icon-menu {\\n    font-size: 20px;\\n  }\\n}\";","import { Component, OnInit } from '@angular/core';\r\nimport { AuthService } from '@app/core/services/auth.service';\r\n\r\n@Component({\r\n  selector: 'app-navbar',\r\n  templateUrl: './navbar.component.html',\r\n  styleUrls: ['./navbar.component.scss']\r\n})\r\nexport class NavbarComponent implements OnInit {\r\n  constructor(private authService: AuthService) {}\r\n\r\n  ngOnInit() {}\r\n\r\n  get isLoggedOut(): boolean {\r\n    return this.authService.isLoggedOut;\r\n  }\r\n}\r\n","export default \"<header>\\r\\n  <nav class=\\\"navbar navbar-expand-lg navbar-light\\\">\\r\\n    <div class=\\\"container-fluid\\\">\\r\\n      <a class=\\\"navbar-brand\\\" routerLink=\\\"/\\\">\\r\\n        <img src=\\\"assets/img/logo-01.jpg\\\" alt=\\\"Logo Receita Digital\\\" id=\\\"brand-home\\\" />\\r\\n      </a>\\r\\n      <button\\r\\n        class=\\\"navbar-toggler\\\"\\r\\n        type=\\\"button\\\"\\r\\n        data-toggle=\\\"collapse\\\"\\r\\n        data-target=\\\"#navbar-default\\\"\\r\\n        aria-controls=\\\"navbar-default\\\"\\r\\n        aria-expanded=\\\"false\\\"\\r\\n        aria-label=\\\"Toggle navigation\\\"\\r\\n      >\\r\\n        <span class=\\\"navbar-toggler-icon\\\"></span>\\r\\n      </button>\\r\\n      <div class=\\\"collapse navbar-collapse\\\" id=\\\"navbar-default\\\">\\r\\n        <div class=\\\"navbar-collapse-header\\\">\\r\\n          <div class=\\\"row\\\">\\r\\n            <div class=\\\"col-6 collapse-brand\\\">\\r\\n              <a href=\\\"#\\\">\\r\\n                <img src=\\\"assets/img/logo-01.jpg\\\" />\\r\\n              </a>\\r\\n            </div>\\r\\n            <div class=\\\"col-6 collapse-close\\\">\\r\\n              <button\\r\\n                type=\\\"button\\\"\\r\\n                class=\\\"navbar-toggler\\\"\\r\\n                data-toggle=\\\"collapse\\\"\\r\\n                data-target=\\\"#navbar-default\\\"\\r\\n                aria-controls=\\\"navbar-default\\\"\\r\\n                aria-expanded=\\\"false\\\"\\r\\n                aria-label=\\\"Toggle navigation\\\"\\r\\n              >\\r\\n                <span></span>\\r\\n                <span></span>\\r\\n              </button>\\r\\n            </div>\\r\\n          </div>\\r\\n        </div>\\r\\n\\r\\n        <ul class=\\\"navbar-nav ml-lg-auto align-items-center\\\">\\r\\n          <!-- <li class=\\\"nav-item\\\" routerLinkActive=\\\"active\\\">\\r\\n            <a class=\\\"nav-link\\\" routerLink=\\\"\\\">\\r\\n              Início\\r\\n            </a>\\r\\n          </li>\\r\\n          <li class=\\\"nav-item\\\">\\r\\n            <a class=\\\"nav-link\\\" href=\\\"#\\\">\\r\\n              Para pacientes\\r\\n            </a>\\r\\n          </li>\\r\\n          <li class=\\\"nav-item\\\">\\r\\n            <a class=\\\"nav-link\\\" href=\\\"#\\\">\\r\\n              Para Médicos\\r\\n            </a>\\r\\n          </li>\\r\\n          <li class=\\\"nav-item\\\">\\r\\n            <a class=\\\"nav-link\\\" href=\\\"#\\\">\\r\\n              Para Farmácias\\r\\n            </a>\\r\\n          </li> -->\\r\\n          <!-- <li class=\\\"nav-item\\\">\\r\\n            <a class=\\\"nav-link\\\" href=\\\"#\\\">\\r\\n              Contato\\r\\n            </a>\\r\\n          </li> -->\\r\\n          <ng-container *ngIf=\\\"isLoggedOut\\\">\\r\\n            <li class=\\\"nav-item\\\">\\r\\n              <a class=\\\"btn btn-primary btn-md register-btn\\\" routerLink=\\\"/entry/account-type\\\">\\r\\n                Cadastre-se\\r\\n              </a>\\r\\n            </li>\\r\\n            <li class=\\\"nav-item\\\" theme>\\r\\n              <a routerLink=\\\"/entry/login\\\" class=\\\"btn btn-icon btn-success btn-circle\\\">\\r\\n                <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-user-solid\\\"></i></span>\\r\\n              </a>\\r\\n            </li>\\r\\n          </ng-container>\\r\\n        </ul>\\r\\n      </div>\\r\\n    </div>\\r\\n  </nav>\\r\\n</header>\\r\\n\";","export default \".navbar {\\n  max-height: 80px;\\n  filter: drop-shadow(0 3px 6px rgba(128, 128, 128, 0.16));\\n  border: 1px solid transparent;\\n}\\n.navbar .nav-link {\\n  padding-right: 0.4rem;\\n  padding-left: 0.4rem;\\n}\\n.navbar .nav-link,\\n.navbar .btn {\\n  text-transform: uppercase;\\n  font-family: \\\"problack\\\", sans-serif;\\n}\\n.navbar .nav-link.register-btn,\\n.navbar .btn.register-btn {\\n  height: 40px;\\n  display: flex;\\n  align-items: center;\\n}\";","export default \"<ng-container *ngIf=\\\"hasCipFeature; then templateNew; else templateOld\\\"></ng-container>\\n<ng-template #templateNew>\\n  <nav id=\\\"siderbar-menu\\\" class=\\\"sidebar\\\" theme>\\n    <div class=\\\"inner-menu\\\">\\n      <ul class=\\\"menu list-unstyled\\\">\\n        <li>\\n          <a routerLink=\\\"/\\\"> <i class=\\\"fas fa-plus-square\\\"></i> Dispensar </a>\\n        </li>\\n\\n        <li *ngIf=\\\"user?.userType === 'pharmacy'\\\">\\n          <a routerLink=\\\"/historic\\\"> <i class=\\\"fa fa-history\\\"></i> Histórico de Retenções </a>\\n        </li>\\n\\n        <li *ngIf=\\\"user?.userType === 'pharmacy'\\\">\\n          <a routerLink=\\\"/pharmacist/\\\"> <i class=\\\"fa fa-user-friends\\\"></i> Farmacêuticos </a>\\n        </li>\\n\\n        <li *ngIf=\\\"hasAccessToManipulatedFunctionality()\\\">\\n          <a routerLink=\\\"/personalized-medications\\\">\\n            <i class=\\\"fa fa-account-box\\\"></i>\\n            Manipulados\\n          </a>\\n        </li>\\n\\n        <li>\\n          <a routerLink=\\\"/profile\\\">\\n            <i class=\\\"fa fa-account-box\\\"></i>\\n            Meus dados\\n          </a>\\n        </li>\\n      </ul>\\n    </div>\\n  </nav>\\n</ng-template>\\n<!-- ************************************************************************************************************** -->\\n<ng-template #templateOld>\\n  <nav id=\\\"siderbar-menu\\\" class=\\\"sidebar\\\" theme>\\n    <div class=\\\"inner-menu\\\">\\n      <ul class=\\\"menu list-unstyled\\\" [ngSwitch]=\\\"user?.userType\\\">\\n        <ng-container *ngSwitchCase=\\\"'healthProfessional'\\\">\\n          <li>\\n            <a routerLink=\\\"/dashboard\\\">\\n              <i class=\\\"fa fa-view-compact\\\"></i>\\n              Meu Painel\\n            </a>\\n          </li>\\n          <li>\\n            <a\\n              [routerLink]=\\\"\\n                isVeterinarian || authService.hasAccessNewModulePrescription\\n                  ? ['/document/new']\\n                  : ['/prescription/new']\\n              \\\"\\n            >\\n              <i class=\\\"fa fa-plus\\\"></i>\\n              Nova Prescrição\\n            </a>\\n          </li>\\n          <li>\\n            <a routerLink=\\\"/favorites\\\">\\n              <i class=\\\"fa fa-heart\\\"></i>\\n              Modelos Favoritos\\n            </a>\\n          </li>\\n          <li>\\n            <a routerLink=\\\"/historic\\\">\\n              <i class=\\\"fa fa-history\\\"></i>\\n              Histórico de Documentos\\n            </a>\\n          </li>\\n          <li>\\n            <a routerLink=\\\"/patients\\\" class=\\\"submenu\\\">\\n              <i class=\\\"fa fa-assignment\\\"></i>\\n              Meus Pacientes\\n            </a>\\n          </li>\\n          <li *ngIf=\\\"hasAccessToManipulatedFunctionality()\\\">\\n            <a routerLink=\\\"/personalized-medications\\\" class=\\\"submenu\\\">\\n              <i class=\\\"fa fa-assignment\\\"></i>\\n              Personalizar Tratamento\\n            </a>\\n          </li>\\n          <li>\\n            <a routerLink=\\\"/profile\\\">\\n              <i class=\\\"fa fa-account-box\\\"></i>\\n              Meus dados\\n            </a>\\n          </li>\\n          <li *ngIf=\\\"hasRennovaFeature\\\">\\n            <a (click)=\\\"redirectDocumentNew(true)\\\">\\n              <i class=\\\"fa fa-syringe\\\"></i>\\n              Prescrição Rennova\\n            </a>\\n          </li>\\n        </ng-container>\\n\\n        <ng-container *ngSwitchCase=\\\"'patient'\\\">\\n          <li>\\n            <a routerLink=\\\"/dashboard\\\">\\n              <i class=\\\"fa fa-view-compact\\\"></i>\\n              Meu Painel\\n            </a>\\n          </li>\\n          <a routerLink=\\\"/historic\\\">\\n            <i class=\\\"fa fa-business\\\"></i>\\n            Minhas Prescrições\\n          </a>\\n          <li>\\n            <a routerLink=\\\"/profile\\\">\\n              <i class=\\\"fa fa-account-box\\\"></i>\\n              Meus Dados\\n            </a>\\n          </li>\\n        </ng-container>\\n\\n        <ng-container *ngSwitchCase=\\\"'pharmacy'\\\">\\n          <li>\\n            <a routerLink=\\\"/dashboard\\\">\\n              <i class=\\\"fa fa-view-compact\\\"></i>\\n              Meu painel\\n            </a>\\n          </li>\\n          <li>\\n            <a (click)=\\\"openSearch()\\\" class=\\\"submenu\\\">\\n              <i class=\\\"fa fa-search\\\"></i>\\n              Buscar Receitas\\n            </a>\\n          </li>\\n          <li *ngIf=\\\"!hasFarmaRennovaFeature\\\">\\n            <a routerLink=\\\"/pharmacy/recipe\\\">\\n              <i class=\\\"fas fa-clipboard-list\\\"></i> Receitas de Terceiros\\n            </a>\\n          </li>\\n          <li>\\n            <a routerLink=\\\"/pharmacist/\\\"> <i class=\\\"fa fa-user-friends\\\"></i>Farmacêuticos</a>\\n          </li>\\n          <li>\\n            <a routerLink=\\\"/historic\\\"> <i class=\\\"fa fa-history\\\"></i>Histórico de Retenções</a>\\n          </li>\\n          <li *ngIf=\\\"hasAccessToManipulatedFunctionality()\\\">\\n            <a routerLink=\\\"/personalized-medications\\\">\\n              <i class=\\\"fa fa-account-box\\\"></i>\\n              Manipulados\\n            </a>\\n          </li>\\n          <li>\\n            <a routerLink=\\\"/profile\\\">\\n              <i class=\\\"fa fa-account-box\\\"></i>\\n              Meus Dados\\n            </a>\\n          </li>\\n        </ng-container>\\n\\n        <ng-container *ngSwitchCase=\\\"'pharmacist'\\\">\\n          <li>\\n            <a routerLink=\\\"/dashboard\\\">\\n              <i class=\\\"fa fa-view-compact\\\"></i>\\n              Meu painel\\n            </a>\\n          </li>\\n          <li>\\n            <a (click)=\\\"openSearch()\\\" class=\\\"submenu\\\">\\n              <i class=\\\"fa fa-search\\\"></i>\\n              Buscar Receitas\\n            </a>\\n          </li>\\n          <li>\\n            <a routerLink=\\\"/pharmacy/recipe\\\">\\n              <i class=\\\"fas fa-clipboard-list\\\"></i>\\n              Receita de Terceiros\\n            </a>\\n          </li>\\n          <li>\\n            <a routerLink=\\\"/profile\\\">\\n              <i class=\\\"fa fa-account-box\\\"></i>\\n              Meus dados\\n            </a>\\n          </li>\\n          <li *ngIf=\\\"hasAccessToManipulatedFunctionality()\\\">\\n            <a routerLink=\\\"/personalized-medications\\\">\\n              <i class=\\\"fa fa-account-box\\\"></i>\\n              Manipulados\\n            </a>\\n          </li>\\n        </ng-container>\\n\\n        <ng-container *ngSwitchCase=\\\"'admin'\\\">\\n          <li>\\n            <a (click)=\\\"changeRoute('')\\\">\\n              <i class=\\\"fa fa-view-compact\\\"></i>\\n              Visão geral\\n            </a>\\n          </li>\\n\\n          <li *ngIf=\\\"user?.permission === Permission.MASTER\\\">\\n            <a (click)=\\\"changeRoute('register')\\\">\\n              <i class=\\\"fa fa-business\\\"></i>\\n              Cadastrar Administrador\\n            </a>\\n          </li>\\n\\n          <li>\\n            <a (click)=\\\"changeRoute('doctors')\\\">\\n              <i class=\\\"fa fa-user\\\"></i>\\n              Médicos\\n            </a>\\n            <ul>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('dentists')\\\"><a>Dentistas</a></li>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('patients')\\\"><a>Pacientes</a></li>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('pharmacies')\\\"><a>Farmácias</a></li>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('pharmacists')\\\"><a>Farmacêuticos</a></li>\\n            </ul>\\n          </li>\\n\\n          <li>\\n            <a (click)=\\\"changeRoute('prescribers')\\\">\\n              <i class=\\\"fas fa-user\\\"></i>\\n              Atividade dos Prescritores\\n            </a>\\n          </li>\\n\\n          <li>\\n            <a (click)=\\\"changeRoute('prescriptions')\\\">\\n              <i class=\\\"fa fa-file-medical\\\"></i>\\n              Prescrições\\n            </a>\\n            <ul>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('attestations')\\\"><a>Atestados</a></li>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('exams')\\\"><a>Exames</a></li>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('orientations')\\\"><a>Outros documentos</a></li>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('retentions')\\\"><a>Retenções</a></li>\\n            </ul>\\n          </li>\\n\\n          <li>\\n            <a (click)=\\\"changeRoute('specialties')\\\">\\n              <i class=\\\"fas fa-file-alt\\\"></i>\\n              Especialidades\\n            </a>\\n            <ul>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('medicaments')\\\"><a>Medicamentos</a></li>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('additional-features')\\\">\\n                <a>Funcionalidades adicionais</a>\\n              </li>\\n            </ul>\\n          </li>\\n\\n          <li>\\n            <a (click)=\\\"changeRoute('logs')\\\">\\n              <i class=\\\"fa fa-business\\\"></i>\\n              QR Code Logs\\n            </a>\\n            <ul>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('logs')\\\"><a>Todos</a></li>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('logs', { groupBy: 'date' })\\\"><a>Por dia</a></li>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('logs', { groupBy: 'month' })\\\"><a>Por mês</a></li>\\n              <li class=\\\"subitem\\\" (click)=\\\"changeRoute('logs', { groupBy: 'prescription' })\\\">\\n                <a>Por prescrição</a>\\n              </li>\\n            </ul>\\n          </li>\\n\\n          <li>\\n            <a (click)=\\\"changeRoute('unsubscribe-user')\\\">\\n              <i class=\\\"ml-1 mr-3\\\" nz-icon nzType=\\\"user-delete\\\" nzTheme=\\\"outline\\\"></i>\\n              Descadastrar usuário\\n            </a>\\n          </li>\\n        </ng-container>\\n      </ul>\\n    </div>\\n    <div class=\\\"versions\\\">\\n      <div>\\n        <span class=\\\"m-2\\\">F: {{ frontendVersion }}</span>\\n        <span class=\\\"m-2\\\">B: {{ backendVersion$ | async }}</span>\\n      </div>\\n    </div>\\n  </nav>\\n</ng-template>\\n\\n<div id=\\\"siderbar-menu-blur\\\"></div>\\n\";","import { DOCUMENT } from '@angular/common';\nimport { Component, Inject, OnInit, Renderer2 } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { CoreService } from '@app/core/services/core.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { PharmacistService } from '@app/modules/pharmacist/services/pharmacist.service';\nimport { ModalSearchComponent } from '@app/shared/modals/modal-search/modal-search.component';\nimport { AdditionalFeatureAccept } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { ProfessionalType } from '@app/shared/models/professional-type.enum';\nimport { StateService } from '@app/shared/services/state.service';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { IconMenuComponent } from '../icon-menu/icon-menu.component';\nimport { Permission } from './../../models/permission.enum';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-sidebar-menu',\n  templateUrl: './sidebar-menu.component.html',\n  styleUrls: ['./sidebar-menu.component.scss']\n})\nexport class SidebarMenuComponent implements OnInit {\n  modalRef: BsModalRef;\n  visible = false;\n  userId: string;\n  userType: string;\n  completeUser: any;\n  functionalities = [];\n  Permission = Permission;\n  backendVersion$: Observable<string>;\n\n  constructor(\n    @Inject(DOCUMENT) private document: Document,\n    private renderer: Renderer2,\n    private router: Router,\n    private modalService: BsModalService,\n    public authService: AuthService,\n    private pharmacistService: PharmacistService,\n    private coreService: CoreService,\n    private stateService: StateService,\n    private healthProfessionalService: HealthProfessionalService\n  ) {\n    this.backendVersion$ = this.coreService.getBackendVersion();\n    this.router.events.subscribe(() => this.closeMenu());\n  }\n\n  ngOnInit() {\n    this.getCompleteUser(this.user);\n    this.userId = localStorage.getItem('userId');\n    this.userType = localStorage.getItem('userType');\n    document.getElementById('siderbar-menu-blur').addEventListener('click', () => this.closeMenu());\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  private getCompleteUser(user) {\n    if (user.userType === 'pharmacist') {\n      this.getPharmacistData();\n    } else if (user.userType === 'healthProfessional') {\n      this.getHealthProfessionalData();\n    }\n  }\n  @nativeAsync\n  async getPharmacistData() {\n    this.completeUser = await this.pharmacistService.getPharmacistByUserId(this.user._id).toPromise();\n  }\n  @nativeAsync\n  async getHealthProfessionalData() {\n    this.completeUser = await this.healthProfessionalService\n      .getHealthProfessional(this.user._id)\n      .toPromise();\n  }\n\n  get frontendVersion(): string {\n    return this.coreService.frontendVersion;\n  }\n\n  get hasFarmaRennovaFeature(): boolean {\n    return this.user && this.user.features.some(f => f.name === 'Farma Rennova');\n  }\n\n  get hasRennovaFeature(): boolean {\n    return this.user && this.user.features.some(f => f.name === 'Rennova');\n  }\n\n  get isVeterinarian(): boolean {\n    return this.completeUser && this.completeUser.professionalType == ProfessionalType.VETERINARIAN;\n  }\n\n  private closeMenu() {\n    const sidebarMenu = this.document.getElementById('siderbar-menu');\n    if (sidebarMenu) {\n      this.renderer.setStyle(sidebarMenu, 'left', '-330px');\n    }\n    const sidebarMenuBlur = this.document.getElementById('siderbar-menu-blur');\n    if (sidebarMenuBlur) {\n      this.renderer.setStyle(sidebarMenuBlur, 'left', '-100%');\n    }\n    IconMenuComponent.activeMenu = false;\n  }\n\n  close(): void {\n    this.visible = false;\n  }\n\n  changeRoute(route: string, queryParams: any) {\n    this.router.navigate(['/admin', route], { queryParams });\n  }\n\n  openSearch() {\n    this.modalRef = this.modalService.show(ModalSearchComponent, {\n      backdrop: 'static',\n      keyboard: false\n    });\n  }\n\n  hasAccessToManipulatedFunctionality() {\n    return false && this.user && this.user.features.find(f => f.name === 'Manipulados');\n  }\n\n  get hasCipFeature() {\n    const cipFeature = this.user && this.user.features.find(f => f.name === 'CIP');\n    return cipFeature && cipFeature.accept === AdditionalFeatureAccept.YES;\n  }\n\n  redirectDocumentNew(isRennova: boolean) {\n    this.stateService.data = { isRennova };\n    this.router.navigateByUrl('/document/new');\n  }\n}\n","export default \".sidebar {\\n  position: absolute;\\n  top: 80px;\\n  height: calc(100% - 80px);\\n  width: 326px;\\n  background-color: var(--bg-color-primary);\\n  z-index: 1000;\\n  left: -330px;\\n  transition: all 0.3s;\\n  border: 0;\\n  padding: 24px;\\n  font-size: 14px;\\n  line-height: 1.5;\\n  word-wrap: break-word;\\n}\\n\\n.sidebar.active {\\n  left: 0;\\n}\\n\\n#siderbar-menu-blur {\\n  position: absolute;\\n  top: 80px;\\n  height: calc(100% - 80px);\\n  width: 100%;\\n  z-index: 999;\\n  transition: all 0.3s;\\n  left: -100%;\\n  visibility: visible;\\n}\\n\\n#siderbar-menu-blur.active {\\n  left: 0;\\n  visibility: visible;\\n}\\n\\na:hover {\\n  color: var(--color-hover-item-menu) !important;\\n}\\n\\n.submenu {\\n  color: #ffffff;\\n}\\n\\n.inner-menu .menu a .fas {\\n  margin-right: 10px !important;\\n}\\n\\n.menu .list-unstyled {\\n  padding-top: 20px !important;\\n  padding-bottom: 20px !important;\\n}\\n\\n.inner-menu {\\n  display: flex;\\n  flex-direction: column;\\n  height: 50%;\\n}\\n\\n.inner-menu .menu-icon {\\n  align-self: flex-end;\\n  margin: 20px 0;\\n}\\n\\n.inner-menu .menu-icon .fa {\\n  font-size: 20px;\\n  color: white;\\n}\\n\\n.inner-menu .menu li {\\n  padding: 20px 0;\\n}\\n\\n.inner-menu .menu a {\\n  color: white;\\n  font-family: \\\"problack\\\";\\n  font-size: 18px;\\n  text-transform: uppercase;\\n}\\n\\n.inner-menu .menu a:focus {\\n  text-decoration: none;\\n}\\n\\n.inner-menu .menu a .fa {\\n  margin-right: 10px;\\n}\\n\\n.versions {\\n  height: 50%;\\n  display: flex;\\n  flex-direction: column;\\n  justify-content: flex-end;\\n}\\n\\n.versions div {\\n  color: var(--color-white);\\n}\";","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ThemeModule, themeMrd, themeReceitaDigital } from '@app/theme';\r\nimport { environment } from '@env/environment';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { AlternativeNavbarCipComponent } from './alternative-navbar-cip/alternative-navbar-cip.component';\r\nimport { AlternativeNavbarComponent } from './alternative-navbar/alternative-navbar.component';\r\nimport { FooterMobileComponent } from './footer/footer-mobile/footer-mobile.component';\r\nimport { FooterComponent } from './footer/footer.component';\r\nimport { IconMenuComponent } from './icon-menu/icon-menu.component';\r\nimport { NavbarComponent } from './navbar/navbar.component';\r\nimport { SidebarMenuComponent } from './sidebar-menu/sidebar-menu.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    RouterModule,\r\n    FormsModule,\r\n    ThemeModule.forRoot({\r\n      themes: [themeReceitaDigital, themeMrd],\r\n      active: environment.template\r\n    }),\r\n    NgxMaskModule.forRoot()\r\n  ],\r\n  declarations: [\r\n    NavbarComponent,\r\n    FooterComponent,\r\n    FooterMobileComponent,\r\n    AlternativeNavbarComponent,\r\n    AlternativeNavbarCipComponent,\r\n    IconMenuComponent,\r\n    SidebarMenuComponent\r\n  ],\r\n  exports: [NavbarComponent, FooterComponent, AlternativeNavbarComponent, SidebarMenuComponent]\r\n})\r\nexport class LayoutModule {}\r\n","import { CommonModule, registerLocaleData } from '@angular/common';\r\nimport pt from '@angular/common/locales/pt';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ModalSearchComponent } from '@app/shared/modals/modal-search/modal-search.component';\r\nimport { PipesModule } from '@app/shared/pipes';\r\nimport { ThemeModule, themeMrd, themeReceitaDigital } from '@app/theme';\r\nimport { environment } from '@env/environment';\r\nimport { InViewportModule } from 'ng-in-viewport';\r\nimport { NZ_I18N, pt_BR } from 'ng-zorro-antd/i18n';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { ComponentsModule } from './components/components.module';\r\nimport { DirectivesModule } from './directives/directives.module';\r\nimport { LayoutModule } from './layout/layout.module';\r\nimport { ModalAddProductRennovaComponent } from './modals/modal-add-product-rennova/modal-add-product-rennova.component';\r\nimport { ModalBuyerDataComponent } from './modals/modal-buyer-data/modal-buyer-data.component';\r\nimport { ModalNewPortalDigitalSignaturesComponent } from './modals/modal-new-portal-digital-signatures/modal-new-portal-digital-signatures.component';\r\nimport { NgxLoadingModule } from 'ngx-loading';\r\nimport { ModalProtocolsLibraryComponent } from './modals/modal-protocols-library/modal-protocols-library.component';\r\n\r\nregisterLocaleData(pt);\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    RouterModule,\r\n    LayoutModule,\r\n    InViewportModule,\r\n    DirectivesModule,\r\n    PipesModule,\r\n    ComponentsModule,\r\n    ThemeModule.forRoot({\r\n      themes: [themeReceitaDigital, themeMrd],\r\n      active: environment.template\r\n    }),\r\n    NgxMaskModule.forRoot(),\r\n    NgxLoadingModule.forRoot({})\r\n  ],\r\n  exports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    RouterModule,\r\n    LayoutModule,\r\n    InViewportModule,\r\n    DirectivesModule,\r\n    PipesModule,\r\n    ComponentsModule,\r\n    ThemeModule,\r\n    NgxMaskModule,\r\n    NgxLoadingModule\r\n  ],\r\n  providers: [{ provide: NZ_I18N, useValue: pt_BR }],\r\n  declarations: [\r\n    ModalAddProductRennovaComponent,\r\n    ModalSearchComponent,\r\n    ModalBuyerDataComponent,\r\n    ModalNewPortalDigitalSignaturesComponent,\r\n    ModalProtocolsLibraryComponent\r\n  ]\r\n})\r\nexport class SharedModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '@app/core/services/auth.service';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\nimport { ThemeService } from '@app/theme';\r\nimport { markFormGroup } from '@app/utils/markFormGroup';\r\nimport { of } from 'rxjs';\r\nimport { switchMap, take } from 'rxjs/operators';\r\n\r\n@Component({\r\n  selector: 'app-login',\r\n  templateUrl: './login.component.html',\r\n  styleUrls: ['./login.component.scss']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n  loading: boolean;\r\n\r\n  form = new FormGroup({\r\n    email: new FormControl('', Validators.compose([Validators.email, Validators.required])),\r\n    password: new FormControl('', Validators.required)\r\n  });\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private authService: AuthService,\r\n    private notification: AppToastService,\r\n    private themeService: ThemeService\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.form.get('email').valueChanges.subscribe(email => {\r\n      this.form.get('email').setValue(email && email.toLowerCase(), { emitEvent: false });\r\n    });\r\n  }\r\n\r\n  login() {\r\n    markFormGroup(this.form);\r\n    if (this.form.valid) {\r\n      this.loading = true;\r\n      this.authService\r\n        .login(this.form.value)\r\n        .pipe(\r\n          switchMap(_ => of(this.authService.user())),\r\n          take(1)\r\n        )\r\n        .subscribe(\r\n          user => {\r\n            this.loading = false;\r\n            if (user.userType === 'admin') {\r\n              window.location.href = '/admin';\r\n            } else {\r\n              window.location.href = '/dashboard';\r\n            }\r\n          },\r\n          err => {\r\n            if (err.status === 400 || err.status === 401 || err.status === 429) {\r\n              this.notification.notify('warning', 'Avisos', err.error.message);\r\n            } else {\r\n              this.notification.notify('warning', 'Aviso', 'Erro interno');\r\n            }\r\n            this.loading = false;\r\n          }\r\n        );\r\n    }\r\n  }\r\n\r\n  isThemeActiveReceitaDigital() {\r\n    const active = this.themeService.getActiveTheme();\r\n    return active.name === 'theme-receita-digital';\r\n  }\r\n}\r\n","export default \"<section class=\\\"section-hero header\\\" theme>\\r\\n  <div class=\\\"container d-flex align-items-center justify-content-center flex-column\\\">\\r\\n    <a routerLink=\\\"/\\\" class=\\\"brand-bg\\\">\\r\\n      <img\\r\\n        [ngStyle]=\\\"\\r\\n          isThemeActiveReceitaDigital()\\r\\n            ? {\\r\\n                position: 'relative',\\r\\n                top: '-12px'\\r\\n              }\\r\\n            : { position: 'relative', top: '-48px' }\\r\\n        \\\"\\r\\n        [src]=\\\"\\r\\n          isThemeActiveReceitaDigital() ? 'assets/img/logo-01.jpg' : 'assets/img/mrd/logo-com-texto.png'\\r\\n        \\\"\\r\\n        class=\\\"img-fluid\\\"\\r\\n        alt=\\\"Logo Receita Digital\\\"\\r\\n      />\\r\\n    </a>\\r\\n    <h1 class=\\\"mb-5 mt-5\\\">\\r\\n      Login\\r\\n    </h1>\\r\\n  </div>\\r\\n</section>\\r\\n<section class=\\\"section container d-flex justify-content-center align-items-center\\\" theme>\\r\\n  <div class=\\\"w-46 ml-5 d-flex flex-column\\\">\\r\\n    <form nz-form [formGroup]=\\\"form\\\" (ngSubmit)=\\\"login()\\\">\\r\\n      <div class=\\\"row\\\">\\r\\n        <div class=\\\"col-10\\\">\\r\\n          <nz-form-item class=\\\"mb-4\\\" *ngIf=\\\"form.get('email') as email\\\">\\r\\n            <nz-form-label nzFor=\\\"email\\\" class=\\\"label-control\\\">E-mail</nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input\\r\\n                nz-input\\r\\n                id=\\\"email\\\"\\r\\n                type=\\\"email\\\"\\r\\n                placeholder=\\\"usuário@email.com\\\"\\r\\n                formControlName=\\\"email\\\"\\r\\n                class=\\\"label-control\\\"\\r\\n                style=\\\"text-transform: lowercase;\\\"\\r\\n                (keydown.space)=\\\"$event.preventDefault()\\\"\\r\\n              />\\r\\n              <nz-form-explain *ngIf=\\\"email.dirty && email.errors\\\">\\r\\n                <ng-container *ngIf=\\\"email.hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor digite seu e-mail.\\r\\n                </ng-container>\\r\\n                <ng-container *ngIf=\\\"!email.hasError('required') && email.hasError('email')\\\">\\r\\n                  E-mail inválido, por favor digite um e-mail válido.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n      </div>\\r\\n      <div class=\\\"row\\\">\\r\\n        <div class=\\\"col-10\\\">\\r\\n          <nz-form-item class=\\\"mb-4\\\">\\r\\n            <nz-form-label nzFor=\\\"senha\\\">Senha</nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <app-input-password\\r\\n                placeholder=\\\"Digite a senha\\\"\\r\\n                formControlName=\\\"password\\\"\\r\\n              ></app-input-password>\\r\\n              <nz-form-explain *ngIf=\\\"form.get('password').dirty && form.get('password').errors\\\">\\r\\n                <ng-container *ngIf=\\\"form.get('password').hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor digite uma senha.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-2\\\">\\r\\n          <nz-form-item class=\\\"mb-4\\\">\\r\\n            <nz-form-label>&nbsp;</nz-form-label>\\r\\n            <nz-form-control>\\r\\n              <button class=\\\"btn btn-success\\\"><i class=\\\"fa fa-arrow-right\\\"></i></button>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n      </div>\\r\\n    </form>\\r\\n    <a routerLink=\\\"/entry/reset-password\\\" class=\\\"mb-4\\\">Esqueceu a senha?</a>\\r\\n    <a *ngIf=\\\"isThemeActiveReceitaDigital()\\\" routerLink=\\\"/entry/account-type\\\"\\r\\n      >Ainda não possui uma conta?</a\\r\\n    >\\r\\n  </div>\\r\\n</section>\\r\\n\\r\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\r\\n\";","export default \".header {\\n  background-color: var(--background-header);\\n}\\n\\n::ng-deep .cdk-global-scrollblock {\\n  position: static;\\n  overflow: hidden !important;\\n}\\n\\n.btn {\\n  padding: 0;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  width: 44px;\\n  height: 44px;\\n  line-height: 0;\\n}\\n\\na {\\n  color: var(--color-title);\\n}\";","export default \"<div class=\\\"page-register\\\">\\n  <section class=\\\"section-hero section-header\\\" theme>\\n    <div class=\\\"container\\\">\\n      <a routerLink=\\\"/\\\" class=\\\"brand-bg\\\">\\n        <img\\n          [ngStyle]=\\\"\\n            isThemeActiveReceitaDigital()\\n              ? {\\n                  position: 'relative',\\n                  top: '-12px'\\n                }\\n              : { position: 'relative', top: '-48px' }\\n          \\\"\\n          [src]=\\\"\\n            isThemeActiveReceitaDigital()\\n              ? 'assets/img/logo-01.jpg'\\n              : 'assets/img/mrd/logo-com-texto.png'\\n          \\\"\\n          class=\\\"img-fluid\\\"\\n          alt=\\\"Logo Receita Digital\\\"\\n        />\\n      </a>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"col-md-10\\\">\\n          <h1>\\n            Cadastre-se <br />\\n            em nossa plataforma\\n          </h1>\\n        </div>\\n      </div>\\n    </div>\\n  </section>\\n  <section class=\\\"register-form\\\">\\n    <div class=\\\"container pt-4\\\" [ngSwitch]=\\\"routerParam\\\">\\n      <app-health-professional-form\\n        *ngIf=\\\"routerParam === 'dentist' || routerParam === 'doctor' || routerParam === 'veterinarian'\\\"\\n        [professionalType]=\\\"routerParam\\\"\\n        (formChange)=\\\"form = $event\\\"\\n      ></app-health-professional-form>\\n\\n      <app-patient-form *ngSwitchCase=\\\"'patient'\\\" (formChange)=\\\"form = $event\\\"></app-patient-form>\\n\\n      <app-pharmacy-form *ngSwitchCase=\\\"'pharmacy'\\\" (formChange)=\\\"form = $event\\\"></app-pharmacy-form>\\n\\n      <div class=\\\"terms-area\\\" *ngIf=\\\"viewBtnSaveAndTermsDisclaimer\\\">\\n        <label\\n          nz-checkbox\\n          class=\\\"terms-disclaimer\\\"\\n          [(ngModel)]=\\\"isCheckedTerms\\\"\\n          *ngIf=\\\"isThemeActiveReceitaDigital(); else mrd\\\"\\n        >\\n          Ao clicar em Salvar, você concorda com os\\n          <button class=\\\"terms-btn\\\" (click)=\\\"redirect()\\\" theme>\\n            Termos de Uso\\n          </button>\\n          e\\n          <button class=\\\"terms-btn\\\" (click)=\\\"redirect(true)\\\" theme>\\n            Política de Privacidade\\n          </button>\\n          do Receita Digital.\\n        </label>\\n        <ng-template #mrd>\\n          <label nz-checkbox class=\\\"terms-disclaimer\\\" [(ngModel)]=\\\"isCheckedTerms\\\">\\n            Ao clicar em Salvar, você concorda com os\\n            <button class=\\\"terms-btn\\\" (click)=\\\"redirect()\\\" theme>\\n              Termos de Uso</button\\n            >e<button class=\\\"terms-btn\\\" (click)=\\\"openConditions()\\\" theme>Política de Privacidade</button\\n            >do Meu Receituário Digital/Receita Digital.\\n          </label>\\n        </ng-template>\\n      </div>\\n    </div>\\n  </section>\\n</div>\\n<div class=\\\"footer-save d-flex align-items-center fixed-bottom justify-content-between mt-3\\\" theme>\\n  <div class=\\\"ml-2 flex-fill\\\">\\n    <div\\n      [ngStyle]=\\\"{\\n        'font-size': isMobile && viewBtnSaveAndTermsDisclaimer ? '11px' : '14px'\\n      }\\\"\\n    >\\n      <div *ngIf=\\\"isThemeActiveReceitaDigital()\\\">\\n        <div class=\\\"d-flex flex-fill justify-content-end\\\">\\n          <a class=\\\"mr-3 helpContainer\\\" href=\\\"https://ajuda.receitadigital.com\\\"\\n            ><i class=\\\"fa fa-comments mr-1\\\"></i>Fale Conosco.</a\\n          >\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <div *ngIf=\\\"!isMobile\\\"></div>\\n  <button\\n    *ngIf=\\\"viewBtnSaveAndTermsDisclaimer\\\"\\n    type=\\\"button\\\"\\n    class=\\\"btn footer-save-btn\\\"\\n    (click)=\\\"submit()\\\"\\n  >\\n    Salvar <i class=\\\"fa fa-arrow-right\\\"></i>\\n  </button>\\n</div>\\n\\n<ng-template #contentModalErrorCfmValidate>\\n  <div class=\\\"container custom-container\\\">\\n    <span class=\\\"title text-modal\\\" theme>Cadastro não finalizado!</span>\\n    <h5 style=\\\"color: red; font-weight: bold;\\\">Erro ao validar dados médico na base do CFM.</h5>\\n    <p>Não foi possivel localizar seu cadastro médico com o CPF e CRM informados</p>\\n    <p>Verifique e digite novamente ou entre em contato com nosso atendimento para esclarecimentos</p>\\n  </div>\\n</ng-template>\\n\\n<ng-template #contentModalErrorCfmConsult>\\n  <div class=\\\"container custom-container\\\">\\n    <span class=\\\"title text-modal\\\" theme>Cadastro não finalizado!</span>\\n    <h5 style=\\\"color: red; font-weight: bold;\\\">Erro ao validar dados médico na base do CFM.</h5>\\n    <p>O status do CRM informado é invalido e nao permite cadastramento.</p>\\n    <p>Verifique e digite novamente ou entre em contato com nosso atendimento para esclarecimentos</p>\\n  </div>\\n</ng-template>\\n\\n<app-modal-terms-and-conditions> </app-modal-terms-and-conditions>\\n\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n<app-dialog-modal></app-dialog-modal>\\n\";","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-modal-terms-and-conditions',\r\n  templateUrl: './modal-terms-and-conditions.component.html',\r\n  styleUrls: ['./modal-terms-and-conditions.component.scss']\r\n})\r\nexport class ModalTermsAndConditionsComponent implements OnInit {\r\n  @Input()\r\n  isVisible = false;\r\n  constructor() {}\r\n\r\n  ngOnInit() {}\r\n\r\n  openModal() {\r\n    this.isVisible = true;\r\n  }\r\n\r\n  close() {\r\n    this.isVisible = false;\r\n  }\r\n}\r\n","export default \"<div class=\\\"modal\\\" *ngIf=\\\"isVisible\\\">\\r\\n  <div class=\\\"modal-content\\\">\\r\\n    <div class=\\\"header\\\">\\r\\n      <span>TERMO DE USO E POLÍTICA DE PRIVACIDADE – RECEITA DIGITAL</span>\\r\\n      <nz-divider nzOrientation=\\\"left\\\"></nz-divider>\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"modal-body\\\">\\r\\n      <app-terms-and-conditions></app-terms-and-conditions>\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"modal-footer\\\">\\r\\n      <button class=\\\"btn-ok\\\" nz-button (click)=\\\"close()\\\" theme>\\r\\n        Ok\\r\\n      </button>\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\\r\\n\";","export default \".modal {\\n  display: block;\\n  position: fixed;\\n  z-index: 1;\\n  left: 0;\\n  top: 0;\\n  width: 100%;\\n  height: 100%;\\n  background-color: black;\\n  background-color: rgba(0, 0, 0, 0.4);\\n}\\n\\n.modal-content {\\n  background-color: #fefefe;\\n  margin: 5% auto;\\n  border-radius: 10px;\\n  width: 800px;\\n  text-align: center;\\n  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);\\n  max-height: 75%;\\n}\\n\\n.modal-body {\\n  padding: 50px;\\n  scroll-padding-top: 20px;\\n  margin-bottom: 25px;\\n  overflow: auto;\\n}\\n\\n.header {\\n  padding-top: 25px;\\n  padding-bottom: 25px;\\n  text-align: center;\\n}\\n\\n.modal-footer {\\n  border-radius: 0 0 10px 10px;\\n  border-top: 0;\\n}\\n\\n.btn-ok {\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n  color: var(--on-bg-color-primary);\\n}\\n\\n.btn-ok:hover,\\n.btn-ok:focus {\\n  background-color: var(--bg-color-secondary);\\n  border-color: var(--bg-color-secondary);\\n  color: var(--on-bg-color-secondary);\\n}\";","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, HostListener, OnInit, ViewChild, TemplateRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CoreService } from '@app/core/services/core.service';\nimport { DialogModalComponent } from '@app/shared/components/dialog-modal/dialog-modal.component';\nimport { CpfCnpjApiErrors } from '@app/shared/models/cpf-cnpj-api-errors.enum';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BigboostService } from '@app/shared/services/bigboost.service';\nimport { ThemeService } from '@app/theme';\nimport { logInvalidForm } from '@app/utils/logInvalidForm';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, take } from 'rxjs/operators';\nimport { RegisterService } from '../../services/register.service';\nimport { ModalTermsAndConditionsComponent } from './modal-terms-and-conditions/modal-terms-and-conditions.component';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { NzModalService } from 'ng-zorro-antd';\nimport { HealthProfessional } from '@app/shared/models';\n\n@Component({\n  selector: 'app-register',\n  templateUrl: './register.component.html',\n  styleUrls: ['./register.component.scss']\n})\nexport class RegisterComponent implements OnInit {\n  actualDate = new Date();\n  isDisabledButton = true;\n  isCheckedTerms = false;\n  isVisible = false;\n  loading = false;\n\n  form: FormGroup;\n  routerParam: string;\n  backendVersion$: Observable<string>;\n\n  @ViewChild(DialogModalComponent, { static: true })\n  dialogModal: DialogModalComponent;\n\n  @ViewChild('contentModalErrorCfmValidate', { static: true })\n  contentModalErrorCfmValidate: TemplateRef<{}>;\n\n  @ViewChild('contentModalErrorCfmConsult', { static: true })\n  contentModalErrorCfmConsult: TemplateRef<{}>;\n\n  @ViewChild(ModalTermsAndConditionsComponent, { static: true })\n  modalTermsAndConditionsComponent: ModalTermsAndConditionsComponent;\n\n  isMobile = false;\n\n  @HostListener('window:resize', ['$event'])\n  onResize(event) {\n    this.isMobile = this.coreService.isViewPortMobile();\n  }\n\n  constructor(\n    private router: Router,\n    private _route: ActivatedRoute,\n    private registerService: RegisterService,\n    private notification: AppToastService,\n    private bigboostService: BigboostService,\n    private themeService: ThemeService,\n    private coreService: CoreService,\n    private modalService: NzModalService\n  ) {\n    this.backendVersion$ = this.coreService.getBackendVersion();\n  }\n\n  ngOnInit(): void {\n    this.routerParam = this._route.snapshot.paramMap.get('type');\n  }\n\n  get verifiedCpf() {\n    return !!this.form && this.form.value.verifiedCpf;\n  }\n\n  get verified() {\n    return !!this.form && this.form.value.verified;\n  }\n\n  get isPharmacyPublic() {\n    return this.routerParam === 'pharmacy' && !!this.form && this.form.value.public_pharmacy;\n  }\n\n  get frontendVersion(): string {\n    return this.coreService.frontendVersion;\n  }\n\n  get isRegisterDoctor() {\n    return this.routerParam === 'doctor';\n  }\n\n  get viewBtnSaveAndTermsDisclaimer(): boolean {\n    return (\n      ((this.routerParam === 'patient' ||\n        this.routerParam === 'doctor' ||\n        this.routerParam === 'dentist' ||\n        this.routerParam === 'veterinarian') &&\n        this.verifiedCpf) ||\n      (this.routerParam === 'pharmacy' && this.verified)\n    );\n  }\n\n  handleError(err: HttpErrorResponse) {\n    console.error(err);\n    const message = err.error ? err.error.message : 'Houve um erro no cadastro';\n    return throwError(message);\n  }\n\n  openTermsAndConditionsModal() {\n    this.modalTermsAndConditionsComponent.openModal();\n  }\n\n  redirect(privacy?: boolean) {\n    let url;\n    if (this.routerParam === 'patient') {\n      url = this.router.createUrlTree(['policies', 'termspatient']);\n    }\n    if (this.routerParam === 'doctor') {\n      url = this.router.createUrlTree(['policies', 'termsdoctor']);\n    }\n    if (this.routerParam === 'dentist') {\n      url = this.router.createUrlTree(['policies', 'termsdentist']);\n    }\n    if (this.routerParam === 'veterinarian') {\n      url = this.router.createUrlTree(['policies', 'termsveterinary']);\n    }\n    if (this.routerParam === 'pharmacy') {\n      url = this.router.createUrlTree(['policies', 'termspharmacy']);\n    }\n    if (privacy) {\n      url = this.router.createUrlTree(['policies', 'privacypolicy']);\n    }\n    if (url) {\n      window.open(url.toString(), '_blank');\n    }\n  }\n\n  openTerms() {\n    window.open('assets/file/mrd_termos.pdf', '_blank');\n  }\n\n  openConditions() {\n    window.open('assets/file/mrd_politica.pdf', '_blank');\n  }\n\n  @nativeAsync\n  async isValidCpfCnpj(cpf, cnpj) {\n    try {\n      this.loading = true;\n      let consult: any;\n      let message = '';\n      if (cpf) {\n        consult = await this.bigboostService.consultCpf(cpf).toPromise();\n        message =\n          'A importação de dados do CPF está com instabilidade, preencha manualmente ou tente novamente mais tarde.';\n      } else {\n        consult = await this.bigboostService.consultCnpj(cnpj);\n        message =\n          'A importação de dados do CNPJ está com instabilidade, preencha manualmente ou tente novamente mais tarde.';\n      }\n      this.loading = false;\n\n      if (consult.status === 1) {\n        return true;\n      }\n      if (consult.status === -1 || consult.erroCodigo >= 1000) {\n        consult.erro = consult.erroCodigo >= 1000 ? consult.erro : message;\n        this.form.value.pendency = consult;\n        return true;\n      }\n      if (consult.status === 0 && consult.erroCodigo && consult.erroCodigo < 1000) {\n        if (Object.values(CpfCnpjApiErrors).includes(consult.erroCodigo)) {\n          this.notification.notify('warning', 'Aviso', consult.erro);\n          return false;\n        }\n      }\n      return false;\n    } catch (error) {\n      this.loading = false;\n    }\n  }\n\n  @nativeAsync\n  async submit() {\n    markFormGroup(this.form);\n    if (this.routerParam === 'pharmacy') {\n      this.markVerified();\n    }\n    this.loading = true;\n\n    const isHealthProfessional =\n      this.routerParam === 'doctor' ||\n      this.routerParam === 'dentist' ||\n      this.routerParam === 'veterinarian';\n\n    if (isHealthProfessional && this.form.value.specialties.length === 0) {\n      this.notification.notify('warning', 'Aviso', 'Você precisa escolher ao menos uma especialidade.');\n    } else if (this.form.invalid) {\n      logInvalidForm(this.form);\n      this.notification.notify('warning', 'Aviso', 'Confira os campos obrigatórios');\n    } else if (!this.isCheckedTerms) {\n      this.notification.notify(\n        'warning',\n        'Aviso',\n        'Para concluir o seu cadastro é necessário concordar com os Termo de Uso e Política de Privacidade da Receita Digital'\n      );\n    } else {\n      await this.register(this.form.getRawValue());\n    }\n    this.loading = false;\n  }\n\n  private markVerified() {\n    const controlVerified = this.form.get('verified');\n    if (controlVerified) {\n      controlVerified.setValue(true);\n    }\n  }\n\n  @nativeAsync\n  private async register(data: any) {\n    try {\n      const response = await this.registerService\n        .register(this.routerParam, data)\n        .pipe(take(1))\n        .toPromise();\n\n      if (this.isRegisterDoctor) {\n        const dadosProfissionais = response as HealthProfessional;\n        const title = dadosProfissionais.cfm.pendenteValidacao\n          ? 'Recebemos seu cadastro!'\n          : 'Cadastro realizado com sucesso!';\n        const subtitle = 'Acesse seu e-mail para ativar a conta e cadastrar sua senha!';\n        const textoComplemento = dadosProfissionais.cfm.pendenteValidacao\n          ? 'Seu cadastro será liberado após a validação dos dados pela nossa equipe (RES 2299/2021 CFM)'\n          : null;\n\n        this.dialogModal.createTplModal(title, subtitle, textoComplemento);\n      } else {\n        this.dialogModal.createTplModal(\n          'Cadastro realizado com sucesso.',\n          'Acesse seu e-mail para ativar a conta e cadastrar sua senha!'\n        );\n      }\n\n      this.router.navigate(['entry/login']);\n    } catch (httpError) {\n      this.loading = false;\n      const errMsg = httpError.error ? httpError.error.message : 'Houve um erro no cadastro';\n      const errCode = httpError.error ? httpError.error.errorCode : '';\n      if (errCode === 'ERROR_CRM_VALIDADO_INVALIDO') {\n        this.dialogModal.createTplModalContent(this.contentModalErrorCfmValidate);\n      } else if (errCode === 'ERROR_CRM_CONSULTADO_IRREGULAR') {\n        this.dialogModal.createTplModalContent(this.contentModalErrorCfmConsult);\n      } else {\n        this.notification.notify('error', 'Erro', errMsg);\n        if (this.routerParam === 'pharmacy') {\n          if (this.isPharmacyPublic) {\n            this.form.get('cnes').setErrors(null);\n          } else {\n            this.form.get('cnpj').setErrors(null);\n          }\n        } else {\n          this.form.get('cpf').setErrors(null);\n        }\n        this.form.get('email').setErrors(null);\n        if (errMsg === 'E-mail já cadastrado') {\n          this.form.get('email').setErrors({ alreadyExists: true });\n        } else if (errMsg === 'CPF já cadastrado') {\n          this.form.get('cpf').setErrors({ alreadyExists: true });\n        } else if (errMsg === 'CNES já cadastrado') {\n          this.form.get('cnes').setErrors({ alreadyExists: true });\n        } else if (errMsg === 'CNPJ já cadastrado') {\n          this.form.get('cnpj').setErrors({ alreadyExists: true });\n        }\n      }\n    }\n  }\n\n  isThemeActiveReceitaDigital() {\n    const active = this.themeService.getActiveTheme();\n    return active.name === 'theme-receita-digital';\n  }\n}\n","export default \".section-hero {\\n  height: 300px;\\n}\\n.section-hero h1 {\\n  margin-top: 2%;\\n}\\n.page-register {\\n  overflow-y: auto;\\n  height: calc(100vh - 3.125rem);\\n  padding-bottom: 1.25rem;\\n}\\n.register-form {\\n  flex: 1;\\n}\\n.register-form .terms-area .terms-disclaimer {\\n  margin-left: 0.25rem;\\n  font-size: 13px;\\n}\\n.register-form .terms-area .terms-btn {\\n  background: none;\\n  border: none;\\n  color: var(--bg-color-secondary);\\n  outline: none;\\n  font-weight: bold;\\n}\\n.loading-icon {\\n  margin-right: 8px;\\n}\\n.ok-btn {\\n  background-color: #00d3b2;\\n}\\n.footer-save {\\n  margin-top: 50px;\\n  background-color: var(--bg-footer);\\n}\\n.footer-save .copyright {\\n  color: white;\\n  padding-left: 20px;\\n  font-family: Arial, sans-serif;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n}\\n.footer-save .footer-save-btn {\\n  background-color: var(--bg-color-btn-save);\\n  color: var(--color-white) !important;\\n}\\n.custom-container {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  gap: 16px;\\n}\\n.custom-container .title {\\n  text-transform: none;\\n  font-size: 30pt;\\n  line-height: normal;\\n}\\n.custom-container p {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n}\\n.custom-container .text-modal {\\n  color: var(--bg-color-primary) !important;\\n}\";","export default \"<section class=\\\"section-hero section-header\\\" theme>\\n  <div class=\\\"container\\\">\\n    <a routerLink=\\\"/\\\" class=\\\"brand-bg\\\">\\n      <img\\n        [ngStyle]=\\\"\\n          isThemeActiveReceitaDigital\\n            ? {\\n                position: 'relative',\\n                top: '-12px'\\n              }\\n            : { position: 'relative', top: '-48px' }\\n        \\\"\\n        [src]=\\\"\\n          isThemeActiveReceitaDigital ? 'assets/img/logo-01.jpg' : 'assets/img/mrd/logo-com-texto.png'\\n        \\\"\\n        class=\\\"img-fluid\\\"\\n        alt=\\\"Logo Receita Digital\\\"\\n      />\\n    </a>\\n    <h1 class=\\\"mb-5 mt-5\\\">\\n      Escolha o tipo de conta que deseja criar\\n    </h1>\\n  </div>\\n</section>\\n<section class=\\\"section-form\\\">\\n  <div class=\\\"container pt-5\\\">\\n    <form nz-form [formGroup]=\\\"accountTypeForm\\\" (ngSubmit)=\\\"submitForm($event)\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"col-8 col-lg-4\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"account-select\\\" theme>Tipo de Conta</nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <nz-select\\n                id=\\\"account-select\\\"\\n                formControlName=\\\"account\\\"\\n                [nzPlaceHolder]=\\\"'Selecione o tipo de conta'\\\"\\n                nzDropdownClassName=\\\"account-select\\\"\\n                nzAllowClear\\n                theme\\n              >\\n                <nz-option nzValue=\\\"doctor\\\" nzLabel=\\\"Médico\\\"></nz-option>\\n                <nz-option nzValue=\\\"dentist\\\" nzLabel=\\\"Dentista\\\"></nz-option>\\n                <nz-option nzValue=\\\"veterinarian\\\" nzLabel=\\\"Veterinário\\\"></nz-option>\\n                <nz-option\\n                  nzValue=\\\"patient\\\"\\n                  nzLabel=\\\"Paciente\\\"\\n                  *ngIf=\\\"isThemeActiveReceitaDigital\\\"\\n                ></nz-option>\\n                <nz-option\\n                  nzValue=\\\"pharmacy\\\"\\n                  nzLabel=\\\"Farmácia\\\"\\n                  *ngIf=\\\"isThemeActiveReceitaDigital\\\"\\n                ></nz-option>\\n              </nz-select>\\n              <nz-form-explain\\n                *ngIf=\\\"accountTypeForm.get('account').dirty && accountTypeForm.get('account').errors\\\"\\n              >\\n                <ng-container *ngIf=\\\"accountTypeForm.get('account').hasError('required')\\\">\\n                  Campo Obrigatório, por favor selecione o tipo de conta.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"row justify-content-end\\\">\\n          <div class=\\\"col-4 col-lg-2 d-flex justify-content-end\\\">\\n            <button class=\\\"btn btn-circle btn-success\\\" theme><i class=\\\"fa fa-arrow-right\\\"></i></button>\\n          </div>\\n        </div>\\n      </div>\\n    </form>\\n  </div>\\n</section>\\n\";","import { Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { ThemeService } from '@app/theme';\nimport { environment } from '@env/environment';\n\n@Component({\n  selector: 'app-account-type',\n  templateUrl: './account-type.component.html',\n  styleUrls: ['./account-type.component.scss']\n})\nexport class AccountTypeComponent implements OnInit {\n  accountTypeForm: FormGroup = new FormGroup({\n    account: new FormControl(null, Validators.required)\n  });\n  constructor(private router: Router, private themeService: ThemeService) {}\n\n  ngOnInit() {\n    const maintenance = environment.maintenance;\n    if (maintenance) {\n      this.router.navigate([`/update`]);\n    }\n  }\n\n  submitForm($event): void {\n    $event.preventDefault();\n    const accountCtrl = this.accountTypeForm.get('account');\n    accountCtrl.markAsDirty();\n    accountCtrl.updateValueAndValidity();\n    if (this.accountTypeForm.valid) {\n      this.router.navigate(['/entry/register', accountCtrl.value]);\n    }\n  }\n\n  get isThemeActiveReceitaDigital() {\n    const active = this.themeService.getActiveTheme();\n    return active.name === 'theme-receita-digital';\n  }\n}\n","export default \".section-hero {\\n  height: 350px;\\n}\\n.section-hero h1 {\\n  margin-top: 8.4%;\\n}\\n.ant-row {\\n  min-height: 113.83px;\\n}\\n.ant-form-item {\\n  font-family: \\\"proregular\\\", sans-serif;\\n}\\n.ant-form-item-with-help {\\n  margin: 0 0 24px;\\n}\\n.btn-circle {\\n  width: 50px;\\n  height: 50px;\\n  line-height: 0;\\n  margin-top: 25px;\\n}\\n.section-form {\\n  padding-bottom: 80px;\\n  min-height: calc(100vh - 463px);\\n}\\n.btn-black2 {\\n  background-color: #363636;\\n  border-color: #363636;\\n  color: white;\\n  text-transform: none;\\n  min-width: 148px;\\n  box-shadow: none;\\n}\\n.mrd-logo {\\n  position: relative;\\n  top: -48px;\\n}\";","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-welcome',\r\n  templateUrl: './welcome.component.html',\r\n  styleUrls: ['./welcome.component.scss']\r\n})\r\nexport class WelcomeComponent implements OnInit {\r\n  constructor() {}\r\n\r\n  ngOnInit() {}\r\n}\r\n","export default \"<section class=\\\"section-hero bg-green\\\">\\r\\n  <div class=\\\"container\\\">\\r\\n    <div class=\\\"row justify-content-center\\\">\\r\\n      <a routerLink=\\\"/\\\" class=\\\"brand-bg\\\">\\r\\n        <img src=\\\"assets/img/logo-inline-alt.svg\\\" class=\\\"img-fluid\\\" alt=\\\"Logo Receita Digital\\\" />\\r\\n      </a>\\r\\n    </div>\\r\\n    <div class=\\\"row justify-content-center\\\">\\r\\n      <div class=\\\"hero d-flex justify-content-center flex-column align-items-center\\\">\\r\\n        <h1 class=\\\"text-center\\\">\\r\\n          Seja Bem-vindo <br />\\r\\n          ao Receita Digital\\r\\n        </h1>\\r\\n        <p class=\\\"text-primary\\\">Agora você já pode prescrever gratuitamente</p>\\r\\n        <p class=\\\"text-primary\\\">\\r\\n          Lembre-se de confirmar a sua conta <br />\\r\\n          através do link enviado por e-mail\\r\\n        </p>\\r\\n        <div class=\\\"hero-links\\\">\\r\\n          <a routerLink=\\\"/dashboard\\\" class=\\\"btn btn-primary\\\">Ir para o meu painel</a>\\r\\n          <a href=\\\"#\\\" class=\\\"btn btn-secondary\\\">Começar a prescrever</a>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n</section>\\r\\n\";","export default \".section-hero {\\n  min-height: calc(100vh - 50px);\\n}\\n\\n.hero {\\n  padding-top: 5rem;\\n  padding-bottom: 5rem;\\n}\\n\\n.hero p {\\n  font-family: \\\"prolight\\\", sans-serif;\\n  font-size: 25px;\\n}\\n\\n.hero p:nth-child(3) {\\n  margin-top: 1.2rem;\\n  margin-bottom: 3.2rem;\\n}\";","export default \"<section class=\\\"section-hero section-header\\\">\\r\\n  <div class=\\\"container d-flex align-items-center justify-content-center flex-column\\\">\\r\\n    <a routerLink=\\\"/\\\" class=\\\"brand-bg\\\">\\r\\n      <img\\r\\n        [ngStyle]=\\\"\\r\\n          isThemeActiveReceitaDigital()\\r\\n            ? {\\r\\n                position: 'relative',\\r\\n                top: '-12px'\\r\\n              }\\r\\n            : { position: 'relative', top: '-48px' }\\r\\n        \\\"\\r\\n        [src]=\\\"\\r\\n          isThemeActiveReceitaDigital() ? 'assets/img/logo-01.jpg' : 'assets/img/mrd/logo-com-texto.png'\\r\\n        \\\"\\r\\n        class=\\\"img-fluid\\\"\\r\\n        alt=\\\"Logo Receita Digital\\\"\\r\\n      />\\r\\n    </a>\\r\\n    <h1 class=\\\"mt-5\\\">\\r\\n      Recupere sua senha\\r\\n    </h1>\\r\\n  </div>\\r\\n  <div class=\\\"section-footer p-3 d-flex align-items-center justify-content-center\\\">\\r\\n    <h5>Digite o e-mail cadastrado para recuperar sua senha.</h5>\\r\\n  </div>\\r\\n</section>\\r\\n<section class=\\\"section container d-flex justify-content-center align-items-center\\\">\\r\\n  <div class=\\\"w-46 ml-5 d-flex flex-column\\\">\\r\\n    <form nz-form [formGroup]=\\\"form\\\">\\r\\n      <div class=\\\"row\\\">\\r\\n        <div class=\\\"col-md-11\\\">\\r\\n          <nz-form-item class=\\\"mb-4\\\">\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input nz-input type=\\\"email\\\" placeholder=\\\"E-mail\\\" formControlName=\\\"accountField\\\" />\\r\\n              <nz-form-explain *ngIf=\\\"form.get('accountField').dirty && form.get('accountField').errors\\\">\\r\\n                <ng-container>\\r\\n                  E-mail inválido, por favor digite um e-mail válido.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-md-11\\\">\\r\\n          <div class=\\\"row\\\">\\r\\n            <div class=\\\"col-sm-12 col-md-5 d-flex align-items-center\\\">\\r\\n              <button routerLink=\\\"/entry/\\\" class=\\\"btn btn-back\\\">Voltar</button>\\r\\n            </div>\\r\\n            <div class=\\\"col-sm-12 col-md-7 d-flex justify-content-end\\\">\\r\\n              <button (click)=\\\"sendEmail()\\\" class=\\\"btn btn-success\\\">Prosseguir</button>\\r\\n            </div>\\r\\n          </div>\\r\\n        </div>\\r\\n      </div>\\r\\n    </form>\\r\\n  </div>\\r\\n</section>\\r\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\r\\n\";","export default \".bg-black {\\n  background-color: #1e1e1e;\\n}\\n\\n.section-footer {\\n  height: 89px;\\n}\\n\\n.section-footer h5 {\\n  font-size: 25px;\\n  color: white;\\n  margin-bottom: 0;\\n}\\n\\n:host ::ng-deep .anticon-check-circle-fill {\\n  color: #1e1e1e;\\n}\\n\\n.btn-back {\\n  background-color: #f7f7f7;\\n  border: 1px solid #eee;\\n}\";","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { environment } from '@env/environment';\r\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\r\n\r\nexport const USER_URL = `user`;\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AccountService {\r\n  originHost: string;\r\n  constructor(private http: HttpClient) {}\r\n\r\n  sendEmail(email: string) {\r\n    return this.http.post<any>(`${environment.apiRoot}${USER_URL}/forgot-password`, {\r\n      email: email,\r\n      originHost: window.location.origin\r\n    });\r\n  }\r\n\r\n  checkToken(token: string) {\r\n    return this.http.get(`${environment.apiRoot}${USER_URL}/reset-password/${token}`);\r\n  }\r\n\r\n  @nativeAsync\r\n  async activateAccount(form: any) {\r\n    form.originHost = window.location.origin;\r\n    return await this.http.post(`${environment.apiRoot}${USER_URL}/activate-account`, form).toPromise();\r\n  }\r\n\r\n  changePassword(token: string, form: any) {\r\n    return this.http.post(`${environment.apiRoot}${USER_URL}/reset-password/${token}`, form);\r\n  }\r\n}\r\n","import { Component } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { ThemeService } from '@app/theme';\nimport { AccountService } from '../../services/account.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-forgot-password',\n  templateUrl: './reset-password.component.html',\n  styleUrls: ['./reset-password.component.scss']\n})\nexport class ResetPasswordComponent {\n  loading: boolean;\n\n  form = this.fb.group({\n    accountField: ['', Validators.compose([Validators.required, Validators.email])]\n  });\n\n  constructor(\n    private fb: FormBuilder,\n    private accountService: AccountService,\n    private notification: AppToastService,\n    private themeService: ThemeService\n  ) {}\n\n  @nativeAsync\n  async sendEmail() {\n    this.loading = true;\n    try {\n      const res = await this.accountService.sendEmail(this.form.value.accountField).toPromise();\n      this.notification.notify('info', res.message, null);\n    } catch (err) {\n      console.error(err);\n    }\n    this.loading = false;\n  }\n\n  isThemeActiveReceitaDigital() {\n    const active = this.themeService.getActiveTheme();\n    return active.name === 'theme-receita-digital';\n  }\n}\n","import { Component } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\nimport { ThemeService } from '@app/theme';\r\nimport { markFormGroup } from '@app/utils/markFormGroup';\r\nimport { AccountService } from '../../services/account.service';\r\n\r\n@Component({\r\n  selector: 'app-change-password',\r\n  templateUrl: './change-password.component.html',\r\n  styleUrls: ['./change-password.component.scss', '../reset-password/reset-password.component.scss']\r\n})\r\nexport class ChangePasswordComponent {\r\n  loading: boolean;\r\n  form = new FormGroup(\r\n    {\r\n      password: new FormControl('', [Validators.required, Validators.minLength(6)]),\r\n      confirmPassword: new FormControl('', Validators.required)\r\n    },\r\n    { validators: [this.checkPasswords] }\r\n  );\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private accountService: AccountService,\r\n    private notification: AppToastService,\r\n    private themeService: ThemeService\r\n  ) {}\r\n\r\n  checkPasswords(group: FormGroup) {\r\n    const password = group.get('password').value;\r\n    const confirmPassword = group.get('confirmPassword').value;\r\n    if (password !== confirmPassword) {\r\n      group.get('confirmPassword').setErrors({\r\n        mismatch: true,\r\n        required: !confirmPassword\r\n      });\r\n    }\r\n    return null;\r\n  }\r\n\r\n  async changePassword() {\r\n    markFormGroup(this.form);\r\n    if (this.form.valid) {\r\n      const url = window.location.href.split('/');\r\n      const token = url[url.length - 1];\r\n\r\n      try {\r\n        this.loading = true;\r\n        await this.accountService.checkToken(token).toPromise();\r\n        await this.accountService.changePassword(token, this.form.value).toPromise();\r\n        this.loading = false;\r\n        this.notification.notify('success', 'Senha atualizada com sucesso', null);\r\n        this.router.navigate([`/entry`]);\r\n      } catch (err) {\r\n        console.log(err);\r\n        this.loading = false;\r\n        if (err.error.message) {\r\n          this.notification.notify('error', 'Alerta', err.error.message);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  isThemeActiveReceitaDigital() {\r\n    const active = this.themeService.getActiveTheme();\r\n    return active.name === 'theme-receita-digital';\r\n  }\r\n}\r\n","export default \"<section class=\\\"section-hero section-header\\\" theme>\\r\\n  <div class=\\\"container d-flex align-items-center justify-content-center flex-column\\\">\\r\\n    <a routerLink=\\\"/\\\" class=\\\"brand-bg\\\">\\r\\n      <img\\r\\n        [ngStyle]=\\\"\\r\\n          isThemeActiveReceitaDigital()\\r\\n            ? {\\r\\n                position: 'relative',\\r\\n                top: '-12px'\\r\\n              }\\r\\n            : { position: 'relative', top: '-48px' }\\r\\n        \\\"\\r\\n        [src]=\\\"\\r\\n          isThemeActiveReceitaDigital() ? 'assets/img/logo-01.jpg' : 'assets/img/mrd/logo-com-texto.png'\\r\\n        \\\"\\r\\n        class=\\\"img-fluid\\\"\\r\\n        alt=\\\"Logo Receita Digital\\\"\\r\\n      />\\r\\n    </a>\\r\\n    <h1 class=\\\"mt-5\\\">\\r\\n      Defina sua nova senha\\r\\n    </h1>\\r\\n  </div>\\r\\n</section>\\r\\n<section class=\\\"section container d-flex justify-content-center align-items-center\\\" theme>\\r\\n  <div class=\\\"w-50 ml-5 d-flex flex-column\\\">\\r\\n    <p class=\\\"pr-3\\\">\\r\\n      Crie uma senha forte utilizando seis caracteres ou mais. Ela deve conter uma combinação de letras\\r\\n      maiúsculas e minúsculas, números e símbolos.\\r\\n    </p>\\r\\n    <form nz-form [formGroup]=\\\"form\\\">\\r\\n      <div class=\\\"row\\\">\\r\\n        <div class=\\\"col-md-11\\\">\\r\\n          <nz-form-item class=\\\"mb-4\\\">\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <app-input-password placeholder=\\\"Senha\\\" formControlName=\\\"password\\\"></app-input-password>\\r\\n              <nz-form-explain *ngIf=\\\"form.get('password').dirty && form.get('password').errors\\\">\\r\\n                <ng-container *ngIf=\\\"form.get('password').hasError('required')\\\">\\r\\n                  A senha é obrigatória.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n            <app-password-strength [password]=\\\"form.value.password\\\"></app-password-strength>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n        <div class=\\\"col-md-11\\\">\\r\\n          <nz-form-item class=\\\"mb-4\\\">\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <app-input-password\\r\\n                placeholder=\\\"Confirme sua senha\\\"\\r\\n                formControlName=\\\"confirmPassword\\\"\\r\\n              ></app-input-password>\\r\\n              <nz-form-explain\\r\\n                *ngIf=\\\"form.get('confirmPassword').dirty && form.get('confirmPassword').errors\\\"\\r\\n              >\\r\\n                <ng-container *ngIf=\\\"form.get('confirmPassword').hasError('required')\\\">\\r\\n                  A senha de confirmação é obrigatória.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n              <nz-form-explain\\r\\n                *ngIf=\\\"form.get('confirmPassword').dirty && form.get('confirmPassword').errors\\\"\\r\\n              >\\r\\n                <ng-container *ngIf=\\\"form.get('confirmPassword').hasError('mismatch')\\\">\\r\\n                  Senhas diferentes.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n        <div class=\\\"col-md-11 d-flex justify-content-end\\\">\\r\\n          <button (click)=\\\"changePassword()\\\" class=\\\"btn btn-ok\\\" [disabled]=\\\"!form.valid\\\">\\r\\n            SALVAR\\r\\n          </button>\\r\\n        </div>\\r\\n      </div>\\r\\n    </form>\\r\\n  </div>\\r\\n</section>\\r\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\r\\n\";","export default \"\";","export default \"<section class=\\\"section-hero header\\\" theme>\\r\\n  <div class=\\\"container d-flex align-items-center justify-content-center flex-column\\\">\\r\\n    <a routerLink=\\\"/\\\" class=\\\"brand-bg\\\">\\r\\n      <img\\r\\n        *ngIf=\\\"isThemeActiveReceitaDigital; else mrdLogo\\\"\\r\\n        src=\\\"assets/img/logo-01.jpg\\\"\\r\\n        alt=\\\"Logo Receita Digital\\\"\\r\\n        style=\\\"position: relative; top: -12px;\\\"\\r\\n      />\\r\\n\\r\\n      <ng-template #mrdLogo>\\r\\n        <img src=\\\"assets/img/mrd/logo-com-texto.png\\\" class=\\\"mrd-logo\\\" alt=\\\"Logo MRD\\\" />\\r\\n      </ng-template>\\r\\n    </a>\\r\\n    <h1 class=\\\"mb-5 mt-5\\\">\\r\\n      Defina uma senha para ativar sua conta\\r\\n    </h1>\\r\\n  </div>\\r\\n</section>\\r\\n<section class=\\\"section container d-flex justify-content-center align-items-center p-4\\\" theme>\\r\\n  <div class=\\\"d-flex flex-column form\\\">\\r\\n    <p class=\\\"pr-3\\\">\\r\\n      Crie uma senha forte utilizando seis caracteres ou mais. Ela deve conter uma combinação de letras\\r\\n      maiúsculas e minúsculas, números e símbolos.\\r\\n    </p>\\r\\n    <form nz-form [formGroup]=\\\"passwordForm\\\">\\r\\n      <div class=\\\"row\\\">\\r\\n        <div class=\\\"col-md-11\\\">\\r\\n          <nz-form-item class=\\\"mb-4\\\">\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <app-input-password placeholder=\\\"Senha\\\" formControlName=\\\"password\\\"></app-input-password>\\r\\n              <nz-form-explain\\r\\n                *ngIf=\\\"passwordForm.get('password').dirty && passwordForm.get('password').errors\\\"\\r\\n              >\\r\\n                <ng-container *ngIf=\\\"passwordForm.get('password').hasError('required')\\\">\\r\\n                  A senha é obrigatória.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n            <app-password-strength\\r\\n              [password]=\\\"passwordForm.value.password\\\"\\r\\n              (isStrong)=\\\"isPasswordStrong = $event\\\"\\r\\n            ></app-password-strength>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n        <div class=\\\"col-md-11\\\">\\r\\n          <nz-form-item class=\\\"mb-4\\\">\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <app-input-password\\r\\n                placeholder=\\\"Confirme sua senha\\\"\\r\\n                formControlName=\\\"confirmPassword\\\"\\r\\n              ></app-input-password>\\r\\n              <nz-form-explain\\r\\n                *ngIf=\\\"\\r\\n                  passwordForm.get('confirmPassword').dirty && passwordForm.get('confirmPassword').errors\\r\\n                \\\"\\r\\n              >\\r\\n                <ng-container *ngIf=\\\"passwordForm.get('confirmPassword').hasError('required')\\\">\\r\\n                  A senha de confirmação é obrigatória.\\r\\n                </ng-container>\\r\\n                <ng-container *ngIf=\\\"passwordForm.get('confirmPassword').hasError('notEqual')\\\">\\r\\n                  Senhas diferentes.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n        <div class=\\\"col-md-11 d-flex justify-content-end\\\">\\r\\n          <button (click)=\\\"activateAccount()\\\" class=\\\"btn btn-ok\\\" [disabled]=\\\"!passwordForm.valid\\\">\\r\\n            Ativar conta\\r\\n          </button>\\r\\n        </div>\\r\\n      </div>\\r\\n    </form>\\r\\n  </div>\\r\\n</section>\\r\\n\\r\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\r\\n<app-modal-activate-account></app-modal-activate-account>\\r\\n\";","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup, ValidationErrors, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { DialogModalComponent } from '@app/shared/components/dialog-modal/dialog-modal.component';\r\nimport { ModalActivateAccountComponent } from '@app/shared/components/modal-activate-account/modal-activate-account.component';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\nimport { ThemeService } from '@app/theme';\r\nimport { markFormGroup } from '@app/utils/markFormGroup';\r\nimport { AccountService } from '../../services/account.service';\r\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\r\n\r\n@Component({\r\n  selector: 'app-activate-account',\r\n  templateUrl: './activate-account.component.html',\r\n  styleUrls: ['./activate-account.component.scss']\r\n})\r\nexport class ActivateAccountComponent implements OnInit {\r\n  token: string;\r\n  loading: boolean;\r\n  userType: string;\r\n  passwordForm = new FormGroup({});\r\n  isPasswordStrong = false;\r\n\r\n  @ViewChild(ModalActivateAccountComponent, { static: true })\r\n  professionalModal: ModalActivateAccountComponent;\r\n\r\n  @ViewChild(DialogModalComponent, { static: true })\r\n  dialogModal: DialogModalComponent;\r\n\r\n  private validatePassword: ValidationErrors | null;\r\n\r\n  constructor(\r\n    private activatedRoute: ActivatedRoute,\r\n    private router: Router,\r\n    private accountService: AccountService,\r\n    private notification: AppToastService,\r\n    private themeService: ThemeService\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.validatePassword = (form: FormGroup) => {\r\n      const { password, confirmPassword } = form.value;\r\n      if (password !== confirmPassword) {\r\n        form.get('confirmPassword').setErrors({ ...form.get('confirmPassword').errors, notEqual: true });\r\n        return { notEqual: true };\r\n      } else {\r\n        form.get('confirmPassword').setErrors(null);\r\n      }\r\n\r\n      if (!this.isPasswordStrong) {\r\n        return { weakPassword: true };\r\n      }\r\n\r\n      return null;\r\n    };\r\n\r\n    this.passwordForm = new FormGroup(\r\n      {\r\n        password: new FormControl('', [Validators.required, Validators.minLength(6)]),\r\n        confirmPassword: new FormControl('', Validators.required)\r\n      },\r\n      this.validatePassword\r\n    );\r\n\r\n    this.activatedRoute.paramMap.subscribe(params => {\r\n      this.token = params.get('token');\r\n    });\r\n\r\n    this.activatedRoute.queryParams.subscribe(queryParams => {\r\n      if (queryParams.userType) {\r\n        this.userType = queryParams.userType;\r\n      }\r\n    });\r\n  }\r\n\r\n  @nativeAsync\r\n  async activateAccount() {\r\n    try {\r\n      markFormGroup(this.passwordForm);\r\n      if (this.passwordForm.valid) {\r\n        this.loading = true;\r\n        const token = this.token;\r\n        const form = { token: token, ...this.passwordForm.value };\r\n        await this.accountService.activateAccount(form);\r\n        this.loading = false;\r\n        this.notification.notify('success', 'Conta ativada com sucesso', null);\r\n        this.router.navigate([`/entry`]);\r\n      }\r\n    } catch (err) {\r\n      this.loading = false;\r\n      this.notification.notify('error', 'Aviso', err.error.message);\r\n    }\r\n  }\r\n\r\n  get isThemeActiveReceitaDigital() {\r\n    const active = this.themeService.getActiveTheme();\r\n    return active.name === 'theme-receita-digital';\r\n  }\r\n}\r\n","export default \".header {\\n  background-color: var(--background-header);\\n}\\n\\n.section-hero {\\n  height: 350px;\\n}\\n\\n.section-hero h1 {\\n  margin-top: 8.4%;\\n}\\n\\n.mrd-logo {\\n  position: relative;\\n  top: -48px;\\n}\\n\\n.btn {\\n  font-size: 12px;\\n}\\n\\n@media screen and (orientation: landscape) {\\n  .form {\\n    width: 50%;\\n  }\\n}\";","export default \"<section class=\\\"section-hero bg-green\\\">\\n  <div class=\\\"container d-flex align-items-center justify-content-center flex-column\\\">\\n    <a routerLink=\\\"/\\\" class=\\\"brand-bg\\\">\\n      <img src=\\\"assets/img/logo-01.png\\\" class=\\\"img-fluid\\\" alt=\\\"Logo Receita Digital\\\" />\\n    </a>\\n    <h1 class=\\\"mb-5 mt-5\\\">\\n      Farmácias\\n    </h1>\\n  </div>\\n</section>\\n<section class=\\\"section container d-flex justify-content-center align-items-center\\\" theme>\\n  <div>\\n    <h2 class=\\\"title\\\">\\n      Selecione uma farmácia para continuar.\\n    </h2>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"col-9\\\">\\n        <nz-select nzShowSearch nzPlaceHolder=\\\"Selecione uma farmácia\\\" [(ngModel)]=\\\"selectedPharmacy\\\">\\n          <nz-option\\n            *ngFor=\\\"let pharmacy of pharmacies\\\"\\n            [nzValue]=\\\"pharmacy\\\"\\n            [nzLabel]=\\\"pharmacy.businessName || pharmacy.business_name_entity\\\"\\n          ></nz-option>\\n        </nz-select>\\n      </div>\\n      <div class=\\\"col-3\\\">\\n        <button class=\\\"btn btn-success\\\" (click)=\\\"continue()\\\" [disabled]=\\\"!selectedPharmacy\\\">\\n          <i class=\\\"fa fa-arrow-right\\\"></i>\\n        </button>\\n      </div>\\n    </div>\\n  </div>\\n</section>\\n\";","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { PharmacistService } from '@app/modules/pharmacist/services/pharmacist.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { Pharmacy } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\n\n@Component({\n  selector: 'app-pharmacy-option',\n  templateUrl: './pharmacy-option.component.html',\n  styleUrls: ['./pharmacy-option.component.scss']\n})\nexport class PharmacyOptionComponent implements OnInit {\n  pharmacies: Pharmacy[] = [];\n  selectedPharmacy: any = null;\n  loading: boolean;\n\n  constructor(\n    private router: Router,\n    private authService: AuthService,\n    private pharmacistService: PharmacistService\n  ) {\n    const state = this.router.getCurrentNavigation().extras.state;\n    if (state) {\n      this.pharmacies = state.pharmacies;\n    } else {\n      const extraData = JSON.parse(localStorage.getItem('extra_data'));\n      if (extraData) {\n        window.location.href = '/dashboard';\n      }\n    }\n  }\n\n  @nativeAsync\n  async ngOnInit() {\n    if (!this.pharmacies) {\n      await this.getPharmacies(this.user);\n    }\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  @nativeAsync\n  async getPharmacies(user) {\n    this.loading = true;\n    const result = await this.pharmacistService.getPharmacies(user._id).toPromise();\n    this.loading = false;\n    if (result.length === 1) {\n      localStorage.setItem(\n        'extra_data',\n        JSON.stringify({ pharmacyUserId: result[0].userId, pharmacyId: result[0]._id })\n      );\n      window.location.href = '/dashboard';\n    } else {\n      this.pharmacies = result;\n    }\n  }\n\n  continue() {\n    localStorage.setItem(\n      'extra_data',\n      JSON.stringify({\n        pharmacyUserId: this.selectedPharmacy.userId,\n        pharmacyId: this.selectedPharmacy._id\n      })\n    );\n    window.location.href = '/dashboard';\n  }\n}\n","export default \"nz-select {\\n  margin-right: 8px;\\n  width: 400px;\\n}\";","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { LoginComponent } from './pages/login/login.component';\r\nimport { RegisterComponent } from './pages/register/register.component';\r\nimport { AccountTypeComponent } from './pages/register/account-type.component';\r\nimport { WelcomeComponent } from './pages/welcome/welcome.component';\r\nimport { ResetPasswordComponent } from './pages/reset-password/reset-password.component';\r\nimport { ChangePasswordComponent } from './pages/change-password/change-password.component';\r\nimport { ActivateAccountComponent } from './pages/activate-account/activate-account.component';\r\nimport { PharmacyOptionComponent } from './pages/pharmacy-option/pharmacy-option.component';\r\n\r\nconst routes: Routes = [\r\n  { path: '', pathMatch: 'full', redirectTo: 'login' },\r\n  { path: 'login', component: LoginComponent },\r\n  { path: 'pharmacy-options', component: PharmacyOptionComponent },\r\n  { path: 'account-type', component: AccountTypeComponent },\r\n  { path: 'register/:type', component: RegisterComponent },\r\n  { path: 'registration-complete', component: WelcomeComponent },\r\n  { path: 'reset-password', component: ResetPasswordComponent },\r\n  { path: 'reset-password/:token', component: ChangePasswordComponent },\r\n  { path: 'activate-account/:token', component: ActivateAccountComponent }\r\n];\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forChild(routes)],\r\n  exports: [RouterModule]\r\n})\r\nexport class EntryRoutingModule {}\r\n","import { animate, group, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { CoreService } from '@app/core/services/core.service';\r\nimport { ValidationService } from '@app/core/services/validation.service';\r\nimport { CepService } from '@app/modules/entry/services/cep.service';\r\nimport { ModalAddPatientComponent } from '@app/modules/patients/pages/modal-add-patient/modal-add-patient.component';\r\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\r\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\r\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\r\nimport { BrazilState } from '@app/shared/models';\r\nimport { DataBigboostConsult } from '@app/shared/models/paciente';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\nimport { BigboostService } from '@app/shared/services/bigboost.service';\r\nimport { environment } from '@env/environment';\r\nimport * as moment from 'moment';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { Observable } from 'rxjs';\r\n\r\ntype typeEntryPatient = 'HUMANO' | 'ANIMAL';\r\n\r\n@Component({\r\n  selector: 'app-patient-form',\r\n  templateUrl: './patient-form.component.html',\r\n  styleUrls: ['./patient-form.component.scss'],\r\n  animations: [\r\n    trigger('slideInOut', [\r\n      state('in', style({ height: '*', opacity: 0 })),\r\n      transition(':leave', [\r\n        style({ height: '*', opacity: 1 }),\r\n        group([animate(300, style({ height: 0 })), animate('400ms ease-in-out', style({ opacity: 0 }))])\r\n      ]),\r\n      transition(':enter', [\r\n        style({ height: 0, opacity: 0 }),\r\n        group([\r\n          animate(300, style({ height: '*' })),\r\n          animate('400ms ease-in-out', style({ opacity: 1 }))\r\n        ])\r\n      ])\r\n    ])\r\n  ]\r\n})\r\nexport class PatientFormComponent implements OnInit {\r\n  @Input() patient: DataBigboostConsult;\r\n  @Input() isRegisteredByPatient = true;\r\n  @Input() getForm: Observable<boolean>;\r\n  @Output() submit = new EventEmitter<FormGroup>();\r\n  @Output() formChange = new EventEmitter<FormGroup>();\r\n\r\n  isProduction = environment.production;\r\n  valueTypeEntryPatient: typeEntryPatient = 'HUMANO';\r\n  isMobile = false;\r\n\r\n  form = this.fb.group({\r\n    name: ['', [Validators.required, ValidationService.nomeValidator]],\r\n    fullname: ['', [Validators.required, ValidationService.nomeValidator]],\r\n    checkNoCpf: [false],\r\n    cpf: ['', [Validators.required, ValidationService.cpfValidator]],\r\n    sex: ['', Validators.required],\r\n    birthdate: ['', [Validators.required, ValidationService.dateValidator()]],\r\n    dateOfBirth: ['', [Validators.required, ValidationService.dateValidator({ format: 'YYYY-MM-DD' })]],\r\n    cellphone: ['', Validators.required],\r\n    telephone: [''],\r\n    email: ['', [Validators.required, Validators.email]],\r\n    membership: this.fb.group({\r\n      mothersName: ['']\r\n    }),\r\n    address: this.fb.group({\r\n      uf: ['', Validators.required],\r\n      city: ['', Validators.required],\r\n      complement: [''],\r\n      number: ['', Validators.required],\r\n      street: ['', Validators.required],\r\n      neighborhood: ['', Validators.required],\r\n      cep: ['', [Validators.required, ValidationService.cepValidator]]\r\n    }),\r\n    pendency: [null],\r\n    verifiedCpf: [false]\r\n  });\r\n\r\n  states: BrazilState[] = BrazilianStates;\r\n  loading = false;\r\n  consult: any;\r\n  private lastCpf: string;\r\n  private lastDateOfBirth: string;\r\n\r\n  constructor(\r\n    private fb: FormBuilder,\r\n    private cepService: CepService,\r\n    private modalService: BsModalService,\r\n    private notification: AppToastService,\r\n    private bigboostService: BigboostService,\r\n    private patientsService: PatientsService,\r\n    private coreService: CoreService\r\n  ) {\r\n    this.onResize();\r\n  }\r\n\r\n  @HostListener('window:resize')\r\n  onResize() {\r\n    this.isMobile = this.coreService.isViewPortMobile();\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.initForm();\r\n\r\n    if (this.patient) {\r\n      this.handleConsultCpf(this.patient);\r\n    }\r\n\r\n    this.formChange.emit(this.form);\r\n  }\r\n\r\n  private initForm() {\r\n    if (this.isRegisteredByPatient) {\r\n      this.form.addControl('identity', this.fb.control(''));\r\n      this.form.addControl(\r\n        'emailConfirmation',\r\n        this.fb.control('', Validators.compose([Validators.required, Validators.email]))\r\n      );\r\n      this.form.validator = ValidationService.emailMatch;\r\n\r\n      this.form.get('emailConfirmation').valueChanges.subscribe(email => {\r\n        this.form.get('emailConfirmation').setValue(email && email.toLowerCase(), { emitEvent: false });\r\n      });\r\n    }\r\n\r\n    this.form.get('cpf').valueChanges.subscribe(cpf => {\r\n      if (this.lastCpf !== cpf && !this.hasPendency) {\r\n        this.verifiedCpf = false;\r\n      }\r\n    });\r\n\r\n    this.form.get('birthdate').valueChanges.subscribe(birthdate => {\r\n      const dateOfBirth = moment(birthdate, 'DD/MM/YYYY').format('YYYY-MM-DD');\r\n      if (this.lastDateOfBirth !== dateOfBirth) {\r\n        if (!this.hasPendency) {\r\n          this.verifiedCpf = false;\r\n        }\r\n        this.form.get('dateOfBirth').setValue(dateOfBirth);\r\n      }\r\n    });\r\n\r\n    this.form.get('email').valueChanges.subscribe(email => {\r\n      this.form.get('email').setValue(email && email.toLowerCase(), { emitEvent: false });\r\n    });\r\n  }\r\n\r\n  get hasPendency() {\r\n    return (this.patient && this.patient.status !== 1) || this.form.value.pendency;\r\n  }\r\n\r\n  get cpfCtrl() {\r\n    return this.form.get('cpf');\r\n  }\r\n\r\n  get dateCtrl() {\r\n    return this.form.get('birthdate');\r\n  }\r\n\r\n  get verifiedCpf() {\r\n    return this.form.get('verifiedCpf').value;\r\n  }\r\n\r\n  set verifiedCpf(value: boolean) {\r\n    this.form.get('verifiedCpf').setValue(value);\r\n  }\r\n\r\n  @nativeAsync\r\n  async consultCpf() {\r\n    const { cpf, birthdate: date, checkNoCpf } = this.form.value;\r\n    // A data que vem no formulário não vem no formato para que possa ser formatada.\r\n    // Essa linha vai fazer com que a data fique no formato 00/00/0000.\r\n    let noCpf = checkNoCpf;\r\n    if (!noCpf) {\r\n      noCpf = this.valueTypeEntryPatient === 'ANIMAL';\r\n    }\r\n\r\n    const dateOfBirth = moment(date, 'DDMMYYYY').format('YYYY-MM-DD');\r\n\r\n    if (\r\n      this.cpfCtrl.valid &&\r\n      this.dateCtrl.valid &&\r\n      (this.lastCpf !== cpf || this.lastDateOfBirth !== dateOfBirth || !this.verifiedCpf)\r\n    ) {\r\n      try {\r\n        this.loading = true;\r\n        const existsPatient = Boolean(await this.patientsService.existsPatient(cpf).toPromise());\r\n        if (existsPatient) {\r\n          if (!noCpf) {\r\n            this.notification.notify(\r\n              'warning',\r\n              'Aviso',\r\n              `Paciente já cadastrado. Favor entrar em contato com a Central de atendimento`\r\n            );\r\n          } else {\r\n            const patient = await this.patientsService.getPatientByCpf(cpf).toPromise();\r\n            this.showModalAddPatient(patient, noCpf, existsPatient);\r\n          }\r\n          this.loading = false;\r\n        } else {\r\n          const consult = await this.bigboostService.consultCpf(cpf, dateOfBirth).toPromise();\r\n          this.consult = consult;\r\n          this.loading = false;\r\n          if (noCpf) {\r\n            if (consult.menorIdade) {\r\n              this.notification.notify(\r\n                'warning',\r\n                'Aviso',\r\n                'CPF é de um menor, tente novamente com o CPF do responsável'\r\n              );\r\n            } else {\r\n              const valueNoCpf = noCpf;\r\n              this.showModalAddPatient(consult, valueNoCpf);\r\n            }\r\n          } else {\r\n            if (consult.menorIdade) {\r\n              const valueNoCpf = noCpf;\r\n              this.showModalAddPatient(consult, valueNoCpf);\r\n            } else {\r\n              this.handleConsultCpf(consult);\r\n            }\r\n          }\r\n        }\r\n      } catch (err) {\r\n        console.error(err);\r\n        this.loading = false;\r\n        if (err.status === 404) {\r\n          this.notification.notify(\r\n            'error',\r\n            'Error ao consultar CPF',\r\n            'CPF não localizado na Receita Federal. Verifique as informações digitadas e tente novamente. Em caso de dúvidas, entre em contato com nosso atendimento',\r\n            8000\r\n          );\r\n          return;\r\n        }\r\n\r\n        if (err.status === 500 || err.status === 0) {\r\n          this.notification.notify(\r\n            'error',\r\n            'Error ao consultar CPF',\r\n            'Plataforma de consulta de CPF com erro ao tentar realizar consulta do CPF',\r\n            8000\r\n          );\r\n          return;\r\n        }\r\n\r\n        if (err.status === 400 && err.error.code === 'ERRO_CPF_INVALID') {\r\n          this.notification.notify('warning', 'Aviso', 'CPF informado é invalido!');\r\n          this.form.get('cpf').setErrors({ cpf: true });\r\n        } else {\r\n          const consult = {\r\n            status: -1,\r\n            cpf,\r\n            erroCodigo: err.status,\r\n            erro: 'A importação de dados do cpf está com instabilidade'\r\n          };\r\n          this.form.get('pendency').setValue(consult);\r\n          if (err.status === 401) {\r\n            this.notification.notify(\r\n              'warning',\r\n              'Aviso',\r\n              'Data de nascimento não corresponde ao CPF informado'\r\n            );\r\n            this.form.get('birthdate').setErrors({ nonMatchingCpf: true });\r\n            this.verifiedCpf = false;\r\n          } else {\r\n            this.handleConsultCpf(consult);\r\n          }\r\n        }\r\n      }\r\n      this.lastCpf = cpf;\r\n      this.lastDateOfBirth = dateOfBirth;\r\n    }\r\n  }\r\n\r\n  private showModalAddPatient(consult, noCpf, existingPatient = false) {\r\n    const initialState = {\r\n      patient: consult,\r\n      registeredByResponsible: true,\r\n      isPet: this.valueTypeEntryPatient === 'ANIMAL',\r\n      isResponsible: noCpf || !consult.menorIdade,\r\n      existingPatient\r\n    };\r\n    const modal = this.modalService.show(ModalAddPatientComponent, {\r\n      class: 'modal-lg',\r\n      initialState,\r\n      backdrop: 'static',\r\n      keyboard: false\r\n    });\r\n  }\r\n\r\n  private handleConsultCpf(consult: DataBigboostConsult) {\r\n    this.form.get('name').reset();\r\n    this.form.get('name').enable();\r\n\r\n    if (consult.status === 1) {\r\n      this.form.get('fullname').disable();\r\n      this.form.get('pendency').setValue(null);\r\n      this.setForm(consult);\r\n      if (!this.isRegisteredByPatient) {\r\n        this.form.get('cpf').disable({ emitEvent: false });\r\n        this.form.get('birthdate').disable({ emitEvent: false });\r\n      }\r\n    } else {\r\n      this.form.get('fullname').enable();\r\n      this.form.get('pendency').setValue(consult);\r\n      this.form.get('cpf').setValue(consult.cpf);\r\n      this.resetForm();\r\n      if (consult.erro) {\r\n        this.notification.notify(\r\n          'warning',\r\n          'Aviso',\r\n          'A importação de dados do CPF está com instabilidade, mas você poderá se cadastrar preenchendo os campos manualmente.'\r\n        );\r\n      }\r\n    }\r\n    this.verifiedCpf = true;\r\n  }\r\n\r\n  private setForm(consult: DataBigboostConsult) {\r\n    this.form.get('cpf').setValue(consult.cpf);\r\n    this.form.get('fullname').setValue(consult.nome);\r\n    this.form.get('name').setValue(consult.nome);\r\n    this.form.get('sex').setValue(consult.genero);\r\n    if (!this.form.value.dateOfBirth) {\r\n      const nascimento = moment(consult.nascimento, 'DD/MM/YYYY');\r\n      this.form.get('dateOfBirth').setValue(nascimento.format('YYYY-MM-DD'));\r\n      this.form.get('birthdate').setValue(nascimento.format('DDMMYYYY'));\r\n    }\r\n\r\n    this.lastCpf = this.form.value.cpf;\r\n    this.lastDateOfBirth = this.form.value.dateOfBirth;\r\n  }\r\n\r\n  private resetForm() {\r\n    this.form.get('fullname').reset();\r\n    this.form.get('sex').reset();\r\n  }\r\n\r\n  @nativeAsync\r\n  async onKey(event: any) {\r\n    if (event.target.value.length === 10) {\r\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\r\n      const data = await this.cepService.consult(cep);\r\n      if (!data.erro) {\r\n        this.form.controls['address'].patchValue({\r\n          uf: data.uf,\r\n          street: data.logradouro,\r\n          neighborhood: data.bairro,\r\n          city: data.localidade,\r\n          number: null,\r\n          cep: data.cep\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  checkEmail(disable: boolean) {\r\n    if (disable) {\r\n      this.form.get('email').reset();\r\n      this.form.get('email').disable();\r\n    } else {\r\n      this.form.get('email').enable();\r\n    }\r\n  }\r\n}\r\n","export default \"<nz-alert\\r\\n  *ngIf=\\\"!patient || patient.status === 1\\\"\\r\\n  class=\\\"mb-4\\\"\\r\\n  nzType=\\\"warning\\\"\\r\\n  nzMessage=\\\"Para agilizar seu cadastro, buscaremos dados complementares no site da Receita Federal.\\r\\nEste é um procedimento seguro e o sigilo dos seus dados é garantido pela nossa plataforma\\\"\\r\\n></nz-alert>\\r\\n\\r\\n<nz-radio-group [(ngModel)]=\\\"valueTypeEntryPatient\\\" style=\\\"margin-bottom: 10px;\\\">\\r\\n  <label nz-radio nzValue=\\\"HUMANO\\\">Humano</label>\\r\\n  <label nz-radio nzValue=\\\"ANIMAL\\\">Animal</label>\\r\\n</nz-radio-group>\\r\\n\\r\\n<ng-container *ngIf=\\\"!isMobile; else temaplateCheckBoxOrMsg\\\"></ng-container>\\r\\n\\r\\n<form nz-form [formGroup]=\\\"form\\\" theme>\\r\\n  <div class=\\\"row justify-content-between\\\">\\r\\n    <div class=\\\"col-md-6\\\">\\r\\n      <div class=\\\"row align-items-center\\\">\\r\\n        <div class=\\\"col-md\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"cpf\\\">CPF <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input\\r\\n                nz-input\\r\\n                id=\\\"cpf\\\"\\r\\n                formControlName=\\\"cpf\\\"\\r\\n                placeholder=\\\"000.000.000-00\\\"\\r\\n                mask=\\\"000.000.000-00\\\"\\r\\n              />\\r\\n              <nz-form-explain *ngIf=\\\"cpfCtrl.dirty && cpfCtrl.errors\\\">\\r\\n                <ng-container *ngIf=\\\"cpfCtrl.hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor digite seu CPF.\\r\\n                </ng-container>\\r\\n                <ng-container *ngIf=\\\"!cpfCtrl.hasError('required') && cpfCtrl.hasError('cpf')\\\">\\r\\n                  CPF inválido, por favor digite um CPF válido.\\r\\n                </ng-container>\\r\\n                <ng-container *ngIf=\\\"cpfCtrl.hasError('alreadyExists')\\\">\\r\\n                  CPF já cadastrado.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-md\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"birthdate\\\"\\r\\n              >Data de nascimento<span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n            >\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input\\r\\n                nz-input\\r\\n                id=\\\"birthdate\\\"\\r\\n                type=\\\"tel\\\"\\r\\n                mask=\\\"00/00/0000\\\"\\r\\n                formControlName=\\\"birthdate\\\"\\r\\n                placeholder=\\\"DD/MM/AAAA\\\"\\r\\n              />\\r\\n              <nz-form-explain *ngIf=\\\"dateCtrl.dirty && dateCtrl.errors\\\">\\r\\n                <ng-container *ngIf=\\\"dateCtrl.hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor digite sua data de nascimento.\\r\\n                </ng-container>\\r\\n                <ng-container *ngIf=\\\"!dateCtrl.hasError('required') && dateCtrl.hasError('birthdate')\\\">\\r\\n                  Nome inválido.\\r\\n                </ng-container>\\r\\n                <ng-container *ngIf=\\\"dateCtrl.hasError('invalidDate') && dateCtrl.value.length > 0\\\">\\r\\n                  Data inválida.\\r\\n                </ng-container>\\r\\n                <ng-container *ngIf=\\\"dateCtrl.hasError('nonMatchingCpf')\\\">\\r\\n                  Data de nascimento não corresponde ao CPF informado.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-auto pt-3\\\" *ngIf=\\\"isRegisteredByPatient\\\">\\r\\n          <button\\r\\n            nz-button\\r\\n            class=\\\"btn-primary\\\"\\r\\n            (click)=\\\"consultCpf()\\\"\\r\\n            [disabled]=\\\"cpfCtrl.invalid || dateCtrl.invalid || loading\\\"\\r\\n          >\\r\\n            OK\\r\\n          </button>\\r\\n        </div>\\r\\n\\r\\n        <ng-container *ngIf=\\\"verifiedCpf\\\">\\r\\n          <div class=\\\"col-12\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"fullname\\\"\\r\\n                >Nome completo <span class=\\\"mandatory\\\">*</span></nz-form-label\\r\\n              >\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <input\\r\\n                  formControlName=\\\"fullname\\\"\\r\\n                  id=\\\"fullname\\\"\\r\\n                  nz-input\\r\\n                  placeholder=\\\"ex: João Gilberto\\\"\\r\\n                  maxlength=\\\"128\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n                <nz-form-explain *ngIf=\\\"form.get('fullname').dirty && form.get('fullname').errors\\\">\\r\\n                  <ng-container *ngIf=\\\"form.get('fullname').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor digite o seu nome e sobrenome.\\r\\n                  </ng-container>\\r\\n                  <ng-container\\r\\n                    *ngIf=\\\"\\r\\n                      !form.get('fullname').hasError('required') &&\\r\\n                      form.get('fullname').hasError('fullname')\\r\\n                    \\\"\\r\\n                  >\\r\\n                    Por favor digite o seu nome e sobrenome.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n          <div class=\\\"col-12\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"name\\\"\\r\\n                >Nome de exibição/social<span class=\\\"mandatory\\\">*</span></nz-form-label\\r\\n              >\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <input\\r\\n                  formControlName=\\\"name\\\"\\r\\n                  id=\\\"name\\\"\\r\\n                  nz-input\\r\\n                  placeholder=\\\"ex: João Gilberto\\\"\\r\\n                  maxlength=\\\"128\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n                <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\r\\n                  <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor digite um nome de exibição.\\r\\n                  </ng-container>\\r\\n                  <ng-container\\r\\n                    *ngIf=\\\"!form.get('name').hasError('required') && form.get('name').hasError('name')\\\"\\r\\n                  >\\r\\n                    Por favor digite um nome de exibição.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n\\r\\n          <ng-container *ngIf=\\\"isRegisteredByPatient\\\">\\r\\n            <div class=\\\"col-6\\\">\\r\\n              <nz-form-item>\\r\\n                <nz-form-label nzFor=\\\"identity\\\">Identidade</nz-form-label>\\r\\n                <nz-form-control nzHasFeedback>\\r\\n                  <input\\r\\n                    nz-input\\r\\n                    id=\\\"identity\\\"\\r\\n                    formControlName=\\\"identity\\\"\\r\\n                    placeholder=\\\"ex: 18.040.818-5\\\"\\r\\n                    maxlength=\\\"12\\\"\\r\\n                  />\\r\\n                </nz-form-control>\\r\\n              </nz-form-item>\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"col-6\\\">\\r\\n              <nz-form-item>\\r\\n                <nz-form-label nzFor=\\\"sex\\\">Sexo <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n                <nz-form-control nzHasFeedback>\\r\\n                  <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\r\\n                    <option value=\\\"M\\\">Masculino</option>\\r\\n                    <option value=\\\"F\\\">Feminino</option>\\r\\n                  </select>\\r\\n                  <nz-form-explain *ngIf=\\\"form.get('sex').dirty && form.get('sex').errors\\\">\\r\\n                    <ng-container *ngIf=\\\"form.get('sex').hasError('required')\\\">\\r\\n                      Campo obrigatório, por favor selecione o sexo.\\r\\n                    </ng-container>\\r\\n                  </nz-form-explain>\\r\\n                </nz-form-control>\\r\\n              </nz-form-item>\\r\\n            </div>\\r\\n          </ng-container>\\r\\n\\r\\n          <div class=\\\"col-12\\\" [formGroup]=\\\"form.get('membership')\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"mothersName\\\">Nome da mãe</nz-form-label>\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <input\\r\\n                  nz-input\\r\\n                  placeholder=\\\"Digite o nome da mãe\\\"\\r\\n                  formControlName=\\\"mothersName\\\"\\r\\n                  id=\\\"mothersName\\\"\\r\\n                  maxlength=\\\"128\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n        </ng-container>\\r\\n      </div>\\r\\n\\r\\n      <ng-container *ngIf=\\\"isMobile; else temaplateCheckBoxOrMsg\\\"></ng-container>\\r\\n      <ng-template #temaplateCheckBoxOrMsg>\\r\\n        <div class=\\\"mt-2\\\">\\r\\n          <label\\r\\n            *ngIf=\\\"!verifiedCpf && valueTypeEntryPatient === 'HUMANO'\\\"\\r\\n            nz-checkbox\\r\\n            class=\\\"mb-2\\\"\\r\\n            formControlName=\\\"checkNoCpf\\\"\\r\\n            >Menor sem CPF?</label\\r\\n          >\\r\\n\\r\\n          <div *ngIf=\\\"form.get('checkNoCpf').value || valueTypeEntryPatient === 'ANIMAL'\\\">\\r\\n            <span\\r\\n              >{{ isMobile ? 'Digite abaixo' : 'Digite acima' }} o CPF e data de nascimento do(a)\\r\\n              <span class=\\\"mandatory\\\">responsável</span></span\\r\\n            >\\r\\n          </div>\\r\\n        </div>\\r\\n      </ng-template>\\r\\n    </div>\\r\\n\\r\\n    <ng-container *ngIf=\\\"verifiedCpf\\\">\\r\\n      <div class=\\\"col-md-5\\\" [@slideInOut]>\\r\\n        <nz-form-item *ngIf=\\\"form.get('cellphone') as cellphone\\\">\\r\\n          <nz-form-label nzFor=\\\"cellphone\\\"\\r\\n            >Telefone 1 <span class=\\\"mandatory\\\">*</span>\\r\\n            <app-popover-button\\r\\n              content=\\\"Será utilizado para receber suas receitas e demais documentos via WhatsApp e SMS\\\"\\r\\n            ></app-popover-button>\\r\\n          </nz-form-label>\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <input\\r\\n              nz-input\\r\\n              id=\\\"cellphone\\\"\\r\\n              [mask]=\\\"cellphone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\r\\n              placeholder=\\\"(21) 92222-2222\\\"\\r\\n              formControlName=\\\"cellphone\\\"\\r\\n              autocomplete=\\\"disabled\\\"\\r\\n            />\\r\\n            <nz-form-explain *ngIf=\\\"cellphone.dirty && cellphone.errors\\\">\\r\\n              <ng-container *ngIf=\\\"cellphone.hasError('required')\\\">\\r\\n                Campo obrigatório, por favor digite seu telefone para contato.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <nz-form-item *ngIf=\\\"form.get('telephone') as telephone\\\">\\r\\n          <nz-form-label nzFor=\\\"telephone\\\" class=\\\"cellphone\\\">Telefone 2</nz-form-label>\\r\\n          <nz-form-control>\\r\\n            <input\\r\\n              nz-input\\r\\n              id=\\\"telephone\\\"\\r\\n              [mask]=\\\"telephone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\r\\n              formControlName=\\\"telephone\\\"\\r\\n              placeholder=\\\"(21) 2222-2222\\\"\\r\\n              autocomplete=\\\"disabled\\\"\\r\\n            />\\r\\n            <nz-form-explain *ngIf=\\\"telephone.dirty && telephone.errors\\\">\\r\\n              <ng-container *ngIf=\\\"telephone.hasError('telephone')\\\">\\r\\n                Telefone inválido, por favor digite um número válido.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <nz-form-item>\\r\\n          <div class=\\\"row\\\">\\r\\n            <div class=\\\"col-5\\\">\\r\\n              <nz-form-label nzFor=\\\"email\\\">E-mail <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n            </div>\\r\\n            <div class=\\\"col\\\">\\r\\n              <label\\r\\n                *ngIf=\\\"!isRegisteredByPatient\\\"\\r\\n                nz-checkbox\\r\\n                (nzCheckedChange)=\\\"checkEmail($event)\\\"\\r\\n                style=\\\"font-size: 14px;\\\"\\r\\n                >Não cadastrar e-mail</label\\r\\n              >\\r\\n            </div>\\r\\n          </div>\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <input\\r\\n              nz-input\\r\\n              id=\\\"email\\\"\\r\\n              type=\\\"email\\\"\\r\\n              formControlName=\\\"email\\\"\\r\\n              placeholder=\\\"usuario@email.com\\\"\\r\\n              style=\\\"text-transform: lowercase;\\\"\\r\\n              (keydown.space)=\\\"$event.preventDefault()\\\"\\r\\n              autocomplete=\\\"disabled\\\"\\r\\n            />\\r\\n\\r\\n            <nz-form-explain>\\r\\n              <ng-container *ngIf=\\\"form.get('email').hasError('required') && form.get('email').dirty\\\">\\r\\n                <span class=\\\"error\\\">Campo obrigatório, por favor digite seu e-mail.</span><br />\\r\\n              </ng-container>\\r\\n              <ng-container *ngIf=\\\"form.get('email').invalid && form.get('email').value?.length > 0\\\">\\r\\n                <span\\r\\n                  class=\\\"error\\\"\\r\\n                  *ngIf=\\\"form.get('email').hasError('alreadyExists'); else invalidEmail\\\"\\r\\n                  >E-mail já cadastrado, por favor escolha outro e-mail.</span\\r\\n                >\\r\\n                <ng-template #invalidEmail>\\r\\n                  <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span>\\r\\n                </ng-template>\\r\\n                <br />\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <nz-form-item *ngIf=\\\"isRegisteredByPatient\\\">\\r\\n          <nz-form-label nzFor=\\\"emailConfirmation\\\"\\r\\n            >Confirmação de e-mail<span class=\\\"mandatory\\\"> *</span>\\r\\n          </nz-form-label>\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <input\\r\\n              nz-input\\r\\n              id=\\\"emailConfirmation\\\"\\r\\n              formControlName=\\\"emailConfirmation\\\"\\r\\n              placeholder=\\\"usuario@email.com\\\"\\r\\n              type=\\\"email\\\"\\r\\n              style=\\\"text-transform: lowercase;\\\"\\r\\n              (keydown.space)=\\\"$event.preventDefault()\\\"\\r\\n              onpaste=\\\"false\\\"\\r\\n              autocomplete=\\\"disabled\\\"\\r\\n            />\\r\\n\\r\\n            <nz-form-explain class=\\\"error\\\">\\r\\n              <ng-container\\r\\n                *ngIf=\\\"\\r\\n                  form.get('emailConfirmation').hasError('required') &&\\r\\n                  form.get('emailConfirmation').dirty\\r\\n                \\\"\\r\\n              >\\r\\n                <span> Campo obrigatório, por favor digite seu e-mail.</span><br />\\r\\n              </ng-container>\\r\\n\\r\\n              <ng-container *ngIf=\\\"form.get('emailConfirmation').hasError('emailMatch')\\\">\\r\\n                <span>Os endereços de e-mail não correspondem</span><br />\\r\\n              </ng-container>\\r\\n\\r\\n              <ng-container\\r\\n                *ngIf=\\\"\\r\\n                  !form.hasError('emailMatch') &&\\r\\n                  form.get('emailConfirmation').invalid &&\\r\\n                  form.get('emailConfirmation').value.length > 0\\r\\n                \\\"\\r\\n              >\\r\\n                <span>E-mail inválido, por favor digite um e-mail válido.</span><br />\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <nz-form-item *ngIf=\\\"!isRegisteredByPatient\\\">\\r\\n          <nz-form-label nzFor=\\\"sex\\\">Sexo <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\r\\n              <option value=\\\"M\\\">Masculino</option>\\r\\n              <option value=\\\"F\\\">Feminino</option>\\r\\n            </select>\\r\\n            <nz-form-explain *ngIf=\\\"form.get('sex').dirty && form.get('sex').errors\\\">\\r\\n              <ng-container *ngIf=\\\"form.get('sex').hasError('required')\\\">\\r\\n                Campo obrigatório, por favor selecione o sexo.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n\\r\\n      <nz-divider nzOrientation=\\\"left\\\" nzText=\\\"Endereço\\\"></nz-divider>\\r\\n      <app-address-data-form [form]=\\\"form.get('address')\\\" [required]=\\\"true\\\"></app-address-data-form>\\r\\n\\r\\n      <!-- <div class=\\\"col-md-12\\\" [@slideInOut] *ngIf=\\\"form.get('address')\\\">\\r\\n        <div class=\\\"row\\\" [formGroup]=\\\"form.get('address')\\\">\\r\\n          <div class=\\\"col-md-3\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"cep\\\">CEP<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <input\\r\\n                  nz-input\\r\\n                  id=\\\"cep\\\"\\r\\n                  formControlName=\\\"cep\\\"\\r\\n                  placeholder=\\\"00.000-000\\\"\\r\\n                  mask=\\\"00.000-000\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                  (keyup)=\\\"onKey($event)\\\"\\r\\n                />\\r\\n                <nz-form-explain *ngIf=\\\"form.get('address.cep').dirty && form.get('address.cep').errors\\\">\\r\\n                  <ng-container *ngIf=\\\"form.get('address.cep').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor digite seu CEP.\\r\\n                  </ng-container>\\r\\n                  <ng-container\\r\\n                    *ngIf=\\\"\\r\\n                      !form.get('address.cep').hasError('required') &&\\r\\n                      form.get('address.cep').hasError('address.cep')\\r\\n                    \\\"\\r\\n                  >\\r\\n                    CEP inválido, por favor digite um CEP válido.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n\\r\\n          <div class=\\\"col-md-6\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"logradouro\\\"\\r\\n                >Logradouro<span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n              >\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <input\\r\\n                  formControlName=\\\"street\\\"\\r\\n                  id=\\\"street\\\"\\r\\n                  nz-input\\r\\n                  placeholder=\\\"Digite o logradouro\\\"\\r\\n                  maxlength=\\\"128\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n                <nz-form-explain\\r\\n                  *ngIf=\\\"form.get('address.street').dirty && form.get('address.street').errors\\\"\\r\\n                >\\r\\n                  <ng-container *ngIf=\\\"form.get('address.street').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor digite o logradouro.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n\\r\\n          <div class=\\\"col-12 col-md-3\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"number\\\">Número<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <input\\r\\n                  formControlName=\\\"number\\\"\\r\\n                  id=\\\"number\\\"\\r\\n                  nz-input\\r\\n                  placeholder=\\\"Digite o número\\\"\\r\\n                  maxlength=\\\"10\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n                <nz-form-explain\\r\\n                  *ngIf=\\\"form.get('address.number').dirty && form.get('address.number').errors\\\"\\r\\n                >\\r\\n                  <ng-container *ngIf=\\\"form.get('address.number').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor digite o número.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n\\r\\n          <div class=\\\"col-12 col-md-3\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"complement\\\">Complemento</nz-form-label>\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <input\\r\\n                  formControlName=\\\"complement\\\"\\r\\n                  id=\\\"complement\\\"\\r\\n                  nz-input\\r\\n                  placeholder=\\\"Digite o complemento\\\"\\r\\n                  maxlength=\\\"128\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n\\r\\n          <div class=\\\"col-12 col-md-3\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"neighborhood\\\">Bairro<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <input\\r\\n                  formControlName=\\\"neighborhood\\\"\\r\\n                  id=\\\"neighborhood\\\"\\r\\n                  nz-input\\r\\n                  placeholder=\\\"Digite o bairro\\\"\\r\\n                  maxlength=\\\"128\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n                <nz-form-explain\\r\\n                  *ngIf=\\\"\\r\\n                    form.get('address.neighborhood').dirty && form.get('address.neighborhood').errors\\r\\n                  \\\"\\r\\n                >\\r\\n                  <ng-container *ngIf=\\\"form.get('address.neighborhood').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor digite o bairro.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n\\r\\n          <div class=\\\"col-12 col-md-4\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"city\\\">Cidade<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <input\\r\\n                  formControlName=\\\"city\\\"\\r\\n                  id=\\\"city\\\"\\r\\n                  nz-input\\r\\n                  placeholder=\\\"Digite a cidade\\\"\\r\\n                  maxlength=\\\"64\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n                <nz-form-explain\\r\\n                  *ngIf=\\\"form.get('address.city').dirty && form.get('address.city').errors\\\"\\r\\n                >\\r\\n                  <ng-container *ngIf=\\\"form.get('address.city').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor digite a cidade.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n\\r\\n          <div class=\\\"col-12 col-md-2\\\">\\r\\n            <nz-form-item>\\r\\n              <nz-form-label nzFor=\\\"uf\\\">UF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <select\\r\\n                  *ngIf=\\\"!isRegisteredByPatient\\\"\\r\\n                  id=\\\"uf\\\"\\r\\n                  formControlName=\\\"uf\\\"\\r\\n                  nz-input\\r\\n                  nzAllowClear\\r\\n                  nzShowSearch\\r\\n                  nzPlaceHolder=\\\"Selecione\\\"\\r\\n                >\\r\\n                  <option *ngFor=\\\"let state of states\\\" [value]=\\\"state?.sigla\\\">{{ state?.sigla }}</option>\\r\\n                </select>\\r\\n                <nz-select\\r\\n                  *ngIf=\\\"isRegisteredByPatient\\\"\\r\\n                  formControlName=\\\"uf\\\"\\r\\n                  id=\\\"uf\\\"\\r\\n                  nzAllowClear\\r\\n                  nzShowSearch\\r\\n                  nzPlaceHolder=\\\"Selecione\\\"\\r\\n                >\\r\\n                  <nz-option\\r\\n                    *ngFor=\\\"let state of states\\\"\\r\\n                    [nzLabel]=\\\"state?.sigla\\\"\\r\\n                    [nzValue]=\\\"state?.sigla\\\"\\r\\n                  ></nz-option>\\r\\n                </nz-select>\\r\\n                <nz-form-explain *ngIf=\\\"form.get('address.uf').dirty && form.get('address.uf').errors\\\">\\r\\n                  <ng-container *ngIf=\\\"form.get('address.uf').hasError('required')\\\">\\r\\n                    Campo obrigatório, por favor selecione o UF.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n        </div>\\r\\n      </div> -->\\r\\n    </ng-container>\\r\\n  </div>\\r\\n</form>\\r\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\r\\n\";","export default \"::ng-deep .ant-divider-inner-text {\\n  font-family: \\\"probold\\\", sans-serif;\\n  color: #0b6054;\\n}\\n\\n.date-picker {\\n  background-color: red;\\n}\\n\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n\\n.mandatory {\\n  color: red;\\n}\\n\\n.error {\\n  color: red;\\n}\\n\\n.cellphone {\\n  padding-bottom: 6px;\\n  padding-top: 8px;\\n}\\n\\nh2 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 18px;\\n  color: #0b6054;\\n}\\n\\n.display-name {\\n  margin-top: 36px;\\n}\\n\\n.ant-btn:hover,\\n.ant-btn:focus {\\n  color: white;\\n  background-color: #0b6054;\\n  border-color: #0b6054;\\n}\";","export default \"<form [formGroup]=\\\"form\\\" nz-form theme>\\r\\n  <div class=\\\"row justify-content-between\\\">\\r\\n    <nz-alert\\r\\n      class=\\\"mb-4\\\"\\r\\n      nzType=\\\"warning\\\"\\r\\n      nzMessage=\\\"Para agilizar seu cadastro, buscaremos dados complementares no site da Receita Federal.\\r\\nEste é um procedimento seguro e o sigilo dos seus dados é garantido pela nossa plataforma\\\"\\r\\n    ></nz-alert>\\r\\n    <div class=\\\"col-md-6\\\">\\r\\n      <div class=\\\"row\\\">\\r\\n        <div class=\\\"col-md-10\\\" *ngIf=\\\"!isPharmacyPublic\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"cnpj\\\">CNPJ<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input\\r\\n                nz-input\\r\\n                id=\\\"cnpj\\\"\\r\\n                mask=\\\"00.000.000/0000-00\\\"\\r\\n                formControlName=\\\"cnpj\\\"\\r\\n                placeholder=\\\"00.000.000/0000-00\\\"\\r\\n              />\\r\\n              <nz-form-explain *ngIf=\\\"form.get('cnpj').dirty && form.get('cnpj').errors\\\">\\r\\n                <ng-container *ngIf=\\\"form.get('cnpj').hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor digite seu CNPJ.\\r\\n                </ng-container>\\r\\n                <ng-container\\r\\n                  *ngIf=\\\"!form.get('cnpj').hasError('required') && form.get('cnpj').hasError('cnpj')\\\"\\r\\n                >\\r\\n                  CNPJ inválido, por favor digite um CNPJ válido.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-md-10\\\" *ngIf=\\\"isPharmacyPublic\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"cnes\\\">CNES<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input nz-input [attr.id]=\\\"cnes\\\" formControlName=\\\"cnes\\\" type=\\\"number\\\" />\\r\\n              <nz-form-explain *ngIf=\\\"form.get('cnes').dirty && form.get('cnes').errors\\\">\\r\\n                <ng-container *ngIf=\\\"form.get('cnes').hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor digite seu CNES.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n        <div class=\\\"col-md-2 btn-consulta-cnpj\\\">\\r\\n          <button\\r\\n            nz-button\\r\\n            class=\\\"btn-primary\\\"\\r\\n            (click)=\\\"handleConsult()\\\"\\r\\n            [disabled]=\\\"isLoading || form.get('cnes').invalid || form.get('cnpj').invalid\\\"\\r\\n          >\\r\\n            <span *ngIf=\\\"!isLoading\\\">OK</span>\\r\\n            <span\\r\\n              class=\\\"spinner-border spinner-border-sm\\\"\\r\\n              role=\\\"status\\\"\\r\\n              aria-hidden=\\\"true\\\"\\r\\n              *ngIf=\\\"isLoading\\\"\\r\\n            ></span>\\r\\n          </button>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-md-12\\\" *ngIf=\\\"!verified\\\">\\r\\n          <nz-form-item class=\\\"d-flex align-items-center\\\">\\r\\n            <nz-form-control>\\r\\n              <input\\r\\n                nz-input\\r\\n                type=\\\"checkbox\\\"\\r\\n                formControlName=\\\"public_pharmacy\\\"\\r\\n                id=\\\"public_parmacy\\\"\\r\\n                theme\\r\\n              />\\r\\n              <nz-form-label style=\\\"margin-left: 8px; cursor: pointer;\\\" nzFor=\\\"public_parmacy\\\" theme\\r\\n                >Sou uma Farmácia Pública</nz-form-label\\r\\n              >\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-md-12\\\" *ngIf=\\\"verified && !isPharmacyPublic\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"nomeFantasia\\\"\\r\\n              >Nome Fantasia<span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n            >\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input\\r\\n                [attr.id]=\\\"'nomeFantasia'\\\"\\r\\n                formControlName=\\\"fantasyName\\\"\\r\\n                nz-input\\r\\n                placeholder=\\\"ex: Farmácia Dona Santa\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n              <nz-form-explain *ngIf=\\\"form.get('fantasyName').dirty && form.get('fantasyName').errors\\\">\\r\\n                <ng-container *ngIf=\\\"form.get('fantasyName').hasError('required')\\\">\\r\\n                  Por favor digite o nome empresarial.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-md-12\\\" *ngIf=\\\"verified && isPharmacyPublic\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"cnpjEntity\\\"\\r\\n              >CNPJ da mantenedora<span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n            >\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input [attr.id]=\\\"'cnpjEntity'\\\" formControlName=\\\"cnpj_entity\\\" nz-input disabled />\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-md-12\\\" *ngIf=\\\"verified\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"businessName\\\"\\r\\n              >Razão Social<span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n            >\\r\\n            <nz-form-control nzHasFeedback *ngIf=\\\"!isPharmacyPublic\\\">\\r\\n              <input\\r\\n                [attr.id]=\\\"'businessName'\\\"\\r\\n                formControlName=\\\"businessName\\\"\\r\\n                nz-input\\r\\n                placeholder=\\\"ex: Nome da Empresa no CNPJ Ltda\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n            </nz-form-control>\\r\\n\\r\\n            <nz-form-control nzHasFeedback *ngIf=\\\"isPharmacyPublic\\\">\\r\\n              <input\\r\\n                [attr.id]=\\\"'business_name_entity'\\\"\\r\\n                formControlName=\\\"business_name_entity\\\"\\r\\n                nz-input\\r\\n                disabled\\r\\n              />\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n        <div class=\\\"col-md-12\\\" *ngIf=\\\"verified\\\" [formGroup]=\\\"form.get('cnae')\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"cnaeCode\\\">{{\\r\\n              isPharmacyPublic ? 'CNAE da mantenedora' : 'CNAE'\\r\\n            }}</nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input [attr.id]=\\\"'cnaeCode'\\\" formControlName=\\\"code\\\" nz-input />\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"cnaeDescription\\\">Descrição CNAE</nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input [attr.id]=\\\"'cnaeDescription'\\\" formControlName=\\\"description\\\" nz-input />\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <!-- <div\\r\\n          class=\\\"col-md-12\\\"\\r\\n          *ngIf=\\\"verified && isPharmacyPublic\\\"\\r\\n          [formGroup]=\\\"form.get('cnae_entity')\\\"\\r\\n        >\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"cnaeCode\\\"\\r\\n              >CNAE da mantenedora<span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n            >\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input [attr.id]=\\\"'cnaeCode'\\\" formControlName=\\\"code\\\" nz-input disabled />\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"cnaeDescription\\\"\\r\\n              >Descrição CNAE<span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n            >\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input [attr.id]=\\\"'cnaeDescription'\\\" formControlName=\\\"description\\\" nz-input disabled />\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div> -->\\r\\n      </div>\\r\\n    </div>\\r\\n    <div class=\\\"col-md-5\\\" *ngIf=\\\"verified\\\">\\r\\n      <div class=\\\"row\\\">\\r\\n        <div class=\\\"col-md-12\\\" *ngIf=\\\"isPharmacyPublic\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"nomeFantasia\\\"\\r\\n              >Nome Fantasia/Nome da Instituição<span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n            >\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input\\r\\n                [attr.id]=\\\"'nomeFantasia'\\\"\\r\\n                formControlName=\\\"fantasyName\\\"\\r\\n                nz-input\\r\\n                placeholder=\\\"ex: Farmácia Dona Santa\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n              <nz-form-explain *ngIf=\\\"form.get('fantasyName').dirty && form.get('fantasyName').errors\\\">\\r\\n                <ng-container *ngIf=\\\"form.get('fantasyName').hasError('required')\\\">\\r\\n                  Por favor digite o nome empresarial.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-md-12\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"email\\\">E-mail<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input\\r\\n                nz-input\\r\\n                id=\\\"email\\\"\\r\\n                type=\\\"email\\\"\\r\\n                formControlName=\\\"email\\\"\\r\\n                placeholder=\\\"usuario@email.com\\\"\\r\\n                style=\\\"text-transform: lowercase;\\\"\\r\\n                (keydown.space)=\\\"$event.preventDefault()\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n              <nz-form-explain\\r\\n                *ngIf=\\\"\\r\\n                  (form.get('email').hasError('required') && form.get('email').dirty) ||\\r\\n                  (form.get('email').invalid && form.get('email').value.length > 0)\\r\\n                \\\"\\r\\n              >\\r\\n                <ng-container *ngIf=\\\"form.get('email').hasError('required') && form.get('email').dirty\\\">\\r\\n                  <span class=\\\"error\\\">Campo obrigatório, por favor digite seu e-mail.</span><br />\\r\\n                </ng-container>\\r\\n                <ng-container *ngIf=\\\"form.get('email').invalid && form.get('email').value.length > 0\\\">\\r\\n                  <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span><br />\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n        <div class=\\\"col-md-12\\\">\\r\\n          {{ form.erros | json }}\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"emailConfirmation\\\"\\r\\n              >Confirmação de e-mail<span class=\\\"mandatory\\\"> *</span>\\r\\n            </nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input\\r\\n                nz-input\\r\\n                id=\\\"emailConfirmation\\\"\\r\\n                formControlName=\\\"emailConfirmation\\\"\\r\\n                placeholder=\\\"usuário@email.com\\\"\\r\\n                type=\\\"email\\\"\\r\\n                style=\\\"text-transform: lowercase;\\\"\\r\\n                (keydown.space)=\\\"$event.preventDefault()\\\"\\r\\n                (onpaste)=\\\"(false)\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n              <nz-form-explain\\r\\n                *ngIf=\\\"form.get('emailConfirmation').dirty && form.get('emailConfirmation').errors\\\"\\r\\n              >\\r\\n                <ng-container *ngIf=\\\"form.get('emailConfirmation').hasError('required')\\\">\\r\\n                  <span class=\\\"error\\\">Campo obrigatório, por favor digite seu e-mail.</span><br />\\r\\n                </ng-container>\\r\\n\\r\\n                <ng-container\\r\\n                  *ngIf=\\\"\\r\\n                    form.get('emailConfirmation').hasError('notMatch') &&\\r\\n                    form.get('email').dirty &&\\r\\n                    form.get('email').value.length > 0 &&\\r\\n                    form.get('emailConfirmation').dirty &&\\r\\n                    form.get('emailConfirmation').value.length > 0\\r\\n                  \\\"\\r\\n                >\\r\\n                  <span class=\\\"error\\\">Os endereços de e-mail não correspondem</span><br />\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n        <div class=\\\"col-md-6\\\">\\r\\n          <nz-form-item *ngIf=\\\"form.get('telephone') as telephone\\\">\\r\\n            <nz-form-label nzFor=\\\"telephone\\\">Telefone 1 <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input\\r\\n                nz-input\\r\\n                id=\\\"telephone\\\"\\r\\n                formControlName=\\\"telephone\\\"\\r\\n                placeholder=\\\"(21) 2222-2222\\\"\\r\\n                [mask]=\\\"telephone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n\\r\\n  <nz-divider nzOrientation=\\\"left\\\" nzText=\\\"Endereço\\\" *ngIf=\\\"verified\\\"></nz-divider>\\r\\n\\r\\n  <div class=\\\"row\\\" *ngIf=\\\"verified && form.get('address') as address\\\" [formGroup]=\\\"address\\\">\\r\\n    <div class=\\\"col-md-3\\\">\\r\\n      <nz-form-item>\\r\\n        <nz-form-label nzFor=\\\"cep\\\">CEP<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n        <nz-form-control nzHasFeedback>\\r\\n          <input\\r\\n            nz-input\\r\\n            id=\\\"cep\\\"\\r\\n            formControlName=\\\"cep\\\"\\r\\n            placeholder=\\\"00.000-000\\\"\\r\\n            mask=\\\"00.000-000\\\"\\r\\n            (keyup)=\\\"onKey($event, address)\\\"\\r\\n            autocomplete=\\\"disabled\\\"\\r\\n          />\\r\\n          <nz-form-explain *ngIf=\\\"address.get('cep').dirty && address.get('cep').errors\\\">\\r\\n            <ng-container *ngIf=\\\"address.get('cep').hasError('required')\\\">\\r\\n              Campo obrigatório, por favor digite o cep.\\r\\n            </ng-container>\\r\\n            <ng-container\\r\\n              *ngIf=\\\"!address.get('cep').hasError('required') && address.get('cep').hasError('cep')\\\"\\r\\n            >\\r\\n              CEP inválido.\\r\\n            </ng-container>\\r\\n          </nz-form-explain>\\r\\n        </nz-form-control>\\r\\n      </nz-form-item>\\r\\n    </div>\\r\\n    <div class=\\\"col-md-6\\\">\\r\\n      <nz-form-item>\\r\\n        <nz-form-label nzFor=\\\"logradouro\\\">Logradouro<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n        <nz-form-control nzHasFeedback>\\r\\n          <input\\r\\n            nz-input\\r\\n            id=\\\"logradouro\\\"\\r\\n            formControlName=\\\"street\\\"\\r\\n            placeholder=\\\"Digite o logradouro\\\"\\r\\n            maxlength=\\\"128\\\"\\r\\n            autocomplete=\\\"disabled\\\"\\r\\n          />\\r\\n          <nz-form-explain *ngIf=\\\"address.get('street').dirty && address.get('street').errors\\\">\\r\\n            <ng-container *ngIf=\\\"address.get('street').hasError('required')\\\">\\r\\n              Campo obrigatório, por favor digite o logradouro.\\r\\n            </ng-container>\\r\\n          </nz-form-explain>\\r\\n        </nz-form-control>\\r\\n      </nz-form-item>\\r\\n    </div>\\r\\n    <div class=\\\"col-md-3\\\">\\r\\n      <nz-form-item>\\r\\n        <nz-form-label nzFor=\\\"addressNumber\\\">Número<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n        <nz-form-control nzHasFeedback>\\r\\n          <input\\r\\n            formControlName=\\\"number\\\"\\r\\n            id=\\\"addressNumber\\\"\\r\\n            nz-input\\r\\n            placeholder=\\\"Digite o número\\\"\\r\\n            maxlength=\\\"10\\\"\\r\\n            autocomplete=\\\"disabled\\\"\\r\\n          />\\r\\n          <nz-form-explain *ngIf=\\\"address.get('number').dirty && address.get('number').errors\\\">\\r\\n            <ng-container *ngIf=\\\"address.get('number').hasError('required')\\\">\\r\\n              Campo obrigatório, por favor digite o número.\\r\\n            </ng-container>\\r\\n          </nz-form-explain>\\r\\n        </nz-form-control>\\r\\n      </nz-form-item>\\r\\n    </div>\\r\\n    <div class=\\\"col-md-3\\\">\\r\\n      <nz-form-item>\\r\\n        <nz-form-label nzFor=\\\"complement\\\">Complemento</nz-form-label>\\r\\n        <nz-form-control nzHasFeedback>\\r\\n          <input\\r\\n            formControlName=\\\"complement\\\"\\r\\n            id=\\\"complement\\\"\\r\\n            nz-input\\r\\n            placeholder=\\\"Digite o complemento\\\"\\r\\n            maxlength=\\\"128\\\"\\r\\n          />\\r\\n        </nz-form-control>\\r\\n      </nz-form-item>\\r\\n    </div>\\r\\n    <div class=\\\"col-md-3\\\">\\r\\n      <nz-form-item>\\r\\n        <nz-form-label nzFor=\\\"neighborhood\\\">Bairro<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n        <nz-form-control nzHasFeedback>\\r\\n          <input\\r\\n            formControlName=\\\"neighborhood\\\"\\r\\n            id=\\\"neighborhood\\\"\\r\\n            nz-input\\r\\n            placeholder=\\\"Digite o bairro\\\"\\r\\n            maxlength=\\\"128\\\"\\r\\n            autocomplete=\\\"disabled\\\"\\r\\n          />\\r\\n          <nz-form-explain\\r\\n            *ngIf=\\\"address.get('neighborhood').dirty && address.get('neighborhood').errors\\\"\\r\\n          >\\r\\n            <ng-container *ngIf=\\\"address.get('neighborhood').hasError('required')\\\">\\r\\n              Campo obrigatório, por favor digite o bairro.\\r\\n            </ng-container>\\r\\n          </nz-form-explain>\\r\\n        </nz-form-control>\\r\\n      </nz-form-item>\\r\\n    </div>\\r\\n    <div class=\\\"col-md-4\\\">\\r\\n      <nz-form-item>\\r\\n        <nz-form-label nzFor=\\\"city\\\">Cidade<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n        <nz-form-control nzHasFeedback>\\r\\n          <input\\r\\n            formControlName=\\\"city\\\"\\r\\n            id=\\\"city\\\"\\r\\n            nz-input\\r\\n            placeholder=\\\"Digite a cidade\\\"\\r\\n            maxlength=\\\"64\\\"\\r\\n            autocomplete=\\\"disabled\\\"\\r\\n          />\\r\\n          <nz-form-explain *ngIf=\\\"address.get('city').dirty && address.get('city').errors\\\">\\r\\n            <ng-container *ngIf=\\\"address.get('city').hasError('required')\\\">\\r\\n              Campo obrigatório, por favor digite a cidade.\\r\\n            </ng-container>\\r\\n          </nz-form-explain>\\r\\n        </nz-form-control>\\r\\n      </nz-form-item>\\r\\n    </div>\\r\\n    <div class=\\\"col-md-2\\\">\\r\\n      <nz-form-item>\\r\\n        <nz-form-label nzFor=\\\"uf\\\">UF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n        <nz-form-control nzHasFeedback>\\r\\n          <nz-select\\r\\n            formControlName=\\\"uf\\\"\\r\\n            id=\\\"uf\\\"\\r\\n            nzAllowClear\\r\\n            nzShowSearch\\r\\n            nzDropdownClassName=\\\"account-select\\\"\\r\\n            nzPlaceHolder=\\\"Selecione\\\"\\r\\n          >\\r\\n            <nz-option\\r\\n              *ngFor=\\\"let state of states\\\"\\r\\n              [nzLabel]=\\\"state?.sigla\\\"\\r\\n              [nzValue]=\\\"state?.sigla\\\"\\r\\n            ></nz-option>\\r\\n          </nz-select>\\r\\n          <nz-form-explain *ngIf=\\\"address.get('uf').dirty && address.get('uf').errors\\\">\\r\\n            <ng-container *ngIf=\\\"address.get('uf').hasError('required')\\\">\\r\\n              Campo obrigatório, por favor selecione o UF.\\r\\n            </ng-container>\\r\\n          </nz-form-explain>\\r\\n        </nz-form-control>\\r\\n      </nz-form-item>\\r\\n    </div>\\r\\n  </div>\\r\\n\\r\\n  <nz-divider nzOrientation=\\\"left\\\" nzText=\\\"Dados do Responsável Técnico\\\" *ngIf=\\\"verified\\\"></nz-divider>\\r\\n  <div\\r\\n    class=\\\"row justify-content-between\\\"\\r\\n    [formGroup]=\\\"form.get('technicalResponsible')\\\"\\r\\n    *ngIf=\\\"verified\\\"\\r\\n  >\\r\\n    <div class=\\\"col-md-6\\\">\\r\\n      <nz-form-item>\\r\\n        <nz-form-label nzFor=\\\"nomeTechnicalResponsible\\\">Nome</nz-form-label>\\r\\n        <nz-form-control nzHasFeedback>\\r\\n          <input\\r\\n            id=\\\"nomeTechnicalResponsible\\\"\\r\\n            formControlName=\\\"name\\\"\\r\\n            maxlength=\\\"128\\\"\\r\\n            nz-input\\r\\n            placeholder=\\\"ex: XYZ\\\"\\r\\n            autocomplete=\\\"disabled\\\"\\r\\n          />\\r\\n          <nz-form-explain\\r\\n            *ngIf=\\\"\\r\\n              form.get('technicalResponsible.name').dirty && form.get('technicalResponsible.name').errors\\r\\n            \\\"\\r\\n          >\\r\\n            <ng-container *ngIf=\\\"form.get('technicalResponsible.name').hasError('required')\\\">\\r\\n              Por favor digite o nome.\\r\\n            </ng-container>\\r\\n          </nz-form-explain>\\r\\n        </nz-form-control>\\r\\n      </nz-form-item>\\r\\n\\r\\n      <nz-form-item>\\r\\n        <nz-form-label nzFor=\\\"cpfTechnicalResponsible\\\">CPF</nz-form-label>\\r\\n        <nz-form-control nzHasFeedback>\\r\\n          <input\\r\\n            formControlName=\\\"cpf\\\"\\r\\n            nz-input\\r\\n            placeholder=\\\"000.000.000-00\\\"\\r\\n            mask=\\\"000.000.000-00\\\"\\r\\n            autocomplete=\\\"disabled\\\"\\r\\n            id=\\\"cpfTechnicalResponsible\\\"\\r\\n          />\\r\\n          <nz-form-explain\\r\\n            *ngIf=\\\"\\r\\n              form.get('technicalResponsible.cpf').dirty && form.get('technicalResponsible.cpf').errors\\r\\n            \\\"\\r\\n          >\\r\\n            <ng-container *ngIf=\\\"form.get('technicalResponsible.cpf').hasError('cpf')\\\">\\r\\n              CPF inválido, por favor digite um CPF válido.\\r\\n            </ng-container>\\r\\n          </nz-form-explain>\\r\\n        </nz-form-control>\\r\\n      </nz-form-item>\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"col-md-6\\\">\\r\\n      <div [formGroup]=\\\"form.get('technicalResponsible.crf')\\\">\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"crfTechnicalResponsible\\\">CRF</nz-form-label>\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <input\\r\\n              formControlName=\\\"number\\\"\\r\\n              nz-input\\r\\n              placeholder=\\\"Digite o CRF\\\"\\r\\n              maxlength=\\\"10\\\"\\r\\n              id=\\\"crfTechnicalResponsible\\\"\\r\\n            />\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n        <nz-form-item>\\r\\n          <nz-form-label>UF</nz-form-label>\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <nz-select\\r\\n              formControlName=\\\"uf\\\"\\r\\n              id=\\\"crm-uf\\\"\\r\\n              nzShowSearch\\r\\n              nzAllowClear\\r\\n              nzDropdownClassName=\\\"account-select\\\"\\r\\n              nzPlaceHolder=\\\"Selecione\\\"\\r\\n            >\\r\\n              <nz-option *ngFor=\\\"let state of states\\\" [nzLabel]=\\\"state?.sigla\\\" [nzValue]=\\\"state?.sigla\\\">\\r\\n              </nz-option>\\r\\n            </nz-select>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n</form>\\r\\n<ngx-loading [show]=\\\"isLoading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\r\\n\";","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\nimport { ResponseConsultsCnes } from '../models/response-consults-cnes';\n\nconst API_UL = `${environment.apiRoot}open-data`;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OpenDataService {\n  constructor(private http: HttpClient) {}\n\n  consultCnes(cnes: string): Observable<ResponseConsultsCnes> {\n    return this.http.get<ResponseConsultsCnes>(`${API_UL}/cnes/${cnes}`);\n  }\n}\n","import { distinctUntilChanged } from 'rxjs/operators';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport {\r\n  AfterContentChecked,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  EventEmitter,\r\n  OnInit,\r\n  Output\r\n} from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ValidationService } from '@app/core/services/validation.service';\r\nimport { CepService } from '@app/modules/entry/services/cep.service';\r\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\r\nimport { BrazilState } from '@app/shared/models';\r\nimport { ResponseSearchCnpj } from '@app/shared/models/reponse-search-cnpj';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\nimport { BigboostService } from './../../../../../shared/services/bigboost.service';\r\nimport { OpenDataService } from './../../../../../shared/services/open-data.service';\r\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\r\n\r\nconst onlyNumbers = (valor: string) => {\r\n  return valor.replace(/[^0-9]+/g, '');\r\n};\r\n\r\n@Component({\r\n  selector: 'app-pharmacy-form',\r\n  templateUrl: './pharmacy-form.component.html',\r\n  styleUrls: ['./pharmacy-form.component.scss']\r\n})\r\nexport class PharmacyFormComponent implements OnInit, AfterContentChecked {\r\n  readonly STATUS_VALID = 'VALID';\r\n\r\n  @Output() formChange: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\r\n\r\n  states: BrazilState[] = BrazilianStates;\r\n\r\n  form: FormGroup;\r\n  isLoading = false;\r\n\r\n  constructor(\r\n    private fb: FormBuilder,\r\n    private cepService: CepService,\r\n    private bigboostService: BigboostService,\r\n    private openDataService: OpenDataService,\r\n    private notification: AppToastService,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    this.form = this.fb.group({\r\n      cnpj: [null, [Validators.required, ValidationService.cnpjValidator]],\r\n      businessName: ['', Validators.required],\r\n      fantasyName: ['', Validators.required],\r\n      cnae: this.fb.group({\r\n        code: [''],\r\n        description: ['']\r\n      }),\r\n      cpfResponsible: ['', [ValidationService.cpfValidator]],\r\n      telephone: ['', Validators.required],\r\n      cellphone: [''],\r\n      email: ['', [Validators.required, Validators.email]],\r\n      emailConfirmation: [\r\n        '',\r\n        [Validators.required, Validators.email, ValidationService.confirmEmailValidator('email')]\r\n      ],\r\n      licenseNumber: [''],\r\n      technicalResponsible: this.fb.group({\r\n        name: ['', Validators.compose([ValidationService.nomeValidator])],\r\n        cpf: ['', [ValidationService.cpfValidator]],\r\n        crf: this.fb.group({\r\n          number: [''],\r\n          uf: ['']\r\n        })\r\n      }),\r\n      address: this.fb.group({\r\n        uf: [null, Validators.required],\r\n        city: ['', Validators.required],\r\n        complement: [''],\r\n        number: ['', Validators.required],\r\n        street: ['', Validators.required],\r\n        neighborhood: ['', Validators.required],\r\n        cep: ['', [Validators.required, ValidationService.cepValidator]]\r\n      }),\r\n      pendency: [null],\r\n      public_pharmacy: [false],\r\n      cnes: [null],\r\n      cnpj_entity: [''],\r\n      business_name_entity: [''],\r\n      verified: [false]\r\n    });\r\n  }\r\n\r\n  get isPharmacyPublic(): boolean {\r\n    return this.form.get('public_pharmacy').value;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.form.get('email').valueChanges.subscribe(email => {\r\n      this.form.get('email').setValue(email && email.toLowerCase(), { emitEvent: false });\r\n      this.formChange.emit(this.form);\r\n    });\r\n    this.form.get('emailConfirmation').valueChanges.subscribe(email => {\r\n      this.form.get('emailConfirmation').setValue(email && email.toLowerCase(), { emitEvent: false });\r\n      this.formChange.emit(this.form);\r\n    });\r\n\r\n    this.form.get('cnpj').valueChanges.subscribe(() => {\r\n      this.form.get('verified').setValue(false);\r\n      this.formChange.emit(this.form);\r\n    });\r\n    this.listenAndApplyValitationsPublicPharmacy();\r\n    this.formChange.emit(this.form);\r\n  }\r\n\r\n  ngAfterContentChecked(): void {\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  listenAndApplyValitationsPublicPharmacy() {\r\n    this.form\r\n      .get('public_pharmacy')\r\n      .valueChanges.pipe(distinctUntilChanged())\r\n      .subscribe(value => {\r\n        if (value) {\r\n          this.form.get('cnes').setValidators([Validators.required]);\r\n          this.form.get('cnpj_entity').setValidators([Validators.required]);\r\n\r\n          this.form.get('cnpj').clearValidators();\r\n          this.form.get('businessName').clearValidators();\r\n          if (!this.verified) {\r\n            this.form.get('cnpj').reset();\r\n          }\r\n        } else {\r\n          this.form.get('cnes').clearValidators();\r\n          this.form.get('cnpj_entity').clearValidators();\r\n\r\n          this.form.get('cnpj').setValidators([Validators.required, ValidationService.cnpjValidator]);\r\n          this.form.get('businessName').setValidators([Validators.required]);\r\n          if (!this.verified) {\r\n            this.form.get('cnes').reset();\r\n          }\r\n        }\r\n        this.form.get('cnes').updateValueAndValidity();\r\n        this.form.get('cnpj_entity').updateValueAndValidity();\r\n\r\n        this.form.get('cnpj').updateValueAndValidity();\r\n        this.form.get('businessName').updateValueAndValidity();\r\n        this.formChange.emit(this.form);\r\n      });\r\n  }\r\n\r\n  @nativeAsync\r\n  async handleConsult() {\r\n    if (this.isPharmacyPublic) {\r\n      await this.handleConsultCnes();\r\n    } else {\r\n      await this.handleConsultCnpj();\r\n    }\r\n  }\r\n\r\n  @nativeAsync\r\n  async handleConsultCnes() {\r\n    this.isLoading = true;\r\n    const cnes = this.form.get('cnes').value;\r\n    this.openDataService\r\n      .consultCnes(cnes)\r\n      .subscribe(\r\n        response => {\r\n          const cnae = {\r\n            code: response.cnae_entity,\r\n            description: response.cnae_entity_description\r\n          };\r\n          const pharmacyInformation = {\r\n            cnes: response.cnes,\r\n            cnpj_entity: response.cnpj_entity,\r\n            business_name_entity: response.business_name,\r\n            fantasyName: response.fantasy_name,\r\n            cnae: {\r\n              ...cnae\r\n            }\r\n          };\r\n\r\n          this.form.patchValue(pharmacyInformation);\r\n          this.verified = true;\r\n          this.cdr.detectChanges();\r\n          this.form.get('cnae').disable();\r\n        },\r\n        (httpError: HttpErrorResponse) => {\r\n          if (httpError.status === 400 || httpError.status === 409) {\r\n            const { message } = httpError.error;\r\n            this.notification.notify('warning', message);\r\n          } else {\r\n            this.notification.notify('error', 'Error ao tentar consultar CNAE');\r\n          }\r\n          console.error(httpError);\r\n          this.verified = false;\r\n        }\r\n      )\r\n      .add(() => {\r\n        this.isLoading = false;\r\n        this.cdr.detectChanges();\r\n      });\r\n  }\r\n\r\n  @nativeAsync\r\n  async handleConsultCnpj() {\r\n    this.isLoading = true;\r\n    const cnpj = onlyNumbers(this.form.get('cnpj').value);\r\n    try {\r\n      const response = await this.bigboostService.consultCnpj(cnpj);\r\n      if (response.erro) {\r\n        if (response.erroCodigo === 102) {\r\n          this.handleErrorMessageStatusCode102();\r\n          return;\r\n        } else {\r\n          const consult = {\r\n            status: -1,\r\n            cnpj,\r\n            erroCodigo: response.erroCodigo,\r\n            erro: 'A importação de dados do cnpj está com instabilidade'\r\n          };\r\n          this.form.get('pendency').setValue(consult);\r\n          this.notification.notify(\r\n            'warning',\r\n            'Aviso',\r\n            'A importação de dados do CNPJ está com instabilidade, mas você poderá se cadastrar preenchendo os campos manualmente.'\r\n          );\r\n          this.verified = true;\r\n        }\r\n      }\r\n\r\n      this.setDataForm(response);\r\n      if (response) {\r\n        this.form.get('businessName').disable();\r\n      }\r\n      this.verified = true;\r\n    } catch (err) {\r\n      if (err.status === 400 || err.status === 409) {\r\n        const { message } = err.error;\r\n        this.notification.notify('warning', message);\r\n        this.form.get('cnpj').setErrors({ notExists: true });\r\n      } else {\r\n        this.notification.notify('error', 'Error ao tentar consultar CNPJ');\r\n      }\r\n      console.error(err);\r\n      this.verified = false;\r\n    } finally {\r\n      this.isLoading = false;\r\n      this.cdr.detectChanges();\r\n    }\r\n  }\r\n\r\n  private handleErrorMessageStatusCode102(): void {\r\n    this.notification.notify(\r\n      'warning',\r\n      'Aviso',\r\n      'O CNPJ informado não existe em nossos fornecedores. Por favor, confira o número do CNPJ e tente novamente. ' +\r\n        'Em caso de dúvidas, entre em contato com o nosso suporte'\r\n    );\r\n  }\r\n\r\n  get verified() {\r\n    return this.form.get('verified').value;\r\n  }\r\n\r\n  set verified(value: boolean) {\r\n    this.form.get('verified').setValue(value);\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  private setDataForm(response: ResponseSearchCnpj): void {\r\n    const cnae = response.cnae\r\n      ? {\r\n          code: response ? response.cnae.fiscal : null,\r\n          description: response ? response.cnae.descricao : null\r\n        }\r\n      : {\r\n          code: '',\r\n          description: ''\r\n        };\r\n    const pharmacyInformation = {\r\n      businessName: response ? response.razao : null,\r\n      fantasyName: response ? response.fantasia : null,\r\n      cnae: {\r\n        ...cnae\r\n      }\r\n    };\r\n\r\n    this.form.patchValue(pharmacyInformation);\r\n  }\r\n\r\n  @nativeAsync\r\n  async onKey(event: any, address: FormGroup) {\r\n    if (event.target.value.length === 10) {\r\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\r\n      const data = await this.cepService.consult(cep);\r\n      if (!data.erro) {\r\n        address.patchValue({\r\n          uf: data.uf,\r\n          street: data.logradouro,\r\n          neighborhood: data.bairro,\r\n          city: data.localidade,\r\n          number: null,\r\n          cep: data.cep\r\n        });\r\n      }\r\n    }\r\n  }\r\n}\r\n","export default \".add-more,\\n::ng-deep .ant-divider-inner-text {\\n  font-family: \\\"probold\\\", sans-serif;\\n  color: #0b6054;\\n}\\n\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n\\n.mandatory {\\n  color: red;\\n}\\n\\n.error {\\n  color: red;\\n}\\n\\n.btn-consulta-cnpj {\\n  display: flex;\\n  justify-content: flex-end;\\n  align-items: center;\\n  margin-top: 15px;\\n  margin-left: -15px;\\n}\\n\\n.btn-consulta-cnpj[disabled] {\\n  color: rgba(0, 0, 0, 0.25) !important;\\n  background-color: #f5f5f5 !important;\\n  border-color: #d9d9d9 !important;\\n  text-shadow: none !important;\\n  box-shadow: none !important;\\n}\";","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-terms-and-conditions',\r\n  templateUrl: './terms-and-conditions.component.html',\r\n  styleUrls: ['./terms-and-conditions.component.scss']\r\n})\r\nexport class TermsAndConditionsComponent implements OnInit {\r\n  constructor() {}\r\n\r\n  ngOnInit() {}\r\n}\r\n","export default \"<div>\\r\\n  <!-- <h4>\\r\\n    TERMO DE USO E POLÍTICA DE PRIVACIDADE – RECEITA DIGITAL\\r\\n  </h4> -->\\r\\n  POR FAVOR, LEIA ATENTAMENTE ESTE TERMO DE USO E POLÍTICA DE PRIVACIDADE, POIS AO CLICAR EM “LI E ACEITO\\r\\n  OS TERMOS DE USO E POLÍTICA DE PRIVACIDADE” VOCÊ ESTÁ ACEITANDO ELETRONICAMENTE AS REGRAS AQUI\\r\\n  ESTABELECIDAS E DEMONSTRANDO A SUA\\r\\n\\r\\n  <br />\\r\\n  CONCORDÂNCIA AO USAR NOSSA PLATAFORMA OU APLICATIVO.\\r\\n  <br />\\r\\n  Em caso de dúvidas, antes de utilizar nossa plataforma/aplicativo, entre em contato por meio do nosso\\r\\n  canal de atendimento: contato@receitadigital.com\\r\\n  <br /><br />\\r\\n  1 - INTRODUÇÃO\\r\\n  <br />\\r\\n  O site/ plataforma receitadigital.com e aplicativo, fazem parte de um hub de serviços de tecnologia\\r\\n  oferecidos pela K&I - KNOWLEDGE AND INTELLIGENCE TECNOLOGIA LTDA, inscrita no CNPJ: 34.307.169/0001-00,\\r\\n  com sede na Rua do Carmo, nº 71- 5º andar, Centro – Rio de Janeiro- RJ, CEP 20011-020, simplesmente\\r\\n  denominada como “Receita Digital”. A empresa referida neste Termo de uso e Política de privacidade será\\r\\n  denominada como “Receita Digital” e compromete-se a adotar as providências necessárias e de sua\\r\\n  responsabilidade para a proteção da privacidade dos usuários nos serviços oferecidos. Este Termo de Uso\\r\\n  e Política de privacidade descreve as regras aplicáveis ao contratante/usuário no acesso e uso da nossa\\r\\n  plataforma e aplicativo. Ela foi elaborada para reafirmar o nosso compromisso com a privacidade e a\\r\\n  segurança relacionadas aos serviços interativos e às informações coletadas e armazenadas dos nossos\\r\\n  usuários. O documento abrange o tratamento que a nossa plataforma e aplicativo dão às informações\\r\\n  capazes de identificar nossos contratantes/usuários. Todas as informações serão tratadas em\\r\\n  concordância com a Lei Geral de Proteção de Dados Pessoais de 14 de agosto de 2018 (Lei nº\\r\\n  13.709/2018).\\r\\n  <br /><br />\\r\\n  2 - DENOMINAÇÕES DESTE TERMO DE USO E POLÍTICA DE PRIVACIDADE.\\r\\n  <br />\\r\\n  2.1) A manutenção/suporte técnico utilizado por prescritores, farmácias e pacientes será realizado por\\r\\n  meio do fale conosco.\\r\\n\\r\\n  <br />\\r\\n  2.2) Fale Conosco: Canal de contato entre a Receita Digital e seus contratantes (prescritores,\\r\\n  farmácias e pacientes) para recebimento de chamados de Suporte ou Manutenção.\\r\\n\\r\\n  <br />\\r\\n  2.3) Contratante: aquele que usa a plataforma/aplicativo e se sujeita a estes Termos de Uso e Política\\r\\n  de Privacidade, sejam prescritores/Estabelecimentos de saúde, farmácias/drogarias e pacientes.\\r\\n\\r\\n  <br />\\r\\n  2.4) Comprador: pessoa que apresenta a receita nos estabelecimentos comerciais Farmácias/Drogarias para\\r\\n  compra. Poderá ser o próprio paciente/cliente ou outra pessoa autorizada pelo paciente/cliente.\\r\\n\\r\\n  <br />\\r\\n  2.5) Customização: inserções, adequações, modificações e desenvolvimento de funções na plataforma\\r\\n  mediante demanda especial do Contratante. As customizações não interferem sobre os direitos de\\r\\n  propriedade da plataforma que permanece em poder da Receita Digital.\\r\\n\\r\\n  <br />\\r\\n  2.6) Dados: qualquer informação inserida na plataforma/aplicativo, seja na forma escrita, de áudio,\\r\\n  vídeo ou audiovisual.\\r\\n\\r\\n  <br />\\r\\n  2.7) Farmácia/ Drogaria: estabelecimento comercial público ou particular onde ocorre a dispensação e\\r\\n  comercialização de medicamentos prescritos e produtos para a saúde.\\r\\n\\r\\n  <br />\\r\\n  2.8) Prescritores: profissionais da saúde que prescrevem receitas de medicamentos a seus pacientes/\\r\\n  clientes dentro da plataforma Receita Digital.\\r\\n\\r\\n  <br />\\r\\n  2.9) Manutenção: serviços que visam manter o uso adequado da plataforma/aplicativo da Receita Digital,\\r\\n  como correções e configurações.\\r\\n\\r\\n  <br />\\r\\n  2.10) Mensagem de Dados: toda informação gerada, enviada, recebida ou comunicada por meio eletrônico,\\r\\n  ou similar.\\r\\n\\r\\n  <br />\\r\\n  2.11) Mudanças e ajustes: incremento nas funcionalidades ou tecnologia da plataforma, resultando ou não\\r\\n  em nova versão, disponibilizadas a critério da equipe de desenvolvimento e programação da Receita\\r\\n  Digital.\\r\\n\\r\\n  <br />\\r\\n  2.12) Paciente/Cliente: pessoa sujeita a tratamento prescritor que recebe a prescrição de medicamentos.\\r\\n\\r\\n  <br />\\r\\n  2.13) Planos de saúde: empresas que operam planos de saúde para a oferta de serviços prescritores,\\r\\n  hospitalares, exames, tratamentos, mediante contrapartida financeira.\\r\\n\\r\\n  <br />\\r\\n  2.14) Plataforma/Aplicativo: programa de computador da marca Receita Digital, em suas diferentes\\r\\n  versões e funcionalidades, de propriedade exclusiva da K&I - KNOWLEDGE AND INTELLIGENCE TECNOLOGIA\\r\\n  LTDA, inscrita no CNPJ: 34.307.169/0001-00, protegido e regulado pela Lei 9.609/98.\\r\\n\\r\\n  <br />\\r\\n  2.15) Política de Privacidade: regras sobre privacidade, uso e transmissão de dados disponível no\\r\\n  site www.receitadigital.com e www.receitadigital.com.br e www.receitadigital.med.br\\r\\n\\r\\n  <br />\\r\\n  2.16) Medicamentos/Produtos: itens de produção da Indústria que compõem o banco de dados da Receita\\r\\n  Digital.\\r\\n\\r\\n  <br />\\r\\n  2.17) Suporte: Serviço de Atendimento ao usuário para esclarecimento de dúvidas quanto à instalação e\\r\\n  utilização da plataforma.\\r\\n\\r\\n  <br />\\r\\n  2.18) Usuário: pessoa física ou jurídica (farmácias e drogarias) que é o nosso destinatário final de\\r\\n  produtos ou serviços, nos termos do art. 2o e parágrafo único do Código de Defesa do Consumidor - Lei\\r\\n  8.078, de 11 de setembro de 1990 que utiliza a plataforma Receita Digital.\\r\\n\\r\\n  <br /><br />\\r\\n  3- PLATAFORMA/ APLICATIVO DE PRODUTOS E SERVIÇOS\\r\\n  <br />\\r\\n  O Termo de Uso e Política de Privacidade aceitos constituem o contrato entre a Receita Digital e o\\r\\n  Usuário/Contratante, e são suficientes neste momento para a formação e produção dos respectivos efeitos\\r\\n  contratuais no caso de prescritores e pacientes Prescritores, Farmácias/Drogarias estão sujeitos à\\r\\n  Proposta Comercial no que for cabível. A Receita Digital licencia o uso da plataforma aos mesmos de\\r\\n  forma gratuita para a versão básica (Beta e funcionalidades do pacote “básico).\\r\\n  <br />\\r\\n  A Receita Digital se reserva o direito de divulgar promoções pontuais, que não configuram compromisso\\r\\n  permanente junto aos usuários. Documentação complementar poderá ser produzida, vindo a integrar este\\r\\n  Termo de Uso. Este Termo de Uso é composto por regras de licenciamento de uso do Software e Serviços de\\r\\n  tecnologia da informação.\\r\\n\\r\\n  <br />\\r\\n  A plataforma/aplicativo da Receita Digital possibilita o acesso a informações por integrantes da cadeia\\r\\n  do negócio e profissionais da Contratante (estabelecimentos de saúde e/ou farmácias e drogarias),\\r\\n  mediante autorização prévia de compartilhamento de dados.\\r\\n\\r\\n  <br />\\r\\n  Cada camada da plataforma/aplicativo contempla informações relevantes para determinados públicos,\\r\\n  Prescritores/Estabelecimentos de saúde, Farmácias/Drogarias, Pacientes e Planos de Saúde e o acesso a\\r\\n  estas informações dar-se-á por meio de cadastro/ emissão de senhas exclusivas/ assinaturas com\\r\\n  certificação digital e autorizações prévias, a fim de atender às regras da Política de Privacidade.\\r\\n\\r\\n  <br />\\r\\n  Ao realizar o cadastro na plataforma/aplicativo Receita Digital, o contratante/usuário deverá fornecer\\r\\n  dados, tais como: informações pessoais identificáveis para criação de perfil e Informações\\r\\n  profissionais e de pessoa jurídica. O contratante/usuário reconhece a importância da veracidade das\\r\\n  informações fornecidas de si mesmo e das empresas e se compromete a mantê-las atualizadas, completas e\\r\\n  verdadeiras assumindo a correspondente responsabilidade caso não sejam.\\r\\n\\r\\n  <br />\\r\\n  As futuras Extensões de funcionalidade estão cobertas por este Termo de Uso e Política de Privacidade e\\r\\n  seguem todas as suas regras, inclusive às relativas à Política de Privacidade.\\r\\n\\r\\n  <br />\\r\\n  O uso adequado da plataforma/aplicativo pressupõe o atendimento a requisitos técnicos indispensáveis\\r\\n  por parte do Contratante.\\r\\n\\r\\n  <br />\\r\\n  A Receita Digital é exclusiva proprietária e detentora dos direitos autorais sobre a plataforma/\\r\\n  aplicativo protegidos e regulados pela Lei 9.609/98. Face aos direitos autorais que lhe pertencem,\\r\\n  detém a exclusiva liberdade de exploração da plataforma/aplicativo, para os fins a que se destina.\\r\\n\\r\\n  <br />\\r\\n  A infração aos direitos autorais da Receita Digital implica em indenização por perdas e danos e/ou\\r\\n  lucros cessantes na forma da lei.\\r\\n\\r\\n  <br />\\r\\n  Dentre outras práticas inaceitáveis e ilegais, considera-se violação de direitos autorais da Receita\\r\\n  Digital a utilização, modificação, comercialização ou integração desautorizada da\\r\\n  plataforma/aplicativo.\\r\\n\\r\\n  <br />\\r\\n  Para fins de auditoria e verificação de contrafação, pirataria ou uso indevido da\\r\\n  plataforma/aplicativo, a Receita Digital detém livre acesso ao ambiente computacional dos\\r\\n  Contratantes/Usuários.\\r\\n\\r\\n  <br />\\r\\n  A Receita Digital, caso entenda ser viável tecnicamente, prestará serviços de integração da\\r\\n  plataforma/aplicativo com outros softwares/sistemas do Contratante/usuário, mediante prévio acordo\\r\\n  convencionado entre as partes.\\r\\n\\r\\n  <br />\\r\\n  A Receita Digital desaconselha que integrações sejam realizadas diretamente pelo Contratante/Usuário,\\r\\n  pois poderão desestabilizar nossa plataforma/aplicativo ou impactar seu funcionamento. Nestes casos, a\\r\\n  Receita Digital não será responsabilizada, porém, pode auxiliar mediante demanda personalizada e\\r\\n  proposta específica.\\r\\n\\r\\n  <br />\\r\\n  <br />\\r\\n  4 - REFERENTE À MARCA, WEBSITE E PLATAFORMA/APLICATIVO\\r\\n\\r\\n  <br />\\r\\n  A Receita Digital é marca registrada da K&I - KNOWLEDGE AND INTELLIGENCE TECNOLOGIA LTDA, inscrita no\\r\\n  CNPJ: 34.307.169/0001-00 protegida junto ao INPI, conforme Lei 9.279/96. É proibida a utilização\\r\\n  desautorizada da referida marca, que incluem o nome e logotipo, salvo mediante consentimento expresso\\r\\n  da Receita Digital.\\r\\n\\r\\n  <br />\\r\\n\\r\\n  Estão reservados à K&I - KNOWLEDGE AND INTELLIGENCE TECNOLOGIA LTDA, todos os direitos autorais\\r\\n  relativos ao website, plataforma, aplicativo, desenho, programação, conteúdo, ficando expressamente\\r\\n  proibida a reprodução, comunicação, distribuição e transformação dos referidos elementos protegidos,\\r\\n  salvo mediante consentimento expresso da Receita Digital. A Receita Digital não utilizará marcas do\\r\\n  Contratante/Usuário, exceto para divulgação da condição de Usuário na plataforma/aplicativo da Receita\\r\\n  Digital e mediante consentimento do Contratante/usuário. O Contratante/Usuário poderá impedir a\\r\\n  divulgação de sua marca como Usuário na plataforma/aplicativo da Receita Digital, mediante comunicação\\r\\n  expressa e inequívoca à Receita Digital, com prazo razoável para cumprimento.\\r\\n  <br />\\r\\n  <br />\\r\\n  5 - DA LICENÇA E PERMISSÃO DE USO\\r\\n  <br />\\r\\n  No caso da versão Premium e/ou aquisição de serviços/funcionalidades para utilizar a\\r\\n  plataforma/aplicativo o Contratante/Usuário deverá estar adimplente com relação ao valor da licença e\\r\\n  dos serviços, se for o caso, manter conexão à internet de boa qualidade, de acordo com as orientações\\r\\n  da Receita Digital e respeitar o limite de um usuários e/ou prescrição ou dispensação por licença\\r\\n  adquirida.\\r\\n\\r\\n  <br />\\r\\n  A conexão à internet de boa qualidade é fundamental ao adequado funcionamento da plataforma/aplicativo\\r\\n  da Receita Digital, bem como permite a sua atualização tecnológica e outros serviços.\\r\\n\\r\\n  <br />\\r\\n  A plataforma/aplicativo não admite utilização off-line. O uso da plataforma/aplicativo pressupõe o\\r\\n  respeito e prévia adesão à Política de Privacidade e aos direitos fundamentais a privacidade, imagem,\\r\\n  honra, direitos autorais e regras de preservação de dados, inclusive condições comerciais, pedidos,\\r\\n  registros pessoais e cadastrais. O Contratante/usuário deverá informar à Receita Digital sobre bloqueio\\r\\n  ou restrições de uso da plataforma/aplicativo Receita Digital mediante comunicação prévia comprovada e\\r\\n  inequívoca.\\r\\n\\r\\n  <br />\\r\\n  <br />\\r\\n  6 - DOS DADOS FORNECIDOS E ARMAZENADOS\\r\\n  <br />\\r\\n  É fundamental que o Contratante/Usuário detenha a titularidade ou autorização para inserção e/ou acesso\\r\\n  aos Dados. O Contratante/Usuário é responsável pelos Dados transmitidos, inseridos e acessados. A\\r\\n  Receita Digital é responsável pelo seu armazenamento e acesso para oferecer com eficiência todos\\r\\n  serviços de seu interesse no site/plataforma e aplicativo, bem como para garantir sua segurança,\\r\\n  monitorar fraudes, cumprir nossas obrigações legais ou disponibilizar um canal de atendimento\\r\\n  especializado para os nossos usuários.\\r\\n\\r\\n  <br />\\r\\n  Consentir com o uso de cookies de acordo com os termos desta política ao acessar nosso site/plataforma\\r\\n  ou aplicativo pela primeira vez nos permitirá usar cookies toda vez que você acessar nosso\\r\\n  site/plataforma ou aplicativo.\\r\\n\\r\\n  <br />\\r\\n  Caso o Contratante tenha interesse na exclusão ou limitação de acesso e/ou uso de Dados, deverá\\r\\n  informar à Receita Digital, mediante comunicação prévia aos administradores da plataforma/aplicativo de\\r\\n  comprovada e inequívoca pelo e-mail contato@receitadigital.com.\\r\\n\\r\\n  <br />\\r\\n  O Contratante/ usuário que não concordar com o presente Termo e quiser proceder com o cancelamento de\\r\\n  seu cadastro, removerá seus dados para futuras consultas, mas esta remoção não funcionará de maneira\\r\\n  retroativa, ou seja, as ações anteriores à essa decisão continuarão armazenadas e com uso de acordo com\\r\\n  os termos previstos no presente Instrumento.\\r\\n\\r\\n  <br />\\r\\n  A plataforma/aplicativo pertence exclusivamente à Receita Digital, assim, a mesma está autorizada a\\r\\n  incluir produtos, pacote de serviços próprios e de seus parceiros comerciais no mesmo, ceder espaços\\r\\n  publicitários bem como explorar amplamente a plataforma/aplicativo dentro de suas aptidões técnicas.\\r\\n\\r\\n  <br />\\r\\n  A inserção de Dados deve respeitar a Política de Privacidade da plataforma/aplicativo Receita Digital.\\r\\n\\r\\n  <br /><br />\\r\\n  7 - TERMO DE GARANTIA E VALIDADE TÉCNICA\\r\\n  <br />\\r\\n  Durante a vigência contratual, a receita Digital garante o funcionamento adequado da\\r\\n  plataforma/aplicativo Receita Digital para os fins a que se destina.\\r\\n\\r\\n  <br />\\r\\n  Erros são naturais e aceitáveis em plataforma/aplicativos, principalmente em sua versão Beta. Portanto,\\r\\n  não dão ensejo à garantia, inclusive porque esta é de versão gratuita para todos os usuários\\r\\n  (prescritores/Estabelecimentos de saúde, farmácias/drogarias e pacientes). O uso da garantia pressupõe\\r\\n  o atendimento das instruções da plataforma/aplicativo, disponibilizadas no website Receita Digital e\\r\\n  atualização tecnológica. Dentro do prazo de validade técnica, a Receita Digital garante a prestação de\\r\\n  serviços relativos ao adequado funcionamento da plataforma/aplicativo. A plataforma/aplicativo será\\r\\n  considerada adequada desde que suficiente na utilização para os fins a que se propõe, segundo suas\\r\\n  especificações técnicas. Por tratar-se de bem móvel imaterial, sujeito a adaptações e incremento\\r\\n  tecnológico, a Receita Digital não garante que a plataforma/aplicativo não apresentará erros, mas fará\\r\\n  o possível para minimizá-los e/ou consertá-los caso ocorram.\\r\\n\\r\\n  <br /><br />\\r\\n  8 - DAS RESPONSABILIDADES\\r\\n  <br />\\r\\n  A responsabilidade da Receita Digital é de meio, e não de finalidade ou resultado sobre o uso ou a\\r\\n  expectativa do Contratante/usuário com relação à plataforma/aplicativo e serviços ofertados.\\r\\n\\r\\n  <br />\\r\\n  <br />\\r\\n  A Receita Digital poderá disponibilizar o software, o serviço, a plataforma, o aplicativo, o ambiente\\r\\n  técnico, o atendimento, dentre outros, a fim de que o Contratante e demais\\r\\n\\r\\n  <br />\\r\\n  Usuários interajam, se relacionem, publiquem, acessem, utilizem ou pratiquem quaisquer outros atos\\r\\n  autorizados, ofertados ou disponíveis no plataforma/aplicativo Receita Digital, de forma direta, sem a\\r\\n  intermediação da Receita Digital.\\r\\n\\r\\n  <br />\\r\\n  A Receita Digital não intermedia, não edita, não audita, não fiscaliza e não monitora as ações e\\r\\n  relações entre os Contratantes/Usuários e demais Usuários e estes e terceiros.\\r\\n\\r\\n  <br />\\r\\n  Eventuais intervenções da Receita Digital quanto ao uso da plataforma/aplicativo somente serão\\r\\n  realizadas para fins de incremento de suas aptidões ou correções de erros e problemas.\\r\\n\\r\\n  <br />\\r\\n  Algumas disposições específicas sobre a responsabilidade compartilhada da Receita Digital e\\r\\n  Contratante/Usuário:\\r\\n\\r\\n  <br />\\r\\n  Fato de Terceiro – A Receita Digital e o Contratante/Usuário reconhecem que a plataforma/aplicativo é\\r\\n  segura, todavia, assim como ocorre em outros ambientes virtuais, está sujeito a ameaças e violação\\r\\n  criminosa, sendo estas causas excludentes da responsabilidade dos mesmos. Ainda, as tecnologias web são\\r\\n  suportadas por serviços de comunicação, tais como, internet e rede de telecomunicações, não oferecidos\\r\\n  pela Receita Digital e que podem impactar no desempenho da plataforma/aplicativo, sendo considerados\\r\\n  como fatos de terceiros, excludentes de responsabilidade.\\r\\n\\r\\n  <br />\\r\\n  Dever de Colaboração Recíproca – Receita Digital e Contratante/usuário deverão fornecer assistência\\r\\n  razoável um ao outro, sem nenhum custo, para responder auditorias regulatórias, inspeções, inquéritos\\r\\n  ou pedidos de autoridade relativos a plataforma/aplicativo, serviços ou transmissão de dados.\\r\\n\\r\\n  <br />\\r\\n  Informação – O Contratante/Usuário deverá notificar a Receita Digital de qualquer informação que receba\\r\\n  sobre a segurança da plataforma/aplicativo, incluindo informação confirmada ou não confirmada de\\r\\n  eventos adversos, graves ou inesperados associados com o uso do mesmo. Caso Fortuito ou Força Maior – A\\r\\n  Receita Digital e o Contratante/Usuário não responderão por prejuízos resultantes de caso fortuito ou\\r\\n  força maior, nos termos do Artigo 393, do Código Civil. São exemplos de Caso Fortuito ou Força Maior\\r\\n  excludentes de responsabilidade, dentre outros, os seguintes eventos:\\r\\n\\r\\n  <br />\\r\\n  a) falhas decorrentes de um fato ou impedimento além do controle razoável da Receita Digital e do\\r\\n  Contratante/Usuário;\\r\\n\\r\\n  <br />\\r\\n  b) atos ou fatos cuja inconformidade a Receita Digital e o Contratante/Usuário não poderiam\\r\\n  razoavelmente esperar ou levar em conta no momento da conclusão do termo;\\r\\n\\r\\n  <br />\\r\\n  c) fatos que a Receita Digital e o Contratante/Usuário não poderiam razoavelmente ter evitado ou\\r\\n  superado seus efeitos, inclusive intervenção de hackers, crackers, softwares de terceiros, antivírus,\\r\\n  firewall, proxy, entre outros;\\r\\n\\r\\n  <br />\\r\\n  d) guerra (declarada ou não), conflitos armados ou ameaça grave destes, ataque hostil, bloqueio,\\r\\n  embargo militar, invasão, ato de inimigo estrangeiro, guerra civil, rebelião, motim e revolução,\\r\\n  comoção ou desordem, violência de multidão ou ato de desobediência civil;\\r\\n\\r\\n  <br />\\r\\n  e) ato de sabotagem, terrorismo ou pirataria, inclusive pirataria virtual; f) ato de autoridade,\\r\\n  regulação, expropriação ou aquisição compulsória;\\r\\n  <br />\\r\\n  <br />\\r\\n  g) fatos da natureza, pestes, epidemia, desastres naturais como tempestade, ciclone, tufão, furacão,\\r\\n  relâmpago, tornado, tempestade violenta, terremoto, atividades vulcânicas; deslizamento de terras,\\r\\n  maremoto, tsunami, inundação, danos ou destruição pela seca;\\r\\n\\r\\n  <br />\\r\\n  h) explosão, incêndio, raio, destruição de máquinas, equipamentos, fábricas, e de qualquer tipo de\\r\\n  instalação, break-down de transportes, telecomunicações ou de corrente elétrica;\\r\\n\\r\\n  <br />\\r\\n  i) perturbação geral no trabalho, tais como, mas não limitadas a boicotar, greve, lock-out, ocupação de\\r\\n  fábricas e instalações; Tempo Razoável - quando a duração ou impedimento invocado superar o prazo de 60\\r\\n  (sessenta) dias, privando substancialmente a Receita Digital e o Contratante/Usuário dos efeitos deste\\r\\n  termo, qualquer um destes poderá rescindir o contrato, sem ônus ou indenização.\\r\\n\\r\\n  <br />\\r\\n  Limitação da Responsabilidade: Respeitadas às previsões legais relativas a esta espécie de\\r\\n  Termo/Contrato, a Receita Digital não será responsabilizada pelo uso abusivo da plataforma/aplicativo\\r\\n  ou serviços quando o Contratante/Usuário pratica ofensa, difamação, ameaça, assédio, contrafação ou\\r\\n  outras formas de violação de direitos pessoais ou proprietários, inclusive por lucros cessantes, perda\\r\\n  de dados, descontinuidade de negócios, relacionados ao uso ou mau uso da plataforma/aplicativo, mesmo\\r\\n  nos casos em que a Receita Digital tenha sido comunicada. Limitação Econômica da Responsabilidade:\\r\\n  Tratando-se de hipótese em que é admitida a limitação da responsabilidade, segundo as regras legais e\\r\\n  parâmetros jurisdicionais de cada País, em qualquer circunstância, a responsabilidade integral da\\r\\n  Receita Digital, com relação à totalidade dos danos suportados, não será superior a R$ 1.000,00 (mil\\r\\n  reais). Em conformidade ao art. 48 da Lei nº 13.709, a Receita Digital comunicará ao\\r\\n  Contratante/usuário e à Autoridade Nacional de Proteção de Dados (ANPD) a ocorrência de incidente de\\r\\n  segurança que possa acarretar risco ou dano relevante ao Contratante/usuário.\\r\\n  <br />\\r\\n  <br />\\r\\n  9 - POLÍTICA DE PRIVACIDADE\\r\\n\\r\\n  <br />\\r\\n  A Política de Privacidade da Receita Digital contém normas de uso correto da plataforma/aplicativo e\\r\\n  serviços oferecidos no que respeita aos dados pessoais dos Contratantes, Usuários e terceiros que\\r\\n  tenham acesso aos mesmos.\\r\\n\\r\\n  <br />\\r\\n  A Política de Privacidade protege e regula especialmente os direitos da personalidade referentes à\\r\\n  imagem, honra e vida privada das pessoas e empresas no âmbito do uso da plataforma/aplicativo.\\r\\n\\r\\n  <br />\\r\\n  É nossa Política de Privacidade que define a forma e limites de uso dos seus dados pessoais pela\\r\\n  Receita Digital, sempre no intuito de melhorarmos nossa experiência com o Contratante/usuário. A\\r\\n  legitimidade do objetivo da ação sempre prevalecerá.\\r\\n\\r\\n  <br />\\r\\n  A Contratante/Usuário permite, de acordo com a Política de Privacidade, que dados sejam transmitidos\\r\\n  por meio da plataforma/aplicativo, para ações comerciais, promocionais e estatísticas, mediante prévia\\r\\n  autorização por Mensagem de Dados. O objetivo será sempre oferecer com eficiência todos serviços de\\r\\n  interesse do contratante/usuário na plataforma/aplicativo, bem como para garantir sua segurança,\\r\\n  monitorar fraudes, cumprir nossas obrigações legais ou disponibilizar um canal de atendimento\\r\\n  especializado para os contratantes/usuários.\\r\\n\\r\\n  <br />\\r\\n  Em caso de fusão, aquisição ou venda de participação societária pela Receita Digital, os dados, em sua\\r\\n  totalidade, poderão ser transferidos ao terceiro envolvido a fim de garantir a continuidade de uso da\\r\\n  plataforma/aplicativo.\\r\\n\\r\\n  <br />\\r\\n  É bom saber que os dados dos contratantes/usuários desde que manipulados de forma consciente,\\r\\n  equilibrada e dentro da legalidade contribuem para o crescimento e aprimoramento da\\r\\n  plataforma/aplicativo e serviços ofertados no conceito de nuvem, que pressupõe máxima integração,\\r\\n  acessibilidade e proveito. Se você faz parte do grupo de pessoas que utilizam esse tipo de\\r\\n  plataforma/aplicativo e serviços coligados compartilhe seus dados com empresas que possuem boas\\r\\n  práticas e políticas claras de uso de dados.\\r\\n\\r\\n  <br />\\r\\n  10 - DA VIGÊNCIA DO USO DA PLATAFORMA/APLICATIVO\\r\\n  <br />\\r\\n  O prazo de uso da plataforma/aplicativo e serviços coligados da Receita Digital será indeterminado,\\r\\n  salvo se a proposta comercial inicial dispuser o contrário.\\r\\n\\r\\n  <br />\\r\\n  O uso da plataforma/aplicativo poderá ser rescindido a qualquer tempo, mediante notificação expressa\\r\\n  com 60 (sessenta) dias de antecedência.\\r\\n\\r\\n  <br />\\r\\n  O contrato entre a Receita Digital - K&I - KNOWLEDGE AND INTELLIGENCE TECNOLOGIA LTDA e o\\r\\n  Contratante/Usuário poderá ser rescindido de pleno direito, independentemente de notificação ou\\r\\n  interpelação, a qualquer tempo, no caso de qualquer das disposições deste Termo de Uso, podendo ainda,\\r\\n  implicar em indenização por perdas e danos. Falência, recuperação judicial, extrajudicial ou liquidação\\r\\n  da Receita Digital e/ou do Contratante/usuário implicam na rescisão contratual de pleno direito.\\r\\n\\r\\n  <br /><br />\\r\\n  11- DO PRAZO E REVOGAÇÃO DOS TERMOS DE USO E POLÍTICA DE PRIVACIDADE\\r\\n  <br />\\r\\n  Este Termo de Uso e Política de Privacidade entra em vigor na data de sua publicação, acima\\r\\n  identificada, e seu prazo é indeterminado. O constante aprimoramento da plataforma/aplicativo Receita\\r\\n  Digital e seus serviços bem como as alterações legais e mercadológicas poderá ensejar a modificação das\\r\\n  regras previstas neste Termo de Uso e Política de Privacidade, neste caso, haverá a revogação deste\\r\\n  instrumento, com imediata substituição por versão atualizada que passará a regular a relação entre a\\r\\n  Receita Digital e o Contratante/usuário dentro de 10 (dez) dias úteis a contar da publicação.\\r\\n\\r\\n  <br />\\r\\n  A substituição deste Termo de Uso e Política de Privacidade por outro será divulgada nos canais de\\r\\n  comunicação com o Contratante/usuário da Receita Digital, inclusive e-mail, porém, a responsabilidade\\r\\n  de se manter informado é exclusivamente deste, que deverá visitar regularmente o site ou e-mails\\r\\n  enviados pela Receita Digital.\\r\\n\\r\\n  <br />\\r\\n  A adesão à novos Termos de Uso e Política de Privacidade dar-se-á mediante a continuidade na utilização\\r\\n  da plataforma/aplicativo Receita Digital e seus serviços coligados.\\r\\n\\r\\n  <br />\\r\\n  A discordância com os novos Termos de Uso e Política de Privacidade deverá ser imediatamente informada\\r\\n  pelo Contratante/Usuário ao setor de Atendimento da Receita Digital para fins de solução da\\r\\n  controvérsia ou rescisão do contrato.\\r\\n  <br /><br />\\r\\n  12 - SOBRE AS REGRAS GERAIS DESTE TERMO DE USO E POLÍTICA DE PRIVACIDADE\\r\\n  <br />\\r\\n  A Receita Digital poderá aceitar o descumprimento destas regras pelo Contratante/Usuário sem que\\r\\n  signifique que renunciou a seus direitos, que as disposições foram alteradas ou que não possa vir a\\r\\n  aplicá-las integralmente de forma imediata ou a qualquer tempo.\\r\\n\\r\\n  <br />\\r\\n  Se algumas regras deste Termo de Uso e Política de Privacidade não puderem ser aplicadas, este fato não\\r\\n  afetará o todo do instrumento que permanecerá válido e vigente.\\r\\n\\r\\n  <br />\\r\\n  Se o Contratante/Usuário adquirir e disponibilizar a plataforma/aplicativo Receita Digital para outros\\r\\n  usuários deverá informá-los sobre as condições deste Termo de Uso e Política de Privacidade, em\\r\\n  especial de que o uso implicação em aceitação irrestrita das disposições previstas neste documento.\\r\\n\\r\\n  <br />\\r\\n  A Receita Digital e o Contratante/usuário reconhecem que este Termo de Uso e Política de Privacidade\\r\\n  prevê condições proporcionais, não existindo vícios ou defeitos que possam acarretar a sua nulidade, em\\r\\n  especial relacionados com dolo, erro, fraude, simulação ou coação, inexistindo qualquer fato que possa\\r\\n  ser configurado como estado de perigo ou de necessidade.\\r\\n\\r\\n  <br />\\r\\n  As disposições deste Termo de Uso e Política de Privacidade prevalecerão sobre quaisquer outros\\r\\n  entendimentos ou acordos anteriores.\\r\\n\\r\\n  <br />\\r\\n  A Receita Digital e o Contratante/usuário reconhecem a validade das mensagens de dados nas comunicações\\r\\n  relativas ao uso da plataforma/ aplicativo e seus serviços, com equivalência probatória e funcional aos\\r\\n  documentos em suporte de papel, desde que observada a efetividade da comunicação, sua integridade,\\r\\n  autenticidade e a segurança do meio pelo qual são transmitidas.\\r\\n\\r\\n  <br />\\r\\n  A violação das disposições deste Termo de Uso e Política de Privacidade resultará ao infrator o dever\\r\\n  de indenizar por perdas e dados, além de multa contratual a ser fixada por arbitramento, conforme as\\r\\n  circunstâncias do caso.\\r\\n  <br /><br />\\r\\n  13- LEI APLICÁVEL <br />\\r\\n  <br />\\r\\n  O presente Termo/Contrato será regido pela legislação do Brasil.\\r\\n  <br /><br />\\r\\n  14- DO FORO\\r\\n  <br />\\r\\n  Ressalvados os direitos de consumidor, em que prevalece o foro do domicílio deste, qualquer questão ou\\r\\n  controvérsia decorrente do presente Termo/Contrato será dirimida no foro da cidade do Rio de Janeiro –\\r\\n  RJ. “Receita Digital” - K&I - KNOWLEDGE AND INTELLIGENCE TECNOLOGIA LTDA, inscrita no CNPJ:\\r\\n  34.307.169/0001-00, com sede na Rua do Carmo, nº 71- 5º andar, Centro – Rio de Janeiro- RJ, CEP\\r\\n  20011-020.\\r\\n\\r\\n  <br /><br />\\r\\n</div>\\r\\n\";","export default \"\";","import { animate, group, state, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { SpecialtiesService } from '@app/modules/admin/listing/features-listing/specialties.service';\nimport { CepService } from '@app/modules/entry/services/cep.service';\nimport { CfmService } from '@app/modules/entry/services/cfm.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { Specialty } from '@app/shared/models';\nimport { BrazilState } from '@app/shared/models/brazil-state';\nimport { HealthProfessional } from '@app/shared/models/health-professional';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BigboostService } from '@app/shared/services/bigboost.service';\nimport { environment } from '@env/environment';\nimport * as moment from 'moment';\nimport { NzI18nService, pt_BR } from 'ng-zorro-antd/i18n';\nimport { ReplaySubject } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-health-professional-form',\n  templateUrl: './health-professional-form.component.html',\n  styleUrls: ['./health-professional-form.component.scss'],\n  animations: [\n    trigger('slideInOut', [\n      state('in', style({ height: '*', opacity: 0 })),\n      transition(':leave', [\n        style({ height: '*', opacity: 1 }),\n        group([animate(300, style({ height: 0 })), animate('400ms ease-in-out', style({ opacity: 0 }))])\n      ]),\n      transition(':enter', [\n        style({ height: 0, opacity: 0 }),\n        group([\n          animate(300, style({ height: '*' })),\n          animate('400ms ease-in-out', style({ opacity: 1 }))\n        ])\n      ])\n    ])\n  ]\n})\nexport class HealthProfessionalFormComponent implements OnInit, OnDestroy {\n  @Input() professionalType: string;\n  @Output() formChange = new EventEmitter<FormGroup>();\n\n  specialtiesOptions: Specialty[] = [];\n  selectedSpecialties: string[] = [];\n  loading: boolean;\n  states: BrazilState[] = BrazilianStates;\n  form: FormGroup;\n\n  private lastCpf: string;\n  private lastDateOfBirth: string;\n  private destroyed$: ReplaySubject<boolean> = new ReplaySubject();\n\n  constructor(\n    private fb: FormBuilder,\n    private cepService: CepService,\n    private specialtyService: SpecialtiesService,\n    private notification: AppToastService,\n    private bigboostService: BigboostService,\n    private i18n: NzI18nService\n  ) {}\n\n  ngOnInit() {\n    this.buildForm();\n    this.getSpecialties();\n\n    // add specialty after init\n    this.addSpecialty();\n\n    this.form.get('professionalType').setValue(this.professionalType);\n    this.form.get('regionalCouncilNumber.label').setValue(this.regionalCouncilLabel);\n\n    this.form.get('cpf').valueChanges.subscribe(cpf => {\n      if (this.lastCpf !== cpf && !this.hasPendency) {\n        this.verifiedCpf = false;\n      }\n    });\n\n    this.form.get('birthdate').valueChanges.subscribe(birthdate => {\n      const dateOfBirth = moment(birthdate, 'DD/MM/YYYY').format('YYYY-MM-DD');\n      if (this.lastDateOfBirth !== dateOfBirth) {\n        if (!this.hasPendency) {\n          this.verifiedCpf = false;\n        }\n        this.form.get('dateOfBirth').setValue(dateOfBirth);\n      }\n    });\n\n    this.form.get('email').valueChanges.subscribe(email => {\n      this.form.get('email').setValue(email.toLowerCase(), { emitEvent: false });\n    });\n\n    this.form.get('emailConfirmation').valueChanges.subscribe(emailConfirmation => {\n      this.form.get('emailConfirmation').setValue(emailConfirmation.toLowerCase(), { emitEvent: false });\n    });\n\n    this.i18n.setLocale(pt_BR);\n\n    this.formChange.emit(this.form);\n  }\n\n  private buildForm() {\n    this.form = this.fb.group(\n      {\n        professionalType: ['', Validators.required],\n        name: ['', [Validators.required, ValidationService.nomeValidator]],\n        fullname: ['', [Validators.required, ValidationService.nomeValidator]],\n        cpf: ['', [Validators.required, ValidationService.cpfValidator]],\n        sex: [null, Validators.required],\n        birthdate: [\n          '',\n          [\n            Validators.required,\n            ValidationService.dateValidator(),\n            ValidationService.birthdateValidator()\n          ]\n        ],\n        dateOfBirth: [\n          '',\n          [Validators.required, ValidationService.dateValidator({ format: 'YYYY-MM-DD' })]\n        ],\n        membership: this.fb.group({\n          mothersName: ['']\n        }),\n        regionalCouncilNumber: this.fb.group({\n          number: ['', Validators.required],\n          uf: ['', Validators.required],\n          label: ['', Validators.required]\n        }),\n        mapaSipeagro: [''],\n        cellphone: ['', Validators.required],\n        telephone: [''],\n        email: ['', [Validators.required, Validators.email]],\n        emailConfirmation: ['', [Validators.required, Validators.email]],\n        specialties: this.fb.array([], Validators.required),\n        commercialData: this.fb.array([this.buildCommercialForm()]),\n        pendency: [null],\n        verifiedCpf: [false]\n      },\n      { validator: ValidationService.emailMatch }\n    );\n  }\n\n  get isDentist() {\n    return this.professionalType === 'dentist';\n  }\n\n  get isVeterinarian(): boolean {\n    return this.professionalType === 'veterinarian';\n  }\n\n  get currentDate() {\n    const now = new Date();\n    const dd = String(now.getDate()).padStart(2, '0');\n    const mm = String(now.getMonth() + 1).padStart(2, '0');\n    const yyyy = now.getFullYear();\n    return `${yyyy}-${mm}-${dd}`;\n  }\n\n  get hasPendency() {\n    return this.form.value.pendency;\n  }\n\n  get verifiedCpf() {\n    return this.form.get('verifiedCpf').value;\n  }\n\n  set verifiedCpf(value: boolean) {\n    this.form.get('verifiedCpf').setValue(value);\n  }\n\n  get cpfCtrl() {\n    return this.form.get('cpf');\n  }\n\n  get dateCtrl() {\n    return this.form.get('birthdate');\n  }\n\n  get commercialForm(): FormArray {\n    return <FormArray>this.form.get('commercialData');\n  }\n\n  get specialtiesForm(): FormArray {\n    return <FormArray>this.form.get('specialties');\n  }\n\n  get regionalCouncilLabel() {\n    return HealthProfessional.getRegionalCouncilLabel(this.professionalType);\n  }\n\n  private getSpecialties() {\n    this.specialtyService.getSpecialtiesByType(this.professionalType).subscribe(specialties => {\n      specialties.forEach(function(item, i) {\n        if (item.code === 1) {\n          specialties.splice(i, 1);\n          specialties.unshift(item);\n        }\n      });\n      this.specialtiesOptions = specialties;\n    });\n  }\n\n  addSpecialties() {\n    if (this.selectedSpecialties.length <= 3) {\n      const specialtiesArray = this.selectedSpecialties.map(id => this.buildSpecialtyForm(id));\n      this.form.setControl('specialties', this.fb.array(specialtiesArray, Validators.required));\n    } else if (this.selectedSpecialties.length > 3) {\n      this.selectedSpecialties.pop();\n      this.notification.notify('warning', 'Aviso', 'Você pode escolher no máximo 3 especialidades');\n    }\n  }\n\n  @nativeAsync\n  async consultCpf() {\n    const { cpf, birthdate: date } = this.form.value;\n    // A data que vem no formulário não vem no formato para que possa ser formatada.\n    // Essa linha vai fazer com que a data fique no formato 00/00/0000.\n    const dateOfBirth = moment(date, 'DDMMYYYY').format('YYYY-MM-DD');\n\n    const age = moment().diff(moment(date, 'DDMMYYYY'), 'years', false);\n    if (age < 18) {\n      this.notification.notify('warning', 'Cadastro proibido para menores');\n      this.form.get('birthdate').setErrors({ invalidBirthdate: true });\n      return;\n    }\n\n    if (\n      this.cpfCtrl.valid &&\n      this.dateCtrl.valid &&\n      (this.lastCpf !== cpf || this.lastDateOfBirth !== dateOfBirth || !this.verifiedCpf)\n    ) {\n      try {\n        this.loading = true;\n        const consult = await this.bigboostService.consultCpf(cpf, dateOfBirth).toPromise();\n        this.loading = false;\n        this.handleConsultCpf(consult);\n      } catch (err) {\n        console.error(err);\n        this.loading = false;\n        if (err.status === 404) {\n          this.notification.notify(\n            'error',\n            'Error ao consultar CPF',\n            'CPF não localizado na Receita Federal. Verifique as informações digitadas e tente novamente. Em caso de dúvidas, entre em contato com nosso atendimento',\n            8000\n          );\n          return;\n        }\n\n        if (err.status === 500) {\n          this.notification.notify(\n            'error',\n            'Error ao consultar CPF',\n            'Plataforma de consulta de CPF com erro ao tentar realizar consulta do CPF',\n            8000\n          );\n          return;\n        }\n        const consult = {\n          status: -1,\n          cpf,\n          erroCodigo: err.status,\n          erro: 'A importação de dados do cpf está com instabilidade'\n        };\n        this.form.get('pendency').setValue(consult);\n        if (err.status === 401) {\n          this.notification.notify(\n            'warning',\n            'Aviso',\n            'Data de nascimento não corresponde ao CPF informado'\n          );\n          this.form.get('birthdate').setErrors({ nonMatchingCpf: true });\n          this.verifiedCpf = false;\n        } else {\n          this.handleConsultCpf(consult);\n        }\n      }\n      this.lastCpf = cpf;\n      this.lastDateOfBirth = dateOfBirth;\n    }\n  }\n\n  private handleConsultCpf(consult: any) {\n    this.form.get('name').reset();\n    this.form.get('name').enable();\n\n    if (consult.status === 1) {\n      this.form.get('cpf').disable();\n      this.form.get('birthdate').disable();\n      this.form.get('fullname').disable();\n      this.form.get('pendency').setValue(null);\n      this.setForm(consult);\n    } else {\n      this.form.get('fullname').enable();\n      this.form.get('pendency').setValue(consult);\n      this.resetForm();\n      if (consult.erro) {\n        this.notification.notify(\n          'warning',\n          'Aviso',\n          'A importação de dados do CPF está com instabilidade, mas você poderá se cadastrar preenchendo os campos manualmente.'\n        );\n      }\n    }\n    this.verifiedCpf = true;\n  }\n\n  private setForm(consult: any) {\n    this.form.get('fullname').setValue(consult.nome);\n    this.form.get('name').setValue(consult.nome);\n    this.form.get('sex').setValue(consult.genero);\n    this.form.get('membership.mothersName').setValue(consult.mae);\n\n    this.lastCpf = this.form.value.cpf;\n    this.lastDateOfBirth = this.form.value.dateOfBirth;\n  }\n\n  private resetForm() {\n    this.form.get('fullname').reset();\n    this.form.get('sex').reset();\n    this.form.get('membership.mothersName').reset();\n  }\n\n  @nativeAsync\n  async onKey(event: any, addressGroup: FormGroup) {\n    if (event.target.value.length === 10) {\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\n      const data = await this.cepService.consult(cep);\n      if (!data.erro) {\n        addressGroup.patchValue({\n          uf: data.uf,\n          street: data.logradouro,\n          neighborhood: data.bairro,\n          city: data.localidade,\n          number: null,\n          cep: data.cep\n        });\n      }\n    }\n  }\n\n  trackById(index, specialty: Specialty) {\n    return specialty ? specialty.code : null;\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed$.next(true);\n    this.destroyed$.complete();\n  }\n\n  addSpecialty() {\n    this.specialtiesForm.push(this.buildSpecialtyForm());\n  }\n\n  addComercial() {\n    this.commercialForm.push(this.buildCommercialForm());\n  }\n\n  private buildSpecialtyForm(id: string = null) {\n    if (this.isDentist || this.isVeterinarian) {\n      return this.fb.group({\n        specialty: [id, Validators.required]\n      });\n    }\n    return this.fb.group({\n      specialty: [id, Validators.required],\n      rqe: [null, this.isDentist || this.isVeterinarian ? null : Validators.required],\n      notExists: [null]\n    });\n  }\n\n  private buildCommercialForm() {\n    const commercialForm = this.fb.group({\n      email: ['', Validators.email],\n      name: ['', Validators.required],\n      logo: [''],\n      telephone: ['', Validators.required],\n      cellphone: [''],\n      address: this.fb.group({\n        uf: [null, Validators.required],\n        city: ['', Validators.required],\n        complement: [''],\n        number: ['', Validators.required],\n        street: ['', Validators.required],\n        neighborhood: ['', Validators.required],\n        cep: ['', [Validators.required, ValidationService.cepValidator]]\n      })\n    });\n\n    commercialForm.get('email').valueChanges.subscribe(email => {\n      commercialForm.get('email').setValue(email.toLowerCase(), { emitEvent: false });\n    });\n\n    return commercialForm;\n  }\n\n  checkRQE(rqeForm: FormGroup, disable: boolean) {\n    if (disable) {\n      rqeForm.setValidators(null);\n      rqeForm.setValue(null);\n      rqeForm.disable();\n    } else {\n      rqeForm.setValidators(Validators.required);\n      rqeForm.markAsPristine();\n      rqeForm.enable();\n    }\n  }\n\n  cancel() {\n    this.buildForm();\n    this.formChange.emit(this.form);\n  }\n}\n","export default \"<form nz-form [formGroup]=\\\"form\\\" theme>\\n  <div class=\\\"row justify-content-between\\\">\\n    <nz-alert\\n      class=\\\"mb-4\\\"\\n      nzType=\\\"warning\\\"\\n      nzMessage=\\\"Para agilizar seu cadastro, buscaremos dados complementares no site da Receita Federal.\\nEste é um procedimento seguro e o sigilo dos seus dados é garantido pela nossa plataforma\\\"\\n    ></nz-alert>\\n    <div class=\\\"col-md-6\\\">\\n      <div class=\\\"row align-items-center\\\">\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"cpf\\\">CPF <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                id=\\\"cpf\\\"\\n                formControlName=\\\"cpf\\\"\\n                mask=\\\"000.000.000-00\\\"\\n                placeholder=\\\"000.000.000-00\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"cpfCtrl.dirty && cpfCtrl.errors\\\">\\n                <ng-container *ngIf=\\\"cpfCtrl.hasError('required')\\\">\\n                  Campo obrigatório, por favor digite seu CPF.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"!cpfCtrl.hasError('required') && cpfCtrl.hasError('cpf')\\\">\\n                  CPF inválido, por favor digite um CPF válido.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"cpfCtrl.hasError('alreadyExists')\\\">\\n                  CPF já cadastrado.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"birthdate\\\"\\n              >Data de nascimento <span class=\\\"mandatory\\\">*</span></nz-form-label\\n            >\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                id=\\\"birthdate\\\"\\n                type=\\\"tel\\\"\\n                mask=\\\"00/00/0000\\\"\\n                formControlName=\\\"birthdate\\\"\\n                placeholder=\\\"DD/MM/AAAA\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"dateCtrl.dirty && dateCtrl.errors\\\">\\n                <ng-container *ngIf=\\\"dateCtrl.hasError('required')\\\">\\n                  Campo obrigatório, por favor digite sua data de nascimento.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"!dateCtrl.hasError('required') && dateCtrl.hasError('birthdate')\\\">\\n                  Data inválida.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"dateCtrl.hasError('invalidDate') && dateCtrl.value.length > 0\\\">\\n                  Data inválida.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"dateCtrl.hasError('nonMatchingCpf')\\\">\\n                  Data de nascimento não corresponde ao CPF informado.\\n                </ng-container>\\n                <ng-container\\n                  *ngIf=\\\"!dateCtrl.hasError('invalidDate') && dateCtrl.hasError('invalidBirthdate')\\\"\\n                >\\n                  Proibido para menores\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-auto pt-3\\\" *ngIf=\\\"!verifiedCpf\\\">\\n          <button\\n            nz-button\\n            class=\\\"btn-primary\\\"\\n            (click)=\\\"consultCpf()\\\"\\n            [disabled]=\\\"cpfCtrl.invalid || dateCtrl.invalid || loading\\\"\\n          >\\n            OK\\n          </button>\\n        </div>\\n\\n        <div class=\\\"col-auto pt-3\\\" *ngIf=\\\"verifiedCpf\\\">\\n          <button nz-button class=\\\"btn-defaulf\\\" (click)=\\\"cancel()\\\">\\n            cancelar\\n          </button>\\n        </div>\\n\\n        <ng-container *ngIf=\\\"verifiedCpf\\\">\\n          <div class=\\\"col-12\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"fullname\\\"\\n                >Nome completo <span class=\\\"mandatory\\\">*</span></nz-form-label\\n              >\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  formControlName=\\\"fullname\\\"\\n                  id=\\\"fullname\\\"\\n                  nz-input\\n                  placeholder=\\\"ex: João Gilberto\\\"\\n                  maxlength=\\\"128\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain *ngIf=\\\"form.get('fullname').dirty && form.get('fullname').errors\\\">\\n                  <ng-container *ngIf=\\\"form.get('fullname').hasError('required')\\\">\\n                    Campo obrigatório, por favor digite o seu nome e sobrenome.\\n                  </ng-container>\\n                  <ng-container\\n                    *ngIf=\\\"\\n                      !form.get('fullname').hasError('required') &&\\n                      form.get('fullname').hasError('fullname')\\n                    \\\"\\n                  >\\n                    Por favor digite o seu nome e sobrenome.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n          <div class=\\\"col-12\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"name\\\"\\n                >Nome de exibição/social <span class=\\\"mandatory\\\">*</span></nz-form-label\\n              >\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  formControlName=\\\"name\\\"\\n                  id=\\\"name\\\"\\n                  nz-input\\n                  placeholder=\\\"ex: João Gilberto\\\"\\n                  maxlength=\\\"128\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\n                  <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\n                    Campo obrigatório, por favor digite um nome de exibição.\\n                  </ng-container>\\n                  <ng-container\\n                    *ngIf=\\\"!form.get('name').hasError('required') && form.get('name').hasError('name')\\\"\\n                  >\\n                    Por favor digite um nome de exibição.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n          <div class=\\\"col-12\\\">\\n            <div class=\\\"row\\\">\\n              <div class=\\\"col-4\\\">\\n                <nz-form-item>\\n                  <nz-form-label nzFor=\\\"sex\\\">Sexo <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n                  <nz-form-control nzHasFeedback>\\n                    <nz-select formControlName=\\\"sex\\\" id=\\\"sex\\\" nzPlaceHolder=\\\"Selecione\\\">\\n                      <nz-option nzLabel=\\\"Masculino\\\" nzValue=\\\"M\\\"></nz-option>\\n                      <nz-option nzLabel=\\\"Feminino\\\" nzValue=\\\"F\\\"></nz-option>\\n                    </nz-select>\\n                    <nz-form-explain *ngIf=\\\"form.get('sex').dirty && form.get('sex').errors\\\">\\n                      <ng-container *ngIf=\\\"form.get('sex').hasError('required')\\\">\\n                        Campo obrigatório, por favor selecione o sexo.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n              <div class=\\\"col-5\\\" [formGroup]=\\\"form.get('regionalCouncilNumber')\\\">\\n                <nz-form-item *ngIf=\\\"form.get('regionalCouncilNumber.number') as ctrl\\\">\\n                  <nz-form-label nzFor=\\\"regionalCouncilNumber-number\\\"\\n                    >{{ regionalCouncilLabel }} <span class=\\\"mandatory\\\">*</span></nz-form-label\\n                  >\\n                  <nz-form-control nzHasFeedback>\\n                    <input\\n                      id=\\\"regionalCouncilNumber-number\\\"\\n                      nz-input\\n                      type=\\\"text\\\"\\n                      formControlName=\\\"number\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                      inputmode=\\\"numeric\\\"\\n                      pattern=\\\"[0-9]*\\\"\\n                      maxlength=\\\"10\\\"\\n                      digitOnly\\n                    />\\n                    <nz-form-explain *ngIf=\\\"ctrl.dirty && ctrl.errors\\\">\\n                      <ng-container *ngIf=\\\"ctrl.hasError('required'); else restriction\\\">\\n                        Campo obrigatório, por favor digite seu {{ regionalCouncilLabel }}.\\n                      </ng-container>\\n                      <ng-template #restriction>\\n                        <ng-container *ngIf=\\\"ctrl.hasError('restriction'); else notFound\\\">\\n                          {{ ctrl.getError('restriction') }}\\n                        </ng-container>\\n                      </ng-template>\\n                      <ng-template #notFound>\\n                        <ng-container *ngIf=\\\"ctrl.hasError('notFound'); else internalError\\\">\\n                          Registro CRM inválido.\\n                        </ng-container>\\n                      </ng-template>\\n                      <ng-template #internalError>\\n                        <ng-container *ngIf=\\\"ctrl.hasError('internalError')\\\">\\n                          {{ ctrl.getError('internalError') }}\\n                        </ng-container>\\n                      </ng-template>\\n                      <ng-template #invalid>\\n                        <ng-container *ngIf=\\\"ctrl.invalid\\\">\\n                          CRM inválido, por favor verifique o número e UF.\\n                        </ng-container>\\n                      </ng-template>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n              <div class=\\\"col-3\\\" [formGroup]=\\\"form.get('regionalCouncilNumber')\\\">\\n                <nz-form-item *ngIf=\\\"form.get('regionalCouncilNumber.uf') as ctrl\\\">\\n                  <nz-form-label nzFor=\\\"uf\\\">UF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                  <nz-form-control nzHasFeedback>\\n                    <nz-select\\n                      formControlName=\\\"uf\\\"\\n                      id=\\\"uf\\\"\\n                      nzShowSearch\\n                      nzAllowClear\\n                      nzDropdownClassName=\\\"account-select\\\"\\n                      nzPlaceHolder=\\\"Selecione\\\"\\n                    >\\n                      <nz-option\\n                        *ngFor=\\\"let state of states\\\"\\n                        [nzLabel]=\\\"state?.sigla\\\"\\n                        [nzValue]=\\\"state?.sigla\\\"\\n                      >\\n                      </nz-option>\\n                    </nz-select>\\n                    <nz-form-explain *ngIf=\\\"ctrl.dirty && ctrl.errors\\\">\\n                      <ng-container *ngIf=\\\"ctrl.hasError('required'); else restriction\\\">\\n                        Campo obrigatório, por favor selecione o UF.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n            </div>\\n\\n            <div class=\\\"row\\\" *ngIf=\\\"isVeterinarian\\\">\\n              <nz-form-item class=\\\"col-12\\\">\\n                <nz-form-label nzFor=\\\"mapaSipeagro\\\">MAPA Sipeagro </nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    formControlName=\\\"mapaSipeagro\\\"\\n                    id=\\\"mapaSipeagro\\\"\\n                    nz-input\\n                    type=\\\"number\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain\\n                    *ngIf=\\\"form.get('mapaSipeagro').dirty && form.get('mapaSipeagro').errors\\\"\\n                  >\\n                    <ng-container *ngIf=\\\"form.get('mapaSipeagro').hasError('required')\\\">\\n                      Campo obrigatório, por favor digite seu MAPA Sipeagro.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n          </div>\\n          <ng-container *ngIf=\\\"isDentist; else doctorSpecialties\\\">\\n            <div class=\\\"col-12\\\">\\n              <nz-form-item>\\n                <nz-form-label\\n                  >Especialidades(s) <span class=\\\"max-quantity\\\">no máximo 3 opções </span\\n                  ><span class=\\\"mandatory\\\"> *</span></nz-form-label\\n                >\\n                <nz-form-control>\\n                  <nz-select\\n                    id=\\\"specialties\\\"\\n                    nzSize=\\\"large\\\"\\n                    nzMode=\\\"multiple\\\"\\n                    nzDropdownClassName=\\\"account-select\\\"\\n                    nzPlaceHolder=\\\"Selecione a sua especialidade\\\"\\n                    [(ngModel)]=\\\"selectedSpecialties\\\"\\n                    (ngModelChange)=\\\"addSpecialties()\\\"\\n                    [ngModelOptions]=\\\"{ standalone: true }\\\"\\n                    nzAllowClear\\n                    nzShowSearch\\n                  >\\n                    <nz-option\\n                      *ngFor=\\\"let specialty of specialtiesOptions; trackBy: trackById\\\"\\n                      [nzLabel]=\\\"specialty?.title\\\"\\n                      [nzValue]=\\\"specialty?._id\\\"\\n                    >\\n                    </nz-option>\\n                  </nz-select>\\n                  <nz-form-explain\\n                    *ngIf=\\\"form.get('specialties').dirty && !form.get('specialties').errors\\\"\\n                  >\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n          </ng-container>\\n\\n          <ng-template #doctorSpecialties formArrayName=\\\"specialties\\\">\\n            <div\\n              class=\\\"col-12\\\"\\n              *ngFor=\\\"let specialty of specialtiesForm.controls; let i = index\\\"\\n              [@slideInOut]\\n              [formGroup]=\\\"specialty\\\"\\n            >\\n              <div class=\\\"row justify-content-between\\\">\\n                <div [ngClass]=\\\"specialtiesForm.length > 1 ? 'col-11' : 'col-12'\\\">\\n                  <nz-divider\\n                    nzOrientation=\\\"left\\\"\\n                    [nzText]=\\\"'Especialidades ' + (specialtiesForm.length > 1 ? i + 1 : '')\\\"\\n                  ></nz-divider>\\n                </div>\\n                <div\\n                  class=\\\"col-1 pl-0 d-flex align-items-center justify-content-center\\\"\\n                  *ngIf=\\\"specialtiesForm.length > 1\\\"\\n                >\\n                  <a\\n                    (click)=\\\"$event.preventDefault()\\\"\\n                    [nzContent]=\\\"contentTemplateSpecialty\\\"\\n                    class=\\\"popover-trigger\\\"\\n                    nz-popover\\n                    nzPlacement=\\\"right\\\"\\n                  >\\n                    <i class=\\\"fa fa-ellipsis-solid\\\"></i>\\n                  </a>\\n                  <ng-template #contentTemplateSpecialty>\\n                    <a (click)=\\\"specialtiesForm.removeAt(i)\\\"><i class=\\\"fa fa-trash-solid\\\"></i></a>\\n                  </ng-template>\\n                </div>\\n              </div>\\n              <div class=\\\"row\\\">\\n                <div [ngClass]=\\\"isVeterinarian ? 'col-12' : 'col-7'\\\">\\n                  <nz-form-item>\\n                    <nz-form-label [nzFor]=\\\"'specialty_' + i\\\"\\n                      >Especialidade <span class=\\\"mandatory\\\">*</span></nz-form-label\\n                    >\\n                    <nz-form-control nzHasFeedback *ngIf=\\\"specialty.get('specialty') as specialtyId\\\">\\n                      <nz-select\\n                        [id]=\\\"'specialty_' + i\\\"\\n                        formControlName=\\\"specialty\\\"\\n                        nzSize=\\\"large\\\"\\n                        nzDropdownClassName=\\\"account-select\\\"\\n                        nzPlaceHolder=\\\"Selecione uma especialidade\\\"\\n                        nzAllowClear\\n                        nzShowSearch\\n                      >\\n                        <nz-option\\n                          *ngFor=\\\"let specialty of specialtiesOptions; trackBy: trackById\\\"\\n                          class=\\\"disableClick\\\"\\n                          [nzLabel]=\\\"specialty?.title\\\"\\n                          [nzValue]=\\\"specialty?._id\\\"\\n                        >\\n                        </nz-option>\\n                      </nz-select>\\n                      <nz-form-explain *ngIf=\\\"specialtyId.dirty && specialtyId.errors\\\">\\n                        <ng-container *ngIf=\\\"specialtyId.hasError('required')\\\">\\n                          Campo obrigatório, por favor selecione uma especialidade.\\n                        </ng-container>\\n                      </nz-form-explain>\\n                    </nz-form-control>\\n                  </nz-form-item>\\n                </div>\\n                <div class=\\\"col-5\\\" *ngIf=\\\"!isVeterinarian\\\">\\n                  <nz-form-item *ngIf=\\\"specialty.get('rqe') as rqe\\\">\\n                    <div class=\\\"row\\\">\\n                      <div class=\\\"col-5 pr-0\\\">\\n                        <nz-form-label [nzFor]=\\\"'rqe_' + i\\\"\\n                          >RQE <span class=\\\"mandatory\\\">*</span></nz-form-label\\n                        >\\n                      </div>\\n                      <div class=\\\"col pl-0\\\">\\n                        <label\\n                          nz-checkbox\\n                          formControlName=\\\"notExists\\\"\\n                          (nzCheckedChange)=\\\"checkRQE(rqe, $event)\\\"\\n                          style=\\\"font-size: 14px;\\\"\\n                          >Não possuo</label\\n                        >\\n                      </div>\\n                    </div>\\n                    <nz-form-control nzHasFeedback>\\n                      <input\\n                        nz-input\\n                        [id]=\\\"'rqe_' + i\\\"\\n                        formControlName=\\\"rqe\\\"\\n                        maxlength=\\\"20\\\"\\n                        onlyNumbers\\n                      />\\n                      <nz-form-explain *ngIf=\\\"rqe.dirty && rqe.errors\\\">\\n                        <ng-container *ngIf=\\\"rqe.hasError('required')\\\">\\n                          Campo obrigatório, por favor informe o RQE da especialidade.\\n                        </ng-container>\\n                      </nz-form-explain>\\n                    </nz-form-control>\\n                  </nz-form-item>\\n                </div>\\n              </div>\\n            </div>\\n            <div class=\\\"col-12 pb-4\\\" *ngIf=\\\"specialtiesForm.length < 3\\\">\\n              <button\\n                (click)=\\\"addSpecialty()\\\"\\n                class=\\\"btn btn-icon btn-success btn-add text-capitalize\\\"\\n                type=\\\"button\\\"\\n              >\\n                <span class=\\\"btn-inner--text\\\">Adicionar Outra Especialidade</span>\\n                <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n              </button>\\n            </div>\\n          </ng-template>\\n        </ng-container>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"col-md-5\\\" [@slideInOut] *ngIf=\\\"verifiedCpf\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"email\\\">E-mail<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            formControlName=\\\"email\\\"\\n            placeholder=\\\"usuario@email.com\\\"\\n            style=\\\"text-transform: lowercase;\\\"\\n            (keydown.space)=\\\"$event.preventDefault()\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n          <nz-form-explain *ngIf=\\\"form.get('email').dirty && form.get('email').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('email').hasError('required')\\\">\\n              Campo obrigatório, por favor digite seu e-mail.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"!form.get('email').hasError('required') && form.get('email').hasError('email')\\\"\\n            >\\n              E-mail inválido, por favor digite um e-mail válido.\\n            </ng-container>\\n            <ng-container *ngIf=\\\"form.get('email').hasError('alreadyExists')\\\">\\n              E-mail já cadastrado, por favor escolha outro e-mail.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"emailConfirmation\\\"\\n          >Confirmação de e-mail<span class=\\\"mandatory\\\"> *</span>\\n        </nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            id=\\\"emailConfirmation\\\"\\n            type=\\\"email\\\"\\n            formControlName=\\\"emailConfirmation\\\"\\n            placeholder=\\\"usuario@email.com\\\"\\n            style=\\\"text-transform: lowercase;\\\"\\n            (keydown.space)=\\\"$event.preventDefault()\\\"\\n            onpaste=\\\"false\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n          <nz-form-explain>\\n            <ng-container\\n              *ngIf=\\\"\\n                form.get('emailConfirmation').hasError('required') && form.get('emailConfirmation').dirty\\n              \\\"\\n            >\\n              <span class=\\\"error\\\"> Campo obrigatório, por favor digite seu e-mail.</span><br />\\n            </ng-container>\\n\\n            <ng-container\\n              *ngIf=\\\"\\n                form.get('emailConfirmation').invalid && form.get('emailConfirmation').value.length > 0\\n              \\\"\\n            >\\n              <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span><br />\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"\\n                form.hasError('emailMatch') &&\\n                form.get('email').dirty &&\\n                form.get('email').value.length > 0 &&\\n                form.get('emailConfirmation').dirty &&\\n                form.get('emailConfirmation').value.length > 0\\n              \\\"\\n            >\\n              <span class=\\\"error\\\">Os endereços de e-mail não correspondem.</span><br />\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item *ngIf=\\\"form.get('cellphone') as cellphone\\\">\\n        <nz-form-label nzFor=\\\"cellphone\\\">Telefone 1 <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control>\\n          <input\\n            nz-input\\n            id=\\\"cellphone\\\"\\n            [mask]=\\\"cellphone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n            formControlName=\\\"cellphone\\\"\\n            placeholder=\\\"(21) 92222-2222\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n          <nz-form-explain *ngIf=\\\"cellphone.dirty && cellphone.errors\\\">\\n            <ng-container *ngIf=\\\"cellphone.hasError('required')\\\">\\n              Campo obrigatório, por favor digite seu telefone para contato.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"telephone\\\">Telefone 2</nz-form-label>\\n        <nz-form-control>\\n          <input\\n            nz-input\\n            id=\\\"telephone\\\"\\n            [mask]=\\\"form.get('telephone').value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n            formControlName=\\\"telephone\\\"\\n            placeholder=\\\"(21) 2222-2222\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n\\n  <ng-container *ngIf=\\\"verifiedCpf && commercialForm?.controls.length\\\">\\n    <ng-container formArrayName=\\\"commercialData\\\">\\n      <div\\n        *ngFor=\\\"let group of commercialForm.controls; let i = index\\\"\\n        [@slideInOut]\\n        [formGroup]=\\\"group\\\"\\n      >\\n        <div class=\\\"row justify-content-between\\\">\\n          <div [ngClass]=\\\"commercialForm.length > 1 ? 'col-11' : 'col-12'\\\">\\n            <nz-divider\\n              nzOrientation=\\\"left\\\"\\n              [nzText]=\\\"'Dados comerciais ' + (commercialForm.length > 1 ? i + 1 : '')\\\"\\n            ></nz-divider>\\n          </div>\\n          <div\\n            class=\\\"col-1 pl-0 d-flex align-items-center justify-content-center\\\"\\n            *ngIf=\\\"commercialForm.length > 1\\\"\\n          >\\n            <a\\n              (click)=\\\"$event.preventDefault()\\\"\\n              [nzContent]=\\\"contentTemplateComercial\\\"\\n              class=\\\"popover-trigger\\\"\\n              nz-popover\\n              nzPlacement=\\\"right\\\"\\n            >\\n              <i class=\\\"fa fa-ellipsis-solid\\\"></i>\\n            </a>\\n            <ng-template #contentTemplateComercial>\\n              <a (click)=\\\"commercialForm.removeAt(i)\\\"><i class=\\\"fa fa-trash-solid\\\"></i></a>\\n            </ng-template>\\n          </div>\\n        </div>\\n        <div class=\\\"row mb-3 mt-3 justify-content-between\\\">\\n          <div class=\\\"col-md-6\\\">\\n            <div class=\\\"row align-items-center\\\">\\n              <div class=\\\"col-12\\\">\\n                <nz-form-item>\\n                  <nz-form-label [nzFor]=\\\"'nome_' + i\\\"\\n                    >Nome<span class=\\\"mandatory\\\"> *</span>\\n                  </nz-form-label>\\n                  <nz-form-control nzHasFeedback>\\n                    <input\\n                      [id]=\\\"'nome_' + i\\\"\\n                      formControlName=\\\"name\\\"\\n                      nz-input\\n                      placeholder=\\\"ex: Clínica Dona Ana\\\"\\n                      maxlength=\\\"128\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                    />\\n                    <nz-form-explain *ngIf=\\\"group.get('name').dirty && group.get('name').errors\\\">\\n                      <ng-container *ngIf=\\\"group.get('name').hasError('required')\\\">\\n                        Campo obrigatório, por favor digite o nome.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n              <div class=\\\"col-12\\\">\\n                <nz-form-item>\\n                  <nz-form-label [nzFor]=\\\"'email_' + i\\\">E-mail</nz-form-label>\\n                  <nz-form-control nzHasFeedback>\\n                    <input\\n                      [id]=\\\"'email_' + i\\\"\\n                      formControlName=\\\"email\\\"\\n                      nz-input\\n                      placeholder=\\\"usuario@email.com\\\"\\n                      type=\\\"email\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                    />\\n                    <nz-form-explain *ngIf=\\\"group.get('email').dirty && group.get('email').errors\\\">\\n                      <ng-container\\n                        *ngIf=\\\"\\n                          (!group.get('email').hasError('required') &&\\n                            group.get('email').hasError('email')) ||\\n                          group.get('email').invalid\\n                        \\\"\\n                      >\\n                        E-mail inválido, por favor digite um e-mail válido.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n            </div>\\n          </div>\\n          <div class=\\\"col-md-5\\\">\\n            <div class=\\\"row align-items-center\\\">\\n              <div class=\\\"col-12\\\">\\n                <nz-form-item>\\n                  <nz-form-label [nzFor]=\\\"'telephone_' + i\\\" class=\\\"mb-0\\\"\\n                    >Telefone 1 <span class=\\\"mandatory\\\">*</span>\\n                    <app-popover-button\\n                      content=\\\"Será exibido no cabeçalho dos documentos emitidos na plataforma\\\"\\n                    ></app-popover-button>\\n                  </nz-form-label>\\n                  <nz-form-control>\\n                    <input\\n                      [id]=\\\"'telephone_' + i\\\"\\n                      [mask]=\\\"\\n                        group.get('telephone').value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\n                      \\\"\\n                      formControlName=\\\"telephone\\\"\\n                      nz-input\\n                      placeholder=\\\"(21) 92222-2222\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                    />\\n                    <nz-form-explain\\n                      *ngIf=\\\"group.get('telephone').dirty && group.get('telephone').errors\\\"\\n                    >\\n                      <ng-container *ngIf=\\\"group.get('telephone').hasError('required')\\\">\\n                        Campo obrigatório, por favor digite o telefone comercial.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n              <div class=\\\"col-12\\\">\\n                <nz-form-item>\\n                  <nz-form-label [nzFor]=\\\"'cellphone_' + i\\\">Telefone 2</nz-form-label>\\n                  <nz-form-control>\\n                    <input\\n                      [id]=\\\"'cellphone_' + i\\\"\\n                      [mask]=\\\"\\n                        group.get('cellphone').value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\n                      \\\"\\n                      formControlName=\\\"cellphone\\\"\\n                      nz-input\\n                      placeholder=\\\"(21) 2222-2222\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                    />\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n            </div>\\n          </div>\\n          <div\\n            class=\\\"col-12 mt-3\\\"\\n            *ngIf=\\\"group.get('address') as addressGroup\\\"\\n            [formGroup]=\\\"addressGroup\\\"\\n          >\\n            <div class=\\\"row\\\">\\n              <div class=\\\"col-md-3\\\">\\n                <nz-form-item>\\n                  <nz-form-label nzFor=\\\"cep\\\">CEP <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n                  <nz-form-control nzHasFeedback>\\n                    <input\\n                      mask=\\\"00.000-000\\\"\\n                      formControlName=\\\"cep\\\"\\n                      id=\\\"cep\\\"\\n                      (keyup)=\\\"onKey($event, addressGroup)\\\"\\n                      nz-input\\n                      placeholder=\\\"00.000-000\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                    />\\n                    <nz-form-explain\\n                      *ngIf=\\\"addressGroup.get('cep').dirty && addressGroup.get('cep').errors\\\"\\n                    >\\n                      <ng-container *ngIf=\\\"addressGroup.get('cep').hasError('required')\\\">\\n                        Campo obrigatório, por favor digite o cep.\\n                      </ng-container>\\n                      <ng-container\\n                        *ngIf=\\\"\\n                          !addressGroup.get('cep').hasError('required') &&\\n                          addressGroup.get('cep').hasError('cep')\\n                        \\\"\\n                      >\\n                        Cep inválido.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n              <div class=\\\"col-md-6\\\">\\n                <nz-form-item>\\n                  <nz-form-label nzFor=\\\"street\\\"\\n                    >Logradouro<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n                  >\\n                  <nz-form-control nzHasFeedback>\\n                    <input\\n                      id=\\\"street\\\"\\n                      formControlName=\\\"street\\\"\\n                      nz-input\\n                      placeholder=\\\"Digite o logradouro\\\"\\n                      maxlength=\\\"128\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                    />\\n                    <nz-form-explain\\n                      *ngIf=\\\"addressGroup.get('street').dirty && addressGroup.get('street').errors\\\"\\n                    >\\n                      <ng-container *ngIf=\\\"addressGroup.get('street').hasError('required')\\\">\\n                        Campo obrigatório, por favor digite o logradouro.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n              <div class=\\\"col-md-3\\\">\\n                <nz-form-item>\\n                  <nz-form-label nzFor=\\\"addressNumber\\\"\\n                    >Número<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n                  >\\n                  <nz-form-control nzHasFeedback>\\n                    <input\\n                      formControlName=\\\"number\\\"\\n                      id=\\\"addressNumber\\\"\\n                      nz-input\\n                      placeholder=\\\"Digite o número\\\"\\n                      maxlength=\\\"10\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                    />\\n                    <nz-form-explain\\n                      *ngIf=\\\"addressGroup.get('number').dirty && addressGroup.get('number').errors\\\"\\n                    >\\n                      <ng-container *ngIf=\\\"addressGroup.get('number').hasError('required')\\\">\\n                        Campo obrigatório, por favor digite o número.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n              <div class=\\\"col-md-3\\\">\\n                <nz-form-item>\\n                  <nz-form-label nzFor=\\\"complement\\\">Complemento</nz-form-label>\\n                  <nz-form-control nzHasFeedback>\\n                    <input\\n                      formControlName=\\\"complement\\\"\\n                      id=\\\"complement\\\"\\n                      nz-input\\n                      placeholder=\\\"Digite o complemento\\\"\\n                      maxlength=\\\"128\\\"\\n                    />\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n              <div class=\\\"col-md-3\\\">\\n                <nz-form-item>\\n                  <nz-form-label nzFor=\\\"neighborhood\\\"\\n                    >Bairro<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n                  >\\n                  <nz-form-control nzHasFeedback>\\n                    <input\\n                      formControlName=\\\"neighborhood\\\"\\n                      id=\\\"neighborhood\\\"\\n                      nz-input\\n                      placeholder=\\\"Digite o bairro\\\"\\n                      maxlength=\\\"128\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                    />\\n                    <nz-form-explain\\n                      *ngIf=\\\"\\n                        addressGroup.get('neighborhood').dirty && addressGroup.get('neighborhood').errors\\n                      \\\"\\n                    >\\n                      <ng-container *ngIf=\\\"addressGroup.get('neighborhood').hasError('required')\\\">\\n                        Campo obrigatório, por favor digite o bairro.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n              <div class=\\\"col-md-4\\\">\\n                <nz-form-item>\\n                  <nz-form-label nzFor=\\\"city\\\">Cidade <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n                  <nz-form-control nzHasFeedback>\\n                    <input\\n                      formControlName=\\\"city\\\"\\n                      id=\\\"city\\\"\\n                      nz-input\\n                      placeholder=\\\"Digite a cidade\\\"\\n                      maxlength=\\\"64\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                    />\\n                    <nz-form-explain\\n                      *ngIf=\\\"addressGroup.get('city').dirty && addressGroup.get('city').errors\\\"\\n                    >\\n                      <ng-container *ngIf=\\\"addressGroup.get('city').hasError('required')\\\">\\n                        Campo obrigatório, por favor digite a cidade.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n              <div class=\\\"col-md-2\\\">\\n                <nz-form-item>\\n                  <nz-form-label nzFor=\\\"uf\\\">UF <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n                  <nz-form-control nzHasFeedback>\\n                    <nz-select\\n                      formControlName=\\\"uf\\\"\\n                      id=\\\"uf\\\"\\n                      nzAllowClear\\n                      nzShowSearch\\n                      nzDropdownClassName=\\\"account-select\\\"\\n                      nzPlaceHolder=\\\"Selecione\\\"\\n                    >\\n                      <nz-option\\n                        *ngFor=\\\"let state of states\\\"\\n                        [nzLabel]=\\\"state?.sigla\\\"\\n                        [nzValue]=\\\"state?.sigla\\\"\\n                      ></nz-option>\\n                    </nz-select>\\n                    <nz-form-explain\\n                      *ngIf=\\\"addressGroup.get('uf').dirty && addressGroup.get('uf').errors\\\"\\n                    >\\n                      <ng-container *ngIf=\\\"addressGroup.get('uf').hasError('required')\\\">\\n                        Campo obrigatório, por favor selecione o UF.\\n                      </ng-container>\\n                    </nz-form-explain>\\n                  </nz-form-control>\\n                </nz-form-item>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </ng-container>\\n    <div class=\\\"row mb-3\\\">\\n      <div class=\\\"col-10\\\">\\n        <button\\n          (click)=\\\"addComercial()\\\"\\n          class=\\\"btn btn-icon btn-success btn-add text-capitalize\\\"\\n          type=\\\"button\\\"\\n        >\\n          <span class=\\\"btn-inner--text\\\">Adicionar Dados Comerciais</span>\\n          <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n        </button>\\n      </div>\\n    </div>\\n  </ng-container>\\n</form>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \".btn-add {\\n  display: flex;\\n  padding: 0 0 0 1.25rem;\\n  height: 40px;\\n  align-items: center;\\n  border-radius: 10px;\\n  overflow: hidden;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n  background-color: var(--bg-color-secondary);\\n}\\n.btn-add .btn-inner--icon {\\n  background-color: var(--bg-color-primary);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 40px;\\n  width: 50px;\\n}\\n.popover-trigger {\\n  padding: 8px;\\n  color: #6f6f6f;\\n  font-size: 16px;\\n  margin-top: 16px;\\n}\\n.add-more,\\n::ng-deep .ant-divider-inner-text {\\n  font-family: \\\"probold\\\", sans-serif;\\n}\\n.title {\\n  text-transform: none;\\n  font-size: 16px;\\n}\\n.title i:before {\\n  margin-left: 0;\\n}\\n.avatar {\\n  width: 128px;\\n  height: 128px;\\n}\\n.upload-icon {\\n  font-size: 32px;\\n  color: #999;\\n}\\n.ant-upload-text {\\n  margin-top: 8px;\\n  color: #666;\\n}\\n::ng-deep .ant-upload {\\n  display: inline-block;\\n  overflow: hidden;\\n  text-align: center;\\n  vertical-align: middle;\\n  box-shadow: 0 1px 20px 0 rgba(0, 0, 0, 0.1);\\n  padding: 0;\\n}\\n::ng-deep .ant-upload img {\\n  max-width: 250px;\\n}\\n::ng-deep .ant-upload .ant-uploader-container {\\n  padding: 10px;\\n}\\n::ng-deep .ant-select-selection {\\n  height: 100%;\\n}\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n.mandatory {\\n  color: red;\\n}\\n.error {\\n  color: red;\\n}\\n.max-quantity {\\n  font-size: 10px !important;\\n}\\n.ant-btn:hover,\\n.ant-btn:focus {\\n  color: white;\\n  background-color: #0b6054;\\n  border-color: #0b6054;\\n}\";","import {\n  Component,\n  OnInit,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  SimpleChange,\n  SimpleChanges\n} from '@angular/core';\n\n@Component({\n  selector: 'app-password-strength',\n  templateUrl: './password-strength.component.html',\n  styleUrls: ['./password-strength.component.scss']\n})\nexport class PasswordStrengthComponent implements OnChanges {\n  @Input() password: string;\n  @Output() isStrong = new EventEmitter<boolean>();\n\n  bar0: string;\n  bar1: string;\n  bar2: string;\n  bar3: string;\n  bar4: string;\n\n  msg = '';\n  private colors = ['darkred', 'orangered', 'orange', 'yellowgreen'];\n\n  ngOnChanges(changes: SimpleChanges) {\n    const password = changes.password.currentValue;\n    this.setBarColors(this.colors.length, '#DDD');\n\n    if (password) {\n      const pwdStrength = this.checkStrength(password);\n      const c = this.getColor(pwdStrength);\n      this.setBarColors(c.idx, c.col);\n\n      this.isStrong.emit(pwdStrength >= 30);\n      this.msg = this.getMessage(c.idx);\n    } else {\n      this.msg = '';\n    }\n  }\n\n  private checkStrength(p: string) {\n    const lowerLetters = /[a-z]+/.test(p);\n    const upperLetters = /[A-Z]+/.test(p);\n    const numbers = /[0-9]+/.test(p);\n    const symbols = /[$-/:-?{-~!\"^_@`\\[\\]]/g.test(p);\n\n    const flags = [lowerLetters, upperLetters, numbers, symbols];\n\n    const passedMatches = flags.reduce((sum, item) => sum + +item, 0);\n\n    let force = 0;\n    force += 2 * p.length + +(p.length >= 10);\n    force += passedMatches * 10;\n\n    // short password\n    force = p.length <= 6 ? Math.min(force, 10) : force;\n\n    // poor variety of characters\n    force = passedMatches === 1 ? Math.min(force, 10) : force;\n    force = passedMatches === 2 ? Math.min(force, 20) : force;\n    force = passedMatches === 3 ? Math.min(force, 30) : force;\n    force = passedMatches === 4 ? Math.min(force, 40) : force;\n\n    return force;\n  }\n\n  private getColor(force: number) {\n    let idx = 0;\n    if (force <= 10) {\n      idx = 0;\n    } else if (force <= 20) {\n      idx = 1;\n    } else if (force <= 30) {\n      idx = 2;\n    } else {\n      idx = 3;\n    }\n    return {\n      idx: idx + 1,\n      col: this.colors[idx]\n    };\n  }\n\n  private setBarColors(count: number, col: string) {\n    for (let i = 0; i < count; i++) {\n      this['bar' + i] = col;\n    }\n  }\n\n  private getMessage(idx: number) {\n    switch (idx) {\n      case 1:\n        return 'Muito fraca';\n      case 2:\n        return 'Fraca';\n      case 3:\n        return 'Média';\n      case 4:\n        return 'Forte';\n      case 5:\n        return 'Muito forte';\n    }\n  }\n}\n","export default \"<div class=\\\"strength\\\">\\n  <ul class=\\\"strengthBar\\\">\\n    <li class=\\\"point\\\" [style.background-color]=\\\"bar0\\\"></li>\\n    <li class=\\\"point\\\" [style.background-color]=\\\"bar1\\\"></li>\\n    <li class=\\\"point\\\" [style.background-color]=\\\"bar2\\\"></li>\\n    <li class=\\\"point\\\" [style.background-color]=\\\"bar3\\\"></li>\\n  </ul>\\n  <br />\\n  <p>{{ msg }}</p>\\n</div>\\n\";","export default \".strength {\\n  margin: 0 auto;\\n  text-align: center;\\n}\\n\\n.strengthBar {\\n  display: inline;\\n  list-style: none;\\n  margin: 0;\\n  padding: 0;\\n  vertical-align: 2px;\\n}\\n\\n.point:last-of-type {\\n  margin: 0 !important;\\n}\\n\\n.point {\\n  background: #DDD;\\n  border-radius: 2px;\\n  display: inline-block;\\n  height: 5px;\\n  margin-right: 1px;\\n  width: 62px;\\n}\\n\\np {\\n  font-weight: bold;\\n  font-size: 14px;\\n}\";","export default \"<div class=\\\"row justify-content-between\\\">\\n  <div class=\\\"col-md-6\\\">\\n    <form nz-form [formGroup]=\\\"cpfForm\\\" (ngSubmit)=\\\"searchCpf()\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"cpfResponsibleResp\\\" theme\\n          >CPF do responsável <span class=\\\"mandatory\\\">*</span></nz-form-label\\n        >\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-8\\\">\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                id=\\\"cpfResponsible\\\"\\n                formControlName=\\\"cpf\\\"\\n                placeholder=\\\"Digite o CPF\\\"\\n                mask=\\\"000.000.000-00\\\"\\n                theme\\n              />\\n              <nz-form-explain *ngIf=\\\"cpf.dirty && cpf.errors\\\">\\n                <ng-container *ngIf=\\\"cpf.hasError('required')\\\">\\n                  Campo obrigatório.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"!cpf.hasError('required') && cpf.hasError('cpf')\\\">\\n                  CPF inválido.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </div>\\n          <div class=\\\"col-4 pt-1\\\">\\n            <button nz-button class=\\\"btn-primary\\\" type=\\\"submit\\\" [disabled]=\\\"cpfForm.invalid\\\">\\n              OK\\n            </button>\\n          </div>\\n        </div>\\n      </nz-form-item>\\n    </form>\\n\\n    <div *ngIf=\\\"consulted\\\" class=\\\"row\\\" [formGroup]=\\\"responsibleForm\\\">\\n      <nz-form-item class=\\\"col-12\\\">\\n        <nz-form-label nzFor=\\\"nameRespResp\\\" theme\\n          >Nome completo <span class=\\\"mandatory\\\">*</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            placeholder=\\\"Nome do Responsável\\\"\\n            formControlName=\\\"fullname\\\"\\n            id=\\\"nameResp\\\"\\n            theme\\n          />\\n          <nz-form-explain\\n            *ngIf=\\\"responsibleForm.get('fullname').dirty && responsibleForm.get('fullname').errors\\\"\\n          >\\n            <ng-container *ngIf=\\\"responsibleForm.get('fullname').hasError('required')\\\">\\n              Campo obrigatório, por favor digite o nome e sobrenome do responsável.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"\\n                !responsibleForm.get('fullname').hasError('required') &&\\n                responsibleForm.get('fullname').hasError('nome')\\n              \\\"\\n            >\\n              Por favor digite o seu nome e sobrenome.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-6\\\">\\n        <nz-form-label nzFor=\\\"sexRespResp\\\" theme>Sexo<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select formControlName=\\\"sex\\\" id=\\\"sexResp\\\" nz-input nzPlaceHolder=\\\"Selecione\\\" theme>\\n            <option value=\\\"F\\\">Feminino</option>\\n            <option value=\\\"M\\\" selected>Masculino</option>\\n          </select>\\n          <nz-form-explain *ngIf=\\\"responsibleForm.get('sex').dirty && responsibleForm.get('sex').errors\\\">\\n            <ng-container *ngIf=\\\"responsibleForm.get('sex').hasError('required')\\\">\\n              Campo obrigatório, por favor selecione o sexo.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-6\\\">\\n        <nz-form-label nzFor=\\\"dateOfBirthRespResp\\\" theme\\n          >Data de nascimento<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            type=\\\"date\\\"\\n            formControlName=\\\"dateOfBirth\\\"\\n            placeholder=\\\"DD/MM/AAAA\\\"\\n            [max]=\\\"currentDate\\\"\\n            id=\\\"dateOfBirthResp\\\"\\n            theme\\n          />\\n\\n          <nz-form-explain\\n            *ngIf=\\\"responsibleForm.get('dateOfBirth').dirty && responsibleForm.get('dateOfBirth').errors\\\"\\n          >\\n            <ng-container *ngIf=\\\"responsibleForm.get('dateOfBirth').hasError('required')\\\">\\n              Campo obrigatório, por favor digite sua data de nascimento.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"\\n                !responsibleForm.get('dateOfBirth').hasError('required') &&\\n                responsibleForm.get('dateOfBirth').hasError('dateOfBirth')\\n              \\\"\\n            >\\n              Nome inválido.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-12\\\" [formGroup]=\\\"responsibleForm.get('membership')\\\" *ngIf=\\\"!hasAccount\\\">\\n        <nz-form-label nzFor=\\\"mothersName\\\" theme\\n          >Nome da mãe <span class=\\\"mandatory\\\">*</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            placeholder=\\\"Digite o nome da mãe\\\"\\n            formControlName=\\\"mothersName\\\"\\n            id=\\\"mothersName\\\"\\n            maxlength=\\\"128\\\"\\n            theme\\n          />\\n          <nz-form-explain\\n            *ngIf=\\\"\\n              responsibleForm.get('membership.mothersName').dirty &&\\n              responsibleForm.get('membership.mothersName').errors\\n            \\\"\\n          >\\n            <ng-container *ngIf=\\\"responsibleForm.get('membership.mothersName').hasError('required')\\\">\\n              Campo obrigatório, por favor digite o nome da mãe do responsável.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"\\n                !responsibleForm.get('membership.mothersName').hasError('required') &&\\n                responsibleForm.get('membership.mothersName').hasError('membership.mothersName')\\n              \\\"\\n            >\\n              Nome inválido.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"col-md-5\\\" [formGroup]=\\\"responsibleForm\\\" *ngIf=\\\"consulted\\\">\\n    <nz-form-item>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"col-md-6\\\">\\n          <nz-form-label nzFor=\\\"name\\\" theme\\n            >Nome de exibição/social <span class=\\\"mandatory\\\">*</span></nz-form-label\\n          >\\n        </div>\\n        <div class=\\\"col-md-6\\\" *ngIf=\\\"!hasAccount\\\">\\n          <label\\n            #repeatName\\n            nz-checkbox\\n            (nzCheckedChange)=\\\"checkRepeatName($event)\\\"\\n            style=\\\"font-size: 13px;margin-right: -11px;\\\"\\n            theme\\n            >Repetir nome completo</label\\n          >\\n        </div>\\n      </div>\\n      <nz-form-control>\\n        <input nz-input formControlName=\\\"name\\\" id=\\\"name\\\" maxlength=\\\"128\\\" />\\n        <nz-form-explain *ngIf=\\\"responsibleForm.get('name').dirty && responsibleForm.get('name').errors\\\">\\n          <ng-container *ngIf=\\\"responsibleForm.get('name').hasError('required')\\\">\\n            Por favor digite o seu nome de exibição\\n          </ng-container>\\n        </nz-form-explain>\\n      </nz-form-control>\\n    </nz-form-item>\\n\\n    <nz-form-item *ngIf=\\\"responsibleForm.get('cellphone') as cellphone\\\">\\n      <nz-form-label nzFor=\\\"cellphone\\\" theme\\n        >Telefone 1 <span class=\\\"mandatory\\\">*</span>\\n        <!-- <app-popover-button\\n          content=\\\"Será utilizado para receber receitas e demais documentos via WhatsApp e SMS\\\"\\n        ></app-popover-button> -->\\n      </nz-form-label>\\n      <nz-form-control nzHasFeedback>\\n        <input\\n          nz-input\\n          id=\\\"cellphone\\\"\\n          [mask]=\\\"cellphone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n          formControlName=\\\"cellphone\\\"\\n          theme\\n        />\\n        <nz-form-explain *ngIf=\\\"cellphone.dirty && cellphone.errors\\\">\\n          <ng-container *ngIf=\\\"cellphone.hasError('required')\\\">\\n            Campo obrigatório, por favor digite seu telefone para contato.\\n          </ng-container>\\n        </nz-form-explain>\\n      </nz-form-control>\\n    </nz-form-item>\\n\\n    <nz-form-item *ngIf=\\\"!hasAccount && responsibleForm.get('telephone') as telephone\\\">\\n      <nz-form-label nzFor=\\\"telephone\\\" theme>Telefone 2</nz-form-label>\\n      <nz-form-control>\\n        <input\\n          nz-input\\n          id=\\\"telephone\\\"\\n          [mask]=\\\"telephone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n          formControlName=\\\"telephone\\\"\\n          theme\\n        />\\n        <nz-form-explain *ngIf=\\\"telephone.dirty && telephone.errors\\\">\\n          <ng-container *ngIf=\\\"telephone.hasError('telephone')\\\">\\n            Telefone inválido, por favor digite um número válido.\\n          </ng-container>\\n        </nz-form-explain>\\n      </nz-form-control>\\n    </nz-form-item>\\n\\n    <nz-form-item>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"col-5\\\">\\n          <nz-form-label nzFor=\\\"emailResp\\\" theme>E-mail <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        </div>\\n        <div class=\\\"col\\\">\\n          <label\\n            *ngIf=\\\"!responsibleForm.get('_id').value\\\"\\n            nz-checkbox\\n            (nzCheckedChange)=\\\"checkEmail($event)\\\"\\n            >Não cadastrar e-mail\\n          </label>\\n        </div>\\n      </div>\\n      <nz-form-control nzHasFeedback>\\n        <input\\n          nz-input\\n          type=\\\"email\\\"\\n          autocomplete=\\\"new-email\\\"\\n          formControlName=\\\"email\\\"\\n          id=\\\"emailResp\\\"\\n          style=\\\"text-transform: lowercase;\\\"\\n          (keydown.space)=\\\"$event.preventDefault()\\\"\\n          theme\\n        />\\n        <nz-form-explain\\n          *ngIf=\\\"responsibleForm.get('email').dirty && responsibleForm.get('email').errors\\\"\\n        >\\n          <ng-container *ngIf=\\\"responsibleForm.get('email').hasError('required')\\\">\\n            Campo obrigatório, por favor digite seu e-mail.\\n          </ng-container>\\n          <ng-container\\n            *ngIf=\\\"\\n              (!responsibleForm.get('email').hasError('required') &&\\n                responsibleForm.get('email').hasError('email')) ||\\n              responsibleForm.get('email').invalid\\n            \\\"\\n          >\\n            E-mail inválido, por favor digite um e-mail válido.\\n          </ng-container>\\n        </nz-form-explain>\\n      </nz-form-control>\\n    </nz-form-item>\\n  </div>\\n\\n  <ng-container *ngIf=\\\"consulted\\\" [@slideInOut]>\\n    <nz-divider nzOrientation=\\\"left\\\" nzText=\\\"Endereço\\\"></nz-divider>\\n\\n    <div class=\\\"col-md-12\\\" *ngIf=\\\"responsibleForm.get('address')\\\">\\n      <div class=\\\"row\\\" [formGroup]=\\\"responsibleForm.get('address')\\\">\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"cep\\\">CEP<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                (keyup)=\\\"onKey($event)\\\"\\n                formControlName=\\\"cep\\\"\\n                id=\\\"cep\\\"\\n                nz-input\\n                placeholder=\\\"00.000-000\\\"\\n                mask=\\\"00.000-000\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"\\n                  responsibleForm.get('address.cep').dirty && responsibleForm.get('address.cep').errors\\n                \\\"\\n              >\\n                <ng-container *ngIf=\\\"responsibleForm.get('address.cep').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite seu CEP.\\n                </ng-container>\\n                <ng-container\\n                  *ngIf=\\\"\\n                    !responsibleForm.get('address.cep').hasError('required') &&\\n                    responsibleForm.get('address.cep').hasError('address.cep')\\n                  \\\"\\n                >\\n                  CEP inválido, por favor digite um CEP válido.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-md-6\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"logradouro\\\">Logradouro<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"street\\\"\\n                id=\\\"street\\\"\\n                nz-input\\n                placeholder=\\\"Digite o logradouro\\\"\\n                maxlength=\\\"128\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"\\n                  responsibleForm.get('address.street').dirty &&\\n                  responsibleForm.get('address.street').errors\\n                \\\"\\n              >\\n                <ng-container *ngIf=\\\"responsibleForm.get('address.street').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o logradouro.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-12 col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"number\\\">Número<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"number\\\"\\n                id=\\\"number\\\"\\n                nz-input\\n                placeholder=\\\"Digite o número\\\"\\n                maxlength=\\\"10\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"\\n                  responsibleForm.get('address.number').dirty &&\\n                  responsibleForm.get('address.number').errors\\n                \\\"\\n              >\\n                <ng-container *ngIf=\\\"responsibleForm.get('address.number').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o número.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-12 col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"complement\\\">Complemento</nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"complement\\\"\\n                id=\\\"complement\\\"\\n                nz-input\\n                placeholder=\\\"Digite o complemento\\\"\\n                maxlength=\\\"128\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-12 col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"neighborhood\\\">Bairro<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"neighborhood\\\"\\n                id=\\\"neighborhood\\\"\\n                nz-input\\n                placeholder=\\\"Digite o bairro\\\"\\n                maxlength=\\\"128\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"\\n                  responsibleForm.get('address.neighborhood').dirty &&\\n                  responsibleForm.get('address.neighborhood').errors\\n                \\\"\\n              >\\n                <ng-container *ngIf=\\\"responsibleForm.get('address.neighborhood').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o bairro.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-12 col-md-4\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"city\\\">Cidade<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"city\\\"\\n                id=\\\"city\\\"\\n                nz-input\\n                placeholder=\\\"Digite a cidade\\\"\\n                maxlength=\\\"64\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"\\n                  responsibleForm.get('address.city').dirty && responsibleForm.get('address.city').errors\\n                \\\"\\n              >\\n                <ng-container *ngIf=\\\"responsibleForm.get('address.city').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite a cidade.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-12 col-md-2\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"uf\\\">UF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <select\\n                id=\\\"uf\\\"\\n                formControlName=\\\"uf\\\"\\n                nz-input\\n                nzAllowClear\\n                nzShowSearch\\n                nzPlaceHolder=\\\"Selecione\\\"\\n              >\\n                <option *ngFor=\\\"let state of states\\\" [value]=\\\"state?.sigla\\\">{{ state?.sigla }}</option>\\n              </select>\\n              <nz-form-explain\\n                *ngIf=\\\"\\n                  responsibleForm.get('address.uf').dirty && responsibleForm.get('address.uf').errors\\n                \\\"\\n              >\\n                <ng-container *ngIf=\\\"responsibleForm.get('address.uf').hasError('required')\\\">\\n                  Campo obrigatório, por favor selecione o UF.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </div>\\n    </div>\\n  </ng-container>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","import { animate, group, state, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { CepService } from '@app/modules/entry/services/cep.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { BrazilState, Patient } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { DataBigboostConsult } from '@app/shared/models/paciente';\nimport { BigboostService } from '@app/shared/services/bigboost.service';\n\n@Component({\n  selector: 'app-responsible-form',\n  templateUrl: './responsible-form.component.html',\n  styleUrls: ['./responsible-form.component.scss'],\n  animations: [\n    trigger('slideInOut', [\n      state('in', style({ height: '*', opacity: 0 })),\n      transition(':leave', [\n        style({ height: '*', opacity: 1 }),\n        group([animate(300, style({ height: 0 })), animate('400ms ease-in-out', style({ opacity: 0 }))])\n      ]),\n      transition(':enter', [\n        style({ height: 0, opacity: 0 }),\n        group([\n          animate(300, style({ height: '*' })),\n          animate('400ms ease-in-out', style({ opacity: 1 }))\n        ])\n      ])\n    ])\n  ]\n})\nexport class ResponsibleFormComponent implements OnInit {\n  @Output() formChange = new EventEmitter<FormGroup>();\n\n  cpfForm: FormGroup;\n  responsibleForm: FormGroup;\n  loading = false;\n  consulted = false;\n  states: BrazilState[] = BrazilianStates;\n\n  @ViewChild('repeatName')\n  private repeatNameCheckbox: any;\n\n  constructor(\n    private fb: FormBuilder,\n    private authService: AuthService,\n    private healthProfessionalService: HealthProfessionalService,\n    private patientService: PatientsService,\n    private bigboostService: BigboostService,\n    private cepService: CepService\n  ) {}\n\n  ngOnInit() {\n    this.initForm();\n    this.formChange.emit(this.responsibleForm);\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  private initForm() {\n    this.cpfForm = this.fb.group({\n      cpf: ['', [Validators.required, ValidationService.cpfValidator]]\n    });\n\n    this.responsibleForm = this.fb.group({\n      _id: [null],\n      name: ['', [Validators.required, ValidationService.nomeValidator]],\n      fullname: ['', [Validators.required, ValidationService.nomeValidator]],\n      cpf: ['', [Validators.required, ValidationService.cpfValidator]],\n      cellphone: ['', Validators.required],\n      telephone: [''],\n      email: ['', [Validators.required, Validators.email]],\n      dateOfBirth: [null, Validators.required],\n      sex: ['', Validators.required],\n      membership: this.fb.group({\n        mothersName: ['', Validators.required]\n      }),\n      address: this.fb.group({\n        uf: ['', Validators.required],\n        city: ['', Validators.required],\n        complement: [''],\n        number: ['', Validators.required],\n        street: ['', Validators.required],\n        neighborhood: ['', Validators.required],\n        cep: ['', [Validators.required, ValidationService.cepValidator]]\n      }),\n      pendency: [null]\n    });\n\n    this.responsibleForm.get('fullname').valueChanges.subscribe(fullname => {\n      if (this.repeatNameCheckbox && this.repeatNameCheckbox.nzChecked) {\n        if (!fullname) {\n          this.repeatNameCheckbox.nzChecked = false;\n          this.responsibleForm.get('name').enable();\n        }\n        this.responsibleForm.get('name').setValue(fullname);\n      }\n    });\n\n    this.responsibleForm.get('email').valueChanges.subscribe(email => {\n      if (email) {\n        this.responsibleForm.get('email').setValue(email.toLowerCase(), { emitEvent: false });\n      }\n    });\n  }\n\n  get cpf() {\n    return this.cpfForm.get('cpf');\n  }\n\n  get currentDate() {\n    const now = new Date();\n    const dd = String(now.getDate()).padStart(2, '0');\n    const mm = String(now.getMonth() + 1).padStart(2, '0');\n    const yyyy = now.getFullYear();\n    return `${yyyy}-${mm}-${dd}`;\n  }\n\n  get hasAccount(): boolean {\n    return !!this.responsibleForm.value._id;\n  }\n\n  checkEmail(value: boolean) {\n    if (value) {\n      this.responsibleForm.get('email').disable();\n    } else {\n      this.responsibleForm.get('email').enable();\n    }\n  }\n\n  @nativeAsync\n  async searchCpf() {\n    try {\n      const cpf = this.cpf.value;\n\n      this.loading = true;\n      let patient = await this.hasPatient(cpf);\n      this.consulted = true;\n\n      this.responsibleForm.disable();\n      if (!patient) {\n        patient = await this.getPatient(cpf);\n      }\n\n      if (patient) {\n        this.patchForm(patient);\n      } else {\n        const consult = await this.consultCpf(cpf);\n        if (consult.status === 1) {\n          this.patchFormConsult(consult);\n        } else {\n          this.responsibleForm.enable();\n          this.responsibleForm.get('pendency').setValue(consult);\n        }\n      }\n\n      if (this.hasAccount) {\n        this.responsibleForm.get('email').disable();\n      } else if (this.responsibleForm.disabled) {\n        this.responsibleForm.enable();\n        this.disableForm();\n      }\n    } catch (err) {\n      console.error(err);\n    }\n    this.loading = false;\n  }\n\n  checkRepeatName(value: boolean) {\n    if (value) {\n      this.responsibleForm.get('name').setValue(this.responsibleForm.get('fullname').value);\n      this.responsibleForm.get('name').disable();\n    } else {\n      this.responsibleForm.get('name').enable();\n    }\n  }\n\n  private patchForm(patient: Patient) {\n    this.responsibleForm.patchValue(patient);\n    const date = new Date(patient.dateOfBirth);\n    this.responsibleForm.get('dateOfBirth').setValue(date.toISOString().substring(0, 10));\n    if (patient.user) {\n      this.responsibleForm.get('email').setValue(patient.user.email);\n    }\n    if (!patient.fullname) {\n      this.responsibleForm.get('fullname').setValue(patient.name);\n    }\n  }\n\n  private patchFormConsult(consult: DataBigboostConsult) {\n    this.responsibleForm.get('_id').setValue(null);\n    this.responsibleForm.get('name').setValue(consult.nome);\n    this.responsibleForm.get('fullname').setValue(consult.nome);\n    this.responsibleForm.get('cpf').setValue(consult.cpf);\n    this.responsibleForm.get('sex').setValue(consult.genero);\n    this.responsibleForm.get('membership.mothersName').setValue(consult.mae);\n    this.responsibleForm.get('email').setValue('');\n    this.responsibleForm.get('cellphone').setValue('');\n    this.responsibleForm.get('telephone').setValue('');\n    this.responsibleForm.get('pendency').setValue(null);\n    const date = consult.nascimento.split('/');\n    const dateOfBirth = new Date(`${date[1]}/${date[0]}/${date[2]}`);\n    this.responsibleForm.get('dateOfBirth').setValue(dateOfBirth.toISOString().substring(0, 10));\n  }\n\n  private disableForm() {\n    this.responsibleForm.get('fullname').disable();\n    this.responsibleForm.get('cpf').disable();\n    this.responsibleForm.get('sex').disable();\n    this.responsibleForm.get('membership.mothersName').disable();\n    this.responsibleForm.get('dateOfBirth').disable();\n  }\n\n  @nativeAsync\n  private async hasPatient(cpf: string) {\n    const result = await this.healthProfessionalService\n      .getPatientsByUserId(cpf, this.user._id)\n      .toPromise();\n    return result.length ? result[0] : null;\n  }\n\n  @nativeAsync\n  private async getPatient(cpf: string) {\n    try {\n      return await this.patientService.getPatientByCpf(cpf).toPromise();\n    } catch (err) {\n      return null;\n    }\n  }\n\n  @nativeAsync\n  private async consultCpf(cpf: string) {\n    try {\n      return await this.bigboostService.consultCpf(cpf).toPromise();\n    } catch (err) {\n      console.error(err);\n      const consult = {\n        status: -1,\n        cpf,\n        erroCodigo: err.status,\n        erro: 'A importação de dados do cpf está com instabilidade'\n      };\n      return consult;\n    }\n  }\n\n  @nativeAsync\n  async onKey(event: any) {\n    if (event.target.value.length === 10) {\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\n      const data = await this.cepService.consult(cep);\n      if (!data.erro) {\n        this.responsibleForm.controls['address'].setValue({\n          uf: data.uf,\n          street: data.logradouro,\n          neighborhood: data.bairro,\n          city: data.localidade,\n          number: null,\n          cep: data.cep\n        });\n      }\n    }\n  }\n}\n","export default \".mandatory {\\n  color: red;\\n}\\n\\n.ant-btn:hover,\\n.ant-btn:focus {\\n  color: white;\\n  background-color: #0b6054;\\n  border-color: #0b6054;\\n}\";","export default \"<form nz-form [formGroup]=\\\"form\\\" theme>\\n  <div class=\\\"row justify-content-between\\\">\\n    <div class=\\\"col-md-6\\\">\\n      <div class=\\\"row\\\">\\n        <h2 class=\\\"col-md-12 bold tipografy-h2\\\" theme>PACIENTE MENOR DE IDADE</h2>\\n        <nz-form-item class=\\\"col-md-12\\\">\\n          <nz-form-label nzFor=\\\"nome\\\">Nome completo<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              placeholder=\\\"ex: João Gilberto\\\"\\n              formControlName=\\\"fullname\\\"\\n              id=\\\"nome\\\"\\n              maxlength=\\\"128\\\"\\n              theme\\n            />\\n            <nz-form-explain *ngIf=\\\"form.get('fullname').dirty && form.get('fullname').errors\\\">\\n              <ng-container *ngIf=\\\"form.get('fullname').hasError('required')\\\">\\n                Campo obrigatório, por favor digite o nome e sobrenome.\\n              </ng-container>\\n              <ng-container\\n                *ngIf=\\\"\\n                  !form.get('fullname').hasError('required') && form.get('fullname').hasError('nome')\\n                \\\"\\n              >\\n                Por favor digite o nome e sobrenome.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n        <nz-form-item class=\\\"col-md-6\\\" *ngIf=\\\"!hideCpf\\\">\\n          <nz-form-label nzFor=\\\"cpf\\\" theme>CPF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              placeholder=\\\"000.000.000-00\\\"\\n              mask=\\\"000.000.000-00\\\"\\n              formControlName=\\\"cpf\\\"\\n              id=\\\"cpf\\\"\\n              theme\\n            />\\n            <nz-form-explain *ngIf=\\\"form.get('cpf').dirty && form.get('cpf').errors\\\">\\n              <ng-container *ngIf=\\\"form.get('cpf').hasError('required')\\\">\\n                Campo obrigatório, por favor digite o CPF.\\n              </ng-container>\\n              <ng-container\\n                *ngIf=\\\"!form.get('cpf').hasError('required') && form.get('cpf').hasError('cpf')\\\"\\n              >\\n                CPF inválido, por favor digite um CPF válido.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item class=\\\"col-md\\\">\\n          <nz-form-label nzFor=\\\"dateOfBirth\\\" theme\\n            >Data de nascimento<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n          >\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              type=\\\"date\\\"\\n              formControlName=\\\"dateOfBirth\\\"\\n              placeholder=\\\"DD/MM/AAAA\\\"\\n              [max]=\\\"currentDate\\\"\\n              id=\\\"dateOfBirth\\\"\\n              theme\\n            />\\n\\n            <nz-form-explain *ngIf=\\\"form.get('dateOfBirth').dirty && form.get('dateOfBirth').errors\\\">\\n              <ng-container *ngIf=\\\"form.get('dateOfBirth').hasError('required')\\\">\\n                Campo obrigatório, por favor digite data de nascimento.\\n              </ng-container>\\n              <ng-container\\n                *ngIf=\\\"\\n                  !form.get('dateOfBirth').hasError('required') &&\\n                  form.get('dateOfBirth').hasError('dateOfBirth')\\n                \\\"\\n              >\\n                Nome inválido.\\n              </ng-container>\\n              <ng-container\\n                *ngIf=\\\"\\n                  !form.get('dateOfBirth').hasError('required') &&\\n                  form.get('dateOfBirth').hasError('isNotMinor')\\n                \\\"\\n              >\\n                Dependente deve ser menor de idade.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item class=\\\"col-md-12\\\" [formGroup]=\\\"form.get('membership')\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"col-4\\\">\\n              <nz-form-label nzFor=\\\"mothersName\\\" theme\\n                >Nome da mãe<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n              >\\n            </div>\\n            <div class=\\\"col\\\" *ngIf=\\\"mothersName\\\">\\n              <label\\n                #responsibleName\\n                nz-checkbox\\n                (nzCheckedChange)=\\\"checkMothersName($event)\\\"\\n                style=\\\"font-size: 14px;\\\"\\n                theme\\n                >Repetir nome do responsável</label\\n              >\\n            </div>\\n          </div>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              placeholder=\\\"Digite o nome da mãe\\\"\\n              formControlName=\\\"mothersName\\\"\\n              id=\\\"mothersName\\\"\\n              maxlength=\\\"128\\\"\\n              theme\\n            />\\n            <nz-form-explain\\n              *ngIf=\\\"\\n                form.get('membership.mothersName').dirty && form.get('membership.mothersName').errors\\n              \\\"\\n            >\\n              <ng-container *ngIf=\\\"form.get('membership.mothersName').hasError('required')\\\">\\n                Campo obrigatório, por favor digite o nome da mãe.\\n              </ng-container>\\n              <ng-container\\n                *ngIf=\\\"\\n                  !form.get('membership.mothersName').hasError('required') &&\\n                  form.get('membership.mothersName').hasError('membership.mothersName')\\n                \\\"\\n              >\\n                Nome inválido.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"col-md-6\\\">\\n      <div class=\\\"row\\\">\\n        <nz-form-item class=\\\"col-md-12 display-name\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"col-md-6\\\">\\n              <nz-form-label nzFor=\\\"name\\\" theme\\n                >Nome de exibição/social <span class=\\\"mandatory\\\">*</span></nz-form-label\\n              >\\n            </div>\\n            <div class=\\\"col-md-6\\\">\\n              <label\\n                theme\\n                #repeatName\\n                nz-checkbox\\n                (nzCheckedChange)=\\\"checkRepeatName($event)\\\"\\n                style=\\\"font-size: 13px; margin-right: -11px;\\\"\\n                >Repetir nome completo\\n              </label>\\n            </div>\\n          </div>\\n          <nz-form-control>\\n            <input nz-input formControlName=\\\"name\\\" id=\\\"name\\\" maxlength=\\\"128\\\" theme />\\n            <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\n              <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\n                Por favor digite o nome de exibição\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n        <nz-form-item class=\\\"col-6\\\">\\n          <nz-form-label nzFor=\\\"sex\\\" theme>Sexo<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\" theme>\\n              <option value=\\\"M\\\">Masculino</option>\\n              <option value=\\\"F\\\">Feminino</option>\\n            </select>\\n            <nz-form-explain *ngIf=\\\"form.get('sex').dirty && form.get('sex').errors\\\">\\n              <ng-container *ngIf=\\\"form.get('sex').hasError('required')\\\">\\n                Campo obrigatório, por favor selecione o sexo.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n\\n    <nz-divider nzOrientation=\\\"left\\\" *ngIf=\\\"!hideCpf\\\"></nz-divider>\\n\\n    <app-responsible-form\\n      *ngIf=\\\"!hideCpf\\\"\\n      class=\\\"col-md-12\\\"\\n      (formChange)=\\\"addResponsibleForm($event)\\\"\\n    ></app-responsible-form>\\n  </div>\\n</form>\\n\";","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { DataBigboostConsult } from '@app/shared/models/paciente';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\n\n@Component({\n  selector: 'app-underage-patient-form',\n  templateUrl: './underage-patient-form.component.html',\n  styleUrls: ['./underage-patient-form.component.scss']\n})\nexport class UnderagePatientFormComponent implements OnInit {\n  @Input() mothersName: string;\n  @Input() patient: DataBigboostConsult;\n  @Input() hideCpf = false;\n  @Output() formChange = new EventEmitter<FormGroup>();\n\n  @ViewChild('repeatName', { static: true })\n  repeatNameCheckbox: any;\n\n  form = this.fb.group({\n    name: ['', [Validators.required, ValidationService.nomeValidator]],\n    fullname: ['', [Validators.required, ValidationService.nomeValidator]],\n    sex: ['', Validators.required],\n    dateOfBirth: [null, [Validators.required, UnderagePatientFormComponent.validateUnderAge]],\n    membership: this.fb.group({\n      mothersName: ['', Validators.required]\n    }),\n    pendency: [null],\n    verifiedCpf: [false]\n  });\n\n  static validateUnderAge(control: FormControl): { [key: string]: boolean } | null {\n    const birthdate = new Date(control.value);\n    const diffDate = Date.now() - birthdate.getTime();\n    const ageDate = new Date(diffDate);\n    const years = Math.abs(ageDate.getUTCFullYear() - 1970);\n    if (years >= 18) {\n      return { isNotMinor: true };\n    }\n\n    return null;\n  }\n\n  constructor(private fb: FormBuilder, private notification: AppToastService) {}\n\n  ngOnInit() {\n    this.initForm();\n    if (this.patient) {\n      this.handleConsultCpf(this.patient);\n    }\n    this.formChange.emit(this.form);\n  }\n\n  private initForm() {\n    if (!this.hideCpf) {\n      this.form.addControl(\n        'cpf',\n        this.fb.control('', [Validators.required, ValidationService.cpfValidator])\n      );\n    }\n\n    this.form.get('fullname').valueChanges.subscribe(fullname => {\n      if (this.repeatNameCheckbox && this.repeatNameCheckbox.nzChecked) {\n        if (!fullname) {\n          this.repeatNameCheckbox.nzChecked = false;\n          this.form.get('name').enable();\n        }\n        this.form.get('name').setValue(fullname);\n      }\n    });\n  }\n\n  private handleConsultCpf(consult: DataBigboostConsult) {\n    if (consult.status === 1) {\n      this.form.get('pendency').setValue(null);\n      this.setForm(consult);\n      this.disableForm();\n    } else {\n      this.form.get('pendency').setValue(consult);\n      if (consult.erro) {\n        this.notification.notify('warning', 'Aviso', consult.erro);\n      }\n    }\n  }\n\n  private setForm(consult: DataBigboostConsult) {\n    this.form.get('name').setValue(consult.nome);\n    this.form.get('fullname').setValue(consult.nome);\n    this.form.get('cpf').setValue(consult.cpf);\n    this.form.get('sex').setValue(consult.genero);\n    this.form.get('membership.mothersName').setValue(consult.mae);\n    const date = consult.nascimento.split('/');\n    const dateOfBirth = new Date(`${date[1]}/${date[0]}/${date[2]}`);\n    this.form.get('dateOfBirth').setValue(dateOfBirth.toISOString().substring(0, 10));\n  }\n\n  private disableForm() {\n    this.form.get('fullname').disable();\n    this.form.get('cpf').disable();\n    this.form.get('sex').disable();\n    this.form.get('membership.mothersName').disable();\n    this.form.get('dateOfBirth').disable();\n  }\n\n  get currentDate() {\n    const now = new Date();\n    const dd = String(now.getDate()).padStart(2, '0');\n    const mm = String(now.getMonth() + 1).padStart(2, '0');\n    const yyyy = now.getFullYear();\n    return `${yyyy}-${mm}-${dd}`;\n  }\n\n  checkRepeatName(value: boolean) {\n    if (value) {\n      this.form.get('name').setValue(this.form.get('fullname').value);\n      this.form.get('name').disable();\n    } else {\n      this.form.get('name').enable();\n    }\n  }\n\n  checkMothersName(value: boolean) {\n    if (value) {\n      this.form.get('membership.mothersName').setValue(this.mothersName);\n      this.form.get('membership.mothersName').disable();\n    } else {\n      this.form.get('membership.mothersName').enable();\n    }\n  }\n\n  addResponsibleForm(responsibleForm: FormGroup) {\n    this.form.addControl('responsible', responsibleForm);\n  }\n}\n","export default \"input::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n\\n.mandatory {\\n  color: red;\\n}\\n\\nh2 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 18px;\\n  color: var(--color-label-input);\\n}\\n\\n.display-name {\\n  margin-top: 36px;\\n}\";","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { CepService } from '@app/modules/entry/services/cep.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { BrazilState, HealthProfessional, Patient } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { DataBigboostConsult } from '@app/shared/models/paciente';\n\n@Component({\n  selector: 'app-responsible-patient-form',\n  templateUrl: './responsible-patient-form.component.html',\n  styleUrls: ['./responsible-patient-form.component.scss']\n})\nexport class ResponsiblePatientFormComponent implements OnInit {\n  @Input() prescriber: HealthProfessional;\n  @Input() patient: DataBigboostConsult;\n  @Input() registeredByResponsible: boolean;\n  @Output() formChange = new EventEmitter<FormGroup>();\n  @Output() updateList = new EventEmitter<any>();\n\n  @ViewChild('repeatName', { static: true })\n  repeatNameCheckbox: any;\n\n  loading = false;\n  states: BrazilState[] = BrazilianStates;\n  dependents: Patient[];\n  showDependentForm = false;\n  private patientsCache = new Map<string, boolean>();\n\n  private _form = this.fb.group({\n    responsible: this.fb.group(\n      {\n        _id: [null],\n        name: ['', [Validators.required, ValidationService.nomeValidator]],\n        fullname: ['', [Validators.required, ValidationService.nomeValidator]],\n        cpf: ['', Validators.required],\n        sex: ['', Validators.required],\n        dateOfBirth: [null, Validators.required],\n        cellphone: ['', Validators.required],\n        telephone: [''],\n        email: ['', [Validators.required, Validators.email]],\n        emailConfirmation: ['', [Validators.required, Validators.email]],\n        membership: this.fb.group({\n          mothersName: ['']\n        }),\n        address: this.fb.group({\n          uf: ['', Validators.required],\n          city: ['', Validators.required],\n          complement: [''],\n          number: ['', Validators.required],\n          street: ['', Validators.required],\n          neighborhood: ['', Validators.required],\n          cep: ['', [Validators.required, ValidationService.cepValidator]]\n        }),\n        pendency: [null]\n      },\n      { validator: ValidationService.emailMatch }\n    )\n  });\n\n  constructor(\n    private fb: FormBuilder,\n    private cepService: CepService,\n    private authService: AuthService,\n    private patientsService: PatientsService,\n    private healthProfessionalService: HealthProfessionalService\n  ) {}\n\n  @nativeAsync\n  async ngOnInit() {\n    this.loading = true;\n    this.initForm();\n    const patient = await this.getPatientByCpf();\n    if (patient) {\n      this.patchForm(patient);\n      this.dependents = patient.dependents;\n      this.showDependentForm = !this.dependents.length;\n      this.dependents.forEach(({ _id }) => this.cacheDependentId(_id));\n    } else {\n      this.setForm(this.patient);\n    }\n\n    if (this.hasAccount) {\n      this.disableForm();\n    }\n    this.formChange.emit(this._form);\n    this.loading = false;\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  get form() {\n    return <FormGroup>this._form.get('responsible');\n  }\n\n  private initForm() {\n    this.form.get('fullname').valueChanges.subscribe(fullname => {\n      if (this.repeatNameCheckbox && this.repeatNameCheckbox.nzChecked) {\n        if (!fullname) {\n          this.repeatNameCheckbox.nzChecked = false;\n          this.form.get('name').enable();\n        }\n        this.form.get('name').setValue(fullname);\n      }\n    });\n  }\n\n  private patchForm(patient: Patient) {\n    this.form.patchValue(patient);\n    if (patient.user) {\n      this.form.get('email').setValue(patient.user.email);\n    }\n    const date = new Date(patient.dateOfBirth);\n    this.form.get('dateOfBirth').setValue(date.toISOString().substring(0, 10));\n    if (!patient.fullname) {\n      this.form.get('fullname').setValue(patient.name);\n    }\n  }\n\n  private setForm(consult: DataBigboostConsult) {\n    if (consult.status === 1) {\n      this.form.get('cpf').setValue(consult.cpf);\n      this.form.get('fullname').setValue(consult.nome);\n      this.form.get('sex').setValue(consult.genero);\n      this.form.get('membership.mothersName').setValue(consult.mae);\n      const date = consult.nascimento.split('/');\n      const dateOfBirth = new Date(`${date[1]}/${date[0]}/${date[2]}`);\n      this.form.get('dateOfBirth').setValue(dateOfBirth.toISOString().substring(0, 10));\n\n      this.form.get('cpf').disable();\n      this.form.get('fullname').disable();\n      this.form.get('dateOfBirth').disable();\n      this.form.get('sex').disable();\n    } else {\n      this.form.get('pendency').setValue(consult);\n    }\n  }\n\n  private disableForm() {\n    this.form.get('name').disable();\n    this.form.get('fullname').disable();\n    this.form.get('cpf').disable();\n    this.form.get('dateOfBirth').disable();\n    this.form.get('sex').disable();\n\n    // remove required\n    this.form.setValidators(null);\n    this.form.get('email').setValidators([Validators.email]);\n    this.form.get('emailConfirmation').setValidators([Validators.email]);\n    this.form.get('name').clearValidators();\n    this.form.get('fullname').clearValidators();\n    this.form.get('cpf').clearValidators();\n    this.form.get('dateOfBirth').clearValidators();\n    this.form.get('sex').clearValidators();\n  }\n\n  @nativeAsync\n  private async getPatientByCpf() {\n    try {\n      return await this.patientsService.getPatientByCpf(this.patient.cpf).toPromise();\n    } catch (_) {\n      return null;\n    }\n  }\n\n  get hasAccount() {\n    return !!this.form.get('_id').value;\n  }\n\n  get currentDate() {\n    const now = new Date();\n    const dd = String(now.getDate()).padStart(2, '0');\n    const mm = String(now.getMonth() + 1).padStart(2, '0');\n    const yyyy = now.getFullYear();\n    return `${yyyy}-${mm}-${dd}`;\n  }\n\n  checkRepeatName(value: boolean) {\n    if (value) {\n      this.form.get('name').setValue(this.form.get('fullname').value);\n      this.form.get('name').disable();\n    } else {\n      this.form.get('name').enable();\n    }\n  }\n\n  checkEmail(disable: boolean) {\n    if (disable) {\n      this.form.get('email').reset();\n      this.form.get('email').disable();\n    } else {\n      this.form.get('email').enable();\n    }\n  }\n\n  @nativeAsync\n  async onKey(event: any) {\n    if (event.target.value.length === 10) {\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\n      const data = await this.cepService.consult(cep);\n      if (!data.erro) {\n        this.form.controls['address'].patchValue({\n          uf: data.uf,\n          street: data.logradouro,\n          neighborhood: data.bairro,\n          city: data.localidade,\n          number: null,\n          cep: data.cep\n        });\n      }\n    }\n  }\n\n  addUnderageForm(form: FormGroup) {\n    Object.keys(form.controls).forEach(key => {\n      const control = form.controls[key];\n      this._form.addControl(key, control);\n    });\n  }\n\n  addPatient(patient: Patient) {\n    this.healthProfessionalService.addPatient(this.prescriber._id, patient._id).subscribe(_ => {\n      this.cacheDependentId(patient._id);\n      this.updateList.emit();\n    });\n  }\n\n  removePatient(patient: Patient) {\n    this.healthProfessionalService.removePatient(this.prescriber._id, patient._id).subscribe(_ => {\n      this.cacheDependentId(patient._id);\n      this.updateList.emit();\n    });\n  }\n\n  hasDependent(patient: Patient) {\n    return this.patientsCache.get(patient._id);\n  }\n\n  private cacheDependentId(id: string) {\n    this.healthProfessionalService.getPatientsById(id, this.user._id).subscribe(\n      p => this.patientsCache.set(id, true),\n      err => {\n        if (err.status === 404) {\n          this.patientsCache.set(id, false);\n        } else {\n          console.error(err);\n        }\n      }\n    );\n  }\n}\n","export default \"<form nz-form [formGroup]=\\\"form\\\" theme>\\n  <div class=\\\"row justify-content-between\\\">\\n    <div class=\\\"col-md-6\\\">\\n      <div class=\\\"row\\\">\\n        <h2 class=\\\"col-md-12 bold\\\">DADOS DO RESPONSÁVEL</h2>\\n        <div class=\\\"col-md-12\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"fullname\\\"\\n              >Nome completo <span class=\\\"mandatory\\\">*</span></nz-form-label\\n            >\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"fullname\\\"\\n                id=\\\"fullname\\\"\\n                nz-input\\n                placeholder=\\\"ex: João Gilberto\\\"\\n                maxlength=\\\"128\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"form.get('fullname').dirty && form.get('fullname').errors\\\">\\n                <ng-container *ngIf=\\\"form.get('fullname').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o seu nome e sobrenome.\\n                </ng-container>\\n                <ng-container\\n                  *ngIf=\\\"\\n                    !form.get('fullname').hasError('required') &&\\n                    form.get('fullname').hasError('fullname')\\n                  \\\"\\n                >\\n                  Por favor digite o seu nome e sobrenome.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item *ngIf=\\\"form.get('cpf') as cpfCtrl\\\">\\n            <nz-form-label nzFor=\\\"cpf\\\">CPF <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                id=\\\"cpf\\\"\\n                formControlName=\\\"cpf\\\"\\n                placeholder=\\\"000.000.000-00\\\"\\n                mask=\\\"000.000.000-00\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"cpfCtrl.dirty && cpfCtrl.errors\\\">\\n                <ng-container *ngIf=\\\"cpfCtrl.hasError('required')\\\">\\n                  Campo obrigatório, por favor digite seu CPF.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"!cpfCtrl.hasError('required') && cpfCtrl.hasError('cpf')\\\">\\n                  CPF inválido, por favor digite um CPF válido.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item *ngIf=\\\"form.get('dateOfBirth') as dateCtrl\\\">\\n            <nz-form-label nzFor=\\\"dateOfBirth\\\"\\n              >Data de nascimento<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n            >\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                id=\\\"dateOfBirth\\\"\\n                type=\\\"date\\\"\\n                formControlName=\\\"dateOfBirth\\\"\\n                placeholder=\\\"DD/MM/AAAA\\\"\\n                [max]=\\\"currentDate\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n\\n              <nz-form-explain *ngIf=\\\"dateCtrl.dirty && dateCtrl.errors\\\">\\n                <ng-container *ngIf=\\\"dateCtrl.hasError('required')\\\">\\n                  Campo obrigatório, por favor digite sua data de nascimento.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"!dateCtrl.hasError('required') && dateCtrl.hasError('dateOfBirth')\\\">\\n                  Nome inválido.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <nz-form-item class=\\\"col-6\\\" *ngIf=\\\"!hasAccount\\\">\\n          <nz-form-label nzFor=\\\"sex\\\">Sexo <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n              <option value=\\\"M\\\">Masculino</option>\\n              <option value=\\\"F\\\">Feminino</option>\\n            </select>\\n            <nz-form-explain *ngIf=\\\"form.get('sex').dirty && form.get('sex').errors\\\">\\n              <ng-container *ngIf=\\\"form.get('sex').hasError('required')\\\">\\n                Campo obrigatório, por favor selecione o sexo.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <div class=\\\"col-12\\\" [formGroup]=\\\"form.get('membership')\\\" *ngIf=\\\"!hasAccount\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"mothersName\\\"\\n              >Nome da mãe<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n            >\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                placeholder=\\\"Digite o nome da mãe\\\"\\n                formControlName=\\\"mothersName\\\"\\n                id=\\\"mothersName\\\"\\n                maxlength=\\\"128\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"\\n                  form.get('membership.mothersName').dirty && form.get('membership.mothersName').errors\\n                \\\"\\n              >\\n                <ng-container *ngIf=\\\"form.get('membership.mothersName').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o nome da mãe.\\n                </ng-container>\\n                <ng-container\\n                  *ngIf=\\\"\\n                    !form.get('membership.mothersName').hasError('required') &&\\n                    form.get('membership.mothersName').hasError('membership.mothersName')\\n                  \\\"\\n                >\\n                  Nome inválido.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"col-md-6\\\">\\n      <nz-form-item class=\\\"display-name\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-md-6\\\">\\n            <nz-form-label nzFor=\\\"name\\\" style=\\\"margin-left: 0px;\\\"\\n              >Nome de exibição/social<span class=\\\"mandatory\\\">*</span></nz-form-label\\n            >\\n          </div>\\n\\n          <div class=\\\"col-md-6\\\" *ngIf=\\\"!hasAccount\\\">\\n            <label\\n              #repeatName\\n              nz-checkbox\\n              (nzCheckedChange)=\\\"checkRepeatName($event)\\\"\\n              style=\\\"font-size: 13px; margin-right: -11px;\\\"\\n              >Repetir nome completo</label\\n            >\\n          </div>\\n        </div>\\n\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            formControlName=\\\"name\\\"\\n            id=\\\"name\\\"\\n            nz-input\\n            placeholder=\\\"ex: João Gilberto\\\"\\n            maxlength=\\\"128\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n          <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\n              Campo obrigatório, por favor digite um nome de exibição.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"!form.get('name').hasError('required') && form.get('name').hasError('name')\\\"\\n            >\\n              Por favor digite um nome de exibição.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <div class=\\\"row\\\">\\n        <nz-form-item class=\\\"col-6\\\" *ngIf=\\\"hasAccount\\\">\\n          <nz-form-label nzFor=\\\"sex\\\">Sexo <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n              <option value=\\\"M\\\">Masculino</option>\\n              <option value=\\\"F\\\">Feminino</option>\\n            </select>\\n            <nz-form-explain *ngIf=\\\"form.get('sex').dirty && form.get('sex').errors\\\">\\n              <ng-container *ngIf=\\\"form.get('sex').hasError('required')\\\">\\n                Campo obrigatório, por favor selecione o sexo.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n\\n      <ng-container *ngIf=\\\"!hasAccount\\\">\\n        <nz-form-item *ngIf=\\\"form.get('cellphone') as cellphone\\\">\\n          <nz-form-label nzFor=\\\"cellphone\\\"\\n            >Telefone 1 <span class=\\\"mandatory\\\">*</span>\\n            <!-- <app-popover-button\\n              content=\\\"Será utilizado para receber receitas e demais documentos via WhatsApp e SMS\\\"\\n            ></app-popover-button> -->\\n          </nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              id=\\\"cellphone\\\"\\n              [mask]=\\\"cellphone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n              placeholder=\\\"(21) 92222-2222\\\"\\n              formControlName=\\\"cellphone\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n            <nz-form-explain *ngIf=\\\"cellphone.dirty && cellphone.errors\\\">\\n              <ng-container *ngIf=\\\"cellphone.hasError('required')\\\">\\n                Campo obrigatório, por favor digite seu telefone para contato.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item *ngIf=\\\"form.get('telephone') as telephone\\\">\\n          <nz-form-label nzFor=\\\"telephone\\\">Telefone 2</nz-form-label>\\n          <nz-form-control>\\n            <input\\n              nz-input\\n              id=\\\"telephone\\\"\\n              [mask]=\\\"telephone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n              formControlName=\\\"telephone\\\"\\n              placeholder=\\\"(21) 2222-2222\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n            <nz-form-explain *ngIf=\\\"telephone.dirty && telephone.errors\\\">\\n              <ng-container *ngIf=\\\"telephone.hasError('telephone')\\\">\\n                Telefone inválido, por favor digite um número válido.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"col-5\\\">\\n              <nz-form-label nzFor=\\\"email\\\">E-mail <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n            </div>\\n            <div class=\\\"col\\\" *ngIf=\\\"!registeredByResponsible\\\">\\n              <label nz-checkbox (nzCheckedChange)=\\\"checkEmail($event)\\\" style=\\\"font-size: 13px;\\\"\\n                >Não cadastrar e-mail</label\\n              >\\n            </div>\\n          </div>\\n          <nz-form-control nzHasFeedback *ngIf=\\\"form.get('email') as email\\\">\\n            <input\\n              nz-input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              formControlName=\\\"email\\\"\\n              placeholder=\\\"usuario@email.com\\\"\\n              style=\\\"text-transform: lowercase;\\\"\\n              (keydown.space)=\\\"$event.preventDefault()\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n            <nz-form-explain *ngIf=\\\"email.touched && email.errors\\\">\\n              <ng-container *ngIf=\\\"email.hasError('exists'); else required\\\">\\n                E-mail já existe, por favor escolha outro e-mail.\\n              </ng-container>\\n              <ng-template #required>\\n                <ng-container *ngIf=\\\"email.hasError('required') && email.dirty; else invalid\\\">\\n                  <span class=\\\"error\\\">Campo obrigatório, por favor digite seu e-mail.</span>\\n                </ng-container>\\n              </ng-template>\\n              <ng-template #invalid>\\n                <ng-container *ngIf=\\\"email.invalid && email.value.length > 0\\\">\\n                  <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span>\\n                </ng-container>\\n              </ng-template>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"emailConfirmation\\\"\\n            >Confirmação de e-mail<span class=\\\"mandatory\\\"> *</span>\\n          </nz-form-label>\\n          <nz-form-control nzHasFeedback *ngIf=\\\"form.get('emailConfirmation') as emailConfirmation\\\">\\n            <input\\n              nz-input\\n              id=\\\"emailConfirmation\\\"\\n              type=\\\"email\\\"\\n              formControlName=\\\"emailConfirmation\\\"\\n              placeholder=\\\"usuario@email.com\\\"\\n              style=\\\"text-transform: lowercase;\\\"\\n              (keydown.space)=\\\"$event.preventDefault()\\\"\\n              onpaste=\\\"false\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n            <nz-form-explain>\\n              <ng-container *ngIf=\\\"emailConfirmation.hasError('required') && emailConfirmation.dirty\\\">\\n                <span class=\\\"error\\\"> Campo obrigatório, por favor digite seu e-mail.</span><br />\\n              </ng-container>\\n\\n              <nz-form-explain>\\n                <ng-container *ngIf=\\\"emailConfirmation.hasError('required') && emailConfirmation.dirty\\\">\\n                  <span class=\\\"error\\\"> Campo obrigatório, por favor digite seu e-mail.</span><br />\\n                </ng-container>\\n\\n                <ng-container *ngIf=\\\"emailConfirmation.invalid && emailConfirmation.value.length > 0\\\">\\n                  <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span><br />\\n                </ng-container>\\n\\n                <ng-container\\n                  *ngIf=\\\"\\n                    form.hasError('emailMatch') &&\\n                    form.get('email').dirty &&\\n                    form.get('email').value.length > 0 &&\\n                    emailConfirmation.dirty &&\\n                    emailConfirmation.value.length > 0\\n                  \\\"\\n                >\\n                  <span class=\\\"error\\\">Os endereços de e-mail não correspondem</span><br />\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </ng-container>\\n    </div>\\n\\n    <!-- <nz-form-explain>\\n      <ng-container *ngIf=\\\"pharmacistForm.get('emailConfirmation').hasError('required')\\n                          && pharmacistForm.get('emailConfirmation').dirty\\\">\\n        <span class=\\\"error\\\">  Campo obrigatório, por favor digite seu e-mail.</span><br/>\\n      </ng-container>\\n\\n      <ng-container *ngIf=\\\"pharmacistForm.get('emailConfirmation').invalid\\n                          && pharmacistForm.get('emailConfirmation').value.length > 0\\\">\\n        <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span><br/>\\n      </ng-container>\\n\\n      <ng-container *ngIf=\\\"pharmacistForm.hasError('emailMatch')\\n                          && pharmacistForm.get('email').dirty\\n                          && pharmacistForm.get('email').value.length > 0\\n                          && pharmacistForm.get('emailConfirmation').dirty\\n                          && pharmacistForm.get('emailConfirmation').value.length > 0\\n                          \\\">\\n        <span class=\\\"error\\\">Os endereços de e-mail não correspondem</span><br/>\\n      </ng-container>\\n\\n    </nz-form-explain> -->\\n\\n    <nz-divider nzOrientation=\\\"left\\\" nzText=\\\"Endereço\\\" *ngIf=\\\"!hasAccount\\\"></nz-divider>\\n\\n    <div class=\\\"col-md-12\\\" *ngIf=\\\"!hasAccount\\\">\\n      <div class=\\\"row\\\" [formGroup]=\\\"form.get('address')\\\">\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"cep\\\">CEP<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                (keyup)=\\\"onKey($event)\\\"\\n                mask=\\\"00.000-000\\\"\\n                formControlName=\\\"cep\\\"\\n                id=\\\"cep\\\"\\n                nz-input\\n                placeholder=\\\"00.000-000\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"form.get('address.cep').dirty && form.get('address.cep').errors\\\">\\n                <ng-container *ngIf=\\\"form.get('address.cep').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite seu CEP.\\n                </ng-container>\\n                <ng-container\\n                  *ngIf=\\\"\\n                    !form.get('address.cep').hasError('required') &&\\n                    form.get('address.cep').hasError('address.cep')\\n                  \\\"\\n                >\\n                  CEP inválido, por favor digite um CEP válido.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-md-6\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"logradouro\\\">Logradouro<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"street\\\"\\n                id=\\\"street\\\"\\n                nz-input\\n                placeholder=\\\"Digite o logradouro\\\"\\n                maxlength=\\\"128\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"form.get('address.street').dirty && form.get('address.street').errors\\\"\\n              >\\n                <ng-container *ngIf=\\\"form.get('address.street').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o logradouro.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-12 col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"number\\\">Número<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"number\\\"\\n                id=\\\"number\\\"\\n                nz-input\\n                placeholder=\\\"Digite o número\\\"\\n                maxlength=\\\"10\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"form.get('address.number').dirty && form.get('address.number').errors\\\"\\n              >\\n                <ng-container *ngIf=\\\"form.get('address.number').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o número.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-12 col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"complement\\\">Complemento</nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"complement\\\"\\n                id=\\\"complement\\\"\\n                nz-input\\n                placeholder=\\\"Digite o complemento\\\"\\n                maxlength=\\\"128\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-12 col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"neighborhood\\\">Bairro<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"neighborhood\\\"\\n                id=\\\"neighborhood\\\"\\n                nz-input\\n                placeholder=\\\"Digite o bairro\\\"\\n                maxlength=\\\"128\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"form.get('address.neighborhood').dirty && form.get('address.neighborhood').errors\\\"\\n              >\\n                <ng-container *ngIf=\\\"form.get('address.neighborhood').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o bairro.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-12 col-md-4\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"city\\\">Cidade<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"city\\\"\\n                id=\\\"city\\\"\\n                nz-input\\n                placeholder=\\\"Digite a cidade\\\"\\n                maxlength=\\\"64\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"form.get('address.city').dirty && form.get('address.city').errors\\\">\\n                <ng-container *ngIf=\\\"form.get('address.city').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite a cidade.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-12 col-md-2\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"uf\\\">UF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <select\\n                id=\\\"uf\\\"\\n                formControlName=\\\"uf\\\"\\n                nz-input\\n                nzAllowClear\\n                nzShowSearch\\n                nzPlaceHolder=\\\"Selecione\\\"\\n              >\\n                <option *ngFor=\\\"let state of states\\\" [value]=\\\"state?.sigla\\\">{{ state?.sigla }}</option>\\n              </select>\\n              <nz-form-explain *ngIf=\\\"form.get('address.uf').dirty && form.get('address.uf').errors\\\">\\n                <ng-container *ngIf=\\\"form.get('address.uf').hasError('required')\\\">\\n                  Campo obrigatório, por favor selecione o UF.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </div>\\n    </div>\\n\\n    <ng-container *ngIf=\\\"dependents?.length\\\">\\n      <nz-divider nzOrientation=\\\"left\\\"></nz-divider>\\n      <h2 class=\\\"col-md-12 bold\\\">DEPENDENTES</h2>\\n      <ul>\\n        <li *ngFor=\\\"let dependent of dependents\\\">\\n          {{ dependent.name }}\\n          <button\\n            *ngIf=\\\"!hasDependent(dependent)\\\"\\n            (click)=\\\"addPatient(dependent)\\\"\\n            title=\\\"Adicionar paciente\\\"\\n            class=\\\"btn-icon mr-0 p-0\\\"\\n          >\\n            <i class=\\\"fa fa-plus\\\"></i>\\n          </button>\\n          <button\\n            *ngIf=\\\"hasDependent(dependent)\\\"\\n            (click)=\\\"removePatient(dependent)\\\"\\n            title=\\\"Remover paciente\\\"\\n            class=\\\"btn-icon mr-0 p-0\\\"\\n          >\\n            <i class=\\\"fa fa-trash-solid\\\"></i>\\n          </button>\\n        </li>\\n      </ul>\\n    </ng-container>\\n\\n    <nz-divider nzOrientation=\\\"left\\\"></nz-divider>\\n\\n    <ng-container *ngIf=\\\"!loading\\\">\\n      <app-add-button\\n        *ngIf=\\\"hasAccount && !showDependentForm\\\"\\n        class=\\\"col\\\"\\n        label=\\\"Adicionar dependente\\\"\\n        (click)=\\\"showDependentForm = true\\\"\\n      ></app-add-button>\\n\\n      <app-underage-patient-form\\n        *ngIf=\\\"!hasAccount || showDependentForm\\\"\\n        class=\\\"col-md-12\\\"\\n        [hideCpf]=\\\"true\\\"\\n        [mothersName]=\\\"form.get('fullname').value\\\"\\n        (formChange)=\\\"addUnderageForm($event)\\\"\\n      ></app-underage-patient-form>\\n    </ng-container>\\n  </div>\\n</form>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \"input::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n\\n.mandatory {\\n  color: red;\\n}\\n\\n.error {\\n  color: red;\\n}\\n\\nh2 {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 18px;\\n  color: var(--color-label-input);\\n}\\n\\n.display-name {\\n  margin-top: 36px;\\n}\\n\\n.btn-icon {\\n  padding: 5px;\\n  margin: 0 0 5px 5px;\\n  border: 0;\\n  box-shadow: none;\\n  background-color: transparent;\\n}\";","import { NgModule } from '@angular/core';\n\nimport { EntryRoutingModule } from '@app/modules/entry/entry-routing.module';\nimport { LoginComponent } from '@app/modules/entry/pages/login/login.component';\nimport { RegisterComponent } from '@app/modules/entry/pages/register/register.component';\nimport { SharedModule } from '@app/shared';\nimport { AccountTypeComponent } from '@app/modules/entry/pages/register/account-type.component';\nimport { WelcomeComponent } from '@app/modules/entry/pages/welcome/welcome.component';\nimport { ResetPasswordComponent } from '@app/modules/entry/pages/reset-password/reset-password.component';\nimport { PatientFormComponent } from '@app/modules/entry/pages/register/patient-form/patient-form.component';\nimport { PharmacyFormComponent } from '@app/modules/entry/pages/register/pharmacy-form/pharmacy-form.component';\nimport { ChangePasswordComponent } from '@app/modules/entry/pages/change-password/change-password.component';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { NzDatePickerModule } from 'ng-zorro-antd/date-picker';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { TermsAndConditionsComponent } from './pages/register/terms-and-conditions/terms-and-conditions.component';\nimport { ActivateAccountComponent } from './pages/activate-account/activate-account.component';\nimport { NgxLoadingModule } from 'ngx-loading';\nimport { ModalTermsAndConditionsComponent } from './pages/register/modal-terms-and-conditions/modal-terms-and-conditions.component';\nimport { HealthProfessionalFormComponent } from './pages/register/health-professional-form/health-professional-form.component';\nimport { PasswordStrengthComponent } from './pages/password-strength/password-strength.component';\nimport { PharmacyOptionComponent } from './pages/pharmacy-option/pharmacy-option.component';\nimport { ResponsibleFormComponent } from './pages/register/underage-patient-form/responsible-form/responsible-form.component';\nimport { UnderagePatientFormComponent } from './pages/register/underage-patient-form/underage-patient-form.component';\nimport { ResponsiblePatientFormComponent } from './pages/register/responsible-patient-form/responsible-patient-form.component';\n\n@NgModule({\n  imports: [\n    SharedModule,\n    EntryRoutingModule,\n    NzDatePickerModule,\n    NzModalModule,\n    NgxLoadingModule,\n    NgxMaskModule.forRoot()\n  ],\n  declarations: [\n    LoginComponent,\n    RegisterComponent,\n    AccountTypeComponent,\n    WelcomeComponent,\n    ResetPasswordComponent,\n    PatientFormComponent,\n    PharmacyFormComponent,\n    ChangePasswordComponent,\n    TermsAndConditionsComponent,\n    ActivateAccountComponent,\n    ModalTermsAndConditionsComponent,\n    HealthProfessionalFormComponent,\n    PasswordStrengthComponent,\n    PharmacyOptionComponent,\n    ResponsibleFormComponent,\n    UnderagePatientFormComponent,\n    ResponsiblePatientFormComponent\n  ],\n  exports: [PatientFormComponent, UnderagePatientFormComponent, ResponsiblePatientFormComponent]\n})\nexport class EntryModule {}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { PrescriptionService } from '../../../modules/document/services/prescription.service';\nimport { User } from './../../models/decodedLoginToken';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-modal-search',\n  templateUrl: './modal-search.component.html',\n  styleUrls: ['./modal-search.component.scss']\n})\nexport class ModalSearchComponent {\n  constructor(\n    private router: Router,\n    public modalRef: BsModalRef,\n    private notification: AppToastService,\n    private prescriptionService: PrescriptionService,\n    private authService: AuthService\n  ) {}\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  get hasFarmaRennovaFeature(): boolean {\n    return this.user && this.user.features.some(f => f.name === 'Farma Rennova');\n  }\n\n  @nativeAsync\n  async search(param: string) {\n    param = param === undefined ? '' : param.replace(/[^a-z0-9]+/gi, '');\n    if (param === '') {\n      this.modalRef.hide();\n      this.notification.notify('warning', 'Atenção', 'CPF ou Código da Receita não informado');\n    } else if (param.length === 11 || param.length === 15) {\n      if (param.length === 15 && !this.hasFarmaRennovaFeature && param.substring(0, 3) === 'REN') {\n        this.notification.notify('warning', 'Atenção', 'Código informado inválido');\n      } else {\n        await this.requests(param);\n      }\n    } else {\n      this.modalRef.hide();\n      this.notification.notify('warning', 'Atenção', 'CPF ou código inválido');\n    }\n  }\n\n  @nativeAsync\n  private async requests(param: string) {\n    try {\n      const prescriptions = await this.prescriptionService.getPrescriptionsPatient(param).toPromise();\n\n      if (param.length === 11) {\n        if (prescriptions.length === 0) {\n          this.notification.notify(\n            'warning',\n            'Atenção',\n            'Não existe prescrições com medicamentos a serem dispensados para o CPF informado'\n          );\n          return;\n        }\n\n        this.router.navigate(['/document/listing-prescriptions/', param], {\n          state: { prescriptions: prescriptions }\n        });\n      } else {\n        this.router.navigate(['/document/confirmation', param], {\n          state: { prescription: prescriptions }\n        });\n      }\n      this.modalRef.hide();\n    } catch (error) {\n      this.modalRef.hide();\n      if (error.status === 404) {\n        this.notification.notify('warning', 'Atenção', error.error.message);\n      }\n    }\n  }\n}\n","export default \"<div class=\\\"modal-header\\\">\\n  <h4 class=\\\"modal-title pull-left text-white\\\">Buscar receita</h4>\\n  <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n    <span aria-hidden=\\\"true\\\">&times;</span>\\n  </button>\\n</div>\\n<form (submit)=\\\"search(param.value)\\\">\\n  <div class=\\\"modal-body\\\">\\n    <p>Digite abaixo o CPF (apenas números) do paciente ou o código da receita</p>\\n    <input nz-input #param theme />\\n    <label>\\n      <i class=\\\"fa fa-arrow-right\\\" (click)=\\\"search(param.value)\\\"></i>\\n    </label>\\n  </div>\\n</form>\\n\";","export default \".modal-header {\\n  background-color: #4cbca3;\\n  font-family: \\\"probold\\\";\\n}\\n\\n.modal-body {\\n  padding: 0px;\\n  height: 170px;\\n  display: flex;\\n  align-items: center;\\n  flex-direction: column;\\n  justify-content: center;\\n}\\n\\n.modal-body input {\\n  width: 265px;\\n  height: 35px;\\n}\\n\\n.modal-body label {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  position: relative;\\n  z-index: 1;\\n  right: -118px;\\n  top: -28px;\\n  font-size: 15px;\\n  margin: 0px;\\n  width: 30px;\\n}\\n\\n.modal-body label i {\\n  cursor: pointer;\\n}\\n\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n  text-align: center;\\n}\";","export function nativeAsync(target, method, descriptor) {\n  const originalMethod = target[method];\n  descriptor.value = function() {\n    return Promise.resolve(originalMethod.apply(this, arguments));\n  };\n}\n","import { Component, EventEmitter, HostListener, OnInit, Output } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { CoreService } from '@app/core/services/core.service';\nimport { PetPatientService } from '@app/modules/patients/services/pet-patient.service';\nimport { DateUtils } from '@app/shared/data/DateUtils';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { Race } from '@app/shared/models/races';\nimport { Species } from '@app/shared/models/species';\nimport { markFormGroup } from '@app/utils';\n\n@Component({\n  selector: 'app-modal-pet-form',\n  templateUrl: './modal-pet-form.component.html',\n  styleUrls: ['./modal-pet-form.component.scss']\n})\nexport class ModalPetFormComponent implements OnInit {\n  @Output() submit = new EventEmitter<any>();\n\n  constructor(\n    private fb: FormBuilder,\n    private petPatientService: PetPatientService,\n    private coreService: CoreService\n  ) {\n    this.onResize();\n  }\n\n  loading = false;\n  species: Species[];\n  races: Race[];\n\n  labelAge = 'Idade';\n\n  form = this.fb.group({\n    _id: [null],\n    name: ['', Validators.required],\n    species: ['', Validators.required],\n    sex: ['', Validators.required],\n    race: ['', Validators.required],\n    dateOfBirth: ['', Validators.required],\n    isApproximateAge: [],\n    approximateAgeLabel: [\n      {\n        value: '',\n        disabled: true\n      }\n    ]\n  });\n\n  isMobile = false;\n\n  @nativeAsync\n  async ngOnInit() {\n    this.species = await this.petPatientService.getSpecies().toPromise();\n    this.form.get('dateOfBirth').valueChanges.subscribe(dateOfBirth => {\n      if (dateOfBirth) {\n        const diffBetweenDate = DateUtils.diffBetweenDate(new Date(), dateOfBirth);\n\n        this.form.get('approximateAgeLabel').setValue(diffBetweenDate.result);\n      }\n    });\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    this.isMobile = this.coreService.isViewPortMobile();\n  }\n\n  @nativeAsync\n  async setSpecies(title: any) {\n    const species = this.species.find(s => s.title === title);\n    await this.getRaces(species._id);\n  }\n\n  @nativeAsync\n  async getRaces(speciesId: string) {\n    this.form.get('race').setValue('');\n    this.races = await this.petPatientService.getRaces(speciesId).toPromise();\n  }\n\n  submitForm() {\n    markFormGroup(this.form);\n\n    if (this.form.valid) {\n      this.submit.emit(this.form.value);\n    }\n  }\n\n  get currentDate() {\n    const now = new Date();\n    return this.formatDate(now);\n  }\n\n  private formatDate(now: Date) {\n    const dd = String(now.getDate()).padStart(2, '0');\n    const mm = String(now.getMonth() + 1).padStart(2, '0');\n    const yyyy = now.getFullYear();\n    return `${yyyy}-${mm}-${dd}`;\n  }\n\n  checkApproximateAge(value: boolean) {\n    if (value) {\n      this.labelAge = 'Idade Aproximada';\n    } else {\n      this.labelAge = 'Idade';\n    }\n  }\n}\n","export default \"<div theme class=\\\"d-flex flex-column\\\">\\n  <header>\\n    <span class=\\\"title\\\">\\n      ADICIONAR PET\\n    </span>\\n  </header>\\n\\n  <div class=\\\"modal-body\\\">\\n    <form nz-form [formGroup]=\\\"form\\\">\\n      <div class=\\\"row justify-content-between\\\">\\n        <div class=\\\"col-md-12\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"col-md\\\">\\n              <nz-form-item>\\n                <nz-form-label nzFor=\\\"species\\\">Espécie<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <select\\n                    id=\\\"species\\\"\\n                    nz-input\\n                    formControlName=\\\"species\\\"\\n                    class=\\\"capitalize\\\"\\n                    (change)=\\\"setSpecies($event.target.value)\\\"\\n                  >\\n                    <option value=\\\"\\\" selected>Selecionar</option>\\n                    <option *ngFor=\\\"let spec of species\\\" [value]=\\\"spec.title\\\">{{ spec.title }}</option>\\n                  </select>\\n                  <nz-form-explain *ngIf=\\\"form.get('species').dirty && form.get('species').errors\\\">\\n                    <ng-container *ngIf=\\\"form.get('species').hasError('required')\\\">\\n                      Campo obrigatório, por favor selecione a espécie.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md\\\">\\n              <nz-form-item>\\n                <nz-form-label nzFor=\\\"race\\\">Raça <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <select\\n                    nz-input\\n                    id=\\\"race\\\"\\n                    formControlName=\\\"race\\\"\\n                    class=\\\"capitalize\\\"\\n                    *ngIf=\\\"races?.length > 0; else raceInput\\\"\\n                  >\\n                    <option value=\\\"\\\" selected>Selecionar</option>\\n                    <option *ngFor=\\\"let race of races\\\" [value]=\\\"race.title\\\">{{ race.title }}</option>\\n                  </select>\\n                  <ng-template #raceInput>\\n                    <input nz-input id=\\\"race\\\" formControlName=\\\"race\\\" autocomplete=\\\"disabled\\\" />\\n                  </ng-template>\\n                  <nz-form-explain *ngIf=\\\"form.get('race').dirty && form.get('race').errors\\\">\\n                    <ng-container *ngIf=\\\"form.get('race').hasError('required')\\\">\\n                      Campo obrigatório, por favor selecione a raça.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"row justify-content-between\\\">\\n        <div class=\\\"col\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"nome\\\">Nome do Pet<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                placeholder=\\\"ex: Rex\\\"\\n                formControlName=\\\"name\\\"\\n                id=\\\"nome\\\"\\n                maxlength=\\\"128\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\n                <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o nome e sobrenome.\\n                </ng-container>\\n                <ng-container\\n                  *ngIf=\\\"!form.get('name').hasError('required') && form.get('name').hasError('nome')\\\"\\n                >\\n                  Por favor digite o nome e sobrenome.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md-4\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"sex\\\">Sexo <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n                <option value=\\\"M\\\">Macho</option>\\n                <option value=\\\"F\\\">Fêmea</option>\\n              </select>\\n              <nz-form-explain *ngIf=\\\"form.get('sex').dirty && form.get('sex').errors\\\">\\n                <ng-container *ngIf=\\\"form.get('sex').hasError('required')\\\">\\n                  Campo obrigatório, por favor selecione o sexo.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"row\\\">\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"dateOfBirth\\\"\\n              >Data de nascimento<span class=\\\"mandatory\\\">*</span></nz-form-label\\n            >\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"date\\\"\\n                formControlName=\\\"dateOfBirth\\\"\\n                placeholder=\\\"DD/MM/AAAA\\\"\\n                id=\\\"dateOfBirth\\\"\\n                [max]=\\\"currentDate\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"approximateAge\\\">{{ labelAge }}</nz-form-label>\\n            <nz-form-control>\\n              <input nz-input id=\\\"approximateAge\\\" formControlName=\\\"approximateAgeLabel\\\" />\\n            </nz-form-control>\\n          </nz-form-item>\\n          <label\\n            nz-checkbox\\n            formControlName=\\\"isApproximateAge\\\"\\n            style=\\\"font-size: 16px; margin-bottom: 8px;\\\"\\n            (nzCheckedChange)=\\\"checkApproximateAge($event)\\\"\\n            >Idade aproximada</label\\n          >\\n        </div>\\n      </div>\\n    </form>\\n  </div>\\n\\n  <div class=\\\"modal-footer\\\" theme>\\n    <button class=\\\"ok-btn\\\" nz-button class=\\\"btn-primary\\\" (click)=\\\"submitForm()\\\">\\n      Salvar <i class=\\\"fa\\\"></i>\\n    </button>\\n  </div>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \"header {\\n  width: 100%;\\n  padding: 16px 24px;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 4px 4px 0 0;\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  background-color: var(--bg-modal-header);\\n  color: var(--color-white);\\n}\\nheader .title {\\n  margin: 0;\\n  color: var(--color-white);\\n  font-weight: 500;\\n  font-size: 16px;\\n  line-height: 22px;\\n  word-wrap: break-word;\\n}\\n.modal-body {\\n  padding-bottom: 40px;\\n  margin-top: 37px;\\n  max-height: 60vh;\\n  overflow: hidden;\\n  overflow-y: auto;\\n}\\n.modal-body input {\\n  border-radius: 10px;\\n}\\n.modal-body input::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n@media (max-width: 978px) {\\n  .modal-body {\\n    padding: 0;\\n  }\\n}\";","import { Injectable } from '@angular/core';\nimport { Pharmacist, Pharmacy } from '@app/shared/models';\n\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { Retention } from '@app/shared/models/retention';\nimport { environment } from '@env/environment';\n\nexport const PHARMACY_URL = 'pharmacy';\nconst ADD_PHARMACIST_URL = 'add-pharmacist';\nconst REMOVE_PHARMACIST_URL = 'remove-pharmacist';\n\n@Injectable({ providedIn: 'root' })\nexport class PharmacyService {\n  constructor(private http: HttpClient) {}\n\n  save(pharmacy: Pharmacy): Observable<Pharmacy> {\n    return this.http.post<Pharmacy>(`${environment.apiRoot}${PHARMACY_URL}`, pharmacy);\n  }\n\n  update(id: string, data: Pharmacy) {\n    return this.http.put<Retention[]>(`${environment.apiRoot}${PHARMACY_URL}/${id}`, data);\n  }\n\n  getPharmacy(id: string): Observable<Pharmacy> {\n    return this.http.get<Pharmacy>(`${environment.apiRoot}${PHARMACY_URL}/find/${id}`);\n  }\n\n  getPharmacies(): Observable<Pharmacy[]> {\n    return this.http.get<Pharmacy[]>(`${environment.apiRoot}${PHARMACY_URL}`);\n  }\n\n  getPharmaciesByFilter(filter: any): Observable<any> {\n    return this.http.get<Pharmacy[]>(`${environment.apiRoot}${PHARMACY_URL}/filter`, { params: filter });\n  }\n\n  getPharmacyByUserId(userId: string): Observable<Pharmacy> {\n    return this.http.get<Pharmacy>(`${environment.apiRoot}${PHARMACY_URL}/user/${userId}`);\n  }\n\n  getRetentionHistory(userId: string) {\n    return this.http.get<Retention[]>(`${environment.apiRoot}${PHARMACY_URL}/retentions/${userId}`);\n  }\n\n  getRetentionHistoryByFilter(userId: string, filter: any) {\n    return this.http.get<any>(`${environment.apiRoot}${PHARMACY_URL}/retentions/filter/${userId}`, {\n      params: filter\n    });\n  }\n\n  resolvePending() {\n    return this.http.post(`${environment.apiRoot}${PHARMACY_URL}/pendency`, {});\n  }\n\n  addPharmacist(pharmacyId, pharmacistId) {\n    return this.http.post<Pharmacy>(\n      `${environment.apiRoot}${PHARMACY_URL}/${pharmacyId}/${ADD_PHARMACIST_URL}`,\n      { pharmacistId: pharmacistId }\n    );\n  }\n\n  removePharmacist(pharmaciId: string, pharmacistId: any): Observable<Pharmacist> {\n    return this.http.put<Pharmacist>(\n      `${environment.apiRoot}${PHARMACY_URL}/${pharmaciId}/${REMOVE_PHARMACIST_URL}`,\n      { pharmacistId: pharmacistId }\n    );\n  }\n\n  importPharmacies(file: File, isPublic: boolean) {\n    const formData = new FormData();\n    formData.append('file', file);\n    return this.http.post(`${environment.apiRoot}${PHARMACY_URL}/import?isPublic=${isPublic}`, formData);\n  }\n\n  checkUiDoNotShowAgainModalNewPortalDigitalSignatures(value: boolean): Observable<any> {\n    return this.http.patch<any>(`${environment.apiRoot}${PHARMACY_URL}/ui`, {\n      doNotShowAgainModalNewPortalDigitalSignatures: value\n    });\n  }\n}\n","import { Component, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\n\n@Component({\n  selector: 'app-modal-activate-account',\n  templateUrl: './modal-activate-account.component.html',\n  styleUrls: ['./modal-activate-account.component.scss']\n})\nexport class ModalActivateAccountComponent implements OnInit {\n  tplModal: NzModalRef;\n\n  @Input() title?: string;\n  @Input() subtitle?: string;\n  @Input() content?: string;\n\n  @ViewChild('tplContent', { static: true })\n  tplContent: TemplateRef<{}>;\n\n  @ViewChild('tplFooter', { static: true })\n  tplFooter: TemplateRef<{}>;\n\n  constructor(private modalService: NzModalService, private router: Router) {}\n\n  ngOnInit() {}\n\n  createTplModal(title, subtitle, content?): void {\n    this.title = title;\n    this.subtitle = subtitle;\n    this.content = content;\n    this.tplModal = this.modalService.create({\n      nzContent: this.tplContent,\n      nzFooter: this.tplFooter,\n      nzClosable: true,\n      nzWidth: 650,\n      nzMaskClosable: true,\n      nzOnCancel: () => {},\n      nzOnOk: () => console.log('Click ok')\n    });\n  }\n\n  destroyTplModal(): void {\n    this.tplModal.destroy();\n  }\n\n  public redirect() {\n    window.open('https://receitadigital.safeweb.com.br/#/');\n    this.router.navigate([`/entry`]);\n    this.modalService.closeAll();\n  }\n}\n","export default \"<ng-template #tplContent let-params let-ref=\\\"tplModal\\\">\\n  <div class=\\\"container row\\\">\\n    <div class=\\\"col-8 description-area\\\">\\n      <h4 class=\\\"title text-primary\\\">\\n        {{ title }}\\n      </h4>\\n      <h4 class=\\\"subtitle text-primary\\\">{{ subtitle }}</h4>\\n      <br />\\n      <h4 class=\\\"certificate-info text-primary\\\">{{ content }}</h4>\\n    </div>\\n    <div class=\\\"col-4 logos-area\\\">\\n      <div>\\n        <img class=\\\"logo\\\" src=\\\"assets/img/logo-01.png\\\" alt=\\\"\\\" />\\n        <img class=\\\"plus\\\" src=\\\"assets/img/mais.png\\\" alt=\\\"\\\" />\\n        <img class=\\\"logo\\\" src=\\\"assets/img/safe-web.png\\\" alt=\\\"\\\" />\\n      </div>\\n      <a (click)=\\\"redirect()\\\">Clique aqui e faça o seu</a>\\n    </div>\\n  </div>\\n</ng-template>\\n<ng-template #tplFooter>\\n  <div>\\n    <span\\n      >*O desconto apresentado é exclusivo para parceiros Receita Digital no primeiro ano de utilização.\\n      Este certificado não possui limitação no número de assinaturas.</span\\n    >\\n  </div>\\n</ng-template>\\n\";","export default \".title {\\n  text-transform: none;\\n  font-size: 50px;\\n  line-height: normal;\\n}\\n\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n}\\n\\n::ng-deep .ant-modal {\\n  margin-top: auto;\\n  margin-bottom: auto;\\n  height: 100vh;\\n  width: 93vw !important;\\n}\\n\\n::ng-deep .ant-modal .logos-area {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  justify-content: space-around;\\n}\\n\\n::ng-deep .ant-modal .logos-area a {\\n  font-size: 1.8rem;\\n  height: 52px;\\n  width: 323px;\\n  border-radius: 50px;\\n  font-weight: bold;\\n  color: white;\\n  background-color: #ef8233;\\n}\\n\\n::ng-deep .ant-modal-body {\\n  display: flex;\\n  text-align: center;\\n  justify-content: space-evenly;\\n}\\n\\n::ng-deep .ant-modal-body .logo {\\n  width: 260px;\\n}\\n\\n::ng-deep .ant-modal-body .plus {\\n  width: 55px;\\n}\\n\\n::ng-deep .ant-modal-content {\\n  border-radius: 50px;\\n  box-shadow: 0 3px 6px rgba(185, 154, 154, 0.16);\\n  width: 93vw;\\n}\\n\\n::ng-deep .ant-modal-content .ant-modal-close:focus {\\n  outline: none;\\n}\\n\\n::ng-deep .ant-modal-footer {\\n  text-align: center;\\n  font-size: 1rem;\\n  color: white;\\n  background-color: #2a5f54;\\n  border-bottom-right-radius: 50px;\\n  border-bottom-left-radius: 50px;\\n}\\n\\n.text-primary {\\n  color: #1b403a !important;\\n}\\n\\n.description-area {\\n  text-align: initial;\\n}\\n\\n.description-area .subtitle {\\n  font-size: 2.3rem;\\n}\\n\\n.description-area .certificate-info {\\n  font-weight: bolder;\\n}\";","import moment from 'moment';\n\nconst AGE_TEENAGER = 13;\nconst AGE_ADULT = 18;\n\nexport class DateUtils {\n  static isUnderAge(dateOfBirth: Date | string, format = null) {\n    const date = dateOfBirth instanceof Date ? dateOfBirth : moment(dateOfBirth, format);\n    const age = moment().diff(date, 'years', false);\n    return age < AGE_ADULT;\n  }\n  static isUnderThirteenTearsOfAge(dateOfBirth: Date | string, format = null) {\n    const date = dateOfBirth instanceof Date ? dateOfBirth : moment(dateOfBirth, format);\n    const age = moment().diff(date, 'years', false);\n    return age < AGE_TEENAGER;\n  }\n\n  static diffBetweenDate(date1: Date | string, date2: Date | string) {\n    // new date instance\n    const newDate1 = new Date(date1);\n    const newDate2 = new Date(date2);\n\n    // Get the Timestamp\n    const date1TimeStamp = newDate1.getTime();\n    const date2TimeStamp = newDate2.getTime();\n\n    let calc;\n\n    // Check which timestamp is greater\n    if (date1TimeStamp > date2TimeStamp) {\n      calc = new Date(date1TimeStamp - date2TimeStamp);\n    } else {\n      calc = new Date(date2TimeStamp - date1TimeStamp);\n    }\n    // Retrieve the date, month and year\n    const calcFormatTmp = calc.getDate() + '-' + (calc.getMonth() + 1) + '-' + calc.getFullYear();\n    // Convert to an array and store\n    const calcFormat = calcFormatTmp.split('-');\n    // Subtract each member of our array from the default date\n    const daysPassed = Number(Math.abs(Number(calcFormat[0])) - 1);\n    const monthsPassed = Number(Math.abs(Number(calcFormat[1])) - 1);\n    const yearsPassed = Number(Math.abs(Number(calcFormat[2])) - 1970);\n\n    // Set up custom text\n    const yrsTxt = ['ano', 'anos'];\n    const mnthsTxt = ['mês', 'meses'];\n    const daysTxt = ['dia', 'dias'];\n\n    // Convert to days and sum together\n    const totalDays = yearsPassed * 365 + monthsPassed * 30.417 + daysPassed;\n    const totalSecs = totalDays * 24 * 60 * 60;\n    const totalMins = totalDays * 24 * 60;\n    const totalHours = totalDays * 24;\n    const totalWeeks = totalDays >= 7 ? totalDays / 7 : 0;\n\n    // display result with custom text\n    const result =\n      (yearsPassed == 1\n        ? yearsPassed + ' ' + yrsTxt[0] + ' '\n        : yearsPassed > 1\n        ? yearsPassed + ' ' + yrsTxt[1] + ' '\n        : '') +\n      (monthsPassed == 1\n        ? monthsPassed + ' ' + mnthsTxt[0]\n        : monthsPassed > 1\n        ? monthsPassed + ' ' + mnthsTxt[1] + ' '\n        : '') +\n      (daysPassed == 1\n        ? daysPassed + ' ' + daysTxt[0]\n        : daysPassed > 1\n        ? daysPassed + ' ' + daysTxt[1]\n        : '');\n\n    // return the result\n    return {\n      totalDays: Math.round(totalDays),\n      totalWeeks: Math.round(totalWeeks),\n      totalHours: Math.round(totalHours),\n      totalMinutes: Math.round(totalMins),\n      totalSeconds: Math.round(totalSecs),\n      result: result.trim()\n    };\n  }\n}\n","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn-bd\": \"loYQ\",\n\t\"./bn-bd.js\": \"loYQ\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-mx\": \"tbfe\",\n\t\"./es-mx.js\": \"tbfe\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { HealthProfessional } from './../../../../shared/models/health-professional';\n\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { AttestationModelService } from '../../services/attestation-model.service';\nimport { ExamModelService } from '../../services/exam-model.service';\nimport { OrientationModelService } from '../../services/orientation-model.service';\nimport { PrescriptionModelService } from '../../services/prescription-model.service';\n\n@Component({\n  selector: 'app-model-add-favorite-prescription',\n  templateUrl: './model-add-favorite-document.component.html',\n  styleUrls: ['./model-add-favorite-document.component.scss']\n})\nexport class ModelAddFavoriteDocumentComponent implements OnInit {\n  readonly HTTP_STATUS_CONFLICT = 409;\n\n  @Input() prescriber: HealthProfessional;\n  @Input() documentType = '';\n  @Input() documentModel: any;\n  @Input() colorSetting: ColorSetting;\n  typesOfDocuments = ['Prescrição', 'Exame', 'Atestado', 'Outros'];\n  loading: boolean;\n  message = '';\n\n  documentModelForm: FormGroup;\n  payload: any;\n  constructor(\n    public modalRef: BsModalRef,\n    private prescriptionModelService: PrescriptionModelService,\n    private orientationModelService: OrientationModelService,\n    private examModelService: ExamModelService,\n    private attestationModelService: AttestationModelService,\n    private notification: AppToastService\n  ) {}\n\n  ngOnInit() {\n    switch (this.documentType) {\n      case this.typesOfDocuments[0]:\n        this.buildPrescriptionForm();\n        break;\n      case this.typesOfDocuments[1]:\n        this.buildExamForm();\n        break;\n      case this.typesOfDocuments[2]:\n        this.buildAttestationForm();\n        break;\n\n      case this.typesOfDocuments[3]:\n        this.buildOrientationForm();\n        break;\n    }\n    this.setDocumentModel();\n  }\n\n  setDocumentModel() {\n    if (this.documentType === this.typesOfDocuments[0]) {\n      this.setPrescritpionModel();\n    } else if (this.documentType === this.typesOfDocuments[1]) {\n      this.setExamModel();\n    } else if (this.documentType === this.typesOfDocuments[2]) {\n      this.setAttestationModel();\n    } else if (this.documentType === this.typesOfDocuments[3]) {\n      this.setOrientationModel();\n    }\n  }\n\n  setPrescritpionModel() {\n    if (this.documentModel) {\n      this.documentModelForm.patchValue({ prescriber: this.prescriber, ...this.documentModel });\n      this.documentModel.medicaments.forEach(m => {\n        this.addPrescription({\n          ...m,\n          nome: m.name,\n          id: m.medicamentId,\n          principio: m.principle,\n          laboratorio: m.laboratory,\n          ean: m.ean,\n          apresentacaoCustomizada: m.description,\n          quantity: m.prescribedQuantity\n        });\n      });\n    }\n  }\n\n  setExamModel() {\n    if (this.documentModel) {\n      this.documentModelForm.patchValue({ prescriber: this.prescriber, ...this.documentModel });\n      const value = this.documentModel.justification.reduce(\n        (acc, val) => (acc ? `${acc}\\n${val}` : val),\n        ''\n      );\n      this.documentModelForm.get('text').setValue(value);\n    }\n  }\n\n  setOrientationModel() {\n    if (this.documentModel) {\n      this.documentModelForm.patchValue({\n        titleOrientation: this.documentModel.title,\n        prescriber: this.prescriber,\n        ...this.documentModel\n      });\n      const value = this.documentModel.orientations.reduce(\n        (accumulator, currentValue) => accumulator + '\\n' + currentValue\n      );\n      this.documentModelForm.get('text').setValue(value);\n    }\n  }\n\n  setAttestationModel() {\n    if (this.documentModel) {\n      this.documentModelForm.patchValue({ prescriber: this.prescriber, ...this.documentModel });\n      const value = this.documentModel.description.reduce(\n        (accumulator, currentValue) => accumulator + '\\n' + currentValue\n      );\n      this.documentModelForm.get('text').setValue(value);\n    }\n  }\n\n  private buildPrescriptionForm() {\n    this.documentModelForm = new FormGroup({\n      title: new FormControl('', Validators.required),\n      prescriber: new FormControl(''),\n      medication: new FormControl(''),\n      medicaments: new FormArray([], Validators.required)\n    });\n  }\n\n  private buildOrientationForm() {\n    this.documentModelForm = new FormGroup({\n      title: new FormControl('', Validators.required),\n      titleOrientation: new FormControl('', Validators.required),\n      prescriber: new FormControl(''),\n      text: new FormControl(''),\n      orientations: new FormControl('', Validators.required)\n    });\n  }\n\n  private buildAttestationForm() {\n    this.documentModelForm = new FormGroup({\n      title: new FormControl('', Validators.required),\n      prescriber: new FormControl(''),\n      text: new FormControl(''),\n      description: new FormControl('', Validators.required)\n    });\n  }\n\n  private buildExamForm() {\n    this.documentModelForm = new FormGroup({\n      title: new FormControl('', Validators.required),\n      text: new FormControl('')\n    });\n  }\n\n  public addPrescription({\n    nome,\n    id,\n    principio,\n    laboratorio,\n    ean,\n    apresentacaoCustomizada,\n    dosage = '',\n    quantity = 1,\n    prescriptionTypeId,\n    typeCr\n  }): void {\n    this.medicamentosFormCtrl.push(\n      this.formMedicamentos({\n        name: nome,\n        medicamentId: id,\n        principle: principio,\n        laboratory: laboratorio,\n        ean: ean,\n        description: apresentacaoCustomizada,\n        dosage,\n        quantity,\n        prescriptionTypeId,\n        typeCr\n      })\n    );\n    this.documentModelForm.get('medication').setValue(null);\n  }\n\n  formMedicamentos({\n    name,\n    medicamentId,\n    principle,\n    laboratory,\n    ean,\n    quantity,\n    description,\n    dosage,\n    prescriptionTypeId,\n    typeCr\n  }): FormGroup {\n    return new FormGroup({\n      name: new FormControl(name),\n      medicamentId: new FormControl(medicamentId),\n      prescribedQuantity: new FormControl(quantity),\n      dosage: new FormControl(dosage),\n      description: new FormControl(description),\n      principle: new FormControl(principle),\n      laboratory: new FormControl(laboratory),\n      ean: new FormControl(ean),\n      prescriptionTypeId: new FormControl(prescriptionTypeId),\n      typeCr: new FormControl(typeCr)\n    });\n  }\n\n  getText(arrayText: any[]) {\n    return arrayText.reduce((acc, val) => (acc ? `${acc}\\n${val}` : val), '');\n  }\n\n  saveDocumentModel = () => {\n    try {\n      markFormGroup(this.documentModelForm);\n      this.loading = true;\n      if (this.documentModelForm.valid) {\n        switch (this.documentType) {\n          case this.typesOfDocuments[0]:\n            this.prescriptionModelService\n              .create(this.documentModelForm.value, this.prescriber && this.prescriber.userId)\n              .then(() => this.onSuccessCreateFavorite())\n              .catch(error => this.onFailureCreateFavorite(error));\n            break;\n\n          case this.typesOfDocuments[1]:\n            this.examModelService\n              .create({\n                ...this.documentModel,\n                ...this.documentModelForm.value\n              })\n              .then(() => this.onSuccessCreateFavorite())\n              .catch(error => this.onFailureCreateFavorite(error));\n            break;\n\n          case this.typesOfDocuments[2]:\n            this.attestationModelService\n              .create(this.documentModelForm.value)\n              .then(() => this.onSuccessCreateFavorite())\n              .catch(error => this.onFailureCreateFavorite(error));\n            break;\n\n          case this.typesOfDocuments[3]:\n            this.orientationModelService\n              .create(this.documentModelForm.value)\n              .then(() => this.onSuccessCreateFavorite())\n              .catch(error => this.onFailureCreateFavorite(error));\n            break;\n        }\n      }\n      this.loading = false;\n    } catch (err) {\n      this.loading = false;\n      this.message = err.error.message;\n      console.log(err);\n    }\n  };\n\n  onSuccessCreateFavorite() {\n    this.modalRef.hide();\n    this.notification.notify('success', 'Sucesso', `Modelo ${this.documentType} salvo com sucesso`);\n  }\n\n  onFailureCreateFavorite(error: HttpErrorResponse) {\n    if (error.status === this.HTTP_STATUS_CONFLICT) {\n      this.notification.notify(\n        'warning',\n        'Atenção',\n        'Já existe um modelo com este título. Digite outro título'\n      );\n    } else {\n      this.notification.notify('warning', 'Error', 'Ocorreu um error ao tentar cadastrado modelo.');\n    }\n  }\n\n  get medicamentosFormCtrl(): FormArray {\n    return <FormArray>this.documentModelForm.get('medicaments');\n  }\n}\n","export default \"<div\\n  theme\\n  class=\\\"modal-header\\\"\\n  [ngStyle]=\\\"\\n    colorSetting && {\\n      'background-color': colorSetting?.secondary,\\n      'border-color': colorSetting?.secondary\\n    }\\n  \\\"\\n>\\n  <h4 class=\\\"modal-title pull-left text-white\\\">Cadastrar novo modelo</h4>\\n  <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n    <span aria-hidden=\\\"true\\\">&times;</span>\\n  </button>\\n</div>\\n<div>\\n  <div class=\\\"modal-body\\\">\\n    <div *ngIf=\\\"message\\\">\\n      <nz-alert nzType=\\\"warning\\\" [nzMessage]=\\\"message\\\"></nz-alert>\\n      <br />\\n    </div>\\n\\n    <div class=\\\"prescription\\\" [formGroup]=\\\"documentModelForm\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"title\\\" theme [ngStyle]=\\\"colorSetting && { color: colorSetting?.primary }\\\"\\n          >Título<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            formControlName=\\\"title\\\"\\n            attr.id=\\\"title\\\"\\n            placeholder=\\\"Digite o título do modelo...\\\"\\n            [ngStyle]=\\\"\\n              colorSetting && {\\n                'background-color': colorSetting?.inputBackground,\\n                'border-color': colorSetting?.inputBorder\\n              }\\n            \\\"\\n            theme\\n          />\\n          <nz-form-explain\\n            *ngIf=\\\"documentModelForm.get('title').dirty && documentModelForm.get('title').errors\\\"\\n          >\\n            <ng-container *ngIf=\\\"documentModelForm.get('title').hasError('required')\\\">\\n              Campo obrigatório, por favor digite o título.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n      <ng-container formArrayName=\\\"medicaments\\\" *ngIf=\\\"documentType === typesOfDocuments[0]\\\">\\n        <ng-container\\n          *ngFor=\\\"let medicament of documentModelForm.get('medicaments')['controls']; let i = index\\\"\\n          [formGroup]=\\\"medicament\\\"\\n        >\\n          <div class=\\\"medication-container\\\">\\n            <div *ngIf=\\\"(documentModelForm.value?.medicaments)[i]?.medicamentId\\\">\\n              <h4 class=\\\"title\\\">\\n                {{ i + 1 }}. {{ (documentModelForm.value?.medicaments)[i]?.name }}\\n                <p class=\\\"mb-0 description\\\">\\n                  {{ (documentModelForm.value?.medicaments)[i]?.apresentacaoCustomizada }}\\n                </p>\\n              </h4>\\n              <h2 class=\\\"activePrinciples\\\">\\n                {{ (documentModelForm.value?.medicaments)[i]?.principle }} -\\n                {{ (documentModelForm.value?.medicaments)[i]?.description }}\\n              </h2>\\n            </div>\\n\\n            <div\\n              *ngIf=\\\"!(documentModelForm.value?.medicaments)[i]?.medicamentId\\\"\\n              class=\\\"free-prescription\\\"\\n            >\\n              <h4 class=\\\"title\\\">{{ i + 1 }}.</h4>\\n              <h4 class=\\\"title break-line\\\">{{ (documentModelForm.value?.medicaments)[i]?.name }}</h4>\\n            </div>\\n\\n            <nz-form-item>\\n              <nz-form-label [nzFor]=\\\"'dosage_' + i\\\" class=\\\"sr-only\\\">Posologia</nz-form-label>\\n              <nz-form-control>\\n                <textarea\\n                  [id]=\\\"'dosage_' + i\\\"\\n                  appAutoSize\\n                  appFocus\\n                  formControlName=\\\"dosage\\\"\\n                  nz-input\\n                  placeholder=\\\"Posologia\\\"\\n                  disabled=\\\"true\\\"\\n                ></textarea>\\n              </nz-form-control>\\n            </nz-form-item>\\n            <app-auto-width-input-number\\n              [id]=\\\"'quantidade' + i\\\"\\n              formControlName=\\\"prescribedQuantity\\\"\\n              disabled=\\\"true\\\"\\n              [colorSetting]=\\\"colorSetting\\\"\\n            >\\n            </app-auto-width-input-number>\\n            <!-- <button *ngIf=\\\"!signed\\\" (click)=\\\"deletePrescription(i)\\\" class=\\\"btn btn-icon btn-simple delete-medication-btn\\\"\\n              type=\\\"button\\\">\\n              <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-trash-solid\\\"></i></span>\\n            </button> -->\\n          </div>\\n        </ng-container>\\n      </ng-container>\\n      <ng-container *ngIf=\\\"documentType === typesOfDocuments[1]\\\">\\n        <div class=\\\"medication-container\\\">\\n          <div *ngFor=\\\"let item of documentModel.examList\\\">\\n            Material: {{ item.material }}\\n            <div>\\n              Exames:\\n              <div *ngFor=\\\"let exam of item.exams\\\" style=\\\"padding-left: 20px;\\\">\\n                {{ exam.name }}\\n              </div>\\n            </div>\\n          </div>\\n          <div *ngIf=\\\"getText(documentModel.justification)\\\">\\n            <p class=\\\"mt-4 mb-0\\\">Justificativa:</p>\\n            <nz-form-item>\\n              <nz-form-control>\\n                <textarea rows=\\\"4\\\" attr.id=\\\"text\\\" nz-input formControlName=\\\"text\\\" disabled></textarea>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n        </div>\\n      </ng-container>\\n      <ng-container *ngIf=\\\"documentType === typesOfDocuments[2]\\\">\\n        <div class=\\\"medication-container\\\">\\n          <nz-form-item>\\n            <nz-form-control>\\n              <textarea rows=\\\"4\\\" [attr.id]=\\\"'text'\\\" nz-input formControlName=\\\"text\\\" disabled></textarea>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </ng-container>\\n      <ng-container *ngIf=\\\"documentType === typesOfDocuments[3]\\\">\\n        <div class=\\\"medication-container\\\">\\n          <nz-form-item>\\n            <nz-form-control>\\n              <textarea rows=\\\"4\\\" [attr.id]=\\\"'text'\\\" nz-input formControlName=\\\"text\\\" disabled></textarea>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </ng-container>\\n    </div>\\n  </div>\\n  <div class=\\\"modal-footer\\\">\\n    <button\\n      class=\\\"ok-btn btn-cancel\\\"\\n      nz-button\\n      (click)=\\\"modalRef.hide()\\\"\\n      theme\\n      [ngStyle]=\\\"colorSetting && { color: colorSetting.primary }\\\"\\n    >\\n      Cancelar\\n    </button>\\n    <button\\n      theme\\n      class=\\\"ok-btn btn-salvar\\\"\\n      nz-button\\n      (click)=\\\"saveDocumentModel()\\\"\\n      [disabled]=\\\"!documentModelForm.valid\\\"\\n      [ngStyle]=\\\"\\n        colorSetting && {\\n          'background-color': colorSetting.primary,\\n          'border-color': colorSetting.primary\\n        }\\n      \\\"\\n    >\\n      Salvar <i class=\\\"fa\\\"></i>\\n    </button>\\n  </div>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \".modal-body {\\n  padding: 40px;\\n}\\n.modal-body input {\\n  border-radius: 10px;\\n}\\n.modal-body .btn-save {\\n  float: right;\\n  padding-top: 7px;\\n  padding-bottom: 7px;\\n  margin-top: 13px;\\n  margin-bottom: 5px;\\n}\\n.modal-body i {\\n  font-size: 24px;\\n}\\n.modal-body .mandatory {\\n  color: red;\\n}\\n.modal-body input::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n::ng-deep .ant-select-selection {\\n  height: 100%;\\n}\\n.modal-header {\\n  margin: 0;\\n  font-family: \\\"probold\\\";\\n  width: 950px !important;\\n}\\n.modal-footer {\\n  margin: 0;\\n}\\n.prescription ::ng-deep .ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {\\n  box-shadow: 0 9px 18px rgba(0, 0, 0, 0.18);\\n}\\n.prescription ::ng-deep .ant-drawer.ant-drawer-open .ant-drawer-mask {\\n  opacity: 0.11;\\n}\\n.prescription ::ng-deep .ant-drawer-body {\\n  padding-top: 0;\\n  height: 90vh;\\n  overflow: auto;\\n}\\n.prescription ::ng-deep .ant-drawer-open {\\n  top: 80px;\\n}\\n.prescription ::ng-deep .menu-drawer {\\n  top: 80px;\\n  background-color: #007260;\\n  border: 1px solid #007260;\\n}\\n.prescription ::ng-deep .menu-drawer .ant-drawer-content {\\n  background-color: transparent;\\n}\\n.prescription ::ng-deep .inner-menu {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.prescription ::ng-deep .inner-menu .menu-icon {\\n  align-self: flex-end;\\n  margin: 20px 0;\\n}\\n.prescription ::ng-deep .inner-menu .menu-icon .fa {\\n  font-size: 20px;\\n  color: white;\\n}\\n.prescription ::ng-deep .inner-menu .menu li {\\n  padding: 20px 0;\\n}\\n.prescription ::ng-deep .inner-menu .menu a {\\n  color: white;\\n  font-family: \\\"problack\\\";\\n  font-size: 18px;\\n  text-transform: uppercase;\\n}\\n.prescription ::ng-deep .inner-menu .menu a:focus {\\n  text-decoration: none;\\n}\\n.prescription ::ng-deep .inner-menu .menu a .fa {\\n  margin-right: 10px;\\n}\\n.prescription ::ng-deep .medicationAutoComplete {\\n  margin-top: 17px;\\n}\\n.prescription .toolbar {\\n  display: flex;\\n}\\n.prescription .toolbar .menu-toggler {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 0;\\n  border-radius: 0;\\n  width: 80px;\\n  filter: drop-shadow(0px 3px 6px rgba(0, 0, 0, 0.16));\\n  margin: 0;\\n}\\n.prescription .toolbar .menu-toggler .fa:before {\\n  font-size: 22px;\\n}\\n.prescription .toolbar .menu-toggler,\\n.prescription .toolbar .toolbar-options {\\n  height: 80px;\\n}\\n.prescription .toolbar .toolbar-menu {\\n  flex: 1;\\n}\\n.prescription .toolbar .toolbar-menu .toolbar-options {\\n  background-color: #f5f5f5;\\n  display: flex;\\n  align-items: center;\\n  justify-content: flex-end;\\n  padding-right: 40px;\\n  padding-left: 60px;\\n}\\n.prescription .toolbar .toolbar-menu .toolbar-options .btn {\\n  font-family: \\\"problack\\\", sans-serif;\\n}\\n.prescription .toolbar .toolbar-menu .toolbar-options .btn-green {\\n  background-color: #87ebe1;\\n  border-color: #87ebe1;\\n  color: #1b403a;\\n}\\n.prescription .toolbar .toolbar-menu .toolbar-options .btn-default {\\n  background-color: #afafaf;\\n  border-color: #afafaf;\\n  color: white;\\n}\\n.prescription .toolbar .toolbar-menu .toolbar-tags {\\n  background-color: #ebebeb;\\n  height: 40px;\\n  border-radius: 0 0 10px 10px;\\n}\\n.prescription .add-prescription {\\n  padding: 20px 0;\\n  border-top: 1px solid #f5f5f5;\\n  min-height: 81px;\\n  display: flex;\\n  justify-content: center;\\n}\\n.prescription .add-prescription.adding-bg {\\n  background-color: #f5f5f5;\\n  border-top: 1px solid transparent;\\n}\\n.prescription .add-prescription .btn-add-name {\\n  background-color: var(--bg-color-primary);\\n  border: 1px solid var(--bg-color-primary);\\n  color: var(--color-white);\\n  padding: 0px 10px;\\n  margin: 10px;\\n}\\n.prescription .add-prescription .btn-add {\\n  display: flex;\\n  padding: 0 0 0 1.25rem;\\n  height: 40px;\\n  align-items: center;\\n  border-radius: 10px;\\n  overflow: hidden;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n}\\n.prescription .add-prescription .btn-add .btn-inner--icon {\\n  background-color: #1b403a;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 40px;\\n  width: 50px;\\n}\\n.prescription .btn-add-name {\\n  padding: 0px 10px;\\n  margin: 10px;\\n}\\n.prescription .medicationNameInput {\\n  background-color: transparent;\\n  border-color: transparent;\\n  height: 100%;\\n  box-shadow: none;\\n}\\n.prescription .free-prescription {\\n  display: flex;\\n}\\n.prescription .free-prescription .break-line {\\n  margin-left: 7px;\\n  white-space: pre-wrap;\\n}\\n.prescription textarea {\\n  resize: none;\\n  background-color: transparent;\\n  border: 0;\\n  border-radius: 0;\\n  box-shadow: none;\\n  padding-left: 12px;\\n  color: #4d4d4d;\\n  font-size: 18px;\\n}\\n.prescription textarea:hover, .prescription textarea:focus {\\n  border-color: transparent;\\n  box-shadow: none;\\n}\\ntextarea {\\n  box-sizing: border-box;\\n  width: 100%;\\n}\\n.btn-salvar,\\n.btn-salvar:hover {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\";","import { Injectable } from '@angular/core';\nimport { Library } from '../models/library';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { environment } from '@env/environment';\n\nconst API_UL = ``;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LibraryService {\n  constructor(private http: HttpClient) {}\n\n  search(query = 'Serene'): Observable<Library[]> {\n    return this.http.get<Library[]>(`${environment.apiRoot}libraries?library=${query}`);\n  }\n\n  uploadProtocols(file: File) {\n    const formData = new FormData();\n    formData.append('file', file);\n    return this.http.post(`${environment.apiRoot}libraries/import-protocols`, formData);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ManipulatedProfile } from '@app/shared/models';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { environment } from '@env/environment';\n\nconst MANIPULATED_PROFILE_URL = 'manipulated-profile';\nconst MANIPULATION_URL = 'manipulation';\nconst MANIPULATED_PROFILE_PRESCRIBER_URL = `manipulated-profile/prescriber`;\nconst DRAFT_MANIPULATED_PROFILE_PATIENT_URL = `manipulated-profile/patient/draft`;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ManipulatedProfileService {\n  constructor(private http: HttpClient) {}\n\n  save(manipulatedProfile: ManipulatedProfile): Observable<ManipulatedProfile> {\n    return this.http.post<ManipulatedProfile>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}`,\n      manipulatedProfile\n    );\n  }\n\n  update(id, manipulatedProfile: any): Observable<ManipulatedProfile> {\n    return this.http.put<ManipulatedProfile>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}/${id}`,\n      manipulatedProfile\n    );\n  }\n\n  addPendency(manipulatedProfileId, pendency: any): Observable<ManipulatedProfile> {\n    return this.http.put<ManipulatedProfile>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}/${manipulatedProfileId}/add-pendency`,\n      pendency\n    );\n  }\n\n  resolvePending(manipulatedProfileId, pendency: any): Observable<ManipulatedProfile> {\n    return this.http.put<ManipulatedProfile>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}/${manipulatedProfileId}/resolve-pending`,\n      pendency\n    );\n  }\n\n  conclude(id, manipulatedProfile: any): Observable<ManipulatedProfile> {\n    return this.http.put<ManipulatedProfile>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}/${MANIPULATION_URL}/conclude/${id}`,\n      manipulatedProfile\n    );\n  }\n\n  updateEditingExpirationTime(id: any): Observable<ManipulatedProfile> {\n    return this.http.put<ManipulatedProfile>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}/${MANIPULATION_URL}/editing-expiration-time/${id}`,\n      {}\n    );\n  }\n\n  getManipulatedProfilesByPrescriberUserId(prescriber: string, filter: any): Observable<any> {\n    return this.http.get<any>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_PRESCRIBER_URL}/${prescriber}`,\n      {\n        params: filter\n      }\n    );\n  }\n\n  getManipulatedProfiles(filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${MANIPULATED_PROFILE_URL}`, {\n      params: filter\n    });\n  }\n\n  getPendencytHistory(manipulatedProfileId: any): Observable<any> {\n    return this.http.get<any>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}/pendency/${manipulatedProfileId}/history`\n    );\n  }\n\n  getManipulatedProfilesForPharmacist(pharmacyId, filter: any): Observable<any> {\n    return this.http.get<any>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}/pharmacist/${pharmacyId}`,\n      {\n        params: filter\n      }\n    );\n  }\n\n  getManipulatedProfilesByPharmacy(pharmacyId: string, filter: any): Observable<any> {\n    return this.http.get<any>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}/pharmacy/${pharmacyId}`,\n      {\n        params: filter\n      }\n    );\n  }\n\n  getManipulatedProfileById(profileId: string): Observable<ManipulatedProfile> {\n    return this.http.get<ManipulatedProfile>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}/${profileId}`\n    );\n  }\n\n  getManipulatedProfileByIdForManipulation(\n    profileId: string,\n    pharmacyId: string\n  ): Observable<ManipulatedProfile> {\n    return this.http.get<ManipulatedProfile>(\n      `${environment.apiRoot}${MANIPULATED_PROFILE_URL}/${MANIPULATION_URL}/${profileId}/${pharmacyId}`\n    );\n  }\n\n  getDraftManipulatedBrofileByPatient(patientId) {\n    return this.http.get<any>(\n      `${environment.apiRoot}${DRAFT_MANIPULATED_PROFILE_PATIENT_URL}/${patientId}`\n    );\n  }\n}\n","import { Md5 } from 'ts-md5/dist/md5';\r\nexport const md5 = (content: string) => Md5.hashStr(content);\r\n","export enum AdditionalFeatureAccept {\n  NONE = 'none',\n  YES = 'yes',\n  NO = 'no'\n}\n","import { Address } from './address';\r\nimport { Pendency } from './pendency';\r\n\r\nexport class Buyer {\r\n  _id: string;\r\n  name: string;\r\n  cpf: string;\r\n  telephone: string;\r\n  cellphone: string;\r\n  identity: string;\r\n  address: Address;\r\n  createdAt: Date;\r\n  pendency: Pendency;\r\n}\r\n","class Pendency {\n  question: string;\n  answer: string;\n}\n\nexport class ManipulatedProfile {\n  static get skinTypes() {\n    return [\n      { label: 'Fototipo I', value: 1 },\n      { label: 'Fototipo II', value: 2 },\n      { label: 'Fototipo III', value: 3 },\n      { label: 'Fototipo IV', value: 4 },\n      { label: 'Fototipo V', value: 5 }\n    ];\n  }\n\n  static get degreesOfOiliness() {\n    return [\n      { label: 'Normal', value: 1 },\n      { label: 'Oleosa', value: 2 },\n      { label: 'Seca', value: 3 },\n      { label: 'Mista', value: 4 }\n    ];\n  }\n\n  static get treatments() {\n    return [\n      { label: 'Oral', value: 1 },\n      { label: 'Topico', value: 2 },\n      { label: 'Ambos', value: 3 }\n    ];\n  }\n\n  static get proceduresOptions() {\n    return [\n      { label: 'Ultrassom Microfocada', value: 1 },\n      { label: 'Radiofrequencia', value: 2 },\n      { label: 'Microagulhamento', value: 3 },\n      { label: 'Luz pulsada', value: 4 },\n      { label: 'Peeling', value: 5 },\n      { label: 'Prenchimento', value: 6 },\n      { label: 'Toxina Butolinica', value: 7 },\n      { label: 'Bioestimulador', value: 8 }\n    ];\n  }\n  static get proceduresTime() {\n    return [\n      { label: 'Hoje', value: 1 },\n      { label: 'Ate uma semana', value: 2 },\n      { label: 'Ate quinze dias', value: 3 },\n      { label: 'Ate 30 dias', value: 4 },\n      { label: 'Mais de 30 dias', value: 5 }\n    ];\n  }\n\n  static get treatmentRoutinesOptions() {\n    return [\n      { label: 'Limpeza', value: 1 },\n      { label: 'Tonificação', value: 2 },\n      { label: 'Hidratação', value: 3 },\n      { label: 'Fotoproteção', value: 4 },\n      { label: 'Tratamento especifico', value: 5 }\n    ];\n  }\n\n  static get pathologiesOptions() {\n    return [\n      { label: 'Acene', value: 1 },\n      { label: 'Rosacea', value: 2 },\n      { label: 'Melanoses', value: 3 },\n      { label: 'Fotoenvelhecimento agudo', value: 4 },\n      { label: 'Dermatite atópica', value: 5 },\n      { label: 'Psioriase', value: 6 },\n      { label: 'Melasma', value: 7 },\n      { label: 'Outra(Será criado posteriormente uma fórrmula adicional se necessário)', value: 8 }\n    ];\n  }\n\n  static RASCUNHO = 'Rascunho';\n  static ENVIADO = 'Enviado';\n  _id: any;\n  patient: any;\n  prescriber: any;\n  weight: number;\n  height: number;\n  skinType: number;\n  oilinessDegree: number;\n  photoaging: number;\n  procedures: number[];\n  pigmentation: number;\n  skinflaccidity: number;\n  sensitivity: number;\n  wrinklesdepth: number;\n  hydrationlevel: number;\n  procedureTime: number;\n  requiredTreatment: number;\n  treatmentRoutines: number[];\n  pathologies: number[];\n  status: string;\n  dosage: string;\n  pendency: Pendency;\n  medicaments: any[];\n}\n","import { Address } from './address';\nimport { Membership } from './membership';\nimport { Crf } from './crf';\nimport { MedicalData } from './medical-data';\nimport { User } from './decodedLoginToken';\n\nexport class Pharmacist {\n  _id: string;\n  userId: string;\n  name: string;\n  cpf: string;\n  identity: string;\n  telephone: string;\n  cellphone: string;\n  sex: string;\n  dateOfBirth: Date;\n  membership: Membership;\n  maritalStatus: string;\n  color: string;\n  profession: string;\n  schooling: string;\n  address: Address;\n  medicalData: MedicalData;\n  user: User;\n  crf: Crf;\n}\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { DocumentService } from '@app/modules/document/services/document.service';\nimport { PrescriptionService } from '@app/modules/document/services/prescription.service';\nimport { RetentionService } from '@app/modules/document/services/retention.service';\nimport { ModalCancelRetentionComponent } from '@app/modules/historic/modal-cancel-retention/modal-cancel-retention.component';\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\nimport { ModalSendDocumentComponent } from '@app/shared/components/modal-send-document/modal-send-document.component';\nimport { HealthProfessional, Patient } from '@app/shared/models';\nimport { Attestation } from '@app/shared/models/attestation';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { Exam } from '@app/shared/models/exam';\nimport { Orientation } from '@app/shared/models/orientation';\nimport { Prescription } from '@app/shared/models/prescription';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { StateService } from '@app/shared/services/state.service';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { AttestationService } from '../document/pages/attestation/attestation.service';\nimport { OrientationService } from '../document/pages/orientation/orientation.service';\nimport { ExamService } from '../document/services/exam.service';\nimport { HealthProfessionalService } from '../health-professional/services/health-professional.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-historic',\n  templateUrl: './historic.component.html',\n  styleUrls: ['./historic.component.scss']\n})\nexport class HistoricComponent implements OnInit, OnDestroy {\n  navTitle: string;\n  retentions: any[] = [];\n  prescriptions: any[] = [];\n  attestations: Attestation[] = [];\n  exams: Exam[] = [];\n  orientations: Orientation[] = [];\n  retentionOfThirdParties: any[] = [];\n  pharmacyId: string;\n  loading: boolean;\n  loadingFilter: boolean;\n  patient: Patient;\n  userType = '';\n  patientId = '';\n  selectedTabIndex = 0;\n  filter: any = {};\n  pageSize = 7;\n  selectedTab = 'prescription';\n  tabs = [];\n  paginationData = [\n    { skip: 0, totalRecord: 0, orderBy: 'updatedAt', sortOrder: -1 },\n    { skip: 0, totalRecord: 0, orderBy: 'updatedAt', sortOrder: -1 },\n    { skip: 0, totalRecord: 0, orderBy: 'updatedAt', sortOrder: -1 },\n    { skip: 0, totalRecord: 0, orderBy: 'updatedAt', sortOrder: -1 }\n  ];\n  healthProfessional: HealthProfessional;\n  scrollConfig = { x: '1010px' };\n  isVisibleModalCancelRetention = false;\n\n  @ViewChild(ModalSendDocumentComponent, { static: true })\n  modalSendDocumentComponent: ModalSendDocumentComponent;\n\n  constructor(\n    private authService: AuthService,\n    private patientService: PatientsService,\n    private pharmacyService: PharmacyService,\n    private documentService: DocumentService,\n    private prescriptionService: PrescriptionService,\n    private attestationService: AttestationService,\n    private examsService: ExamService,\n    private orientationService: OrientationService,\n    private retentionService: RetentionService,\n    private healthProfessionalService: HealthProfessionalService,\n    private modalService: NzModalService,\n    private notification: AppToastService,\n    private router: Router,\n    private route: ActivatedRoute,\n    private stateService: StateService\n  ) {}\n\n  @nativeAsync\n  async ngOnInit() {\n    this.userType = this.user.userType;\n    this.navTitle = this.user.userType === 'pharmacy' ? 'Retenções' : 'Histórico de Documentos';\n    this.tabs =\n      this.user.userType === 'pharmacy'\n        ? ['prescription', 'retentionOfThirdParties']\n        : ['prescription', 'attestation', 'exam', 'orientation'];\n\n    if (this.user.userType === 'patient') {\n      this.loading = true;\n      this.patient = await this.patientService.getPatientByUserId(this.user._id).toPromise();\n    } else if (this.user.userType === 'healthProfessional') {\n      this.loading = true;\n      this.healthProfessional = await this.healthProfessionalService\n        .getHealthProfessional(this.user._id)\n        .toPromise();\n    }\n\n    const { patientId } = this.route.snapshot.queryParams;\n    if (patientId) {\n      this.patientId = patientId;\n    }\n\n    await this.initData();\n  }\n  @nativeAsync\n  async initData() {\n    try {\n      this.loading = true;\n      const filter = this.getBaseFilter();\n      await this.loadPrescriptions(filter);\n      this.loading = false;\n      await this.loadAttestations(filter);\n      await this.loadExams(filter);\n      await this.loadOrientations(filter);\n      await this.loadRetentionOfThirdParties(filter);\n    } catch (error) {\n      console.error(error);\n      this.loading = false;\n    }\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  get dependents() {\n    if (this.patient) {\n      const dependents: any = this.patient.dependents;\n      const pets: any = this.patient.pets;\n      return dependents.concat(pets);\n    }\n  }\n  @nativeAsync\n  async loadData() {\n    try {\n      this.loadingFilter = true;\n      const filter = this.getBaseFilter();\n      this.prescriptions = [];\n      this.retentionOfThirdParties = [];\n      this.attestations = [];\n      this.orientations = [];\n      this.exams = [];\n      switch (this.selectedTab) {\n        case 'prescription':\n          await this.loadPrescriptions(filter);\n          break;\n        case 'retentionOfThirdParties':\n          await this.loadRetentionOfThirdParties(filter);\n          break;\n        case 'attestation':\n          await this.loadAttestations(filter);\n          break;\n        case 'orientation':\n          await this.loadOrientations(filter);\n          break;\n        default:\n          await this.loadExams(filter);\n      }\n      this.loadingFilter = false;\n    } catch (error) {\n      this.loadingFilter = false;\n    }\n  }\n  @nativeAsync\n  async loadPrescriptions(filter) {\n    let result = null;\n    switch (this.user.userType) {\n      case 'healthProfessional':\n        result = await this.prescriptionService\n          .getPrescriptionsByPrescriberUserId(this.user._id, filter)\n          .toPromise();\n        break;\n\n      case 'pharmacy':\n        result = await this.pharmacyService\n          .getRetentionHistoryByFilter(this.user._id, filter)\n          .toPromise();\n        break;\n      default:\n        result = await this.prescriptionService\n          .getPrescriptionsByPatientId(filter.dependent || this.patient._id, filter)\n          .toPromise();\n    }\n    if (result) {\n      this.prescriptions = result.prescriptions;\n      this.paginationData[0].totalRecord = result.totalRecord;\n    }\n  }\n  @nativeAsync\n  async loadAttestations(filter) {\n    let result = null;\n    switch (this.user.userType) {\n      case 'healthProfessional':\n        result = await this.attestationService\n          .getAttestationsByPrescriberUserId(this.user._id, filter)\n          .toPromise();\n        break;\n      case 'patient':\n        result = await this.attestationService\n          .getAttestationsByPatientId(this.patient._id, filter)\n          .toPromise();\n        break;\n      default:\n        this.attestations = [];\n    }\n    if (result) {\n      this.attestations = result.attestations;\n      this.paginationData[1].totalRecord = result.totalRecord;\n    }\n  }\n  @nativeAsync\n  async loadExams(filter) {\n    let result = null;\n    switch (this.user.userType) {\n      case 'healthProfessional':\n        result = await this.examsService.getExamsByPrescriberUserId(this.user._id, filter).toPromise();\n        break;\n      case 'patient':\n        result = await this.examsService.getExamsByPatientId(this.patient._id, filter).toPromise();\n        break;\n      default:\n        this.exams = [];\n    }\n    if (result) {\n      this.exams = result.exams;\n      this.paginationData[2].totalRecord = result.totalRecord;\n    }\n  }\n  @nativeAsync\n  async loadOrientations(filter) {\n    let result = null;\n    switch (this.user.userType) {\n      case 'healthProfessional':\n        result = await this.orientationService\n          .getOrientationsByPrescriberUserId(this.user._id, filter)\n          .toPromise();\n        break;\n      case 'patient':\n        result = await this.orientationService\n          .getOrientationsByPatientId(this.patient._id, filter)\n          .toPromise();\n        break;\n      default:\n        this.orientations = [];\n    }\n    if (result) {\n      this.orientations = result.orientations;\n      this.paginationData[3].totalRecord = result.totalRecord;\n    }\n  }\n  @nativeAsync\n  async loadRetentionOfThirdParties(filter) {\n    if (this.user.userType === 'pharmacy') {\n      const result = await this.retentionService\n        .getRetentionOfThirdPartiesHistoryByFilter(this.user._id, filter)\n        .toPromise();\n      this.retentionOfThirdParties = result.retentionOfThirdParties;\n      this.paginationData[1].totalRecord = result.totalRecord;\n    }\n  }\n\n  ngOnDestroy(): void {\n    window.sessionStorage.clear();\n  }\n\n  getBaseFilter() {\n    return {\n      ...this.filter,\n      patientId: this.patientId,\n      limit: this.pageSize,\n      skip: this.paginationData[this.selectedTabIndex].skip,\n      orderBy: this.paginationData[this.selectedTabIndex].orderBy,\n      sortOrder: this.paginationData[this.selectedTabIndex].sortOrder,\n      professionalType: this.healthProfessional && this.healthProfessional.professionalType\n    };\n  }\n  @nativeAsync\n  async search(filter) {\n    delete this.patientId;\n    this.filter = filter;\n    this.paginationData[this.selectedTabIndex].skip = 0;\n    this.loadData();\n  }\n  @nativeAsync\n  async loadPrescriptionByPharmacy() {\n    this.prescriptions = await this.pharmacyService.getRetentionHistory(this.user._id).toPromise();\n  }\n  @nativeAsync\n  async pageIndexChanged(pageIndex: any) {\n    this.paginationData[this.selectedTabIndex].skip = this.pageSize * (pageIndex - 1);\n    await this.loadData();\n  }\n\n  tabChange(args: any): void {\n    this.selectedTabIndex = args.index;\n    this.selectedTab = this.tabs[this.selectedTabIndex];\n    this.loadData();\n  }\n\n  getPreWriterInfo(prescription) {\n    const prescriber = {\n      name: '',\n      label: '',\n      regionalCouncil: { label: '', number: 0, uf: '' },\n      specialties: ''\n    };\n\n    if (prescription && prescription.healthProfessional) {\n      const { professionalType, name, regionalCouncilNumber } = prescription.healthProfessional;\n\n      prescriber.label = HealthProfessional.getProfessionalTypeName(professionalType);\n      prescriber.name = name;\n      prescriber.regionalCouncil.label = HealthProfessional.getRegionalCouncilLabel(professionalType);\n      prescriber.regionalCouncil.number = regionalCouncilNumber.number;\n      prescriber.regionalCouncil.uf = regionalCouncilNumber.uf;\n    }\n    return prescriber;\n  }\n  @nativeAsync\n  async downloadPrescriptionPdf(prescription) {\n    try {\n      this.loading = true;\n      if (prescription.status === 'Não Assinada') {\n        await this.prescriptionService.generatePdf(prescription.code);\n      } else {\n        await this.prescriptionService.downloadOrGeneratePdf(prescription.code);\n      }\n      this.notification.notify('success', 'Sucesso', 'Download realizado com sucesso!');\n    } catch (err) {\n      console.error(err);\n    }\n    this.loading = false;\n  }\n  @nativeAsync\n  async downloadPrescriptionPdfOfThirdParties(retention) {\n    try {\n      this.loading = true;\n      await this.retentionService.downloadThirdPartyPdf(retention._id);\n    } catch (err) {\n      console.error(err);\n      if (err.status === 404) {\n        this.notification.notify('warning', 'Aviso', 'PDF não encontrado');\n      }\n    }\n    this.loading = false;\n  }\n  @nativeAsync\n  async showModalCancelPrescrition(prescription) {\n    const code = prescription.code;\n    const isCodeRennova = code.substring(0, 3) === 'REN';\n    let nzContent =\n      `Tem certeza que deseja excluir <b>permanentemente</b> o documento ${code}? ` +\n      'Esta ação impedirá que o paciente acesse o documento na plataforma e a farmácia ' +\n      'não poderá validá-lo no processo de venda do medicamento.';\n    if (isCodeRennova) {\n      nzContent =\n        `Tem certeza que deseja excluir <b>permanentemente</b> o documento ${code}? ` +\n        'Esta ação impedirá que Rennova visualize o documento e dê andamento ao processo de venda do medicamento.';\n    }\n    this.modalService.confirm({\n      nzTitle: 'Alerta',\n      nzContent,\n      nzOnOk: () => {\n        this.prescriptionService.delete(prescription._id).subscribe(\n          _ => {\n            this.notification.notify('success', 'Sucesso', 'Prescrição excluída com sucesso');\n            this.loadPrescriptions(this.getBaseFilter());\n          },\n          err => {\n            this.notification.notify('warning', 'Aviso', err.error.message);\n          }\n        );\n      }\n    });\n    return false;\n  }\n  @nativeAsync\n  async showModalCancelExam(exam) {\n    this.modalService.confirm({\n      nzTitle: 'Alerta',\n      nzContent:\n        `Tem certeza que deseja excluir <b>permanentemente</b> o documento ${exam.code}? ` +\n        'Esta ação impedirá que o paciente acesse o documento na plataforma e o ' +\n        '<b>Laboratório/Clínica</b> não poderá validá-lo na prestação do serviço.',\n      nzOnOk: () => {\n        this.examsService.delete(exam._id).subscribe(\n          _ => {\n            this.notification.notify('success', 'Sucesso', 'Exame excluído com sucesso');\n            this.loadExams(this.getBaseFilter());\n          },\n          err => {\n            this.notification.notify('warning', 'Aviso', err.error.message);\n          }\n        );\n      }\n    });\n    return false;\n  }\n  @nativeAsync\n  async showModalCancelAttestation(exam) {\n    this.modalService.confirm({\n      nzTitle: 'Alerta',\n      nzContent:\n        `Tem certeza que deseja excluir <b>permanentemente</b> o documento ${exam.code}? ` +\n        'Esta ação impedirá que o paciente acesse o documento na plataforma.',\n      nzOnOk: () => {\n        this.attestationService.delete(exam._id).subscribe(\n          _ => {\n            this.notification.notify('success', 'Sucesso', 'Exame excluído com sucesso');\n            this.loadAttestations(this.getBaseFilter());\n          },\n          err => {\n            this.notification.notify('warning', 'Aviso', err.error.message);\n          }\n        );\n      }\n    });\n    return false;\n  }\n  @nativeAsync\n  async showModalCancelOrientation(orientation) {\n    this.modalService.confirm({\n      nzTitle: 'Alerta',\n      nzContent:\n        `Tem certeza que deseja excluir <b>permanentemente</b> o documento ${orientation.code}? ` +\n        'Esta ação impedirá que o paciente acesse o documento na plataforma e a ' +\n        '<b>Instituição/Empresa</b> não poderá reconhecê-lo como válido.',\n      nzOnOk: () => {\n        this.orientationService.delete(orientation._id).subscribe(\n          _ => {\n            this.notification.notify('success', 'Sucesso', 'Documento excluído com sucesso');\n            this.loadOrientations(this.getBaseFilter());\n          },\n          err => {\n            this.notification.notify('warning', 'Aviso', err.error.message);\n          }\n        );\n      }\n    });\n    return false;\n  }\n\n  showModalCancelRetention(retention, isRetentionsThirdParties = false) {\n    const modal = this.modalService.create({\n      nzContent: ModalCancelRetentionComponent,\n      nzComponentParams: {\n        userId: this.user._id,\n        retentionId: retention._id,\n        isRetentionsThirdParties\n      },\n      nzFooter: null\n    });\n    modal.afterOpen.subscribe(() => {\n      modal\n        .getContentComponent()\n        .updateListPrescriptionEvent.subscribe(data => this.search(this.filter));\n    });\n  }\n\n  showModalSendDocument(item: Prescription) {\n    const title = 'Documento Assinado';\n    this.modalSendDocumentComponent.createTplModal(item.code, item.patient._id || item.pet._id, {\n      title,\n      resend: true,\n      isPet: !!item.pet\n    });\n  }\n\n  archiveItem(code: string) {\n    this.modalService.confirm({\n      nzTitle: 'Alerta',\n      nzContent: `Tem certeza que deseja arquivar o documento ${code}? Você poderá acessá-lo novamente através do filtro \"Arquivados\".`,\n      nzOnOk: () =>\n        this.documentService.archive(code).subscribe(\n          res => this.initData(),\n          err => this.notification.notify('error', 'Aviso', 'Erro ao arquivar documento')\n        )\n    });\n  }\n\n  unarchiveItem(code: string) {\n    this.modalService.confirm({\n      nzTitle: 'Alerta',\n      nzContent: `Tem certeza que deseja <b>desarquivar</b> o documento ${code}?`,\n      nzOnOk: () =>\n        this.documentService.unarchive(code).subscribe(\n          res => this.initData(),\n          err => this.notification.notify('error', 'Aviso', 'Erro ao desarquivar documento')\n        )\n    });\n  }\n\n  navigateToNew({ code, version }, document: string) {\n    const regex = /^[a-z]/i;\n    const queryParams = regex.test(code[0]) ? {} : { queryParams: { document } };\n    const path = version === 'BETA' ? '/document' : '/prescription';\n    this.router.navigate([path, code, 'new'], queryParams);\n  }\n\n  navigateToEdit({ code, version }, documentType: string) {\n    const regex = /^[a-z]/i;\n    const queryParams = regex.test(code[0]) ? {} : { queryParams: { documentType } };\n    const rennovaFeature = this.user.features && this.user.features.find(f => f.name === 'Rennova');\n    this.stateService.data = { isRennova: rennovaFeature && code.substring(0, 3) === 'REN' };\n    const path = version === 'BETA' ? '/document' : '/prescription';\n    this.router.navigate([path, code, 'edit'], queryParams);\n  }\n  @nativeAsync\n  async onSortChange(params) {\n    this.paginationData[this.selectedTabIndex].orderBy = params.key;\n    this.paginationData[this.selectedTabIndex].sortOrder = params.value === 'descend' ? -1 : 1;\n    await this.loadData();\n  }\n\n  hasSignedItem(items: any[]): boolean {\n    return items.some(i => i.status === 'Assinada');\n  }\n\n  getMaleStatus(status: string) {\n    switch (status) {\n      case 'Assinada':\n        return 'Assinado';\n      case 'Não Assinada':\n        return 'Não Assinado';\n      case 'Dispensada Parcial':\n        return 'Dispensado Parcial';\n      case 'Dispensada Total':\n        return 'Dispensado Total';\n      case 'Excluída':\n        return 'Excluído';\n    }\n  }\n}\n","export default \"<app-alternative-navbar [title]=\\\"navTitle\\\" titleIcon=\\\"fas fa-history\\\"></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n\\n<div class=\\\"container historic\\\">\\n  <app-form-filter\\n    [userType]=\\\"userType\\\"\\n    [tab]=\\\"selectedTab\\\"\\n    [dependents]=\\\"dependents\\\"\\n    (search)=\\\"search($event)\\\"\\n    [isVet]=\\\"healthProfessional?.professionalType === 'veterinarian'\\\"\\n  ></app-form-filter>\\n\\n  <div>\\n    <nz-tabset (nzSelectChange)=\\\"tabChange($event)\\\">\\n      <nz-tab nzTitle=\\\"Receitas locais\\\">\\n        <nz-table\\n          #nzTable\\n          [nzData]=\\\"prescriptions\\\"\\n          [nzLoading]=\\\"loading\\\"\\n          [nzTotal]=\\\"paginationData[0].totalRecord\\\"\\n          [nzPageSize]=\\\"pageSize\\\"\\n          nzFrontPagination=\\\"false\\\"\\n          (nzPageIndexChange)=\\\"pageIndexChanged($event)\\\"\\n          nzNoResult=\\\"Você não possui nenhuma prescrição\\\"\\n          [nzScroll]=\\\"scrollConfig\\\"\\n        >\\n          <thead nzAlign=\\\"center\\\" (nzSortChange)=\\\"onSortChange($event)\\\">\\n            <tr>\\n              <th nzShowExpand></th>\\n              <th *ngIf=\\\"userType === 'pharmacy'\\\" nzShowSort nzSortKey=\\\"updatedAt\\\">\\n                Data da Dispensação\\n              </th>\\n              <th\\n                *ngIf=\\\"userType === 'patient' || userType === 'healthProfessional'\\\"\\n                nzShowSort\\n                nzSortKey=\\\"updatedAt\\\"\\n              >\\n                Data de atualização\\n              </th>\\n              <th>Código da prescrição</th>\\n              <th *ngIf=\\\"userType === 'healthProfessional'\\\"></th>\\n              <th *ngIf=\\\"userType === 'pharmacy'\\\">CPF do comprador</th>\\n              <th *ngIf=\\\"userType === 'pharmacy'\\\">Código da dispensação</th>\\n              <th *ngIf=\\\"userType === 'pharmacy'\\\">Registro do Prescritor</th>\\n              <th *ngIf=\\\"userType === 'patient'\\\" nzShowSort nzSortKey=\\\"healthProfessional.name\\\">\\n                Médico(a)/Dentista Prescritor(a)\\n              </th>\\n              <th *ngIf=\\\"userType === 'healthProfessional'\\\" nzShowSort nzSortKey=\\\"patient.name\\\">\\n                Paciente\\n              </th>\\n              <th *ngIf=\\\"userType !== 'pharmacy'\\\">Status</th>\\n              <th>Ações</th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <ng-template ngFor let-item [ngForOf]=\\\"nzTable.data\\\" *ngIf=\\\"userType === 'pharmacy'\\\">\\n              <ng-container>\\n                <tr>\\n                  <td nzShowExpand [(nzExpand)]=\\\"item.expand\\\"></td>\\n                  <td>{{ item.updatedAt | date: 'dd/MM/yyyy, HH:mm' }}</td>\\n                  <td>{{ item.prescription?.code }}</td>\\n                  <td>{{ item.cpfBuyer | formattedCpf }}</td>\\n                  <td>{{ item.dispensationCode }}</td>\\n                  <td>\\n                    {{ item.healthProfessional?.regionalCouncilNumber.number }}\\n                  </td>\\n                  <td *ngIf=\\\"userType !== 'pharmacy'\\\">{{ item.prescription?.status }}</td>\\n                  <td>\\n                    <div class=\\\"row justify-content-start\\\">\\n                      <div [ngClass]=\\\"user.userType === 'pharmacy' ? 'col' : 'col-2'\\\">\\n                        <div\\n                          (click)=\\\"\\n                            downloadPrescriptionPdf({\\n                              code: item.prescription.code,\\n                              patient: item.patient\\n                            })\\n                          \\\"\\n                          title=\\\"Baixar prescrição\\\"\\n                        >\\n                          <i\\n                            nz-icon\\n                            nzType=\\\"file-pdf\\\"\\n                            nzTheme=\\\"twotone\\\"\\n                            nzTwotoneColor=\\\"#B22222\\\"\\n                            class=\\\"icon-pdf\\\"\\n                          ></i>\\n                        </div>\\n                      </div>\\n                      <div [ngClass]=\\\"user.userType === 'pharmacy' ? 'col' : 'col-2'\\\">\\n                        <a\\n                          title=\\\"Cancelar retenção\\\"\\n                          (click)=\\\"showModalCancelRetention(item)\\\"\\n                          *ngIf=\\\"\\n                            item.prescription.status === 'Dispensada' ||\\n                            item.prescription.status === 'Dispensada Parcial' ||\\n                            item.prescription.status === 'Dispensada Total'\\n                          \\\"\\n                        >\\n                          <i class=\\\"fa fa-trash-solid\\\"></i>\\n                        </a>\\n                      </div>\\n                    </div>\\n                  </td>\\n                </tr>\\n                <tr [(nzExpand)]=\\\"item.expand\\\" *ngFor=\\\"let medicament of item.medicaments\\\">\\n                  <td></td>\\n                  <td colspan=\\\"5\\\">\\n                    <span class=\\\"title\\\"> {{ getPreWriterInfo(item).label }}: </span>\\n                    <span>{{ getPreWriterInfo(item).name }}</span>\\n                    <br />\\n                    <div class=\\\"d-flex\\\">\\n                      <span class=\\\"title\\\"> Medicamento: </span>\\n                      <span class=\\\"break-line\\\"> {{ medicament.description }}</span>\\n                    </div>\\n                    <span class=\\\"title\\\"> Quantidade prescrita: </span\\n                    ><span> {{ medicament.prescribedQuantity }}</span>\\n                    <br />\\n                    <span class=\\\"title\\\"> Quantidade retida: </span\\n                    ><span> {{ medicament.quantityRetained }}</span>\\n                    <br />\\n                    <br />\\n                    <div *ngIf=\\\"item.buyer\\\">\\n                      <span class=\\\"title\\\"> Nome do comprador: </span><span> {{ item.buyer?.name }}</span>\\n                      <br />\\n                      <span class=\\\"title\\\"> RG do comprador: </span\\n                      ><span> {{ item.buyer?.identity }}</span>\\n                      <br />\\n                      <span class=\\\"title\\\"> Endereço do comprador: </span\\n                      ><span>\\n                        {{ item.buyer?.address.street }}, {{ item.buyer?.address.number }},\\n                        {{ item.buyer?.address.neighborhood }} - {{ item.buyer?.address.uf }}</span\\n                      >\\n                    </div>\\n                  </td>\\n                </tr>\\n              </ng-container>\\n            </ng-template>\\n\\n            <ng-template\\n              ngFor\\n              let-item\\n              [ngForOf]=\\\"nzTable.data\\\"\\n              *ngIf=\\\"userType === 'patient' || userType === 'healthProfessional'\\\"\\n            >\\n              <ng-container>\\n                <tr>\\n                  <td nzShowExpand [(nzExpand)]=\\\"item.expand\\\"></td>\\n                  <td>{{ item.updatedAt | date: 'dd/MM/yyyy, HH:mm' }}</td>\\n                  <td>{{ item.code }}</td>\\n                  <td *ngIf=\\\"userType === 'patient'\\\">\\n                    {{ item.healthProfessional?.name }}\\n                  </td>\\n                  <td *ngIf=\\\"userType === 'healthProfessional'\\\" class=\\\"p-0\\\">\\n                    <img\\n                      *ngIf=\\\"item.patient?.responsible\\\"\\n                      src=\\\"assets/icons/hand-holding-medical.svg\\\"\\n                      width=\\\"22px\\\"\\n                    />\\n                  </td>\\n                  <td *ngIf=\\\"userType === 'healthProfessional'\\\" class=\\\"pl-0\\\">\\n                    {{ item.patient?.name || item.pet?.name }}\\n                    <span\\n                      class=\\\"responsible-name\\\"\\n                      *ngIf=\\\"item.patient?.responsible || item.pet?.responsible\\\"\\n                      ><br />RESPONSÁVEL:\\n                      {{ item.patient.responsible?.name || item.pet.responsible?.name }}\\n                    </span>\\n                  </td>\\n                  <td *ngIf=\\\"userType !== 'pharmacy'\\\">{{ item.status }}</td>\\n                  <td>\\n                    <div class=\\\"row justify-content-start\\\">\\n                      <div\\n                        class=\\\"col-2\\\"\\n                        *ngIf=\\\"\\n                          item.status !== 'Não Assinada' ||\\n                          healthProfessional?.professionalType === 'veterinarian'\\n                        \\\"\\n                      >\\n                        <div (click)=\\\"downloadPrescriptionPdf(item)\\\" title=\\\"Baixar prescrição\\\">\\n                          <i\\n                            nz-icon\\n                            nzType=\\\"file-pdf\\\"\\n                            nzTheme=\\\"twotone\\\"\\n                            nzTwotoneColor=\\\"#B22222\\\"\\n                            class=\\\"icon-pdf\\\"\\n                          ></i>\\n                        </div>\\n                      </div>\\n\\n                      <div\\n                        *ngIf=\\\"userType === 'healthProfessional' && item.status !== 'Não Assinada'\\\"\\n                        class=\\\"col-2\\\"\\n                      >\\n                        <a title=\\\"Repetir prescrição\\\" (click)=\\\"navigateToNew(item, 'prescription')\\\">\\n                          <i class=\\\"fa fa-repeat\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div\\n                        *ngIf=\\\"userType === 'healthProfessional' && item.status === 'Não Assinada'\\\"\\n                        class=\\\"col-2\\\"\\n                      >\\n                        <a title=\\\"Editar prescrição\\\" (click)=\\\"navigateToEdit(item, 'prescription')\\\">\\n                          <i class=\\\"fa fa-pencil-solid\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div\\n                        class=\\\"col-2\\\"\\n                        *ngIf=\\\"userType === 'healthProfessional' && hasSignedItem(prescriptions)\\\"\\n                      >\\n                        <a\\n                          *ngIf=\\\"item.status === 'Assinada' || item.status === 'Dispensada Parcial'\\\"\\n                          title=\\\"Reenviar prescrição\\\"\\n                          (click)=\\\"showModalSendDocument(item)\\\"\\n                        >\\n                          <img src=\\\"assets/icons/reenvio.png\\\" width=\\\"22px\\\" />\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\" *ngIf=\\\"userType !== 'pharmacy' && !item.archived\\\">\\n                        <a title=\\\"Arquivar\\\" (click)=\\\"archiveItem(item.code)\\\">\\n                          <i class=\\\"fas fa-archive\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\" *ngIf=\\\"userType !== 'pharmacy' && item.archived\\\">\\n                        <a title=\\\"Desarquivar\\\" (click)=\\\"unarchiveItem(item.code)\\\">\\n                          <i class=\\\"fas fa-inbox\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\">\\n                        <a\\n                          title=\\\"Excluir prescrição\\\"\\n                          (click)=\\\"showModalCancelPrescrition(item)\\\"\\n                          *ngIf=\\\"\\n                            (item.status === 'Não Assinada' || item.status === 'Assinada') &&\\n                            userType === 'healthProfessional'\\n                          \\\"\\n                        >\\n                          <i class=\\\"fa fa-trash-solid\\\"></i>\\n                        </a>\\n                      </div>\\n                    </div>\\n                  </td>\\n                </tr>\\n                <tr [nzExpand]=\\\"item.expand\\\">\\n                  <td></td>\\n                  <td colspan=\\\"6\\\">\\n                    <ng-container *ngIf=\\\"item.code.substring(0, 3) === 'REN'; else templateMedicament\\\">\\n                      <div *ngFor=\\\"let productItem of item.productsRennova; let i = index\\\" class=\\\"row\\\">\\n                        <div class=\\\"col-sm-3\\\">\\n                          {{ i + 1 }})<span> {{ productItem.product.name }}</span>\\n                        </div>\\n                        <div class=\\\"col-sm\\\" *ngIf=\\\"productItem.product as product\\\">\\n                          <div *ngFor=\\\"let item of product.items\\\">\\n                            <span style=\\\"font-size: 14px; font-weight: bold;\\\">{{ item.name }}</span>\\n                            <ul *ngIf=\\\"item.descriptions.length > 0\\\">\\n                              <li *ngFor=\\\"let obj of item.descriptions\\\">\\n                                <div class=\\\"d-flex\\\">\\n                                  <span style=\\\"font-family: monospace; font-size: 12px;\\\">\\n                                    {{ obj?.fullDescription }}\\n                                  </span>\\n                                </div>\\n                              </li>\\n                            </ul>\\n                          </div>\\n                        </div>\\n                        <div class=\\\"col-sm-3\\\">\\n                          <span>[{{ productItem.prescribedQuantity }}] Embalagem</span>\\n                        </div>\\n                      </div>\\n                    </ng-container>\\n                    <ng-template #templateMedicament>\\n                      <div *ngFor=\\\"let medicament of item.medicaments; let i = index\\\" class=\\\"row\\\">\\n                        <div class=\\\"col-sm\\\">\\n                          {{ i + 1 }})<span> {{ medicament.name }}</span>\\n                        </div>\\n                        <div class=\\\"col-sm\\\">\\n                          <span>{{ medicament.dosage }}</span>\\n                        </div>\\n                        <div class=\\\"col-sm\\\">\\n                          <span>[{{ medicament.prescribedQuantity }}] Embalagem</span>\\n                        </div>\\n                      </div>\\n                    </ng-template>\\n                  </td>\\n                </tr>\\n              </ng-container>\\n            </ng-template>\\n          </tbody>\\n        </nz-table>\\n      </nz-tab>\\n\\n      <nz-tab nzTitle=\\\"Atestados\\\" *ngIf=\\\"userType === 'healthProfessional' || userType === 'patient'\\\">\\n        <nz-table\\n          #nzTable\\n          [nzData]=\\\"attestations\\\"\\n          [nzLoading]=\\\"loading\\\"\\n          [nzTotal]=\\\"paginationData[1].totalRecord\\\"\\n          [nzPageSize]=\\\"pageSize\\\"\\n          (nzPageIndexChange)=\\\"pageIndexChanged($event)\\\"\\n          nzFrontPagination=\\\"false\\\"\\n          nzNoResult=\\\"Você não possui nenhum atestado\\\"\\n          [nzScroll]=\\\"scrollConfig\\\"\\n        >\\n          <thead nzAlign=\\\"center\\\" (nzSortChange)=\\\"onSortChange($event)\\\">\\n            <tr>\\n              <th nzShowExpand></th>\\n              <th nzShowSort nzSortKey=\\\"updatedAt\\\">\\n                Data de atualização\\n              </th>\\n              <th>Código do atestado</th>\\n              <th *ngIf=\\\"userType === 'healthProfessional'\\\"></th>\\n              <th *ngIf=\\\"userType === 'patient'\\\">Médico(a)/Dentista Prescritor(a)</th>\\n              <th *ngIf=\\\"userType === 'healthProfessional'\\\" nzShowSort nzSortKey=\\\"patient.name\\\">\\n                Paciente\\n              </th>\\n              <th>Status</th>\\n              <th>Ações</th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <ng-template\\n              ngFor\\n              let-item\\n              [ngForOf]=\\\"nzTable.data\\\"\\n              *ngIf=\\\"userType === 'patient' || userType === 'healthProfessional'\\\"\\n            >\\n              <ng-container>\\n                <tr>\\n                  <td nzShowExpand [(nzExpand)]=\\\"item.expand\\\"></td>\\n                  <td>{{ item.updatedAt | date: 'dd/MM/yyyy, HH:mm' }}</td>\\n                  <td>{{ item.code }}</td>\\n                  <td *ngIf=\\\"userType === 'patient'\\\">\\n                    {{ item.healthProfessional?.name }}\\n                  </td>\\n                  <td *ngIf=\\\"userType === 'healthProfessional'\\\" class=\\\"p-0\\\">\\n                    <img\\n                      *ngIf=\\\"item.patient?.responsible\\\"\\n                      src=\\\"assets/icons/hand-holding-medical.svg\\\"\\n                      width=\\\"22px\\\"\\n                    />\\n                  </td>\\n                  <td *ngIf=\\\"userType === 'healthProfessional'\\\" class=\\\"pl-0\\\">\\n                    {{ item.patient?.name || item.pet?.name }}\\n                    <span\\n                      class=\\\"responsible-name\\\"\\n                      *ngIf=\\\"item.patient?.responsible || item.pet?.responsible\\\"\\n                      ><br />RESPONSÁVEL:\\n                      {{ item.patient.responsible?.name || item.pet.responsible?.name }}\\n                    </span>\\n                  </td>\\n                  <td>{{ getMaleStatus(item.status) }}</td>\\n                  <td>\\n                    <div class=\\\"row justify-content-start\\\">\\n                      <div class=\\\"col-2\\\">\\n                        <div\\n                          *ngIf=\\\"\\n                            item.status !== 'Não Assinada' ||\\n                            healthProfessional?.professionalType === 'veterinarian'\\n                          \\\"\\n                          (click)=\\\"downloadPrescriptionPdf(item)\\\"\\n                          title=\\\"Baixar atestado\\\"\\n                        >\\n                          <i\\n                            nz-icon\\n                            nzType=\\\"file-pdf\\\"\\n                            nzTheme=\\\"twotone\\\"\\n                            nzTwotoneColor=\\\"#B22222\\\"\\n                            class=\\\"icon-pdf\\\"\\n                          ></i>\\n                        </div>\\n                      </div>\\n                      <div\\n                        *ngIf=\\\"userType === 'healthProfessional' && item.status === 'Não Assinada'\\\"\\n                        class=\\\"col-2\\\"\\n                      >\\n                        <a title=\\\"Editar atestado\\\" (click)=\\\"navigateToEdit(item, 'attestation')\\\">\\n                          <i class=\\\"fa fa-pencil-solid\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div\\n                        *ngIf=\\\"userType === 'healthProfessional' && item.status !== 'Não Assinada'\\\"\\n                        class=\\\"col-2\\\"\\n                      >\\n                        <a title=\\\"Repetir atestado\\\" (click)=\\\"navigateToNew(item, 'attestation')\\\">\\n                          <i class=\\\"fa fa-repeat\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div\\n                        class=\\\"col-2\\\"\\n                        *ngIf=\\\"userType === 'healthProfessional' && hasSignedItem(attestations)\\\"\\n                      >\\n                        <a\\n                          *ngIf=\\\"item.status === 'Assinada'\\\"\\n                          title=\\\"Reenviar atestado\\\"\\n                          (click)=\\\"showModalSendDocument(item)\\\"\\n                        >\\n                          <img src=\\\"assets/icons/reenvio.png\\\" width=\\\"22px\\\" />\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\" *ngIf=\\\"userType !== 'pharmacy' && !item.archived\\\">\\n                        <a title=\\\"Arquivar\\\" (click)=\\\"archiveItem(item.code)\\\">\\n                          <i class=\\\"fas fa-archive\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\" *ngIf=\\\"userType !== 'pharmacy' && item.archived\\\">\\n                        <a title=\\\"Desarquivar\\\" (click)=\\\"unarchiveItem(item.code)\\\">\\n                          <i class=\\\"fas fa-inbox\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\">\\n                        <a\\n                          title=\\\"Excluir atestado\\\"\\n                          (click)=\\\"showModalCancelAttestation(item)\\\"\\n                          *ngIf=\\\"\\n                            (item.status === 'Não Assinada' || item.status === 'Assinada') &&\\n                            userType === 'healthProfessional'\\n                          \\\"\\n                        >\\n                          <i class=\\\"fa fa-trash-solid\\\"></i>\\n                        </a>\\n                      </div>\\n                    </div>\\n                  </td>\\n                </tr>\\n                <tr [nzExpand]=\\\"item.expand\\\">\\n                  <td></td>\\n                  <td colspan=\\\"6\\\">\\n                    <span *ngFor=\\\"let text of item.description; let i = index\\\">\\n                      <br *ngIf=\\\"i > 0\\\" />\\n                      {{ text }}\\n                      <br />\\n                    </span>\\n                  </td>\\n                </tr>\\n              </ng-container>\\n            </ng-template>\\n          </tbody>\\n        </nz-table>\\n      </nz-tab>\\n\\n      <nz-tab nzTitle=\\\"Exames\\\" *ngIf=\\\"userType === 'healthProfessional' || userType === 'patient'\\\">\\n        <nz-table\\n          #nzTable\\n          [nzData]=\\\"exams\\\"\\n          [nzLoading]=\\\"loading\\\"\\n          nzFrontPagination=\\\"false\\\"\\n          [nzPageSize]=\\\"pageSize\\\"\\n          [nzTotal]=\\\"paginationData[2].totalRecord\\\"\\n          (nzPageIndexChange)=\\\"pageIndexChanged($event)\\\"\\n          [nzNoResult]=\\\"'Você não possui nenhum exame.'\\\"\\n          [nzScroll]=\\\"scrollConfig\\\"\\n        >\\n          <thead nzAlign=\\\"center\\\" (nzSortChange)=\\\"onSortChange($event)\\\">\\n            <tr>\\n              <th nzShowExpand></th>\\n              <th nzShowSort nzSortKey=\\\"updatedAt\\\">\\n                Data de atualização\\n              </th>\\n              <th>Código do exame</th>\\n              <th *ngIf=\\\"userType === 'healthProfessional'\\\"></th>\\n              <th *ngIf=\\\"userType === 'pharmacy'\\\">Registro do Prescritor</th>\\n              <th *ngIf=\\\"userType === 'patient'\\\">Médico(a)/Dentista Prescritor(a)</th>\\n              <th *ngIf=\\\"userType === 'healthProfessional'\\\" nzShowSort nzSortKey=\\\"patient.name\\\">\\n                Paciente\\n              </th>\\n              <th *ngIf=\\\"userType !== 'pharmacy'\\\">Status</th>\\n              <th *ngIf=\\\"userType !== 'pharmacy'\\\">Ações</th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <ng-template\\n              ngFor\\n              let-item\\n              [ngForOf]=\\\"nzTable.data\\\"\\n              *ngIf=\\\"userType === 'patient' || userType === 'healthProfessional'\\\"\\n            >\\n              <ng-container>\\n                <tr>\\n                  <td nzShowExpand [(nzExpand)]=\\\"item.expand\\\"></td>\\n                  <td>{{ item.updatedAt | date: 'dd/MM/yyyy, HH:mm' }}</td>\\n                  <td>{{ item.code }}</td>\\n                  <td *ngIf=\\\"userType === 'patient'\\\">\\n                    {{ item.healthProfessional?.name }}\\n                  </td>\\n                  <td *ngIf=\\\"userType === 'healthProfessional'\\\" class=\\\"p-0\\\">\\n                    <img\\n                      *ngIf=\\\"item.patient?.responsible\\\"\\n                      src=\\\"assets/icons/hand-holding-medical.svg\\\"\\n                      width=\\\"22px\\\"\\n                    />\\n                  </td>\\n                  <td *ngIf=\\\"userType === 'healthProfessional'\\\" class=\\\"pl-0\\\">\\n                    {{ item.patient?.name || item.pet?.name }}\\n                    <span\\n                      class=\\\"responsible-name\\\"\\n                      *ngIf=\\\"item.patient?.responsible || item.pet?.responsible\\\"\\n                      ><br />RESPONSÁVEL:\\n                      {{ item.patient.responsible?.name || item.pet.responsible?.name }}\\n                    </span>\\n                  </td>\\n                  <td *ngIf=\\\"userType !== 'pharmacy'\\\">{{ getMaleStatus(item.status) }}</td>\\n                  <td>\\n                    <div class=\\\"row justify-content-start\\\">\\n                      <div class=\\\"col-2\\\">\\n                        <div\\n                          *ngIf=\\\"\\n                            item.status !== 'Não Assinada' ||\\n                            healthProfessional?.professionalType === 'veterinarian'\\n                          \\\"\\n                          (click)=\\\"downloadPrescriptionPdf(item)\\\"\\n                          title=\\\"Baixar exame\\\"\\n                        >\\n                          <i\\n                            nz-icon\\n                            nzType=\\\"file-pdf\\\"\\n                            nzTheme=\\\"twotone\\\"\\n                            nzTwotoneColor=\\\"#B22222\\\"\\n                            class=\\\"icon-pdf\\\"\\n                          ></i>\\n                        </div>\\n                      </div>\\n                      <div\\n                        *ngIf=\\\"userType === 'healthProfessional' && item.status === 'Não Assinada'\\\"\\n                        class=\\\"col-2\\\"\\n                      >\\n                        <a title=\\\"Editar exame\\\" (click)=\\\"navigateToEdit(item, 'exam')\\\">\\n                          <i class=\\\"fa fa-pencil-solid\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div\\n                        *ngIf=\\\"userType === 'healthProfessional' && item.status !== 'Não Assinada'\\\"\\n                        class=\\\"col-2\\\"\\n                      >\\n                        <a title=\\\"Repetir exame\\\" (click)=\\\"navigateToNew(item, 'exam')\\\">\\n                          <i class=\\\"fa fa-repeat\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div\\n                        class=\\\"col-2\\\"\\n                        *ngIf=\\\"userType === 'healthProfessional' && hasSignedItem(exams)\\\"\\n                      >\\n                        <a\\n                          *ngIf=\\\"item.status === 'Assinada'\\\"\\n                          title=\\\"Reenviar prescrição\\\"\\n                          (click)=\\\"showModalSendDocument(item)\\\"\\n                        >\\n                          <img src=\\\"assets/icons/reenvio.png\\\" width=\\\"22px\\\" />\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\" *ngIf=\\\"userType !== 'pharmacy' && !item.archived\\\">\\n                        <a title=\\\"Arquivar\\\" (click)=\\\"archiveItem(item.code)\\\">\\n                          <i class=\\\"fas fa-archive\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\" *ngIf=\\\"userType !== 'pharmacy' && item.archived\\\">\\n                        <a title=\\\"Desarquivar\\\" (click)=\\\"unarchiveItem(item.code)\\\">\\n                          <i class=\\\"fas fa-inbox\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\">\\n                        <a\\n                          title=\\\"Excluir exame\\\"\\n                          (click)=\\\"showModalCancelExam(item)\\\"\\n                          *ngIf=\\\"\\n                            (item.status === 'Não Assinada' || item.status === 'Assinada') &&\\n                            userType === 'healthProfessional'\\n                          \\\"\\n                        >\\n                          <i class=\\\"fa fa-trash-solid\\\"></i>\\n                        </a>\\n                      </div>\\n                    </div>\\n                  </td>\\n                </tr>\\n                <tr [nzExpand]=\\\"item.expand\\\">\\n                  <td></td>\\n                  <td colspan=\\\"6\\\">\\n                    <div class=\\\"col\\\" *ngFor=\\\"let examItem of item.examList\\\">\\n                      <div class=\\\"row\\\">\\n                        <span class=\\\"title\\\">Material:</span\\n                        ><span class=\\\"break-line\\\"> {{ examItem.material }}</span>\\n                      </div>\\n                      <div class=\\\"row\\\">\\n                        <span class=\\\"title\\\">Exame:</span>\\n                      </div>\\n                      <div class=\\\"row\\\">\\n                        <ol>\\n                          <li *ngFor=\\\"let exam of examItem.exams\\\">{{ exam.name }}</li>\\n                        </ol>\\n                      </div>\\n                    </div>\\n                    <div class=\\\"col\\\" *ngIf=\\\"item.justification\\\">\\n                      <div class=\\\"row\\\">\\n                        <span class=\\\"title\\\">Justificativa:</span>\\n                      </div>\\n                      <div class=\\\"row\\\">\\n                        <span *ngFor=\\\"let text of item.justification; let i = index\\\">\\n                          <br *ngIf=\\\"i > 0\\\" />\\n                          {{ text }}\\n                          <br />\\n                        </span>\\n                      </div>\\n                    </div>\\n                  </td>\\n                </tr>\\n              </ng-container>\\n            </ng-template>\\n          </tbody>\\n        </nz-table>\\n      </nz-tab>\\n\\n      <nz-tab\\n        nzTitle=\\\"Outros documentos\\\"\\n        *ngIf=\\\"userType === 'healthProfessional' || userType === 'patient'\\\"\\n      >\\n        <nz-table\\n          #nzTable\\n          [nzData]=\\\"orientations\\\"\\n          [nzLoading]=\\\"loading\\\"\\n          nzFrontPagination=\\\"false\\\"\\n          [nzPageSize]=\\\"pageSize\\\"\\n          [nzTotal]=\\\"paginationData[3].totalRecord\\\"\\n          (nzPageIndexChange)=\\\"pageIndexChanged($event)\\\"\\n          nzNoResult=\\\"Você não possui nenhum documento.\\\"\\n          [nzScroll]=\\\"scrollConfig\\\"\\n        >\\n          <thead nzAlign=\\\"center\\\" (nzSortChange)=\\\"onSortChange($event)\\\">\\n            <tr>\\n              <th nzShowExpand></th>\\n              <th nzShowSort nzSortKey=\\\"updatedAt\\\">\\n                Data de atualização\\n              </th>\\n              <th>Código do documento</th>\\n              <th *ngIf=\\\"userType === 'healthProfessional'\\\"></th>\\n              <th *ngIf=\\\"userType === 'pharmacy'\\\">Registro do Prescritor</th>\\n              <th *ngIf=\\\"userType === 'patient'\\\">Médico(a)/Dentista Prescritor(a)</th>\\n              <th *ngIf=\\\"userType === 'healthProfessional'\\\" nzShowSort nzSortKey=\\\"patient.name\\\">\\n                Paciente\\n              </th>\\n              <th *ngIf=\\\"userType !== 'pharmacy'\\\">Status</th>\\n              <th *ngIf=\\\"userType !== 'pharmacy'\\\">Ações</th>\\n            </tr>\\n          </thead>\\n          <tbody>\\n            <ng-template\\n              ngFor\\n              let-item\\n              [ngForOf]=\\\"nzTable.data\\\"\\n              *ngIf=\\\"userType === 'patient' || userType === 'healthProfessional'\\\"\\n            >\\n              <ng-container>\\n                <tr>\\n                  <td nzShowExpand [(nzExpand)]=\\\"item.expand\\\"></td>\\n                  <td>{{ item.updatedAt | date: 'dd/MM/yyyy, HH:mm' }}</td>\\n                  <td>{{ item.code }}</td>\\n                  <td *ngIf=\\\"userType === 'patient'\\\">\\n                    {{ item.healthProfessional?.name }}\\n                  </td>\\n                  <td *ngIf=\\\"userType === 'healthProfessional'\\\" class=\\\"p-0\\\">\\n                    <img\\n                      *ngIf=\\\"item.patient?.responsible\\\"\\n                      src=\\\"assets/icons/hand-holding-medical.svg\\\"\\n                      width=\\\"22px\\\"\\n                    />\\n                  </td>\\n                  <td *ngIf=\\\"userType === 'healthProfessional'\\\" class=\\\"pl-0\\\">\\n                    {{ item.patient?.name || item.pet?.name }}\\n                    <span\\n                      class=\\\"responsible-name\\\"\\n                      *ngIf=\\\"item.patient?.responsible || item.pet?.responsible\\\"\\n                      ><br />RESPONSÁVEL:\\n                      {{ item.patient.responsible?.name || item.pet.responsible?.name }}\\n                    </span>\\n                  </td>\\n                  <td *ngIf=\\\"userType !== 'pharmacy'\\\">{{ getMaleStatus(item.status) }}</td>\\n                  <td>\\n                    <div class=\\\"row justify-content-start\\\">\\n                      <div class=\\\"col-2\\\">\\n                        <div\\n                          *ngIf=\\\"\\n                            item.status !== 'Não Assinada' ||\\n                            healthProfessional?.professionalType === 'veterinarian'\\n                          \\\"\\n                          (click)=\\\"downloadPrescriptionPdf(item)\\\"\\n                          title=\\\"Baixar documento\\\"\\n                        >\\n                          <i\\n                            nz-icon\\n                            nzType=\\\"file-pdf\\\"\\n                            nzTheme=\\\"twotone\\\"\\n                            nzTwotoneColor=\\\"#B22222\\\"\\n                            class=\\\"icon-pdf\\\"\\n                          ></i>\\n                        </div>\\n                      </div>\\n                      <div\\n                        *ngIf=\\\"userType === 'healthProfessional' && item.status === 'Não Assinada'\\\"\\n                        class=\\\"col-2\\\"\\n                      >\\n                        <a title=\\\"Editar documento\\\" (click)=\\\"navigateToEdit(item, 'orientation')\\\">\\n                          <i class=\\\"fa fa-pencil-solid\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div\\n                        *ngIf=\\\"userType === 'healthProfessional' && item.status !== 'Não Assinada'\\\"\\n                        class=\\\"col-2\\\"\\n                      >\\n                        <a title=\\\"Repetir documento\\\" (click)=\\\"navigateToNew(item, 'orientation')\\\">\\n                          <i class=\\\"fa fa-repeat\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div\\n                        class=\\\"col-2\\\"\\n                        *ngIf=\\\"userType === 'healthProfessional' && hasSignedItem(orientations)\\\"\\n                      >\\n                        <a\\n                          *ngIf=\\\"item.status === 'Assinada'\\\"\\n                          title=\\\"Reenviar documento\\\"\\n                          (click)=\\\"showModalSendDocument(item)\\\"\\n                        >\\n                          <img src=\\\"assets/icons/reenvio.png\\\" width=\\\"22px\\\" />\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\" *ngIf=\\\"userType !== 'pharmacy' && !item.archived\\\">\\n                        <a title=\\\"Arquivar\\\" (click)=\\\"archiveItem(item.code)\\\">\\n                          <i class=\\\"fas fa-archive\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\" *ngIf=\\\"userType !== 'pharmacy' && item.archived\\\">\\n                        <a title=\\\"Desarquivar\\\" (click)=\\\"unarchiveItem(item.code)\\\">\\n                          <i class=\\\"fas fa-inbox\\\"></i>\\n                        </a>\\n                      </div>\\n\\n                      <div class=\\\"col-2\\\">\\n                        <a\\n                          title=\\\"Excluir documento\\\"\\n                          (click)=\\\"showModalCancelOrientation(item)\\\"\\n                          *ngIf=\\\"\\n                            (item.status === 'Não Assinada' || item.status === 'Assinada') &&\\n                            userType === 'healthProfessional'\\n                          \\\"\\n                        >\\n                          <i class=\\\"fa fa-trash-solid\\\"></i>\\n                        </a>\\n                      </div>\\n                    </div>\\n                  </td>\\n                </tr>\\n                <tr [nzExpand]=\\\"item.expand\\\">\\n                  <td></td>\\n                  <td colspan=\\\"6\\\">\\n                    <div class=\\\"col\\\">\\n                      <div class=\\\"row\\\">\\n                        <span class=\\\"title\\\">Título:</span\\n                        ><span class=\\\"break-line\\\"> {{ item.title }}</span>\\n                      </div>\\n                      <div class=\\\"row\\\">\\n                        <span class=\\\"title\\\">Conteúdo:</span>\\n                        <span *ngIf=\\\"item.orientations?.length === 1\\\" class=\\\"break-line\\\">\\n                          {{ item.orientations[0] }}\\n                        </span>\\n                      </div>\\n                      <div class=\\\"row\\\" *ngIf=\\\"item.orientations.length > 1\\\">\\n                        <span *ngFor=\\\"let text of item.orientations; let i = index\\\">\\n                          <br *ngIf=\\\"i > 0\\\" />\\n                          {{ text }}\\n                          <br />\\n                        </span>\\n                      </div>\\n                    </div>\\n                  </td>\\n                </tr>\\n              </ng-container>\\n            </ng-template>\\n          </tbody>\\n        </nz-table>\\n      </nz-tab>\\n\\n      <nz-tab nzTitle=\\\"Receitas de terceiros\\\" *ngIf=\\\"userType === 'pharmacy'\\\">\\n        <nz-table\\n          #nzTable\\n          [nzData]=\\\"retentionOfThirdParties\\\"\\n          [nzLoading]=\\\"loading\\\"\\n          [nzTotal]=\\\"paginationData[1].totalRecord\\\"\\n          [nzPageSize]=\\\"pageSize\\\"\\n          (nzPageIndexChange)=\\\"pageIndexChanged($event)\\\"\\n          nzFrontPagination=\\\"false\\\"\\n          nzNoResult=\\\"Você ainda não realizou nenhuma retenção\\\"\\n          [nzScroll]=\\\"scrollConfig\\\"\\n        >\\n          <thead nzAlign=\\\"center\\\">\\n            <tr>\\n              <th></th>\\n              <th>Data da Dispensação</th>\\n              <th>CPF do comprador</th>\\n              <th>Código da dispensação</th>\\n              <th>Registro do Prescritor</th>\\n              <th>Arquivo na base</th>\\n            </tr>\\n          </thead>\\n          <tbody *ngFor=\\\"let item of nzTable.data\\\">\\n            <tr>\\n              <td></td>\\n              <td>{{ item?.dispensationDate || item?.updatedAt | date: 'dd/MM/yyyy':'UTC' }}</td>\\n              <td>{{ item?.cpfBuyer | formattedCpf }}</td>\\n              <td>{{ item.dispensationCode }}</td>\\n              <td>\\n                {{ item.preWriterRegister?.number || item.prescriber?.regionalCouncilNumber.number }}\\n              </td>\\n              <td>\\n                <div class=\\\"prescription d-flex align-items-center\\\">\\n                  <div>\\n                    <a title=\\\"Baixar prescrição\\\" (click)=\\\"downloadPrescriptionPdfOfThirdParties(item)\\\">\\n                      <i\\n                        nz-icon\\n                        nzType=\\\"file-pdf\\\"\\n                        nzTheme=\\\"twotone\\\"\\n                        nzTwotoneColor=\\\"#B22222\\\"\\n                        class=\\\"icon-pdf\\\"\\n                      ></i>\\n                    </a>\\n                  </div>\\n                  <div class=\\\"ml-3\\\">\\n                    <a title=\\\"Cancelar retenção\\\" (click)=\\\"showModalCancelRetention(item, true)\\\">\\n                      <i class=\\\"fa fa-trash-solid\\\"></i>\\n                    </a>\\n                  </div>\\n                </div>\\n              </td>\\n            </tr>\\n          </tbody>\\n        </nz-table>\\n      </nz-tab>\\n    </nz-tabset>\\n  </div>\\n</div>\\n<ngx-loading [show]=\\\"loadingFilter\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n<app-modal-send-document></app-modal-send-document>\\n\";","export default \".title {\\n  font-weight: bold;\\n}\\n\\n.padding-row {\\n  padding-top: 10px;\\n  padding-bottom: 10px;\\n}\\n\\nnz-table .break-line {\\n  white-space: pre-wrap;\\n}\\n\\nnz-table .ant-table-expanded-row {\\n  background: none;\\n}\\n\\n.download-pdf {\\n  font-size: 40px;\\n  cursor: pointer;\\n}\\n\\n.icon-pdf {\\n  font-size: 30px;\\n  cursor: pointer;\\n}\\n\\n.col-3 {\\n  padding-left: 0;\\n}\\n\\n.responsible-name {\\n  font-size: 12px;\\n}\\n\\n.responsible-name br {\\n  display: block;\\n  /* makes it have a width */\\n  content: \\\"\\\";\\n  /* clears default height */\\n  margin-top: -5px;\\n  /* change this to whatever height you want it */\\n}\";","import { Component, Input, ViewChild } from '@angular/core';\r\nimport { MyPieChart } from '@app/shared/models/my-pie-chart';\r\nimport { ChartOptions } from 'chart.js';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\n\r\n@Component({\r\n  selector: 'app-my-pie-chart',\r\n  templateUrl: './my-pie-chart.component.html',\r\n  styleUrls: ['./my-pie-chart.component.scss']\r\n})\r\nexport class MyPieChartComponent {\r\n  @Input() title: string;\r\n\r\n  @ViewChild(BaseChartDirective) baseChart: any;\r\n\r\n  pieChartOptions: ChartOptions = {\r\n    responsive: true,\r\n    legend: {\r\n      position: 'bottom',\r\n      labels: {\r\n        boxWidth: 12\r\n      }\r\n    }\r\n  };\r\n\r\n  private _chart: MyPieChart;\r\n\r\n  constructor() {}\r\n\r\n  @Input()\r\n  set chart(chart: MyPieChart) {\r\n    this._chart = chart;\r\n    if (this.title) {\r\n      let text = this.title;\r\n      if (this.total) {\r\n        text += ` (${this.total})`;\r\n      }\r\n      this.pieChartOptions.title = {\r\n        text,\r\n        display: true\r\n      };\r\n      if (this.baseChart) {\r\n        this.baseChart.refresh();\r\n      }\r\n    }\r\n  }\r\n\r\n  get chart() {\r\n    return this._chart;\r\n  }\r\n\r\n  get total() {\r\n    return this.chart && this.chart.data.filter(d => !isNaN(d)).reduce((a, b) => a + b, 0);\r\n  }\r\n}\r\n","export default \"<div class=\\\"chart-area\\\" *ngIf=\\\"chart\\\">\\r\\n  <div class=\\\"chart\\\">\\r\\n    <canvas\\r\\n      baseChart\\r\\n      [data]=\\\"chart.data\\\"\\r\\n      [colors]=\\\"chart.pieChartColors\\\"\\r\\n      [labels]=\\\"chart.pieChartLabels\\\"\\r\\n      chartType=\\\"pie\\\"\\r\\n      [options]=\\\"pieChartOptions\\\"\\r\\n      legend=\\\"true\\\"\\r\\n    >\\r\\n    </canvas>\\r\\n  </div>\\r\\n</div>\\r\\n\";","export default \".chart-area {\\n  display: flex;\\n  justify-content: center;\\n}\\n.chart-area .chart {\\n  width: 50vw;\\n  display: flex;\\n  position: relative;\\n}\";","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n  selector: 'app-add-button',\n  templateUrl: './add-button.component.html',\n  styleUrls: ['./add-button.component.scss']\n})\nexport class AddButtonComponent implements OnInit {\n  @Input() label: string;\n\n  @Output() eventOnClick = new EventEmitter();\n\n  constructor() {}\n\n  ngOnInit() {}\n}\n","export default \"<button\\n  class=\\\"btn btn-icon btn-success text-capitalize\\\"\\n  type=\\\"button\\\"\\n  theme\\n  (click)=\\\"eventOnClick.emit()\\\"\\n>\\n  <span class=\\\"btn-inner--text\\\">{{ label }}</span>\\n  <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n</button>\\n\";","export default \"@media (max-width: 1025px) {\\n  .btn-icon .btn-inner--text {\\n    font-size: 14px;\\n    word-break: break-word;\\n  }\\n}\\nbutton {\\n  display: flex;\\n  padding: 0 0 0 8px;\\n  height: 40px;\\n  align-items: center;\\n  border-radius: 10px;\\n  overflow: hidden;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n  background-color: var(--bg-color-secondary);\\n}\\nbutton .btn-inner--icon {\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 40px;\\n  width: 50px;\\n}\";","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { typeOfDocuments } from '@app/shared/types/types';\n\n@Component({\n  selector: 'app-add-type-options',\n  templateUrl: './add-type-options.component.html',\n  styleUrls: ['./add-type-options.component.scss']\n})\nexport class AddTypeOptionsComponent {\n  @Output() onClickAddIndustrialized = new EventEmitter();\n  @Output() onClickAddMedicamentFreeText = new EventEmitter();\n  @Output() onClickAddDataExams = new EventEmitter();\n  @Output() onClickAddTextBox = new EventEmitter();\n  @Output() onClickonShowModelListFavoriteDocument = new EventEmitter();\n  @Output() onClickShowCardCID = new EventEmitter<boolean>();\n  @Output() onClickAddViewFormAttestation = new EventEmitter();\n  @Output() onClickAddPrecriptionRenew = new EventEmitter();\n  @Output() onClickAddInfusion = new EventEmitter();\n  @Output() onClickAddSereneProtocol = new EventEmitter();\n  @Output() onClickOrientationSerene = new EventEmitter();\n\n  @Input() viewIndutrialized = false;\n  @Input() viewMedicmanetFreeText = false;\n  @Input() viewDataExams = false;\n  @Input() viewTextBox = false;\n  @Input() viewListFavoriteDocument = false;\n  @Input() viewShowCardCID = false;\n  @Input() viewFormAttestation = false;\n  @Input() viewPrecriptionRenew = false;\n  @Input() viewInfusion = false;\n  @Input() viewSereneLibrary = false;\n  @Input() viewOrientationSerene = false;\n\n  @Input() colorSetting: ColorSetting;\n\n  @Input() typeDocument: typeOfDocuments;\n\n  hover = {};\n\n  isVeterinarian = false;\n\n  constructor(private activatedRoute: ActivatedRoute) {\n    this.isVeterinarian = this.activatedRoute.snapshot.data['isVeterinarian'];\n  }\n}\n","export default \"<ng-container>\\n  <nz-form-item>\\n    <nz-form-label>\\n      <span [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">\\n        Adicionar:\\n      </span>\\n    </nz-form-label>\\n  </nz-form-item>\\n\\n  <div class=\\\"d-flex box-add-type-medicament\\\">\\n    <div *ngIf=\\\"viewIndutrialized\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickAddIndustrialized.emit()\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickAddIndustrialized'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickAddIndustrialized'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickAddIndustrialized'] = false\\\"\\n      >\\n        <i nz-icon class=\\\"fa-solid fa-pills\\\"></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">Industrializado</label>\\n    </div>\\n\\n    <div *ngIf=\\\"viewMedicmanetFreeText\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickAddMedicamentFreeText.emit()\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickAddMedicamentFreeText'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickAddMedicamentFreeText'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickAddMedicamentFreeText'] = false\\\"\\n      >\\n        <i nz-icon class=\\\"fa-solid fa-prescription-bottle\\\"></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">Medicamento texto livre</label>\\n    </div>\\n\\n    <div *ngIf=\\\"viewPrecriptionRenew\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickAddPrecriptionRenew.emit()\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickAddPrecriptionRenew'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickAddPrecriptionRenew'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickAddPrecriptionRenew'] = false\\\"\\n      >\\n        <i nz-icon class=\\\"fa-solid fa-pills\\\"></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">Produtos Rennova</label>\\n    </div>\\n\\n    <div *ngIf=\\\"viewFormAttestation\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickAddViewFormAttestation.emit()\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickAddViewFormAttestation'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickAddViewFormAttestation'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickAddViewFormAttestation'] = false\\\"\\n      >\\n        <i nz-icon class=\\\"fa-solid fa-pills\\\"></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">Formulário pré-preenchido</label>\\n    </div>\\n\\n    <div *ngIf=\\\"viewDataExams\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickAddDataExams.emit()\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickAddDataExams'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickAddDataExams'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickAddDataExams'] = false\\\"\\n      >\\n        <i nz-icon class=\\\"fa-solid fa-flask\\\"></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">Banco de exames</label>\\n    </div>\\n\\n    <div *ngIf=\\\"viewTextBox\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickAddTextBox.emit()\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickAddTextBox'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickAddTextBox'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickAddTextBox'] = false\\\"\\n      >\\n        <i nz-icon nzType=\\\"font-size\\\" nzTheme=\\\"outline\\\"></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">{{\\n        typeDocument === 'attestation' ? 'Caixa de texto' : 'Observações'\\n      }}</label>\\n    </div>\\n\\n    <div *ngIf=\\\"viewShowCardCID\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickShowCardCID.emit(true)\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickShowCardCID'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickShowCardCID'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickShowCardCID'] = false\\\"\\n      >\\n        <i nz-icon nzType=\\\"\\\" nzTheme=\\\"outline\\\"><span>CID</span></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">CID 10</label>\\n    </div>\\n\\n    <div *ngIf=\\\"viewListFavoriteDocument\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickonShowModelListFavoriteDocument.emit()\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickonShowModelListFavoriteDocument'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickonShowModelListFavoriteDocument'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickonShowModelListFavoriteDocument'] = false\\\"\\n      >\\n        <i nz-icon nzType=\\\"heart\\\" nzTheme=\\\"outline\\\"></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">Meus modelos</label>\\n    </div>\\n\\n    <div *ngIf=\\\"viewInfusion\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickAddInfusion.emit()\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickAddInfusion'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickAddInfusion'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickAddInfusion'] = false\\\"\\n      >\\n        <i\\n          nz-icon\\n          class=\\\"fa-solid fa-pills\\\"\\n          [ngStyle]=\\\"{\\n            color: colorSetting?.primary,\\n            'background-color': colorSetting?.secondary\\n          }\\\"\\n        ></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">Adicionar protocolo</label>\\n    </div>\\n\\n    <div *ngIf=\\\"viewSereneLibrary\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickAddSereneProtocol.emit()\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickAddSereneProtocol'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickAddSereneProtocol'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickAddSereneProtocol'] = false\\\"\\n      >\\n        <i\\n          nz-icon\\n          class=\\\"fa-solid fa-cannabis\\\"\\n          [ngStyle]=\\\"{\\n            color: colorSetting?.primary,\\n            'background-color': colorSetting?.secondary\\n          }\\\"\\n        ></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">Canabidiol Serene</label>\\n    </div>\\n\\n    <div *ngIf=\\\"viewOrientationSerene\\\" class=\\\"box-action\\\">\\n      <button\\n        nz-button\\n        nzShape=\\\"circle\\\"\\n        (click)=\\\"onClickOrientationSerene.emit()\\\"\\n        [ngStyle]=\\\"{\\n          color: colorSetting?.primary,\\n          'background-color': colorSetting?.secondary,\\n          'border-color': hover['onClickAddSereneProtocol'] ? colorSetting?.secondary : ''\\n        }\\\"\\n        (mouseover)=\\\"hover['onClickAddSereneProtocol'] = true\\\"\\n        (mouseleave)=\\\"hover['onClickAddSereneProtocol'] = false\\\"\\n      >\\n        <i\\n          nz-icon\\n          class=\\\"fa-solid fa-cannabis\\\"\\n          [ngStyle]=\\\"{\\n            color: colorSetting?.primary,\\n            'background-color': colorSetting?.secondary\\n          }\\\"\\n        ></i>\\n      </button>\\n      <label [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">Orientacão Canabidiol Serene</label>\\n    </div>\\n  </div>\\n</ng-container>\\n\";","export default \".box-add-type-medicament {\\n  overflow: auto;\\n}\\n.box-add-type-medicament .box-action {\\n  width: 104px;\\n  text-align: center;\\n  margin-right: 16px;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n}\\n.box-add-type-medicament .box-action label {\\n  font-weight: 700;\\n  color: #0b6054;\\n  font-size: 16px;\\n  margin-top: 8px;\\n}\\n.box-add-type-medicament ::ng-deep .ant-btn-circle,\\n.box-add-type-medicament ::ng-deep .ant-btn-circle-outline {\\n  min-width: 50px;\\n}\\n.box-add-type-medicament ::ng-deep .ant-btn-icon-only {\\n  width: 50px;\\n  height: 50px;\\n  background-color: var(--bg-color-secondary);\\n  color: var(--bg-color-primary);\\n  box-shadow: 0px 5px 7px 2px rgba(0, 0, 0, 0.15);\\n}\\n.box-add-type-medicament ::ng-deep .ant-btn .anticon {\\n  font-size: 24px;\\n}\\n.box-add-type-medicament ::ng-deep .ant-btn:hover,\\n.box-add-type-medicament ::ng-deep .ant-btn:focus {\\n  border-color: var(--bg-color-secondary);\\n}\";","export default \"<form [formGroup]=\\\"form\\\" theme>\\r\\n  <nz-form-item *ngIf=\\\"mobile; else templateDesktop\\\">\\r\\n    <label [for]=\\\"id\\\" [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">{{ label }}</label>\\r\\n    <div class=\\\"input-group\\\">\\r\\n      <span class=\\\"input-group-btn\\\">\\r\\n        <button class=\\\"btn btn-minus\\\" type=\\\"button\\\" (click)=\\\"minus()\\\">\\r\\n          <span\\r\\n            class=\\\"btn-inner--icon\\\"\\r\\n            [ngStyle]=\\\"{\\r\\n              'background-color': colorSetting?.primary,\\r\\n              'border-color': colorSetting?.primary\\r\\n            }\\\"\\r\\n            ><i class=\\\"fa fa-minus\\\"></i\\r\\n          ></span>\\r\\n        </button>\\r\\n      </span>\\r\\n      <input\\r\\n        [id]=\\\"id\\\"\\r\\n        type=\\\"number\\\"\\r\\n        class=\\\"form-control text-center\\\"\\r\\n        maxlength=\\\"3\\\"\\r\\n        formControlName=\\\"quantity\\\"\\r\\n        [ngStyle]=\\\"{ 'background-color': colorSetting?.secondary }\\\"\\r\\n        readonly\\r\\n      />\\r\\n      <span class=\\\"input-group-btn\\\">\\r\\n        <button class=\\\"btn btn-plus\\\" type=\\\"button\\\" (click)=\\\"plus()\\\">\\r\\n          <span\\r\\n            class=\\\"btn-inner--icon\\\"\\r\\n            [ngStyle]=\\\"{\\r\\n              'background-color': colorSetting?.primary,\\r\\n              'border-color': colorSetting?.primary\\r\\n            }\\\"\\r\\n            ><i class=\\\"fa fa-plus\\\"></i\\r\\n          ></span>\\r\\n        </button>\\r\\n      </span>\\r\\n    </div>\\r\\n  </nz-form-item>\\r\\n  <ng-template #templateDesktop>\\r\\n    <nz-form-item class=\\\"input-number-item\\\">\\r\\n      <nz-form-label\\r\\n        class=\\\"label-input\\\"\\r\\n        [nzFor]=\\\"id\\\"\\r\\n        [ngStyle]=\\\"{\\r\\n          'background-color': colorSetting?.primary,\\r\\n          'border-color': colorSetting?.primary\\r\\n        }\\\"\\r\\n        >{{ label }}</nz-form-label\\r\\n      >\\r\\n      <nz-form-control>\\r\\n        <nz-input-number\\r\\n          [id]=\\\"id\\\"\\r\\n          [nzMin]=\\\"min\\\"\\r\\n          [nzMax]=\\\"max\\\"\\r\\n          [nzStep]=\\\"step\\\"\\r\\n          [style.width]=\\\"inputSize + 'px'\\\"\\r\\n          (ngModelChange)=\\\"inputSize = $event\\\"\\r\\n          formControlName=\\\"quantity\\\"\\r\\n          [nzDisabled]=\\\"disabled\\\"\\r\\n          [ngStyle]=\\\"{\\r\\n            'background-color': colorSetting?.secondary,\\r\\n            'border-color': colorSetting?.secondary\\r\\n          }\\\"\\r\\n        ></nz-input-number>\\r\\n      </nz-form-control>\\r\\n    </nz-form-item>\\r\\n  </ng-template>\\r\\n</form>\\r\\n\";","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  OnInit\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ControlValueAccessor,\r\n  FormBuilder,\r\n  FormControl,\r\n  FormGroup,\r\n  NG_VALUE_ACCESSOR\r\n} from '@angular/forms';\r\nimport { ColorSetting } from '@app/shared/models/color-setting';\r\n\r\n@Component({\r\n  selector: 'app-auto-width-input-number',\r\n  templateUrl: './auto-width-input-number.component.html',\r\n  styleUrls: ['./auto-width-input-number.component.scss'],\r\n  providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: AutoWidthInputNumberComponent, multi: true }]\r\n})\r\nexport class AutoWidthInputNumberComponent implements AfterViewInit, ControlValueAccessor {\r\n  @Input() id: string;\r\n  @Input() min = 1;\r\n  @Input() max: number;\r\n  @Input() step = 1;\r\n  @Input() label = 'Quantidade';\r\n  @Input() disabled: boolean;\r\n  @Input() colorSetting: ColorSetting;\r\n\r\n  mobile = false;\r\n  form: FormGroup;\r\n\r\n  constructor(\r\n    @Inject(DOCUMENT) private document,\r\n    private cdr: ChangeDetectorRef,\r\n    private fb: FormBuilder\r\n  ) {\r\n    this.form = this.fb.group({\r\n      quantity: [null]\r\n    });\r\n    this.getScreenSize();\r\n  }\r\n\r\n  _inputSize: number;\r\n\r\n  get inputSize(): number {\r\n    return this._inputSize;\r\n  }\r\n\r\n  set inputSize($event) {\r\n    this._inputSize = 26 + parseFloat(this.calculateTextWidth($event.toString()));\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  @HostListener('window:resize', ['$event'])\r\n  private getScreenSize(event?) {\r\n    const { innerWidth: width, innerHeight: height } = window;\r\n    this.mobile = width < 1025;\r\n  }\r\n\r\n  calculateTextWidth(value: string) {\r\n    const canvas = this.document.createElement('canvas');\r\n    const ctx = canvas.getContext('2d');\r\n    return ctx.measureText(value).width;\r\n  }\r\n\r\n  @HostListener('input', ['$event.target'])\r\n  public onInput($event): void {\r\n    this.inputSize = $event.value;\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.form.valueChanges.subscribe(value => fn(value.quantity));\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {}\r\n\r\n  setDisabledState(isDisabled: boolean): void {}\r\n\r\n  writeValue(value: any): void {\r\n    if (value) {\r\n      this.form.setValue({ quantity: value });\r\n    }\r\n  }\r\n\r\n  minus() {\r\n    const qty = this.form.get('quantity');\r\n    if (qty.value > this.min) {\r\n      qty.setValue(qty.value - 1);\r\n    }\r\n  }\r\n\r\n  plus() {\r\n    const qty = this.form.get('quantity');\r\n    if (this.max && qty.value === this.max) {\r\n      return;\r\n    }\r\n    qty.setValue(qty.value + 1);\r\n  }\r\n}\r\n","export default \".input-number-item {\\n  display: flex;\\n  align-items: center;\\n}\\n@media (max-width: 1025px) {\\n  .input-number-item .ant-input-number {\\n    height: 50px;\\n    width: 62px !important;\\n    font-size: 20px;\\n  }\\n  .input-number-item .ant-form-item-label {\\n    height: 50px !important;\\n    text-align: left;\\n  }\\n  .input-number-item .ant-form-item-label label {\\n    font-size: 17px;\\n    margin-top: 18px;\\n    margin-left: 6px;\\n  }\\n  .input-number-item .ant-input-number .ant-input-number-input {\\n    padding-left: 18px;\\n  }\\n}\\n.input-number-item .ant-form-item-label {\\n  height: 22px;\\n  border-radius: 5px 0 0 5px;\\n}\\n.input-number-item .ant-form-item-label ::ng-deep label {\\n  margin-bottom: 0;\\n  margin-right: 0;\\n  text-transform: uppercase;\\n  color: white;\\n  padding-right: 5px;\\n  padding-left: 5px;\\n  font-size: 11px;\\n  font-family: \\\"problack\\\", sans-serif;\\n}\\n.input-number-item ::ng-deep .ant-input-number-handler-wrap {\\n  opacity: 1;\\n  border-left: 0;\\n  z-index: initial;\\n  background: transparent;\\n}\\n.input-number-item ::ng-deep .ant-input-number-handler-wrap .ant-input-number-handler-down {\\n  border-top: 0;\\n}\\n@media (max-width: 1025px) {\\n  .input-number-item ::ng-deep .ant-input-number-handler-wrap {\\n    width: 30px;\\n  }\\n  .input-number-item ::ng-deep .ant-input-number-handler-wrap:hover .ant-input-number-handler {\\n    height: 50%;\\n  }\\n  .input-number-item ::ng-deep .ant-input-number-handler-wrap .ant-input-number-handler-up:hover {\\n    height: 50% !important;\\n  }\\n  .input-number-item ::ng-deep .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner,\\n.input-number-item ::ng-deep .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner {\\n    font-size: 28px;\\n    position: relative;\\n    left: -4px;\\n    top: 10px;\\n  }\\n}\\n.input-number-item ::ng-deep .ant-input-number {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  width: 36px;\\n  height: 22px;\\n  border: 0;\\n  background-color: var(--bg-color-secondary);\\n  box-shadow: none;\\n  border-radius: 0 5px 5px 0;\\n  color: white;\\n  font-size: 11px;\\n  font-family: \\\"problack\\\", sans-serif;\\n}\\n.input-number-item ::ng-deep .ant-input-number .ant-input-number-input {\\n  height: 100%;\\n  padding: 0 0 0 6px;\\n}\\n.label-input {\\n  background: var(--bg-color-primary);\\n  color: var(--on-bg-color-primary);\\n}\\nlabel {\\n  font-family: \\\"probold\\\", sans-serif;\\n  text-transform: uppercase;\\n  font-size: 16px;\\n  margin-bottom: 0;\\n}\\n.input-group {\\n  width: 110px;\\n  border-radius: 5px;\\n  font-family: \\\"probold\\\", sans-serif;\\n}\\n.input-group input,\\n.input-group i {\\n  border: 0;\\n  color: white;\\n}\\n.input-group input {\\n  background-color: var(--bg-color-secondary);\\n  height: 30px;\\n}\\n.input-group .btn-minus {\\n  border-radius: 5px 0 0 5px;\\n}\\n.input-group .btn-plus {\\n  border-radius: 0 5px 5px 0;\\n}\\n.btn {\\n  display: flex;\\n  padding: 0;\\n  height: 30px;\\n  align-items: center;\\n  overflow: hidden;\\n  border: 0;\\n}\\n.btn .btn-inner--icon {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 30px;\\n  width: 35px;\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\";","export default \"<div class=\\\"card card-cid\\\" [formGroup]=\\\"form.get('cid')\\\" theme>\\n  <div class=\\\"card-cid-header\\\">\\n    <label>CID 10</label>\\n    <i\\n      class=\\\"fa fa-trash-solid\\\"\\n      nzTooltipTitle=\\\"Excluir\\\"\\n      nzTooltipPlacement=\\\"top\\\"\\n      nz-tooltip\\n      (click)=\\\"removeCardCid()\\\"\\n    ></i>\\n  </div>\\n  <div class=\\\"card-cid-content\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"col-12\\\">\\n        <nz-form-item>\\n          <label nz-checkbox formControlName=\\\"authorizedByPatient\\\">\\n            <span class=\\\"label-checkbox\\\">Mostrar dizeres: \\\"Autorizado pelo paciente\\\"</span>\\n          </label>\\n        </nz-form-item>\\n      </div>\\n      <div class=\\\"col-12\\\">\\n        <nz-form-item>\\n          <label nz-checkbox formControlName=\\\"showDescription\\\">\\n            <span class=\\\"label-checkbox\\\">Mostrar descrição do CID</span>\\n          </label>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n    <div class=\\\"container-cids\\\" formArrayName=\\\"items\\\">\\n      <div class=\\\"p-2\\\">\\n        <div\\n          class=\\\"container-cids-header mb-1\\\"\\n          *ngFor=\\\"let item of formArrayItens?.controls; let i = index\\\"\\n          [formGroup]=\\\"item\\\"\\n        >\\n          <label class=\\\"label-name-cid mr-3\\\" [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">\\n            CID 10: {{ item.get('code')?.value }}\\n            <span *ngIf=\\\"form.get('cid').get('showDescription')?.value\\\">\\n              - {{ item.get('description')?.value }}</span\\n            >\\n            <span *ngIf=\\\"form.get('cid').get('authorizedByPatient')?.value\\\">\\n              (Autorizado pelo paciente)</span\\n            >\\n          </label>\\n          <i\\n            class=\\\"far fa-minus-circle icon-remove\\\"\\n            nzTooltipTitle=\\\"Remover\\\"\\n            nzTooltipPlacement=\\\"top\\\"\\n            nz-tooltip\\n            (click)=\\\"removeItem(i)\\\"\\n          ></i>\\n        </div>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"continer-input\\\">\\n      <input\\n        nz-input\\n        placeholder=\\\"Digite o código ou nome para buscar\\\"\\n        [nzAutocomplete]=\\\"autoCids\\\"\\n        [formControl]=\\\"inputSearch\\\"\\n        [ngStyle]=\\\"{\\n          'background-color': colorSetting?.inputBackground,\\n          'border-color': colorSetting?.inputBorder\\n        }\\\"\\n      />\\n      <nz-autocomplete\\n        #autoCids\\n        class=\\\"medicationAutoComplete\\\"\\n        nzBackfill\\n        (selectionChange)=\\\"addCid($event.nzValue)\\\"\\n      >\\n        <nz-auto-option *ngIf=\\\"isLoading\\\" class=\\\"loading-container\\\">\\n          <span>Carregando...</span>\\n        </nz-auto-option>\\n        <ng-container *ngIf=\\\"!isLoading && cids?.length > 0\\\">\\n          <nz-auto-option *ngFor=\\\"let option of cids\\\" [nzLabel]=\\\"option.code\\\" [nzValue]=\\\"option\\\">\\n            <span>{{ option?.code }} - {{ option?.description }}</span>\\n          </nz-auto-option>\\n        </ng-container>\\n      </nz-autocomplete>\\n    </div>\\n  </div>\\n</div>\\n\";","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Cid } from '@app/shared/models/cid';\nimport { environment } from '@env/environment';\n\nexport const CID_API_URL = `${environment.apiRoot}cid`;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CidService {\n  constructor(private http: HttpClient) {}\n\n  findAllByQuery(query: string) {\n    return this.http.get<Cid[]>(`${CID_API_URL}?query=${query}`);\n  }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { CidService } from '@app/modules/document/services/cid.service';\nimport { Cid } from '@app/shared/models/cid';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { debounceTime, distinctUntilChanged, filter, switchMap, tap } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-cid-form',\n  templateUrl: './cid-form.component.html',\n  styleUrls: ['./cid-form.component.scss']\n})\nexport class CidFormComponent implements OnInit, OnDestroy {\n  @Input() form: FormGroup;\n  @Input() authorizedByPatient = false;\n  @Input() showDescription = false;\n  @Input() items = [];\n  @Input() colorSetting: ColorSetting;\n\n  @Output() onClickRemoveCardCid = new EventEmitter<void>();\n  @Output() formEmitter: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\n\n  inputSearch = new FormControl();\n  isLoading = false;\n\n  cids: Cid[] = [];\n\n  constructor(\n    private cidService: CidService,\n    private notification: AppToastService,\n    private fb: FormBuilder\n  ) {}\n\n  ngOnInit(): void {\n    this.form.addControl(\n      'cid',\n      this.fb.group({\n        authorizedByPatient: [this.authorizedByPatient],\n        showDescription: [this.showDescription],\n        items: new FormArray([], Validators.required)\n      })\n    );\n\n    if (this.items && this.items.length) {\n      this.items.forEach(item => {\n        this.addCid(item);\n      });\n    }\n\n    this.listenSearchInput();\n    this.formEmitter.emit(this.form);\n  }\n\n  ngOnDestroy(): void {\n    this.form.removeControl('cid');\n    this.formEmitter.emit(this.form);\n  }\n\n  listenSearchInput() {\n    this.inputSearch.valueChanges\n      .pipe(\n        filter((text: string) => text && text.length >= 3),\n        tap(() => {\n          this.isLoading = true;\n          this.cids = [];\n        }),\n        debounceTime(300),\n        distinctUntilChanged(),\n        switchMap(text => this.cidService.findAllByQuery(text))\n      )\n      .subscribe(cids => {\n        if (cids.length > 0) {\n          this.cids = cids;\n        } else {\n          this.notification.notify('warning', 'Não foi encontado CID com código ou nome informado!', '');\n        }\n\n        this.isLoading = false;\n      });\n  }\n\n  addCid(cid: Cid) {\n    const newControlCid = this.fb.group({\n      id: [cid._id],\n      code: [cid.code, [Validators.required]],\n      description: [cid.description]\n    });\n    this.formArrayItens.push(newControlCid);\n    this.formEmitter.emit(this.form);\n    this.inputSearch = new FormControl('');\n    this.listenSearchInput();\n  }\n\n  get formCid(): FormGroup {\n    return this.form.get('cid') as FormGroup;\n  }\n\n  get formArrayItens(): FormArray {\n    return this.form.get('cid').get('items') as FormArray;\n  }\n\n  removeItem(index: number) {\n    this.formArrayItens.removeAt(index);\n  }\n\n  removeCardCid() {\n    this.onClickRemoveCardCid.emit();\n  }\n}\n","export default \".card-cid {\\n  padding: 0.5rem;\\n}\\n.card-cid .card-cid-header {\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n}\\n.card-cid .card-cid-header span {\\n  flex: 1;\\n}\\n.card-cid .card-cid-content .continer-input {\\n  display: flex;\\n  align-items: center;\\n}\\n.card-cid .card-cid-content .continer-input input {\\n  height: 37px;\\n}\\n.card-cid .card-cid-content .continer-input input::-moz-placeholder {\\n  padding-left: 10px;\\n}\\n.card-cid .card-cid-content .continer-input input::placeholder {\\n  padding-left: 10px;\\n}\\n.card-cid .card-cid-content .continer-input button {\\n  padding: 5px;\\n}\\n.card-cid .container-cids .label-name-cid {\\n  font-size: 1rem;\\n  color: var(--bg-color-secondary);\\n  font-weight: 600;\\n  font-family: \\\"Segoe UI\\\", Tahoma, Geneva, Verdana, sans-serif;\\n}\\n.card-cid .container-cids .container-cids-header {\\n  display: flex !important;\\n  align-items: center !important;\\n  justify-content: space-between !important;\\n}\\n.card-cid .card-cid-content::ng-deep .ant-checkbox-wrapper {\\n  margin-top: 0;\\n  margin-left: 0;\\n}\\n.card-cid .label-checkbox {\\n  font-size: 14px;\\n}\\n.card-cid .icon-remove {\\n  cursor: pointer;\\n  color: red;\\n  font-size: 20px;\\n}\";","export default \"<div class=\\\"card p-2 mb-2\\\" theme [formGroup]=\\\"form\\\">\\n  <ng-container formArrayName=\\\"examList\\\">\\n    <ng-container\\n      *ngFor=\\\"let examListGroup of examList?.controls; let i = index\\\"\\n      [formGroup]=\\\"examListGroup\\\"\\n    >\\n      <div\\n        class=\\\"header-card-data-exam\\\"\\n        [ngClass]=\\\"{ 'header-card-data-exam-flex-end': isVeterinarian }\\\"\\n      >\\n        <nz-form-item *ngIf=\\\"!isVeterinarian\\\">\\n          <label nz-checkbox formControlName=\\\"showTuss\\\">\\n            <span class=\\\"label-checkbox\\\">Mostrar código TUSS no pedido</span>\\n          </label>\\n        </nz-form-item>\\n        <i\\n          class=\\\"fa fa-trash-solid custon-icon-trash\\\"\\n          nzTooltipTitle=\\\"Excluir\\\"\\n          nzTooltipPlacement=\\\"top\\\"\\n          nz-tooltip\\n          (click)=\\\"onClickRemoveCardDataExam.emit()\\\"\\n          nz-icon\\n        ></i>\\n      </div>\\n      <div class=\\\"body-card\\\">\\n        <div>\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"exam-input\\\"\\n              ><span [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">\\n                Exame(s):\\n              </span>\\n            </nz-form-label>\\n            <ng-container formArrayName=\\\"exams\\\">\\n              <ng-container *ngIf=\\\"exams?.controls?.length > 0; else emptyTemplate\\\">\\n                <div\\n                  *ngFor=\\\"let examGroup of exams?.controls; let i = index\\\"\\n                  [formGroup]=\\\"examGroup\\\"\\n                  class=\\\"d-flex align-itens-center mb-1\\\"\\n                >\\n                  <span class=\\\"exam-description\\\" *ngIf=\\\"examGroup.value as exam\\\"\\n                    ><span [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">\\n                      {{ exam?.name }}\\n                    </span>\\n                    <span\\n                      *ngIf=\\\"examListGroup.get('showTuss')?.value && exam?.tuss\\\"\\n                      [ngStyle]=\\\"{ color: colorSetting?.secondary }\\\"\\n                      >({{ exam?.tuss }})</span\\n                    >\\n                  </span>\\n                  <i\\n                    class=\\\"far fa-minus-circle icon-remove ml-3\\\"\\n                    nzTooltipTitle=\\\"Remover\\\"\\n                    nzTooltipPlacement=\\\"top\\\"\\n                    nz-tooltip\\n                    (click)=\\\"removeExam(i)\\\"\\n                  ></i>\\n                </div>\\n              </ng-container>\\n              <ng-template #emptyTemplate>\\n                <div>\\n                  <span>Nenhum exame informado.</span>\\n                </div>\\n              </ng-template>\\n            </ng-container>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"continer-input\\\">\\n          <input\\n            nz-input\\n            placeholder=\\\"Digite o código ou nome para buscar e adicionar exame\\\"\\n            [nzAutocomplete]=\\\"autoCids\\\"\\n            [formControl]=\\\"inputSearch\\\"\\n            [ngStyle]=\\\"{\\n              'background-color': colorSetting?.inputBackground,\\n              'border-color': colorSetting?.inputBorder\\n            }\\\"\\n          />\\n          <nz-autocomplete\\n            #autoCids\\n            class=\\\"medicationAutoComplete\\\"\\n            nzBackfill\\n            (selectionChange)=\\\"addExam($event.nzValue)\\\"\\n          >\\n            <nz-auto-option *ngIf=\\\"isLoading\\\" class=\\\"loading-container\\\">\\n              <span>Carregando...</span>\\n            </nz-auto-option>\\n            <ng-container *ngIf=\\\"!isLoading && examsFiltereds?.length > 0\\\">\\n              <nz-auto-option *ngFor=\\\"let item of examsFiltereds\\\" [nzLabel]=\\\"item.name\\\" [nzValue]=\\\"item\\\">\\n                <span\\n                  >{{ item?.name }}<span *ngIf=\\\"item?.tuss\\\"> - {{ item?.tuss }}</span></span\\n                >\\n              </nz-auto-option>\\n            </ng-container>\\n          </nz-autocomplete>\\n        </div>\\n      </div>\\n    </ng-container>\\n  </ng-container>\\n</div>\\n\";","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { ExamService } from '@app/modules/document/services/exam.service';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { ExamBase } from '@app/shared/models/ExamBase';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { debounceTime, distinctUntilChanged, filter, switchMap, tap } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-data-exam-form',\n  templateUrl: './data-exam-form.component.html',\n  styleUrls: ['./data-exam-form.component.scss']\n})\nexport class DataExamFormComponent implements OnInit, OnDestroy {\n  @Input() form: FormGroup;\n  @Input() isVeterinarian = false;\n  @Input() colorSetting: ColorSetting;\n\n  @Output() formEmitter = new EventEmitter<FormGroup>();\n  @Output() onClickRemoveCardDataExam = new EventEmitter();\n\n  inputSearch = new FormControl('');\n  isLoading = false;\n\n  examsFiltereds = [];\n\n  constructor(\n    private fb: FormBuilder,\n    private examService: ExamService,\n    private notification: AppToastService\n  ) {}\n\n  ngOnInit(): void {\n    this.listenSearchInput();\n\n    this.formEmitter.emit(this.form);\n  }\n\n  ngOnDestroy() {\n    this.examList.removeAt(0);\n    this.formEmitter.emit(this.form);\n  }\n\n  get examList(): FormArray {\n    return <FormArray>this.form.get('examList');\n  }\n\n  get exams(): FormArray {\n    return <FormArray>this.examList.at(0).get('exams');\n  }\n\n  listenSearchInput() {\n    this.inputSearch.valueChanges\n      .pipe(\n        filter((text: string) => text && text.length >= 3),\n        tap(() => {\n          this.isLoading = true;\n          this.examsFiltereds = [];\n        }),\n        debounceTime(300),\n        distinctUntilChanged(),\n        switchMap(text => this.examService.findAllByQuery(text, this.isVeterinarian))\n      )\n      .subscribe(\n        exams => {\n          if (exams.length > 0) {\n            this.examsFiltereds = exams;\n          } else {\n            this.notification.notify('warning', 'Não foi encontado exames com nome informado', '');\n          }\n\n          this.isLoading = false;\n        },\n        () => {\n          this.notification.notify('error', 'Ocorreu um erro ao buscar exames', '');\n          this.examsFiltereds = [];\n          this.isLoading = false;\n        }\n      );\n  }\n\n  addExam(exam: ExamBase) {\n    const hasDuplicatedExam = this.hasDuplicatedExam(exam.id);\n    if (hasDuplicatedExam) {\n      this.notification.notify('warning', 'Exame já adicionado', '');\n      this.resetInputSearch();\n      return;\n    }\n\n    const examGroup = this.fb.group({\n      id: [exam.id],\n      name: [exam.name],\n      tuss: [exam.tuss]\n    });\n\n    this.exams.push(examGroup);\n    this.resetInputSearch();\n  }\n\n  resetInputSearch() {\n    this.inputSearch = new FormControl('');\n    this.listenSearchInput();\n  }\n\n  removeExam(index: number) {\n    this.exams.removeAt(index);\n  }\n\n  private hasDuplicatedExam(idExam: string) {\n    const exams = (<FormArray>this.form.get('examList')).at(0).get('exams').value || [];\n    return exams.some(exam => exam.id === idExam);\n  }\n}\n","export default \".header-card-data-exam {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  position: relative;\\n}\\n\\n.header-card-data-exam-flex-end {\\n  justify-content: flex-end;\\n}\\n\\n.icon-remove {\\n  cursor: pointer;\\n  color: red;\\n  font-size: 20px;\\n}\\n\\n.exam-description {\\n  font-size: 1rem;\\n  color: var(--bg-color-secondary);\\n  font-weight: 600;\\n  font-family: \\\"Segoe UI\\\", Tahoma, Geneva, Verdana, sans-serif;\\n}\\n\\n.custon-icon-trash {\\n  position: absolute;\\n  top: 5px;\\n  right: 0;\\n}\";","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { CepService } from '@app/modules/entry/services/cep.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { BrazilState } from '@app/shared/models';\n\n@Component({\n  selector: 'app-address-data-form',\n  templateUrl: './address-data-form.component.html'\n})\nexport class AddressDataFormComponent implements OnInit {\n  @Input() form: FormGroup;\n  @Input() required = false;\n  @Input() showAlertMsg = true;\n  @Input() alertMsg =\n    'Ao preencher o endereço do paciente, você será capaz de emitir Receitas de Controle Especial (listas C1, C5 e adendos das listas A1, B1 e B2). Para prescrever este tipo de medicamentos, deverá ser preenchido o endereço completo (RDC 344/98).';\n\n  isExternalRegister = false;\n  states: BrazilState[] = BrazilianStates;\n\n  constructor(private cepService: CepService, private router: Router) {}\n\n  ngOnInit(): void {\n    this.isExternalRegister = this.router.url === '/entry/register/patient';\n    if (this.isExternalRegister) {\n      this.required = true;\n      this.validatorsFields();\n    } else {\n      this.disableFields();\n      this.removeValidators();\n    }\n  }\n  @nativeAsync\n  async onKey(event: any) {\n    this.required = false;\n    if (event.target.value.length === 10) {\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\n      const data = await this.cepService.consult(cep);\n      if (!data.erro) {\n        this.required = true;\n        this.enabledFields();\n        this.validatorsFields();\n        this.patchValueForm(data);\n      }\n    } else {\n      this.patchValueForm({});\n      this.disableFields();\n      this.removeValidators();\n    }\n  }\n  @nativeAsync\n  async onKeyExternal(event: any) {\n    if (event.target.value.length === 10) {\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\n      const data = await this.cepService.consult(cep);\n      this.patchValueForm(data);\n      this.enabledFields();\n    } else {\n      this.patchValueForm({});\n      this.disableFields();\n    }\n  }\n\n  patchValueForm(data: any) {\n    this.form.patchValue({\n      uf: data.uf,\n      street: data.logradouro,\n      neighborhood: data.bairro,\n      city: data.localidade,\n      number: null\n    });\n  }\n\n  validatorsFields() {\n    this.form.get('uf').setValidators([Validators.required]);\n    this.form.get('street').setValidators([Validators.required]);\n    this.form.get('neighborhood').setValidators([Validators.required]);\n    this.form.get('city').setValidators([Validators.required]);\n    this.form.get('number').setValidators([Validators.required]);\n    this.form.get('cep').setValidators([Validators.required]);\n  }\n\n  removeValidators() {\n    this.form.clearValidators();\n    this.form.updateValueAndValidity();\n  }\n\n  disableFields() {\n    this.form.get('uf').disable();\n    this.form.get('street').disable();\n    this.form.get('neighborhood').disable();\n    this.form.get('city').disable();\n    this.form.get('number').disable();\n    this.form.get('complement').disable();\n  }\n\n  enabledFields() {\n    this.form.get('uf').enable();\n    this.form.get('street').enable();\n    this.form.get('neighborhood').enable();\n    this.form.get('city').enable();\n    this.form.get('number').enable();\n    this.form.get('complement').enable();\n  }\n}\n","export default \"<!--Dados de Endereço-->\\n<fieldset class=\\\"w-100 mb-2\\\" [formGroup]=\\\"form\\\" theme>\\n  <legend>Dados de Endereço</legend>\\n  <nz-alert *ngIf=\\\"showAlertMsg\\\" class=\\\"mb-4\\\" nzType=\\\"warning\\\" [nzMessage]=\\\"alertMsg\\\"></nz-alert>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-12 col-md-12 col-xl-2\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"cep\\\">CEP <span class=\\\"mandatory\\\" *ngIf=\\\"required\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            id=\\\"cep\\\"\\n            formControlName=\\\"cep\\\"\\n            placeholder=\\\"00.000-000\\\"\\n            mask=\\\"00.000-000\\\"\\n            (keyup)=\\\"isExternalRegister ? onKeyExternal($event) : onKey($event)\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"logradouro\\\"\\n          >Logradouro <span class=\\\"mandatory\\\" *ngIf=\\\"required\\\">*</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            formControlName=\\\"street\\\"\\n            id=\\\"street\\\"\\n            nz-input\\n            placeholder=\\\"Digite o logradouro\\\"\\n            maxlength=\\\"128\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-2 col-md-2 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"number\\\"\\n          >Número <span class=\\\"mandatory\\\" *ngIf=\\\"required\\\">*</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            formControlName=\\\"number\\\"\\n            id=\\\"number\\\"\\n            nz-input\\n            placeholder=\\\"Digite o número\\\"\\n            maxlength=\\\"10\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-2 col-md-2 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"complement\\\">Complemento</nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            formControlName=\\\"complement\\\"\\n            id=\\\"complement\\\"\\n            nz-input\\n            placeholder=\\\"Digite o complemento\\\"\\n            maxlength=\\\"128\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-4 col-md-4 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"neighborhood\\\"\\n          >Bairro <span class=\\\"mandatory\\\" *ngIf=\\\"required\\\">*</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            formControlName=\\\"neighborhood\\\"\\n            id=\\\"neighborhood\\\"\\n            nz-input\\n            placeholder=\\\"Digite o bairro\\\"\\n            maxlength=\\\"128\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-4 col-md-4 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"city\\\"\\n          >Cidade <span class=\\\"mandatory\\\" *ngIf=\\\"required\\\">*</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            formControlName=\\\"city\\\"\\n            id=\\\"city\\\"\\n            nz-input\\n            placeholder=\\\"Digite a cidade\\\"\\n            maxlength=\\\"64\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-4 col-md-4 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"uf\\\">UF <span class=\\\"mandatory\\\" *ngIf=\\\"required\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select\\n            id=\\\"uf\\\"\\n            formControlName=\\\"uf\\\"\\n            nz-input\\n            nzAllowClear\\n            nzShowSearch\\n            nzPlaceHolder=\\\"Selecione\\\"\\n          >\\n            <option *ngFor=\\\"let state of states\\\" [value]=\\\"state?.sigla\\\">{{ state?.sigla }}</option>\\n          </select>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n</fieldset>\\n\";","export default \"<!--Dados de Contato-->\\n<fieldset class=\\\"w-100 mb-2\\\" [formGroup]=\\\"form\\\">\\n  <legend theme>Dados de Contato</legend>\\n  <nz-alert\\n    *ngIf=\\\"showAlertMsg\\\"\\n    class=\\\"mb-4\\\"\\n    nzType=\\\"warning\\\"\\n    nzMessage=\\\"Ao preencher os dados de contato você poderá enviar o link de acesso aos documentos digitais de forma automática por SMS, WhatsApp e e-mail. No caso do e-mail você também facilitará o acesso do paciente ao Portal do Paciente.\\\"\\n  ></nz-alert>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item *ngIf=\\\"form.get('cellphone') as cellphone\\\">\\n        <nz-form-label nzFor=\\\"cellphone\\\"\\n          >Telefone 1 <span class=\\\"mandatory\\\" *ngIf=\\\"isExternalRegister\\\"> *</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            id=\\\"cellphone\\\"\\n            [mask]=\\\"cellphone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n            formControlName=\\\"cellphone\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item *ngIf=\\\"form.get('telephone') as telephone\\\">\\n        <nz-form-label nzFor=\\\"telephone\\\" class=\\\"cellphone\\\">Telefone 2</nz-form-label>\\n        <nz-form-control>\\n          <input\\n            nz-input\\n            id=\\\"telephone\\\"\\n            [mask]=\\\"telephone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n            formControlName=\\\"telephone\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"email\\\"\\n          >E-mail de login<span class=\\\"mandatory\\\" *ngIf=\\\"isExternalRegister\\\"> *</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback *ngIf=\\\"form.get('email') as email\\\">\\n          <input\\n            nz-input\\n            id=\\\"email\\\"\\n            type=\\\"email\\\"\\n            formControlName=\\\"email\\\"\\n            style=\\\"text-transform: lowercase;\\\"\\n            (keydown.space)=\\\"$event.preventDefault()\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n          <nz-form-explain *ngIf=\\\"email.touched && email.errors\\\">\\n            <ng-container *ngIf=\\\"email.hasError('exists'); else required\\\">\\n              E-mail já existe, por favor escolha outro e-mail.\\n            </ng-container>\\n            <ng-template #required>\\n              <ng-container *ngIf=\\\"email.hasError('required') && email.dirty; else invalid\\\">\\n                <span class=\\\"error\\\">Campo obrigatório, por favor digite seu e-mail.</span>\\n              </ng-container>\\n            </ng-template>\\n            <ng-template #invalid>\\n              <ng-container *ngIf=\\\"email.invalid && email.value.length > 0\\\">\\n                <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span>\\n              </ng-container>\\n            </ng-template>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"emailContact\\\">E-mail de contato</nz-form-label>\\n        <nz-form-control nzHasFeedback *ngIf=\\\"form.get('emailContact') as email\\\">\\n          <input\\n            nz-input\\n            id=\\\"emailContact\\\"\\n            type=\\\"email\\\"\\n            formControlName=\\\"emailContact\\\"\\n            style=\\\"text-transform: lowercase;\\\"\\n            (keydown.space)=\\\"$event.preventDefault()\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n          <nz-form-explain *ngIf=\\\"email.touched && email.errors\\\">\\n            <ng-container *ngIf=\\\"email.hasError('exists'); else required\\\">\\n              E-mail já existe, por favor escolha outro e-mail.\\n            </ng-container>\\n            <ng-template #required>\\n              <ng-container *ngIf=\\\"email.hasError('required') && email.dirty; else invalid\\\">\\n                <span class=\\\"error\\\">Campo obrigatório, por favor digite seu e-mail.</span>\\n              </ng-container>\\n            </ng-template>\\n            <ng-template #invalid>\\n              <ng-container *ngIf=\\\"email.invalid && email.value.length > 0\\\">\\n                <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span>\\n              </ng-container>\\n            </ng-template>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n</fieldset>\\n\";","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { UserService } from '@app/modules/user/user.service';\nimport { environment } from '@env/environment';\nimport { of } from 'rxjs';\nimport { catchError, debounceTime, distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-contacts-data-form',\n  templateUrl: './contacts-data-form.component.html'\n})\nexport class ContactsDataFormComponent implements OnInit {\n  @Input() form: FormGroup;\n  @Input() showAlertMsg = true;\n\n  isExternalRegister = false;\n\n  constructor(private router: Router, private userService: UserService) {}\n\n  ngOnInit() {\n    this.isExternalRegister = this.router.url === '/entry/register/patient';\n    if (this.isExternalRegister) {\n      this.form.get('cellphone').setValidators([Validators.required]);\n      this.form.get('email').setValidators([Validators.required]);\n    }\n\n    const emailControl = this.form.get('email');\n    this.form\n      .get('email')\n      .valueChanges.pipe(\n        map(email => {\n          const value = email && email.toLowerCase();\n          emailControl.setValue(value, { emitEvent: false });\n          return value;\n        }),\n        distinctUntilChanged(),\n        filter(_ => emailControl.valid && emailControl.value),\n        debounceTime(environment.debounceTime),\n        switchMap(email => this.userService.checkEmailExists(email).pipe(catchError(err => of(err))))\n      )\n      .subscribe(res => {\n        if (res.status === 200) {\n          emailControl.setErrors({ exists: true });\n        } else if (res.status === 404) {\n          emailControl.setErrors(null);\n        } else if (res.status === 400) {\n          emailControl.setErrors({ invalid: true });\n        }\n      });\n  }\n}\n","import { Component, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n  selector: 'app-personal-data-form',\n  templateUrl: './personal-data-form.component.html'\n})\nexport class PersonalDataFormComponent {\n  @Input() form: FormGroup;\n  @Input() isResponsible = false;\n  @Input() showAlertMsg = true;\n}\n","export default \"<!--Dados de Identificação ou Responsável-->\\n<fieldset class=\\\"w-100 mb-2\\\" [formGroup]=\\\"form\\\" theme>\\n  <legend *ngIf=\\\"!isResponsible\\\">\\n    Dados de Identificação <span class=\\\"mandatory\\\">*</span> (dados mínimos obrigatórios)\\n  </legend>\\n  <legend *ngIf=\\\"isResponsible\\\">\\n    Dados do Responsável <span class=\\\"mandatory\\\">*</span> (dados mínimos obrigatórios)\\n  </legend>\\n  <ng-container *ngIf=\\\"showAlertMsg\\\">\\n    <nz-alert\\n      *ngIf=\\\"!isResponsible\\\"\\n      class=\\\"mb-4\\\"\\n      nzType=\\\"warning\\\"\\n      nzMessage=\\\"Ao preencher estes dados, você será capaz de emitir Receitas Simples, Receita de Antibióticos, Atestados, Pedidos de Exames, Laudos, Relatórios, Orientações e Recibos.\\\"\\n    ></nz-alert>\\n    <nz-alert\\n      *ngIf=\\\"isResponsible\\\"\\n      class=\\\"mb-4\\\"\\n      nzType=\\\"warning\\\"\\n      nzMessage=\\\"Obrigatório cadastrar um responsável para pacientes menores de idade.\\\"\\n    ></nz-alert>\\n  </ng-container>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-4 col-md-4 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"cpf\\\">CPF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            id=\\\"cpf\\\"\\n            formControlName=\\\"cpf\\\"\\n            placeholder=\\\"000.000.000-00\\\"\\n            mask=\\\"000.000.000-00\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-4 col-md-4 col-sm-12\\\">\\n      <nz-form-item *ngIf=\\\"form.get('dateOfBirth') as ctrl\\\">\\n        <nz-form-label nzFor=\\\"dateOfBirth\\\"\\n          >Data de nascimento<span class=\\\"mandatory\\\"> *</span>\\n        </nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            id=\\\"dateOfBirth\\\"\\n            type=\\\"date\\\"\\n            formControlName=\\\"dateOfBirth\\\"\\n            placeholder=\\\"DD/MM/AAAA\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-4 col-md-4 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"sex\\\">Sexo<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n            <option value=\\\"M\\\">Masculino</option>\\n            <option value=\\\"F\\\">Feminino</option>\\n          </select>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-6 col-md-4 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"fullname\\\">Nome completo<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            formControlName=\\\"fullname\\\"\\n            id=\\\"fullname\\\"\\n            nz-input\\n            placeholder=\\\"ex: João Gilberto\\\"\\n            maxlength=\\\"128\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-6 col-md-4 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"name\\\"\\n          >Nome de exibição/social<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            formControlName=\\\"name\\\"\\n            id=\\\"name\\\"\\n            nz-input\\n            placeholder=\\\"ex: João Gilberto\\\"\\n            maxlength=\\\"128\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-6 col-md-4 col-sm-12\\\" [formGroup]=\\\"form.get('membership')\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"mothersName\\\">Nome da mãe</nz-form-label>\\n\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            formControlName=\\\"mothersName\\\"\\n            id=\\\"mothersName\\\"\\n            nz-input\\n            maxlength=\\\"128\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n</fieldset>\\n\";","export default \"<fieldset class=\\\"w-100 mb-2\\\" [formGroup]=\\\"form\\\" theme>\\n  <legend>Paciente Pet</legend>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"nome\\\">Nome do Pet<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            placeholder=\\\"ex: Rex\\\"\\n            formControlName=\\\"name\\\"\\n            id=\\\"nome\\\"\\n            maxlength=\\\"128\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n          <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\n              Campo obrigatório, por favor digite o nome e sobrenome.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"!form.get('name').hasError('required') && form.get('name').hasError('nome')\\\"\\n            >\\n              Por favor digite o nome e sobrenome.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"species\\\">Espécie<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select\\n            id=\\\"species\\\"\\n            nz-input\\n            formControlName=\\\"species\\\"\\n            class=\\\"capitalize\\\"\\n            (change)=\\\"setSpecies($event.target.value)\\\"\\n          >\\n            <option value=\\\"\\\" selected>Selecionar</option>\\n            <option *ngFor=\\\"let spec of species\\\" [value]=\\\"spec.title\\\">{{ spec.title }}</option>\\n          </select>\\n          <nz-form-explain *ngIf=\\\"form.get('species').dirty && form.get('species').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('species').hasError('required')\\\">\\n              Campo obrigatório, por favor selecione a espécie.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"race\\\">Raça <span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select\\n            nz-input\\n            id=\\\"race\\\"\\n            formControlName=\\\"race\\\"\\n            class=\\\"capitalize\\\"\\n            *ngIf=\\\"races?.length > 0; else raceInput\\\"\\n          >\\n            <option value=\\\"\\\" selected>Selecionar</option>\\n            <option *ngFor=\\\"let race of races\\\" [value]=\\\"race.title\\\">{{ race.title }}</option>\\n          </select>\\n          <ng-template #raceInput>\\n            <input nz-input id=\\\"race\\\" formControlName=\\\"race\\\" autocomplete=\\\"disabled\\\" />\\n          </ng-template>\\n          <nz-form-explain *ngIf=\\\"form.get('race').dirty && form.get('race').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('race').hasError('required')\\\">\\n              Campo obrigatório, por favor selecione a raça.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"dateOfBirth\\\"\\n          >Data de nascimento <span class=\\\"mandatory\\\"> *</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            type=\\\"date\\\"\\n            formControlName=\\\"dateOfBirth\\\"\\n            placeholder=\\\"DD/MM/AAAA\\\"\\n            id=\\\"dateOfBirth\\\"\\n            [max]=\\\"currentDate\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"approximateAge\\\">{{ labelAge }}</nz-form-label>\\n        <nz-form-control>\\n          <input nz-input id=\\\"approximateAge\\\" formControlName=\\\"approximateAgeLabel\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n      <label\\n        nz-checkbox\\n        formControlName=\\\"isApproximateAge\\\"\\n        style=\\\"font-size: 16px; margin-bottom: 8px;\\\"\\n        (nzCheckedChange)=\\\"checkApproximateAge($event)\\\"\\n        >Idade aproximada</label\\n      >\\n    </div>\\n\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"sex\\\">Sexo <span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n            <option value=\\\"M\\\">Macho</option>\\n            <option value=\\\"F\\\">Fêmea</option>\\n          </select>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\" *ngIf=\\\"!isPatient && !isExternalRegister\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"fur\\\">Pelagem</nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select formControlName=\\\"fur\\\" id=\\\"fur\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n            <option *ngFor=\\\"let fur of furs\\\" [value]=\\\"fur.title\\\" class=\\\"capitalize\\\">{{\\n              fur.title | capitalize\\n            }}</option>\\n          </select>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row mt-2 mb-2\\\" *ngIf=\\\"isPatient\\\">\\n    <div class=\\\"col-md\\\">\\n      <nz-form-label nzFor=\\\"weight\\\">Informação de preenchimento pelo profissional</nz-form-label>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\" *ngIf=\\\"!isPatient && !isExternalRegister\\\">\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"weight\\\">Peso (kg)</nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            type=\\\"number\\\"\\n            formControlName=\\\"weight\\\"\\n            placeholder=\\\"0.0\\\"\\n            id=\\\"weight\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n\\n          <nz-form-explain *ngIf=\\\"form.get('weight').dirty && form.get('weight').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('weight').hasError('required')\\\">\\n              Campo obrigatório, por favor digite data de nascimento.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"!form.get('weight').hasError('required') && form.get('weight').hasError('weight')\\\"\\n            >\\n              Nome inválido.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"castration\\\">Castração</nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select formControlName=\\\"castration\\\" id=\\\"castration\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n            <option [ngValue]=\\\"true\\\">Sim</option>\\n            <option [ngValue]=\\\"false\\\">Não</option>\\n          </select>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"temperament\\\">Temperamento</nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select formControlName=\\\"temperament\\\" id=\\\"temperament\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n            <option value=\\\"aggressive\\\">Agressivo</option>\\n            <option value=\\\"fearful\\\">Medroso</option>\\n            <option value=\\\"dominant\\\">Dominante</option>\\n            <option value=\\\"hyperactive\\\">Hiperativo</option>\\n            <option value=\\\"alert\\\">Alerta</option>\\n            <option value=\\\"docile\\\">Dócil</option>\\n          </select>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"microchipNumber\\\">Nº do Microchip</nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            formControlName=\\\"microchipNumber\\\"\\n            id=\\\"microchipNumber\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n</fieldset>\\n\";","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { CoreService } from '@app/core/services/core.service';\nimport { PetPatientService } from '@app/modules/patients/services/pet-patient.service';\nimport { DateUtils } from '@app/shared/data/DateUtils';\nimport { Furs } from '@app/shared/data/Fur';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { Fur } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { Race } from '@app/shared/models/races';\nimport { Species } from '@app/shared/models/species';\nimport { UserType } from '@app/shared/models/user-type.enum';\nimport moment from 'moment';\n\n@Component({\n  selector: 'app-pet-data-form',\n  templateUrl: './pet-data-form.component.html',\n  styleUrls: ['./pet-data-form.component.scss']\n})\nexport class PetDataFormComponent implements OnInit {\n  @Input() form: FormGroup;\n\n  species: Species[];\n  races: Race[];\n  furs: Fur[] = Furs;\n\n  labelAge = 'Idade';\n  isPatient = false;\n  isMobile = false;\n  isExternalRegister = false;\n\n  constructor(\n    private petPatientService: PetPatientService,\n    private authService: AuthService,\n    private coreService: CoreService,\n    private router: Router\n  ) {\n    this.onResize();\n    this.isExternalRegister = this.router.url === '/entry/register/patient';\n  }\n  @nativeAsync\n  async ngOnInit() {\n    this.form.get('race').setValidators([Validators.required]);\n    this.form.get('dateOfBirth').setValidators([Validators.required]);\n    this.form.get('sex').setValidators([Validators.required]);\n\n    this.species = await this.petPatientService.getSpecies().toPromise();\n\n    this.form.get('dateOfBirth').valueChanges.subscribe(dateOfBirth => {\n      if (dateOfBirth) {\n        const diffBetweenDate = DateUtils.diffBetweenDate(new Date(), dateOfBirth);\n\n        this.form.get('approximateAgeLabel').setValue(diffBetweenDate.result);\n      }\n    });\n\n    this.isPatient = this.isExternalRegister || this.user.userType === UserType.PATIENT;\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    this.isMobile = this.coreService.isViewPortMobile();\n  }\n\n  get cpf() {\n    return this.form.get('responsible.cpf');\n  }\n\n  get currentDate() {\n    return moment().format('YYYY-MM-DD');\n  }\n  @nativeAsync\n  async setSpecies(title: any) {\n    const species = this.species.find(s => s.title === title);\n    await this.getRaces(species._id);\n  }\n  @nativeAsync\n  async getRaces(speciesId: string) {\n    this.form.get('race').setValue('');\n    this.races = await this.petPatientService.getRaces(speciesId).toPromise();\n  }\n\n  checkApproximateAge(value: boolean) {\n    if (value) {\n      this.labelAge = 'Idade Aproximada';\n    } else {\n      this.labelAge = 'Idade';\n    }\n  }\n}\n","export default \".capitalize {\\n  text-transform: capitalize;\\n}\";","export default \"<fieldset class=\\\"w-100 mb-2\\\" [formGroup]=\\\"form\\\" theme>\\n  <legend>Paciente Menor de Idade</legend>\\n\\n  <nz-alert\\n    class=\\\"mb-4\\\"\\n    nzType=\\\"warning\\\"\\n    nzMessage=\\\"Ao preencher estes dados, você será capaz de emitir Receitas Simples, Receita de Antibióticos, Atestados, Pedidos de Exames, Laudos, Relatórios, Orientações e Recibos.\\\"\\n  ></nz-alert>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-2 col-md-2 col-sm-12\\\" *ngIf=\\\"!isResponsible\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"cpf\\\">CPF <span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            id=\\\"cpf\\\"\\n            formControlName=\\\"cpf\\\"\\n            placeholder=\\\"000.000.000-00\\\"\\n            mask=\\\"000.000.000-00\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div [ngClass]=\\\"!isResponsible ? 'col-lg-5 col-md-5 col-sm-12' : 'col-lg-6 col-md-6 col-sm-12'\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"nome\\\">Nome completo<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            placeholder=\\\"ex: João Gilberto\\\"\\n            formControlName=\\\"fullname\\\"\\n            id=\\\"nome\\\"\\n            maxlength=\\\"128\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n          <nz-form-explain *ngIf=\\\"form.get('fullname').dirty && form.get('fullname').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('fullname').hasError('required')\\\">\\n              Campo obrigatório, por favor digite o nome e sobrenome.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"!form.get('fullname').hasError('required') && form.get('fullname').hasError('nome')\\\"\\n            >\\n              Por favor digite o nome e sobrenome.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div [ngClass]=\\\"!isResponsible ? 'col-lg-5 col-md-5 col-sm-12' : 'col-lg-6 col-md-6 col-sm-12'\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"name\\\">Nome de exibição/social</nz-form-label>\\n        <nz-form-control>\\n          <input nz-input formControlName=\\\"name\\\" id=\\\"name\\\" maxlength=\\\"128\\\" autocomplete=\\\"disabled\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"dateOfBirth\\\"\\n          >Data de nascimento<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n        >\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            type=\\\"date\\\"\\n            formControlName=\\\"dateOfBirth\\\"\\n            placeholder=\\\"DD/MM/AAAA\\\"\\n            id=\\\"dateOfBirth\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n\\n          <nz-form-explain *ngIf=\\\"form.get('dateOfBirth').dirty && form.get('dateOfBirth').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('dateOfBirth').hasError('required')\\\">\\n              Campo obrigatório, por favor digite data de nascimento.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"\\n                !form.get('dateOfBirth').hasError('required') &&\\n                form.get('dateOfBirth').hasError('dateOfBirth')\\n              \\\"\\n            >\\n              Nome inválido.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"\\n                !form.get('dateOfBirth').hasError('required') &&\\n                form.get('dateOfBirth').hasError('isNotMinor')\\n              \\\"\\n            >\\n              Dependente deve ser menor de idade.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"col-lg-3 col-md-3 col-sm-12\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"sex\\\">Sexo<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n            <option value=\\\"M\\\">Masculino</option>\\n            <option value=\\\"F\\\">Feminino</option>\\n          </select>\\n          <nz-form-explain *ngIf=\\\"form.get('sex').dirty && form.get('sex').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('sex').hasError('required')\\\">\\n              Campo obrigatório, por favor selecione o sexo.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\" *ngIf=\\\"form.get('membership') as membership\\\">\\n      <nz-form-item [formGroup]=\\\"membership\\\">\\n        <nz-form-label nzFor=\\\"mothersName\\\">Nome da mãe</nz-form-label>\\n\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            placeholder=\\\"Digite o nome da mãe\\\"\\n            formControlName=\\\"mothersName\\\"\\n            id=\\\"mothersName\\\"\\n            maxlength=\\\"128\\\"\\n            autocomplete=\\\"disabled\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row mb-3 mt-3 align-items-center\\\" *ngIf=\\\"!isResponsible && consulted\\\">\\n    <div class=\\\"col-12\\\">\\n      <button class=\\\"ok-btn btn-cancel\\\" nz-button (click)=\\\"changedNewRepnsible()\\\">\\n        Alterar Responsável\\n      </button>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"row mb-3\\\" *ngIf=\\\"!isResponsible && !consulted\\\">\\n    <div class=\\\"col 12\\\">\\n      <nz-divider nzOrientation=\\\"horizontal\\\"></nz-divider>\\n    </div>\\n    <div class=\\\"col-12\\\" [formGroup]=\\\"form.get('responsible')\\\">\\n      <nz-form-item>\\n        <nz-form-label nzFor=\\\"cpfResponsible\\\"\\n          >CPF do responsável <span class=\\\"mandatory\\\">*</span></nz-form-label\\n        >\\n        <div class=\\\"row align-items-center\\\">\\n          <div class=\\\"col-5\\\">\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                id=\\\"cpfResponsible\\\"\\n                placeholder=\\\"Digite o CPF\\\"\\n                mask=\\\"000.000.000-00\\\"\\n                formControlName=\\\"cpf\\\"\\n                autocomplete=\\\"disabled\\\"\\n              />\\n            </nz-form-control>\\n          </div>\\n          <button\\n            nz-button\\n            class=\\\"btn-primary\\\"\\n            (click)=\\\"searchCpf()\\\"\\n            [disabled]=\\\"loading || cpf.invalid || (cpf.errors && cpf.hasError('cpf'))\\\"\\n          >\\n            <span *ngIf=\\\"!loading\\\">OK</span>\\n            <span\\n              class=\\\"spinner-border spinner-border-sm\\\"\\n              role=\\\"status\\\"\\n              aria-hidden=\\\"true\\\"\\n              *ngIf=\\\"loading\\\"\\n            ></span>\\n          </button>\\n        </div>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n</fieldset>\\n\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BigboostService } from '@app/shared/services/bigboost.service';\n\n@Component({\n  selector: 'app-underage-data-form',\n  templateUrl: './underage-data-form.component.html'\n})\nexport class UnderageDataFormComponent implements OnInit {\n  @Input() isResponsible = false;\n  @Input() form: FormGroup;\n\n  @Output() patchFormEvent = new EventEmitter<any>();\n  @Output() changeConsultResponsibleEvent = new EventEmitter<boolean>();\n\n  loading = false;\n  consulted = false;\n\n  constructor(\n    private authService: AuthService,\n    private patientService: PatientsService,\n    private healthProfessionalService: HealthProfessionalService,\n    private bigboostService: BigboostService,\n    private notification: AppToastService\n  ) {}\n\n  ngOnInit() {}\n\n  get cpf() {\n    return this.form.get('responsible.cpf');\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  @nativeAsync\n  async searchCpf() {\n    try {\n      const cpf = this.cpf.value;\n\n      this.loading = true;\n      const patient = await this.getPatient(cpf);\n\n      if (patient) {\n        this.consulted = true;\n        this.patchFormEvent.emit({\n          patientExists: true,\n          data: patient\n        });\n      } else {\n        const consult = await this.consultCpf(cpf);\n        if (consult.status === 1) {\n          this.consulted = true;\n          this.patchFormEvent.emit({\n            patientExists: false,\n            data: consult\n          });\n        } else {\n          this.patchFormEvent.emit(null);\n          this.notification.notify(\n            'warning',\n            'Responsável não encontrado.',\n            'CPF informado não foi encontrado em nossas bases de consulta'\n          );\n        }\n      }\n    } catch (err) {\n      console.error(err);\n    } finally {\n      this.loading = false;\n    }\n  }\n  @nativeAsync\n  private async getPatient(cpf: string) {\n    try {\n      const hasPatient = this.user ? await this.hasPatient(cpf) : null;\n      if (hasPatient) {\n        return hasPatient;\n      }\n      return await this.patientService.getPatientByCpf(cpf).toPromise();\n    } catch (err) {\n      return null;\n    }\n  }\n  @nativeAsync\n  private async hasPatient(cpf: string) {\n    const result = await this.healthProfessionalService\n      .getPatientsByUserId(cpf, this.user._id)\n      .toPromise();\n    return result.length ? result[0] : null;\n  }\n  @nativeAsync\n  private async consultCpf(cpf: string) {\n    try {\n      return await this.bigboostService.consultCpf(cpf).toPromise();\n    } catch (err) {\n      console.error(err);\n      const consult = {\n        status: -1,\n        cpf,\n        erroCodigo: err.status,\n        erro: 'A importação de dados do cpf está com instabilidade'\n      };\n      return consult;\n    }\n  }\n\n  changedNewRepnsible() {\n    this.consulted = false;\n    this.changeConsultResponsibleEvent.emit(false);\n    this.cpf.reset();\n    this.cpf.enable();\n  }\n}\n","export default \"<div class=\\\"input\\\">\\r\\n  <button nz-button (click)=\\\"openChooseFile()\\\"><i nz-icon nzType=\\\"upload\\\"></i>{{ textButton }}</button>\\r\\n  <span>{{ filename || placeholder }}</span>\\r\\n  <input #38fn57dfjek3 id=\\\"38fn57dfjek3\\\" type=\\\"file\\\" [accept]=\\\"accept\\\" (change)=\\\"onChange($event)\\\" />\\r\\n</div>\\r\\n\";","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\n\r\n@Component({\r\n  selector: 'app-input-file',\r\n  templateUrl: './input-file.component.html',\r\n  styleUrls: ['./input-file.component.scss'],\r\n  providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputFileComponent, multi: true }]\r\n})\r\nexport class InputFileComponent implements OnInit, ControlValueAccessor {\r\n  @Input() accept = '';\r\n  @Input() textButton = '';\r\n  @Input() transformTo = '';\r\n  @Input() maxSize: number = null;\r\n  @Input() placeholder = 'Arquivo não selecionado';\r\n\r\n  @Input()\r\n  set file(file: any) {\r\n    if (file) {\r\n      this.form.get('file').setValue(file);\r\n    }\r\n  }\r\n\r\n  @Input() filename = '';\r\n  @Output() filenameChange = new EventEmitter<string>();\r\n\r\n  form: FormGroup = new FormGroup({\r\n    file: new FormControl('')\r\n  });\r\n\r\n  @ViewChild('38fn57dfjek3')\r\n  input: ElementRef;\r\n\r\n  constructor(private notification: AppToastService) {}\r\n\r\n  ngOnInit() {}\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.form.valueChanges.subscribe(value => fn(value.file));\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {}\r\n\r\n  setDisabledState(isDisabled: boolean): void {}\r\n\r\n  writeValue(value: any): void {\r\n    if (value) {\r\n      this.form.setValue({ file: value });\r\n    } else {\r\n      this.reset();\r\n      this.filename = '';\r\n    }\r\n  }\r\n\r\n  reset() {\r\n    if (this.input) {\r\n      this.input.nativeElement['value'] = null;\r\n    }\r\n  }\r\n\r\n  public onChange(event) {\r\n    const files = event.target.files;\r\n    if (files.length === 0) {\r\n      return;\r\n    }\r\n\r\n    const file = files[0];\r\n    this.filename = file.name;\r\n\r\n    if (this.accept != null) {\r\n      const accepts = this.accept.split(',');\r\n      const result = accepts.filter(accept => new RegExp(accept.replace('*', '.*')).test(file.type));\r\n      if (result.length === 0) {\r\n        this.notification.notify(\r\n          'warning',\r\n          'Aviso',\r\n          `Somente arquivo com extensão ${this.accept} é permitido`\r\n        );\r\n        this.filename = '';\r\n        this.placeholder = '';\r\n        return false;\r\n      }\r\n    }\r\n\r\n    if (this.maxSize != null && file.size > this.maxSize) {\r\n      this.notification.notify(\r\n        'warning',\r\n        'Aviso',\r\n        `O arquivo não pode ser maior que ${this.maxSize} bytes`\r\n      );\r\n      return false;\r\n    }\r\n\r\n    if (this.transformTo) {\r\n      const reader = new FileReader();\r\n      reader.onload = e => this.form.setValue({ file: reader.result });\r\n      switch (this.transformTo) {\r\n        case 'base64':\r\n          reader.readAsDataURL(file);\r\n          break;\r\n        default:\r\n          reader.readAsText(file);\r\n      }\r\n    } else {\r\n      this.form.setValue({ file });\r\n    }\r\n\r\n    this.filenameChange.emit(this.filename);\r\n  }\r\n\r\n  openChooseFile() {\r\n    this.input.nativeElement.click();\r\n  }\r\n}\r\n","export default \".input input {\\n  display: none;\\n}\\n\\n.input span {\\n  padding-left: 15px;\\n}\\n\\n#filename {\\n  display: block;\\n}\";","export default \"<nz-input-group nzPrefixIcon=\\\"lock\\\" [nzSuffix]=\\\"suffixTemplate\\\" nzSize=\\\"large\\\">\\n  <input\\n    nz-input\\n    [type]=\\\"isPasswordVisible ? 'text' : 'password'\\\"\\n    [placeholder]=\\\"placeholder\\\"\\n    [formControlName]=\\\"formControlName\\\"\\n    [attr.id]=\\\"formControlName\\\"\\n    theme\\n  />\\n</nz-input-group>\\n<ng-template #suffixTemplate>\\n  <i\\n    nz-icon\\n    [nzType]=\\\"isPasswordVisible ? 'eye-invisible' : 'eye'\\\"\\n    (click)=\\\"isPasswordVisible = !isPasswordVisible\\\"\\n  ></i>\\n</ng-template>\\n\";","import { Component, Input, forwardRef } from '@angular/core';\nimport {\n  ControlContainer,\n  FormGroupDirective,\n  NG_VALUE_ACCESSOR,\n  ControlValueAccessor\n} from '@angular/forms';\n\n@Component({\n  selector: 'app-input-password',\n  templateUrl: './input-password.component.html',\n  styleUrls: ['./input-password.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      multi: true,\n      useExisting: forwardRef(() => InputPasswordComponent)\n    }\n  ],\n  viewProviders: [\n    {\n      provide: ControlContainer,\n      useExisting: FormGroupDirective\n    }\n  ]\n})\nexport class InputPasswordComponent implements ControlValueAccessor {\n  @Input() formControlName: string;\n  @Input() placeholder: string;\n  @Input() isPasswordVisible = false;\n\n  constructor() {}\n\n  writeValue(value: any): void {}\n  registerOnChange(fn: any): void {}\n  registerOnTouched(fn: any): void {}\n  setDisabledState?(isDisabled: boolean): void {}\n}\n","export default \"\";","export default \"<input\\n  [nzAutocomplete]=\\\"autoMedication\\\"\\n  appFocus\\n  focus=\\\"true\\\"\\n  placeholder=\\\"Nome do medicamento ou princípio ativo\\\"\\n  class=\\\"medicationNameInput\\\"\\n  [formControl]=\\\"inputSearch\\\"\\n  nz-input\\n/>\\n<nz-autocomplete\\n  #autoMedication\\n  class=\\\"medicationAutoComplete\\\"\\n  nzBackfill\\n  (selectionChange)=\\\"selectEvent($event.nzValue)\\\"\\n>\\n  <nz-auto-option *ngIf=\\\"isLoading\\\" class=\\\"loading-container\\\">\\n    <span>Carregando...</span>\\n  </nz-auto-option>\\n  <ng-container *ngIf=\\\"!isLoading && medicaments?.length > 0\\\">\\n    <nz-auto-option *ngFor=\\\"let option of medicaments\\\" [nzLabel]=\\\"option.nome\\\" [nzValue]=\\\"option\\\">\\n      <span>{{ option?.nome }}</span>\\n      <span id=\\\"indexPresentation\\\">, &nbsp;{{ option.apresentacaoCustomizada }}</span>\\n      <span *ngIf=\\\"option?.tipo\\\">, &nbsp;{{ option?.tipo }}</span>\\n    </nz-auto-option>\\n  </ng-container>\\n</nz-autocomplete>\\n\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { CrService } from '@app/modules/document/services/cr.service';\nimport { MedicationCr } from '@app/shared/models/medication-cr';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { debounceTime, distinctUntilChanged, filter, switchMap, tap } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-input-search-medicaments',\n  templateUrl: './input-search-medicaments.component.html',\n  styleUrls: ['./input-search-medicaments.component.scss']\n})\nexport class InputSearchMedicamentsComponent implements OnInit {\n  @Output() onMedicamentSelected = new EventEmitter<MedicationCr>();\n\n  @Input() set valueInputSearch(value: string) {\n    this.inputSearch.setValue(value);\n  }\n\n  isLoading = false;\n  medicaments: MedicationCr[] = [];\n  inputSearch = new FormControl();\n\n  medicamentSelected: MedicationCr;\n\n  constructor(private crService: CrService, private notification: AppToastService) {}\n\n  ngOnInit(): void {\n    this.inputSearch.valueChanges\n      .pipe(\n        filter((text: string) => text && text.length >= 3),\n        tap(() => {\n          this.isLoading = true;\n          this.medicaments = [];\n        }),\n        debounceTime(300),\n        distinctUntilChanged(),\n        switchMap(text => this.crService.searchMedicament(text))\n      )\n      .subscribe(medicaments => {\n        if (medicaments.length > 0) {\n          this.medicaments = medicaments;\n        } else {\n          this.notification.notify(\n            'warning',\n            'Não foi encontrado medicamento com nome ou princípio ativo informado!',\n            ''\n          );\n        }\n\n        this.isLoading = false;\n      });\n  }\n\n  selectEvent(medication: MedicationCr) {\n    if (medication) {\n      this.medicamentSelected = medication;\n      this.onMedicamentSelected.next(medication);\n    }\n  }\n}\n","export default \".medicationNameInput {\\n  background-color: transparent;\\n  border-color: transparent;\\n  padding: 0;\\n  color: #585858 !important;\\n  font-size: 20px;\\n  height: 40px;\\n  border-radius: 0;\\n  border-bottom: 2px solid #6e6e6e;\\n}\\n.medicationNameInput::-moz-placeholder {\\n  color: #f6b4af;\\n}\\n.medicationNameInput::placeholder, .medicationNameInput {\\n  color: #f6b4af;\\n}\\n@media (max-width: 1025px) {\\n  .medicationNameInput {\\n    font-size: 15px;\\n  }\\n}\\n.medicationNameInput:hover, .medicationNameInput:focus {\\n  border-bottom: 2px solid #6e6e6e;\\n  box-shadow: none;\\n}\\n.loading-container {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  background-color: #fff;\\n}\\n.loading-container span {\\n  font-size: 16px;\\n}\";","import { AfterViewInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ColorSetting } from '@app/shared/models/color-setting';\n\n@Component({\n  selector: 'app-medicament-form',\n  templateUrl: './medicament-form.component.html',\n  styleUrls: ['./medicament-form.component.scss']\n})\nexport class MedicamentFormComponent implements AfterViewInit {\n  @Input() index: number;\n  @Input() form: FormGroup;\n  @Input() signed = false;\n  @Input() colorSetting: ColorSetting;\n\n  @Output() onDelete = new EventEmitter<number>();\n  @Output() onSelect = new EventEmitter<any>();\n\n  unitsOfMeasurement = [\n    { label: 'Embalagem(ns)', value: 'PACKING' },\n    { label: 'Caixa(s)', value: 'BOX' },\n    { label: 'Frasco(s)', value: 'BOTTLE' },\n    { label: 'Cápsula(s)', value: 'CAPSULE' },\n    { label: 'Comprimido(s)', value: 'PILL' },\n    { label: 'Glóbulo(s)', value: 'BLOOD_CELL' },\n    { label: 'Sachê(s)', value: 'SACHET' },\n    { label: 'Bisnaga(s)', value: 'TUBE' },\n    { label: 'Ampola(s)', value: 'AMPOULE' },\n    { label: 'Flaconete(s)', value: 'VIAL' },\n    { label: 'ML(s)', value: 'ML' },\n    { label: 'MG(s)', value: 'MG' },\n    { label: 'UI(s)', value: 'UI' }\n  ];\n\n  ngAfterViewInit(): void {\n    if (this.signed) {\n      this.form.disable();\n    }\n  }\n\n  minusPrescribedQuantity() {\n    const value = this.form.get('prescribedQuantity').value;\n    if (value > 1) {\n      this.form.get('prescribedQuantity').setValue(value - 1);\n    }\n  }\n\n  plusPrescribedQuantity() {\n    const value = this.form.get('prescribedQuantity').value;\n    this.form.get('prescribedQuantity').setValue(value + 1);\n  }\n\n  onEditing() {\n    this.form.get('editing').setValue(true);\n  }\n\n  cancelEditing() {\n    this.form.get('editing').setValue(false);\n  }\n}\n","export default \"<form [formGroup]=\\\"form\\\" class=\\\"card p-2 mb-2 h-100\\\">\\n  <ng-container *ngIf=\\\"form.value as medicament\\\">\\n    <div class=\\\"header-medicament\\\">\\n      <ng-container *ngIf=\\\"medicament.type === 'industrialized'\\\">\\n        <ng-container *ngIf=\\\"medicament.search || medicament.editing\\\">\\n          <div class=\\\"input-search\\\">\\n            <app-input-search-medicaments\\n              (onMedicamentSelected)=\\\"onSelect.emit($event)\\\"\\n            ></app-input-search-medicaments>\\n          </div>\\n        </ng-container>\\n        <ng-container *ngIf=\\\"!medicament.search && !medicament.editing\\\">\\n          <span class=\\\"title\\\" [ngStyle]=\\\"{ color: colorSetting?.primary }\\\"\\n            >{{ index + 1 }}. {{ medicament.name }}</span\\n          >\\n        </ng-container>\\n      </ng-container>\\n      <ng-container *ngIf=\\\"medicament.type === 'free-text'\\\">\\n        <div class=\\\"input-name\\\">\\n          <span>{{ index + 1 }}.</span>\\n          <textarea\\n            [id]=\\\"'input-name_' + index\\\"\\n            appAutoSize\\n            [nzAutosize]=\\\"{ minRows: 1 }\\\"\\n            appFocus\\n            focus=\\\"true\\\"\\n            formControlName=\\\"name\\\"\\n            nz-input\\n            placeholder=\\\"Digite o nome do medicamento\\\"\\n          ></textarea>\\n        </div>\\n      </ng-container>\\n      <div class=\\\"actions\\\">\\n        <i\\n          *ngIf=\\\"!medicament.search && medicament.editing && medicament.type === 'industrialized'\\\"\\n          (click)=\\\"cancelEditing()\\\"\\n          nz-icon\\n          nzType=\\\"close\\\"\\n          nzTheme=\\\"outline\\\"\\n          class=\\\"mr-2\\\"\\n          nzTooltipTitle=\\\"Cancelar\\\"\\n          nzTooltipPlacement=\\\"top\\\"\\n          nz-tooltip\\n        ></i>\\n        <i\\n          class=\\\"fa fa-pen\\\"\\n          (click)=\\\"onEditing()\\\"\\n          *ngIf=\\\"!medicament.search && !medicament.editing && medicament.type === 'industrialized'\\\"\\n          nzTooltipTitle=\\\"Editar\\\"\\n          nzTooltipPlacement=\\\"top\\\"\\n          nz-tooltip\\n        ></i>\\n        <i\\n          class=\\\"fa fa-trash-solid\\\"\\n          (click)=\\\"onDelete.emit(index)\\\"\\n          nzTooltipTitle=\\\"Excluir\\\"\\n          nzTooltipPlacement=\\\"top\\\"\\n          nz-tooltip\\n        ></i>\\n      </div>\\n    </div>\\n    <div class=\\\"body-medicament\\\" *ngIf=\\\"!medicament.search || medicament.editing\\\">\\n      <h2 class=\\\"body-medicament-description\\\" *ngIf=\\\"medicament.principle || medicament.description\\\">\\n        {{ medicament.principle }}\\n        <span *ngIf=\\\"medicament.principle && medicament.description\\\"> - </span\\n        >{{ medicament.description }}\\n      </h2>\\n\\n      <textarea\\n        [id]=\\\"'input-dosage_' + i\\\"\\n        appAutoSize\\n        [nzAutosize]=\\\"{ minRows: 1 }\\\"\\n        appFocus\\n        focus=\\\"true\\\"\\n        formControlName=\\\"dosage\\\"\\n        nz-input\\n        placeholder=\\\"Escreva aqui a posologia...\\\"\\n      ></textarea>\\n    </div>\\n    <div class=\\\"footer-medicament\\\" *ngIf=\\\"!medicament.search || medicament.editing\\\">\\n      <div>\\n        <label>Quantidade</label>\\n        <div class=\\\"number\\\">\\n          <span\\n            class=\\\"minus\\\"\\n            (click)=\\\"minusPrescribedQuantity()\\\"\\n            [ngStyle]=\\\"{ 'background-color': colorSetting?.primary }\\\"\\n          >\\n            <i class=\\\"fa-solid fa-minus\\\"></i>\\n          </span>\\n          <input formControlName=\\\"prescribedQuantity\\\" type=\\\"number\\\" />\\n          <span\\n            class=\\\"plus\\\"\\n            (click)=\\\"plusPrescribedQuantity()\\\"\\n            [ngStyle]=\\\"{ 'background-color': colorSetting?.primary }\\\"\\n          >\\n            <i class=\\\"fa-solid fa-plus\\\"></i>\\n          </span>\\n        </div>\\n      </div>\\n      <div class=\\\"footer-embalagens\\\">\\n        <select\\n          formControlName=\\\"unitOfMeasurement\\\"\\n          [ngClass]=\\\"{ disabled: medicament.type === 'industrialized' }\\\"\\n        >\\n          <option *ngFor=\\\"let item of unitsOfMeasurement\\\" [value]=\\\"item.value\\\">{{ item.label }}</option>\\n        </select>\\n      </div>\\n    </div>\\n  </ng-container>\\n</form>\\n\";","export default \".header-medicament {\\n  display: flex;\\n  align-items: flex-start;\\n  justify-content: space-between;\\n}\\n.header-medicament span {\\n  width: 30px;\\n}\\n.header-medicament .input-name {\\n  flex: 1;\\n  display: flex;\\n  align-items: flex-start;\\n  justify-content: space-between;\\n}\\n.header-medicament .input-search {\\n  flex: 1;\\n}\\n.header-medicament .title {\\n  flex: 1;\\n  font-size: 14px;\\n  font-weight: 700;\\n  color: var(--bg-color-primary);\\n}\\n.header-medicament .actions {\\n  display: flex !important;\\n  align-items: center !important;\\n  justify-content: flex-end !important;\\n  width: 100% !important;\\n  max-width: 55px !important;\\n  margin-left: 24px !important;\\n}\\n.header-medicament .actions i {\\n  margin-left: 5px !important;\\n}\\n.body-medicament {\\n  margin-top: 5px;\\n}\\n.body-medicament .body-medicament-description {\\n  font-family: \\\"prolight\\\", sans-serif;\\n  font-size: 13px;\\n  color: #4d4d4d;\\n  margin: 14px 0;\\n}\\n.footer-medicament {\\n  display: flex;\\n  align-items: flex-end;\\n  justify-content: flex-start;\\n}\\n.footer-medicament label {\\n  margin-left: 10px;\\n  margin-bottom: 0;\\n  font-weight: 600;\\n  font-size: 12px;\\n}\\n.footer-medicament span {\\n  cursor: pointer;\\n}\\n.footer-medicament .minus,\\n.footer-medicament .plus {\\n  width: 24px;\\n  height: 24px;\\n  background: #f2f2f2;\\n  padding: 8px 5px 8px 5px;\\n  display: inline-block;\\n  vertical-align: middle;\\n  text-align: center;\\n  position: relative;\\n  background-color: #0b6054;\\n  color: white;\\n}\\n.footer-medicament .minus i,\\n.footer-medicament .plus i {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n}\\n.footer-medicament .minus {\\n  border-radius: 4px 0 0 4px;\\n}\\n.footer-medicament .plus {\\n  border-radius: 0 4px 4px 0;\\n}\\n.footer-medicament input {\\n  height: 24px;\\n  width: 35px;\\n  text-align: center;\\n  font-size: 18px;\\n  border: 1px solid #ddd;\\n  display: inline-block;\\n  vertical-align: middle;\\n  font-weight: 600;\\n}\\n.footer-medicament .footer-embalagens {\\n  margin-left: 20px;\\n}\\ntextarea,\\ntextarea:disabled {\\n  resize: none;\\n  background-color: transparent;\\n  border-color: none;\\n  border: 0;\\n  box-shadow: none;\\n  padding: 0;\\n  font-weight: 600;\\n  font-size: 14px;\\n  color: #585858;\\n}\\ntextarea::-moz-placeholder, textarea:disabled::-moz-placeholder {\\n  color: #f6b4af;\\n}\\ntextarea::placeholder,\\ntextarea:disabled::placeholder {\\n  color: #f6b4af;\\n}\\ntextarea:hover, textarea:focus,\\ntextarea:disabled:hover,\\ntextarea:disabled:focus {\\n  background-color: transparent;\\n  border-color: transparent;\\n  box-shadow: none;\\n}\\ntextarea::-webkit-scrollbar,\\ntextarea:disabled::-webkit-scrollbar {\\n  width: 0;\\n}\\n.disabled {\\n  pointer-events: none;\\n  opacity: 0.4;\\n  -webkit-appearance: none;\\n  -moz-appearance: none;\\n  padding: 0 8px;\\n  height: 23px;\\n  text-indent: 1px;\\n}\";","export default \"<div class=\\\"toolbar\\\">\\r\\n  <button (click)=\\\"open()\\\" class=\\\"btn btn-menu menu-toggler\\\" type=\\\"button\\\" theme>\\r\\n    <i class=\\\"fa fa-subject\\\"></i>\\r\\n  </button>\\r\\n  <div class=\\\"toolbar-menu\\\">\\r\\n    <div class=\\\"toolbar-tags\\\"></div>\\r\\n  </div>\\r\\n</div>\\r\\n<nz-drawer\\r\\n  (nzOnClose)=\\\"close()\\\"\\r\\n  [nzClosable]=\\\"false\\\"\\r\\n  [nzVisible]=\\\"visible\\\"\\r\\n  [nzWidth]=\\\"326\\\"\\r\\n  nzPlacement=\\\"left\\\"\\r\\n  nzWrapClassName=\\\"menu-drawer\\\"\\r\\n  [ngSwitch]=\\\"user?.userType\\\"\\r\\n  theme\\r\\n>\\r\\n  <div class=\\\"inner-menu\\\">\\r\\n    <ul class=\\\"menu list-unstyled\\\">\\r\\n      <ng-container *ngSwitchCase=\\\"'admin'\\\">\\r\\n        <li>\\r\\n          <a (click)=\\\"changeRoute('')\\\">\\r\\n            <i class=\\\"fa fa-view-compact\\\"></i>\\r\\n            Visão geral\\r\\n          </a>\\r\\n        </li>\\r\\n\\r\\n        <li *ngIf=\\\"user.permission === Permission.MASTER\\\">\\r\\n          <a (click)=\\\"changeRoute('register')\\\" style=\\\"font-size: 17px;\\\">\\r\\n            <i class=\\\"fa fa-business\\\"></i>\\r\\n            Cadastrar Administrador\\r\\n          </a>\\r\\n        </li>\\r\\n\\r\\n        <li>\\r\\n          <a (click)=\\\"changeRoute('patients')\\\">\\r\\n            <i class=\\\"fa fa-user\\\"></i>\\r\\n            Pacientes\\r\\n          </a>\\r\\n          <ul>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('doctors')\\\"><a>Médicos</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('dentists')\\\"><a>Dentistas</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('pharmacies')\\\"><a>Farmácias</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('pharmacists')\\\"><a>Farmacêuticos</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('veterinarians')\\\"><a>Veterinários</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('pets')\\\"><a>Pets</a></li>\\r\\n          </ul>\\r\\n        </li>\\r\\n\\r\\n        <li *ngIf=\\\"user.permission === Permission.MASTER\\\">\\r\\n          <a (click)=\\\"changeRoute('prescribers')\\\" style=\\\"font-size: 16px;\\\">\\r\\n            <i class=\\\"fa fa-user\\\"></i>\\r\\n            Atividade dos Prescritores\\r\\n          </a>\\r\\n        </li>\\r\\n\\r\\n        <li>\\r\\n          <a (click)=\\\"changeRoute('prescriptions')\\\">\\r\\n            <i class=\\\"fa fa-file-medical\\\"></i>\\r\\n            Prescrições\\r\\n          </a>\\r\\n          <ul>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('attestations')\\\"><a>Atestados</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('exams')\\\"><a>Exames</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('orientations')\\\"><a>Outros documentos</a></li>\\r\\n            <li\\r\\n              class=\\\"subitem\\\"\\r\\n              (click)=\\\"changeRoute('retentions')\\\"\\r\\n              *ngIf=\\\"user.permission === Permission.MASTER\\\"\\r\\n            >\\r\\n              <a>Retenções</a>\\r\\n            </li>\\r\\n            <li\\r\\n              class=\\\"subitem\\\"\\r\\n              (click)=\\\"changeRoute('infusions')\\\"\\r\\n              *ngIf=\\\"user.permission === Permission.MASTER\\\"\\r\\n            >\\r\\n              <a>Infusões</a>\\r\\n            </li>\\r\\n          </ul>\\r\\n        </li>\\r\\n\\r\\n        <li *ngIf=\\\"user.permission === Permission.MASTER\\\">\\r\\n          <a (click)=\\\"changeRoute('specialties')\\\"><i class=\\\"fa fa-file-alt\\\"></i> Especialidades</a>\\r\\n          <ul>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('medicaments')\\\"><a>Medicamentos</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('additional-features')\\\">\\r\\n              <a style=\\\"font-size: 15px;\\\">Funcionalidades adicionais</a>\\r\\n            </li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('victa')\\\">\\r\\n              <a style=\\\"font-size: 16px;\\\">Sugestão de Protocolos</a>\\r\\n            </li>\\r\\n          </ul>\\r\\n        </li>\\r\\n\\r\\n        <li *ngIf=\\\"user.permission === Permission.MASTER\\\">\\r\\n          <a (click)=\\\"changeRoute('tags')\\\">\\r\\n            <i class=\\\"fa fa-notes-medical\\\"></i>\\r\\n            Prontuário\\r\\n          </a>\\r\\n          <ul>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('tags')\\\"><a>Tags</a></li>\\r\\n          </ul>\\r\\n        </li>\\r\\n\\r\\n        <li *ngIf=\\\"user.permission === Permission.MASTER\\\">\\r\\n          <a (click)=\\\"changeRoute('logs')\\\">\\r\\n            <i class=\\\"fa fa-list-ul\\\"></i>\\r\\n            QR Code Logs\\r\\n          </a>\\r\\n          <ul>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('logs')\\\"><a>Todos</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('logs', { groupBy: 'date' })\\\"><a>Por dia</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('logs', { groupBy: 'month' })\\\"><a>Por mês</a></li>\\r\\n            <li class=\\\"subitem\\\" (click)=\\\"changeRoute('logs', { groupBy: 'prescription' })\\\">\\r\\n              <a>Por prescrição</a>\\r\\n            </li>\\r\\n          </ul>\\r\\n        </li>\\r\\n\\r\\n        <li *ngIf=\\\"user.permission === Permission.MASTER\\\">\\r\\n          <a (click)=\\\"changeRoute('unsubscribe-user')\\\">\\r\\n            <i class=\\\"ml-1 mr-3\\\" nz-icon nzType=\\\"user-delete\\\" nzTheme=\\\"outline\\\"></i>\\r\\n            Remover usuário\\r\\n          </a>\\r\\n        </li>\\r\\n\\r\\n        <li *ngIf=\\\"user.permission === Permission.MASTER\\\">\\r\\n          <a (click)=\\\"changeRoute('domain-exams')\\\">\\r\\n            Importar exames\\r\\n          </a>\\r\\n        </li>\\r\\n\\r\\n        <li *ngIf=\\\"user.permission === Permission.MASTER\\\">\\r\\n          <a (click)=\\\"changeRoute('domain-serene')\\\">\\r\\n            Importar Protocolos Serene\\r\\n          </a>\\r\\n        </li>\\r\\n\\r\\n        <li *ngIf=\\\"user.permission === Permission.MASTER\\\">\\r\\n          <a (click)=\\\"changeRoute('domain-medicaments')\\\">\\r\\n            Importar Medicamentos\\r\\n          </a>\\r\\n        </li>\\r\\n      </ng-container>\\r\\n    </ul>\\r\\n  </div>\\r\\n  <div [ngStyle]=\\\"{ color: 'white' }\\\">\\r\\n    <span class=\\\"m-2\\\">F: {{ frontendVersion }}</span>\\r\\n    <span class=\\\"m-2\\\">B: {{ backendVersion$ | async }}</span>\\r\\n  </div>\\r\\n</nz-drawer>\\r\\n\";","import { DOCUMENT } from '@angular/common';\r\nimport { Component, Inject, OnInit, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '@app/core/services/auth.service';\r\nimport { CoreService } from '@app/core/services/core.service';\r\nimport { PharmacistService } from '@app/modules/pharmacist/services/pharmacist.service';\r\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\r\nimport { ModalSearchComponent } from '@app/shared/modals/modal-search/modal-search.component';\r\nimport { Permission } from '@app/shared/models/permission.enum';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'app-menu',\r\n  templateUrl: './menu.component.html',\r\n  styleUrls: ['./menu.component.scss', '../../../modules/document/document.component.scss']\r\n})\r\nexport class MenuComponent implements OnInit {\r\n  modalRef: BsModalRef;\r\n  visible = false;\r\n  userId: string;\r\n  userType: string;\r\n  user: any;\r\n  completeUser: any;\r\n  functionalities = [];\r\n  Permission = Permission;\r\n  backendVersion$: Observable<string>;\r\n\r\n  constructor(\r\n    @Inject(DOCUMENT) private document: Document,\r\n    private renderer: Renderer2,\r\n    private router: Router,\r\n    private modalService: BsModalService,\r\n    private coreService: CoreService,\r\n    private authService: AuthService,\r\n    private pharmacistService: PharmacistService\r\n  ) {\r\n    this.backendVersion$ = this.coreService.getBackendVersion();\r\n  }\r\n\r\n  @nativeAsync\r\n  async ngOnInit() {\r\n    this.user = this.authService.user();\r\n    this.userId = localStorage.getItem('userId');\r\n    this.userType = localStorage.getItem('userType');\r\n    await this.getCompleteUser(this.user);\r\n  }\r\n\r\n  @nativeAsync\r\n  private async getCompleteUser(user) {\r\n    if (user.userType === 'pharmacist') {\r\n      this.getPharmacistData();\r\n    }\r\n  }\r\n\r\n  @nativeAsync\r\n  async getPharmacistData() {\r\n    this.completeUser = await this.pharmacistService.getPharmacistByUserId(this.user._id).toPromise();\r\n  }\r\n\r\n  get frontendVersion(): string {\r\n    return this.coreService.frontendVersion;\r\n  }\r\n\r\n  open(): void {\r\n    this.visible = true;\r\n    setTimeout(() => {\r\n      this.renderer.setStyle(this.document.body, 'padding-right', '0px');\r\n    }, 1);\r\n  }\r\n\r\n  close(): void {\r\n    this.visible = false;\r\n  }\r\n\r\n  changeRoute(route: string, queryParams: any) {\r\n    this.router.navigate(['/admin', route], { queryParams });\r\n  }\r\n\r\n  openSearch() {\r\n    this.modalRef = this.modalService.show(ModalSearchComponent, {\r\n      backdrop: 'static',\r\n      keyboard: false\r\n    });\r\n  }\r\n\r\n  hasAccessToManipulatedFunctionality() {\r\n    return this.user && this.user.features.find(f => f.name === 'Manipulados');\r\n  }\r\n}\r\n","export default \".toolbar-tags {\\n  background-color: transparent !important;\\n}\\n\\na:hover {\\n  color: #5ce1c2 !important;\\n}\\n\\n.submenu {\\n  color: #ffffff;\\n}\\n\\n.inner-menu .menu a .fas {\\n  margin-right: 25px !important;\\n}\\n\\n.menu .list-unstyled {\\n  padding-top: 20px !important;\\n  padding-bottom: 20px !important;\\n}\\n\\n.subitem {\\n  padding: 0px !important;\\n}\\n\\nli {\\n  list-style-type: none;\\n}\";","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport DocumentUtil from '@app/modules/document-v2/utils/Document.util';\nimport { Patient } from '@app/shared/models';\n\n@Component({\n  selector: 'app-model-form-pre-preenchido',\n  templateUrl: './model-form-pre-preenchido.component.html',\n  styleUrls: ['./model-form-pre-preenchido.component.scss']\n})\nexport class ModelFormPrePreenchidoComponent implements OnInit {\n  @Input() patient: Patient;\n  @Input() form: FormGroup;\n  @Input() attestationDays: string = null;\n  @Input() typeOfActivity: string = null;\n\n  @Output() onClickRemove = new EventEmitter<void>();\n  @Output() formEmitter: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\n\n  attestationsDays = DocumentUtil.getAttestationsDays();\n  typesOfActivity = DocumentUtil.getTypesOfActivity();\n\n  constructor(private fb: FormBuilder) {}\n\n  ngOnInit(): void {\n    this.form.addControl('attestationDays', this.fb.control(this.attestationDays, Validators.required));\n    this.form.addControl('typeOfActivity', this.fb.control(this.typeOfActivity, Validators.required));\n    this.formEmitter.emit(this.form);\n  }\n\n  remove() {\n    this.form.removeControl('attestationDays');\n    this.form.removeControl('typeOfActivity');\n    this.onClickRemove.next();\n  }\n\n  get cpfFormatado() {\n    if (this.patient) {\n      return this.patient.cpf.replace(/(\\d{3})?(\\d{3})?(\\d{3})?(\\d{2})/, '$1.$2.$3-$4');\n    }\n    return '';\n  }\n}\n","export default \"<div class=\\\"card p-2 mb-2\\\" [formGroup]=\\\"form\\\">\\n  <div class=\\\"card-model-from-attestation-header\\\">\\n    <i\\n      class=\\\"fa fa-trash-solid\\\"\\n      nzTooltipTitle=\\\"Excluir\\\"\\n      nzTooltipPlacement=\\\"top\\\"\\n      nz-tooltip\\n      (click)=\\\"remove()\\\"\\n    ></i>\\n  </div>\\n  <p>\\n    Atesto que\\n    <span *ngIf=\\\"patient; else templateIsNotPatient\\\"\\n      ><span style=\\\"font-weight: bold;\\\">{{ patient?.name || patient?.fullname }}, </span>\\n      <span *ngIf=\\\"patient?.cpf\\\">\\n        {{ patient.sex === 'M' ? 'Portador' : 'Portadora' }} do\\n        <span style=\\\"font-weight: bold;\\\">CPF {{ cpfFormatado }} </span>\\n      </span></span\\n    >\\n    <span>necessita de</span>\\n    <select\\n      nz-\\n      style=\\\"width: 200px; margin-left: 8px; margin-right: 8px;\\\"\\n      formControlName=\\\"attestationDays\\\"\\n    >\\n      <option [ngValue]=\\\"null\\\">Selecione</option>\\n      <option *ngFor=\\\"let item of attestationsDays\\\" [value]=\\\"item.value\\\">{{ item.label }}</option>\\n    </select>\\n    <span>de afastamento de suas atividades</span>\\n    <select style=\\\"width: 200px; margin-left: 8px; margin-right: 8px;\\\" formControlName=\\\"typeOfActivity\\\">\\n      <option [ngValue]=\\\"null\\\">Selecione</option>\\n      <option *ngFor=\\\"let item of typesOfActivity\\\" [value]=\\\"item.value\\\">{{ item.label }}</option>\\n    </select>\\n    <span>por motivo de doença.</span>\\n  </p>\\n</div>\\n\\n<ng-template #templateIsNotPatient>\\n  <span\\n    ><span style=\\\"font-weight: bold;\\\">[NOME DO PACIENTE]</span> Portador(a) do\\n    <span style=\\\"font-weight: bold;\\\">[CPF FORMATADO]</span></span\\n  >\\n</ng-template>\\n\";","export default \".card-model-from-attestation-header {\\n  display: flex;\\n  justify-content: flex-end;\\n}\";","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n  selector: 'app-popover-button',\n  templateUrl: './popover-button.component.html',\n  styleUrls: ['./popover-button.component.scss']\n})\nexport class PopoverButtonComponent implements OnInit {\n  @Input() content = '';\n  @Input() shape = 'circle';\n  @Input() placement = 'right';\n\n  constructor() {}\n\n  ngOnInit() {}\n}\n","export default \"<button\\n  nz-button\\n  nz-popover\\n  [nzShape]=\\\"shape\\\"\\n  [nzPopoverPlacement]=\\\"placement\\\"\\n  [nzPopoverContent]=\\\"content\\\"\\n>\\n  <i class=\\\"fas fa-question-circle\\\"></i>\\n</button>\\n\";","export default \"button {\\n  border: 0;\\n  box-shadow: none;\\n}\\n\\nbutton:hover,\\nbutton:focus {\\n  color: #0b6054;\\n  background-color: transparent;\\n  border-color: transparent;\\n}\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n  selector: 'app-rd-buttom-group-icon',\n  templateUrl: './rd-buttom-group-icon.component.html',\n  styleUrls: ['./rd-buttom-group-icon.component.scss']\n})\nexport class RdButtomGroupIconComponent implements OnInit {\n  @Input() label: string;\n  @Input() icon: string;\n\n  @Output() onClick = new EventEmitter();\n\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","export default \"<button\\n  class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n  type=\\\"button\\\"\\n  (click)=\\\"onClick.emit()\\\"\\n  theme\\n>\\n  <span class=\\\"btn-inner--text\\\" theme>{{ label }}</span>\\n  <span class=\\\"btn-inner--icon\\\" theme><i [class]=\\\"icon\\\"></i></span>\\n</button>\\n\";","export default \".btn-add-outiline {\\n  display: flex;\\n  padding: 0 0 0 8px;\\n  height: 40px;\\n  align-items: center;\\n  border-radius: 10px;\\n  overflow: hidden;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n  background-color: var(--bg-color-secondary);\\n  color: var(--color-white);\\n}\\n.btn-add-outiline .btn-inner--icon {\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 40px;\\n  width: 50px;\\n}\";","import {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges\n} from '@angular/core';\n\ninterface RdTabsComponentType {\n  label: string;\n  value: string;\n  disabled: boolean;\n}\n\n@Component({\n  selector: 'app-rd-tabs',\n  templateUrl: './rd-tabs.component.html',\n  styleUrls: ['./rd-tabs.component.scss']\n})\nexport class RdTabsComponent implements OnInit, OnChanges, AfterViewInit {\n  @Input() tabDefault: string;\n  @Input() isRennovaFeature = false;\n\n  @Output() onCLickTab = new EventEmitter<string>();\n\n  tabs: RdTabsComponentType[] = [];\n\n  tabSelected: RdTabsComponentType;\n\n  ngOnInit(): void {\n    if (this.isRennovaFeature) {\n      this.tabs = [{ label: 'Prescrição Rennova', value: 'Prescrição Rennova', disabled: false }];\n    } else {\n      this.tabs = [\n        { label: 'Prescrição', value: 'Prescrição', disabled: false },\n        { label: 'Exame', value: 'Exame', disabled: false },\n        { label: 'Atestado', value: 'Atestado', disabled: false },\n        { label: 'Outros', value: 'Outros', disabled: false }\n      ];\n    }\n  }\n\n  ngOnChanges(_: SimpleChanges): void {\n    this.changeTabSelected();\n  }\n\n  ngAfterViewInit(): void {\n    this.changeTabSelected();\n  }\n\n  changeTabSelected() {\n    if (this.tabDefault) {\n      this.tabSelected = this.tabs.find(tab => tab.value === this.tabDefault.trim());\n    }\n  }\n\n  onChangeTab(tab: RdTabsComponentType) {\n    this.tabSelected = tab;\n    this.onCLickTab.emit(tab.value);\n  }\n}\n","export default \"<div class=\\\"tab\\\" theme [ngClass]=\\\"isRennovaFeature ? 'tab-align-rennova' : 'tab-align-center'\\\">\\n  <button\\n    *ngFor=\\\"let item of tabs\\\"\\n    class=\\\"tablinks\\\"\\n    [ngClass]=\\\"{ active: tabSelected === item, 'width-rennova': isRennovaFeature }\\\"\\n    [disabled]=\\\"item?.disabled\\\"\\n    (click)=\\\"onChangeTab(item)\\\"\\n  >\\n    <span>\\n      {{ item.label }}\\n    </span>\\n  </button>\\n</div>\\n\";","export default \".tab {\\n  overflow: hidden;\\n  background-color: var(--bg-color-primary);\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n}\\n\\n.tab-align-center {\\n  align-items: center;\\n}\\n\\n.tab-align-start {\\n  align-items: flex-start;\\n}\\n\\n.tab button {\\n  width: 100%;\\n  background-color: inherit;\\n  border: none;\\n  outline: none;\\n  cursor: pointer;\\n  padding: 14px 16px;\\n  color: var(--color-white);\\n  font-weight: 500;\\n  text-transform: uppercase;\\n  font-size: 12px;\\n  text-align: center;\\n}\\n\\n.tab button.width-rennova {\\n  width: 100%;\\n}\\n\\n.tab button:hover {\\n  background-color: #0d685c;\\n  color: var(--color-white);\\n}\\n\\n.tab button:disabled {\\n  cursor: no-drop;\\n}\\n\\n.tab button.active {\\n  background-color: #0d685c;\\n  font-weight: 700;\\n}\\n\\n.tab button.active span {\\n  position: relative;\\n}\\n\\n.tab button.active span::before {\\n  content: \\\"\\\";\\n  position: absolute;\\n  width: 100%;\\n  font-weight: 700;\\n  border-bottom: 2px solid #fff;\\n  bottom: -8px;\\n}\\n\\n@media (min-width: 1025px) {\\n  .tab button {\\n    font-size: 18px;\\n  }\\n\\n  .tab button.width-rennova {\\n    width: 20%;\\n  }\\n}\";","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-text-box-form',\n  templateUrl: './text-box-form.component.html',\n  styleUrls: ['./text-box-form.component.scss']\n})\nexport class TextBoxFormComponent implements OnInit, OnDestroy {\n  @Input() id: number;\n  @Input() disabled = false;\n  @Input() form: FormGroup;\n  @Input() text: string;\n\n  @Output() formEmitter: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\n  @Output() onClickRemove = new EventEmitter();\n  @Output() onChangeText = new EventEmitter<string[]>();\n\n  constructor(private fb: FormBuilder) {}\n\n  ngOnInit(): void {\n    this.form.addControl('text', this.fb.control(this.text, Validators.required));\n    this.listemText();\n    if (this.text) {\n      this.onChangeText.emit(this.text.split('\\n'));\n    }\n    this.formEmitter.emit(this.form);\n  }\n\n  ngOnDestroy(): void {\n    this.form.removeControl('text');\n    this.formEmitter.emit(this.form);\n  }\n\n  listemText() {\n    this.form\n      .get('text')\n      .valueChanges.pipe(distinctUntilChanged())\n      .subscribe((text: string) => {\n        if (text && text.trim().length > 0) {\n          const value = text.split('\\n');\n          this.onChangeText.emit(value);\n        } else {\n          this.form.get('text').setValue(null);\n        }\n      });\n  }\n}\n","export default \"<div class=\\\"card p-2 mb-2\\\" [formGroup]=\\\"form\\\">\\n  <div class=\\\"header-card\\\">\\n    <span class=\\\"header-card-title\\\"></span>\\n    <div class=\\\"header-card-actions\\\">\\n      <span (click)=\\\"onClickRemove.emit()\\\" class=\\\"cursor-pointer\\\"\\n        ><i class=\\\"fa fa-trash-solid icon-trash\\\"></i\\n      ></span>\\n    </div>\\n  </div>\\n  <textarea\\n    [id]=\\\"id\\\"\\n    appAutoSize\\n    [nzAutosize]=\\\"{ minRows: 1 }\\\"\\n    appFocus\\n    focus=\\\"true\\\"\\n    formControlName=\\\"text\\\"\\n    nz-input\\n    placeholder=\\\"Escreva o texto...\\\"\\n    class=\\\"textNameInput\\\"\\n    [disabled]=\\\"disabled\\\"\\n  ></textarea>\\n</div>\\n\";","export default \".header-card {\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n}\\n.header-card .header-card-title {\\n  flex: 1;\\n  font-size: 14px;\\n  font-weight: 700;\\n  color: var(--bg-color-primary);\\n}\\n.header-card .header-card-actions {\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n  position: relative;\\n}\\n.header-card .header-card-actions span {\\n  cursor: pointer;\\n}\\n.header-card .header-card-actions span.cancel-editing {\\n  position: absolute;\\n  top: -4px;\\n  left: -24px;\\n  font-size: 18px;\\n}\\n.header-card .container-input-search-editing {\\n  width: 97%;\\n}\\n@media (max-width: 1025px) {\\n  .header-card .container-input-search-editing {\\n    width: 90%;\\n  }\\n}\\n.textNameInput {\\n  background-color: transparent;\\n  border-color: transparent;\\n  padding: 0;\\n  color: #585858 !important;\\n}\\n.textNameInput::-moz-placeholder {\\n  color: #f6b4af;\\n}\\n.textNameInput::placeholder, .textNameInput {\\n  color: #f6b4af;\\n}\\n.textNameInput {\\n  font-size: 15px;\\n  font-weight: 600;\\n}\\n@media (max-width: 1025px) {\\n  .textNameInput {\\n    font-size: 12px;\\n  }\\n}\\ntextarea {\\n  resize: none;\\n  background-color: transparent;\\n  border: 0;\\n  border-radius: 0;\\n  box-shadow: none;\\n  padding-left: 12px;\\n  color: #4d4d4d;\\n  font-size: 18px;\\n}\\ntextarea:hover, textarea:focus {\\n  border-color: transparent;\\n  box-shadow: none;\\n}\\ntextarea::-webkit-scrollbar {\\n  width: 0;\\n}\";","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ThemeModule, themeMrd, themeReceitaDigital } from '@app/theme';\r\nimport { environment } from '@env/environment';\r\nimport { NzIconModule } from 'ng-zorro-antd/icon';\r\nimport { NzInputModule } from 'ng-zorro-antd/input';\r\nimport { ChartsModule } from 'ng2-charts';\r\nimport { NgxLoadingModule } from 'ngx-loading';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { MyPieChartComponent } from '../charts/my-pie-chart/my-pie-chart.component';\r\nimport { PipesModule } from '../pipes';\r\nimport { AppVersionComponent } from './AppVersion/AppVersion.component';\r\nimport { AddButtonComponent } from './add-button/add-button.component';\r\nimport { AddTypeOptionsComponent } from './add-type-options/add-type-options.component';\r\nimport { AutoWidthInputNumberComponent } from './auto-width-input-number/auto-width-input-number.component';\r\nimport { CidFormComponent } from './cid-form/cid-form.component';\r\nimport { DataExamFormComponent } from './data-exam-form/data-exam-form.component';\r\nimport { DialogModalComponent } from './dialog-modal/dialog-modal.component';\r\nimport { AddressDataFormComponent } from './form-data/address-data-form/address-data-form.component';\r\nimport { ContactsDataFormComponent } from './form-data/contacts-data-form/contacts-data-form.component';\r\nimport { PersonalDataFormComponent } from './form-data/personal-data-form/personal-data-form.component';\r\nimport { PetDataFormComponent } from './form-data/pet-data-form/pet-data-form.component';\r\nimport { UnderageDataFormComponent } from './form-data/underage-data-form/underage-data-form.component';\r\nimport { InputFileComponent } from './input-file/input-file.component';\r\nimport { InputPasswordComponent } from './input-password/input-password.component';\r\nimport { InputSearchMedicamentsComponent } from './input-search-medicaments/input-search-medicaments.component';\r\nimport { MedicamentFormComponent } from './medicament-form/medicament-form.component';\r\nimport { MenuComponent } from './menu/menu.component';\r\nimport { ModalActivateAccountComponent } from './modal-activate-account/modal-activate-account.component';\r\nimport { ModalResendDocumentoEmptyComponent } from './modal-resend-documento-empty/modal-resend-documento-empty.component';\r\nimport { ModalSendDocumentComponent } from './modal-send-document/modal-send-document.component';\r\nimport { ModalSucessSendDocumentComponent } from './modal-sucess-send-document/modal-sucess-send-document.component';\r\nimport { ModelFormPrePreenchidoComponent } from './model-form-pre-preenchido/model-form-pre-preenchido.component';\r\nimport { PopoverButtonComponent } from './popover-button/popover-button.component';\r\nimport { RdButtomGroupIconComponent } from './rd-buttom-group-icon/rd-buttom-group-icon.component';\r\nimport { RdTabsComponent } from './rd-tabs/rd-tabs.component';\r\nimport { TextBoxFormComponent } from './text-box-form/text-box-form.component';\r\n\r\nimport { NzAlertModule } from 'ng-zorro-antd/alert';\r\nimport { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';\r\nimport { NzButtonModule } from 'ng-zorro-antd/button';\r\nimport { NzCardModule } from 'ng-zorro-antd/card';\r\nimport { NzCarouselModule } from 'ng-zorro-antd/carousel';\r\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\r\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\r\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\r\nimport { NzDrawerModule } from 'ng-zorro-antd/drawer';\r\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\r\nimport { NzFormModule } from 'ng-zorro-antd/form';\r\nimport { NzListModule } from 'ng-zorro-antd/list';\r\nimport { NzMessageModule } from 'ng-zorro-antd/message';\r\nimport { NzModalModule } from 'ng-zorro-antd/modal';\r\nimport { NzNotificationModule } from 'ng-zorro-antd/notification';\r\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\r\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\r\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\r\nimport { NzSelectModule } from 'ng-zorro-antd/select';\r\nimport { NzStepsModule } from 'ng-zorro-antd/steps';\r\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\r\nimport { NzTableModule } from 'ng-zorro-antd/table';\r\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\r\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\r\nimport { NzInputNumberModule, NzTreeModule } from 'ng-zorro-antd';\r\nimport { NzPaginationModule } from 'ng-zorro-antd/pagination';\r\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    PipesModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    ChartsModule,\r\n    RouterModule,\r\n    NzInputModule,\r\n    NgxLoadingModule,\r\n    NgxMaskModule.forRoot(),\r\n    ThemeModule.forRoot({\r\n      themes: [themeReceitaDigital, themeMrd],\r\n      active: environment.template\r\n    }),\r\n\r\n    NzCollapseModule,\r\n    NzInputModule,\r\n    NzButtonModule,\r\n    NzSelectModule,\r\n    NzAutocompleteModule,\r\n    NzFormModule,\r\n    NzNotificationModule,\r\n    NzDropDownModule,\r\n    NzStepsModule,\r\n    NzCheckboxModule,\r\n    NzRadioModule,\r\n    NzCardModule,\r\n    NzCarouselModule,\r\n    NzListModule,\r\n    NzPopoverModule,\r\n    NzTableModule,\r\n    NzTabsModule,\r\n    NzToolTipModule,\r\n    NzAlertModule,\r\n    NzDrawerModule,\r\n    NzMessageModule,\r\n    NzModalModule,\r\n    NzProgressModule,\r\n    NzDividerModule,\r\n    NzIconModule,\r\n    NzSwitchModule,\r\n    NzInputNumberModule,\r\n    NzPaginationModule,\r\n    NzSpinModule,\r\n    NzTreeModule\r\n  ],\r\n  declarations: [\r\n    AutoWidthInputNumberComponent,\r\n    MenuComponent,\r\n    MyPieChartComponent,\r\n    DialogModalComponent,\r\n    InputFileComponent,\r\n    ModalActivateAccountComponent,\r\n    ModalSendDocumentComponent,\r\n    ModalSucessSendDocumentComponent,\r\n    InputPasswordComponent,\r\n    AddButtonComponent,\r\n    PopoverButtonComponent,\r\n    AddressDataFormComponent,\r\n    ContactsDataFormComponent,\r\n    PersonalDataFormComponent,\r\n    UnderageDataFormComponent,\r\n    RdButtomGroupIconComponent,\r\n    RdTabsComponent,\r\n    PetDataFormComponent,\r\n    AddTypeOptionsComponent,\r\n    InputSearchMedicamentsComponent,\r\n    CidFormComponent,\r\n    DataExamFormComponent,\r\n    TextBoxFormComponent,\r\n    ModelFormPrePreenchidoComponent,\r\n    MedicamentFormComponent,\r\n    ModalResendDocumentoEmptyComponent,\r\n    AppVersionComponent\r\n  ],\r\n  exports: [\r\n    AutoWidthInputNumberComponent,\r\n    MenuComponent,\r\n    MyPieChartComponent,\r\n    DialogModalComponent,\r\n    InputFileComponent,\r\n    ModalActivateAccountComponent,\r\n    ModalSendDocumentComponent,\r\n    ModalSucessSendDocumentComponent,\r\n    InputPasswordComponent,\r\n    AddButtonComponent,\r\n    PopoverButtonComponent,\r\n    AddressDataFormComponent,\r\n    ContactsDataFormComponent,\r\n    PersonalDataFormComponent,\r\n    UnderageDataFormComponent,\r\n    RdButtomGroupIconComponent,\r\n    RdTabsComponent,\r\n    PetDataFormComponent,\r\n    AddTypeOptionsComponent,\r\n    InputSearchMedicamentsComponent,\r\n    CidFormComponent,\r\n    DataExamFormComponent,\r\n    TextBoxFormComponent,\r\n    ModelFormPrePreenchidoComponent,\r\n    MedicamentFormComponent,\r\n    AppVersionComponent,\r\n\r\n    NzCollapseModule,\r\n    NzInputModule,\r\n    NzButtonModule,\r\n    NzSelectModule,\r\n    NzAutocompleteModule,\r\n    NzFormModule,\r\n    NzNotificationModule,\r\n    NzDropDownModule,\r\n    NzStepsModule,\r\n    NzCheckboxModule,\r\n    NzRadioModule,\r\n    NzCardModule,\r\n    NzCarouselModule,\r\n    NzListModule,\r\n    NzPopoverModule,\r\n    NzTableModule,\r\n    NzTabsModule,\r\n    NzToolTipModule,\r\n    NzAlertModule,\r\n    NzDrawerModule,\r\n    NzMessageModule,\r\n    NzModalModule,\r\n    NzProgressModule,\r\n    NzDividerModule,\r\n    NzIconModule,\r\n    NzSwitchModule,\r\n    NzInputNumberModule,\r\n    NzPaginationModule,\r\n    NzSpinModule,\r\n    NzTreeModule\r\n  ]\r\n})\r\nexport class ComponentsModule {}\r\n","export const numeroEspecial = (numero: string): boolean => {\r\n  if (!!numero) {\r\n    return (\r\n      numero.startsWith('0300') ||\r\n      numero.startsWith('0500') ||\r\n      numero.startsWith('0800') ||\r\n      numero.startsWith('0900') ||\r\n      numero.startsWith('3003') ||\r\n      numero.startsWith('4003') ||\r\n      numero.startsWith('4004')\r\n    );\r\n  }\r\n  return false;\r\n};\r\n","export enum UserType {\n  PATIENT = 'patient',\n  PHARMACY = 'pharmacy',\n  PHARMACIST = 'pharmacist',\n  ADMIN = 'admin',\n  HEALTH_PROFESSIONAL = 'healthProfessional'\n}\n","import { map, switchMap, distinctUntilChanged } from 'rxjs/operators';\nimport { Component, EventEmitter, Input, OnInit, Output, ChangeDetectorRef } from '@angular/core';\nimport {\n  AbstractControl,\n  FormBuilder,\n  FormControl,\n  FormGroup,\n  FormGroupDirective,\n  NgForm,\n  Validators\n} from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { BuyerService } from '@app/modules/document/services/buyer.service';\nimport { CepService } from '@app/modules/entry/services/cep.service';\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { BrazilState } from '@app/shared/models';\nimport { Patient } from '@app/shared/models/patient';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BigboostService } from '@app/shared/services/bigboost.service';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\nimport { of, pipe } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\n\n@Component({\n  selector: 'app-modal-buyer-data',\n  templateUrl: './modal-buyer-data.component.html',\n  styleUrls: ['./modal-buyer-data.component.scss']\n})\nexport class ModalBuyerDataComponent implements OnInit {\n  @Input() patient: Patient;\n  @Input() okText = 'Salvar';\n  @Output() saveRetention = new EventEmitter();\n\n  cpfSearched = false;\n  states: BrazilState[] = BrazilianStates;\n  loading = false;\n  form: FormGroup;\n  CEL_TEL: string;\n\n  constructor(\n    private fb: FormBuilder,\n    private cepService: CepService,\n    private bigboostService: BigboostService,\n    private notification: AppToastService,\n    private buyerService: BuyerService,\n    private modelRef: NzModalRef,\n    private patientService: PatientsService\n  ) {\n    this.buildForm();\n  }\n  ngOnInit(): void {\n    this.listnerFieldCpf();\n    this.form\n      .get('cellphone')\n      .valueChanges.pipe(distinctUntilChanged())\n      .subscribe((value: string) => {\n        this.setMaskTelephone(value);\n      });\n\n    this.form.get('cellphone').statusChanges.subscribe(status => {\n      if (status === 'VALID') {\n        this.form.get('telephone').enable();\n      } else {\n        this.form.get('telephone').setValue('');\n        this.form.get('telephone').disable();\n      }\n    });\n\n    this.form\n      .get('telephone')\n      .valueChanges.pipe(distinctUntilChanged())\n      .subscribe((value: string) => {\n        this.setMaskTelephone(value);\n      });\n  }\n\n  get isPatientBuyer() {\n    return this.form.get('isPatientBuyer').value;\n  }\n\n  set isPatientBuyer(value: boolean) {\n    this.form.get('isPatientBuyer').setValue(value);\n  }\n\n  get cpfControl(): AbstractControl {\n    return this.form.get('cpf');\n  }\n\n  buildForm() {\n    this.form = this.fb.group({\n      isPatientBuyer: this.fb.control(false),\n      name: this.fb.control('', [Validators.required]),\n      cpf: this.fb.control('', [Validators.required, ValidationService.cpfValidator]),\n      identity: this.fb.control(''),\n      cellphone: this.fb.control('', Validators.required),\n      telephone: this.fb.control(''),\n      address: this.fb.group({\n        uf: this.fb.control('', [Validators.required, Validators.minLength(2)]),\n        city: this.fb.control('', [Validators.required, Validators.minLength(2)]),\n        complement: this.fb.control(''),\n        number: this.fb.control('', [Validators.required]),\n        street: this.fb.control('', [Validators.required, Validators.minLength(2)]),\n        neighborhood: this.fb.control('', [Validators.required, Validators.minLength(2)]),\n        cep: this.fb.control(\n          '',\n          Validators.compose([\n            Validators.required,\n            ValidationService.cepValidator,\n            Validators.minLength(2)\n          ])\n        )\n      })\n    });\n  }\n\n  setMaskTelephone(value: string) {\n    if (value) {\n      const CEL = '(00) 0 0000-0000';\n      const TEL = '(00) 0000-00009';\n      this.CEL_TEL = value.length == 11 ? CEL : TEL;\n    }\n  }\n\n  listnerFieldCpf() {\n    this.cpfControl.statusChanges.pipe(distinctUntilChanged()).subscribe(status => {\n      const valueCpf = this.cpfControl.value;\n      const valueIsPatientBuyer = this.isPatientBuyer;\n      if (status === 'VALID' && !this.isPatientBuyer) {\n        this.searchData(valueCpf);\n      } else {\n        this.cpfSearched = false;\n        this.form.reset({ cpf: valueCpf, isPatientBuyer: valueIsPatientBuyer });\n      }\n    });\n  }\n\n  @nativeAsync\n  async onKeyFindCep(event: any) {\n    if (this.cpfSearched) {\n      if (event.target.value.length === 10) {\n        const cep = event.target.value.replace(/[^\\d]+/g, '');\n        const data = await this.cepService.consult(cep);\n        if (!data.erro) {\n          this.form.controls['address'].patchValue({\n            uf: data.uf,\n            street: data.logradouro,\n            neighborhood: data.bairro,\n            city: data.localidade,\n            number: null,\n            cep: data.cep\n          });\n        }\n      }\n    }\n  }\n\n  searchData(cpfBuyer: string) {\n    const cpf = cpfBuyer.replace(/[^\\d]+/g, '');\n    this.loading = true;\n    this.buyerService.getBuyerByCpf(cpf).subscribe(\n      buyer => {\n        if (buyer) {\n          this.setDataForm(buyer);\n        } else {\n          this.findInfoPatientByCpf(cpf);\n        }\n      },\n      err => {\n        this.loading = false;\n        console.error(err);\n        this.notification.notify('error', 'Error ao consultar comprador');\n      }\n    );\n  }\n\n  setDataPatient(isPatientBuyer: boolean) {\n    if (isPatientBuyer) {\n      if (this.patient._id) {\n        const data = !!this.patient.responsible ? this.patient.responsible : this.patient;\n        this.setDataForm(data);\n      }\n    } else {\n      this.cpfSearched = false;\n      this.form.reset();\n    }\n  }\n\n  setDataForm(data: Patient) {\n    this.form.patchValue(data);\n    this.form.get('name').setValue(data.name);\n    this.loading = false;\n    this.cpfSearched = true;\n  }\n\n  save() {\n    markFormGroup(this.form);\n    if (this.form.valid && !this.loading) {\n      this.loading = true;\n      this.buyerService.save(this.form.value).subscribe(\n        buyer => {\n          if (buyer) {\n            this.saveRetention.emit(buyer.cpf);\n            this.modelRef.destroy();\n          }\n        },\n        err => {\n          this.notification.notify('error', 'Erro ao tentar salvar comprador', err.error.message);\n        },\n        () => {\n          this.loading = false;\n        }\n      );\n    }\n  }\n\n  close() {\n    this.modelRef.close();\n  }\n\n  private findInfoPatientByCpf(cpf: string) {\n    this.patientService\n      .existsPatient(cpf)\n      .pipe(\n        switchMap(exists => {\n          if (exists) {\n            return this.patientService.getPatientByCpf(cpf);\n          }\n          return of(null);\n        })\n      )\n      .subscribe(\n        (patient: Patient | null) => {\n          if (patient) {\n            const data = !!patient.responsible ? patient.responsible : patient;\n            this.setDataForm(data);\n          } else {\n            this.consultCpfByCpf(cpf);\n          }\n        },\n        err => {\n          this.loading = false;\n          console.error(err);\n          this.notification.notify('error', 'Error ao consultar paciente');\n        }\n      );\n  }\n\n  private consultCpfByCpf(cpf: string) {\n    this.bigboostService.consultCpf(cpf).subscribe(\n      data => {\n        if (data) {\n          if (data.menorIdade) {\n            this.notification.notify(\n              'warning',\n              'Não é permitido cadastrar compradores menores de idade'\n            );\n          } else {\n            this.setDataForm({ name: data.nome });\n          }\n          this.loading = false;\n        }\n      },\n      (error: HttpErrorResponse) => {\n        console.error(error);\n        this.loading = false;\n        if (error.status === 404) {\n          this.notification.notify(\n            'error',\n            'Error ao consultar CPF',\n            'CPF não localizado na Receita Federal. Verifique as informações digitadas e tente novamente. Em caso de dúvidas, entre em contato com nosso atendimento',\n            8000\n          );\n          return;\n        } else {\n          this.notification.notify('error', 'Error ao consultar CPF');\n        }\n      }\n    );\n  }\n}\n","export default \"<div theme>\\n  <header>\\n    <span class=\\\"title\\\">\\n      DADOS DO COMPRADOR\\n    </span>\\n  </header>\\n\\n  <div class=\\\"subtitle\\\">\\n    <h5>\\n      Para concluir a dispensação, informe os dados do comprador.\\n    </h5>\\n    <span>(Não é permitido cadastrar compradores menores de idade)</span>\\n  </div>\\n\\n  <div class=\\\"modal-body\\\">\\n    <form nz-form [formGroup]=\\\"form\\\">\\n      <div class=\\\"row\\\">\\n        <div class=\\\"col-md-3 d-flex align-items-center\\\">\\n          <nz-form-item>\\n            <label\\n              nz-checkbox\\n              (nzCheckedChange)=\\\"setDataPatient($event)\\\"\\n              formControlName=\\\"isPatientBuyer\\\"\\n              >O comprador é o paciente</label\\n            >\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item *ngIf=\\\"form.get('cpf') as cpf\\\">\\n            <nz-form-label nzFor=\\\"cpf\\\">CPF do comprador<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback [nzErrorTip]=\\\"errorTpl\\\">\\n              <input\\n                nz-input\\n                id=\\\"cpf\\\"\\n                name=\\\"cpf\\\"\\n                formControlName=\\\"cpf\\\"\\n                mask=\\\"000.000.000-00\\\"\\n                placeholder=\\\"Digite o CPF do comprador\\\"\\n              />\\n              <ng-template #errorTpl let-control>\\n                <ng-container *ngIf=\\\"cpf.dirty && cpf.hasError('required')\\\">\\n                  Campo obrigatório, por favor digite seu CPF.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"!cpf.hasError('required') && cpf.hasError('cpf')\\\">\\n                  CPF inválido.\\n                </ng-container>\\n              </ng-template>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md-4\\\">\\n          <nz-form-item *ngIf=\\\"form.get('identity') as identity\\\">\\n            <nz-form-label nzFor=\\\"identity\\\">Identidade</nz-form-label>\\n            <nz-form-control>\\n              <input\\n                nz-input\\n                formControlName=\\\"identity\\\"\\n                placeholder=\\\"Digite a identidade do comprador\\\"\\n                name=\\\"identity\\\"\\n                id=\\\"identity\\\"\\n                maxlength=\\\"12\\\"\\n                [ngClass]=\\\"{ disabled: !cpfSearched }\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"row\\\">\\n        <div class=\\\"col-md-5\\\">\\n          <nz-form-item *ngIf=\\\"form.get('name') as name\\\">\\n            <nz-form-label nzFor=\\\"name\\\"\\n              >Nome do comprador<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n            >\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                id=\\\"name\\\"\\n                formControlName=\\\"name\\\"\\n                placeholder=\\\"Digite o nome\\\"\\n                name=\\\"name\\\"\\n                maxlength=\\\"128\\\"\\n                [ngClass]=\\\"{ disabled: !cpfSearched }\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"name.dirty && name.errors\\\">\\n                <ng-container *ngIf=\\\"name.hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o nome e sobrenome do comprador.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"!name.hasError('required') && name.hasError('nome')\\\">\\n                  Por favor digite o nome e sobrenome do comprador.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item *ngIf=\\\"form.get('cellphone') as cellphone\\\">\\n            <nz-form-label nzFor=\\\"cellphone\\\">Telefone 1 <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"text\\\"\\n                id=\\\"cellphone\\\"\\n                name=\\\"cellphone\\\"\\n                formControlName=\\\"cellphone\\\"\\n                placeholder=\\\"Digite o Telefone\\\"\\n                [mask]=\\\"CEL_TEL\\\"\\n                [ngClass]=\\\"{ disabled: !cpfSearched }\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"cellphone.dirty && cellphone.errors\\\">\\n                <ng-container *ngIf=\\\"cellphone.hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o telefone do comprador.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item *ngIf=\\\"form.get('telephone') as telephone\\\">\\n            <nz-form-label nzFor=\\\"telephone\\\">Telefone 2</nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                id=\\\"telephone\\\"\\n                name=\\\"telephone\\\"\\n                formControlName=\\\"telephone\\\"\\n                placeholder=\\\"Digite o Telefone\\\"\\n                [mask]=\\\"telephone.value?.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n                [ngClass]=\\\"{ disabled: !cpfSearched }\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"row\\\" [formGroup]=\\\"form.get('address')\\\">\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"cep\\\">CEP<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"text\\\"\\n                mask=\\\"00.000-000\\\"\\n                id=\\\"cep\\\"\\n                formControlName=\\\"cep\\\"\\n                placeholder=\\\"ex: 27.244-333\\\"\\n                name=\\\"cep\\\"\\n                (keyup)=\\\"onKeyFindCep($event)\\\"\\n                [ngClass]=\\\"{ disabled: !cpfSearched }\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"form.get('address.cep').dirty && form.get('address.cep').errors\\\">\\n                <ng-container *ngIf=\\\"form.get('address.cep').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite seu CEP.\\n                </ng-container>\\n                <ng-container\\n                  *ngIf=\\\"\\n                    !form.get('address.cep').hasError('required') &&\\n                    form.get('address.cep').hasError('address.cep')\\n                  \\\"\\n                >\\n                  CEP inválido, por favor digite um CEP válido.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"form.get('address.cep').hasError('minlength')\\\">\\n                  É necessário ter pelo menos\\n                  {{ form.get('address.cep').errors?.minlength?.requiredLength }} caracteres.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"street\\\">Logradouro<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                placeholder=\\\"Digite o logradouro\\\"\\n                formControlName=\\\"street\\\"\\n                type=\\\"text\\\"\\n                name=\\\"street\\\"\\n                maxlength=\\\"128\\\"\\n                id=\\\"street\\\"\\n                [ngClass]=\\\"{ disabled: !cpfSearched }\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"form.get('address.street').dirty && form.get('address.street').errors\\\"\\n              >\\n                <ng-container *ngIf=\\\"form.get('address.street').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o logradouro.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"form.get('address.street').hasError('minlength')\\\">\\n                  É necessário ter pelo menos\\n                  {{ form.get('address.street').errors?.minlength?.requiredLength }} caracteres.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"number\\\">Número<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"number\\\"\\n                formControlName=\\\"number\\\"\\n                placeholder=\\\"Digite o número\\\"\\n                name=\\\"number\\\"\\n                id=\\\"number\\\"\\n                maxlength=\\\"10\\\"\\n                [ngClass]=\\\"{ disabled: !cpfSearched }\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"form.get('address.number').dirty && form.get('address.number').errors\\\"\\n              >\\n                <ng-container *ngIf=\\\"form.get('address.number').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o número.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"row\\\" [formGroup]=\\\"form.get('address')\\\">\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"complement\\\">Complemento</nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"complement\\\"\\n                id=\\\"complement\\\"\\n                nz-input\\n                placeholder=\\\"Digite o complemento\\\"\\n                maxlength=\\\"128\\\"\\n                [ngClass]=\\\"{ disabled: !cpfSearched }\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"neighborhood\\\">Bairro<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"neighborhood\\\"\\n                id=\\\"neighborhood\\\"\\n                nz-input\\n                placeholder=\\\"Digite o bairro\\\"\\n                maxlength=\\\"128\\\"\\n                [ngClass]=\\\"{ disabled: !cpfSearched }\\\"\\n              />\\n              <nz-form-explain\\n                *ngIf=\\\"form.get('address.neighborhood').dirty && form.get('address.neighborhood').errors\\\"\\n              >\\n                <ng-container *ngIf=\\\"form.get('address.neighborhood').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite o bairro.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"form.get('address.neighborhood').hasError('minlength')\\\">\\n                  É necessário ter pelo menos\\n                  {{ form.get('address.neighborhood').errors?.minlength?.requiredLength }} caracteres.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"row\\\" [formGroup]=\\\"form.get('address')\\\">\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"city\\\">Cidade<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"city\\\"\\n                id=\\\"city\\\"\\n                name=\\\"city\\\"\\n                nz-input\\n                placeholder=\\\"Digite a cidade\\\"\\n                maxlength=\\\"64\\\"\\n                [ngClass]=\\\"{ disabled: !cpfSearched }\\\"\\n              />\\n              <nz-form-explain *ngIf=\\\"form.get('address.city').dirty && form.get('address.city').errors\\\">\\n                <ng-container *ngIf=\\\"form.get('address.city').hasError('required')\\\">\\n                  Campo obrigatório, por favor digite a cidade.\\n                </ng-container>\\n                <ng-container *ngIf=\\\"form.get('address.city').hasError('minlength')\\\">\\n                  É necessário ter pelo menos\\n                  {{ form.get('address.city').errors?.minlength?.requiredLength }} caracteres.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-md\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"uf\\\">UF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <nz-select\\n                formControlName=\\\"uf\\\"\\n                id=\\\"uf\\\"\\n                name=\\\"uf\\\"\\n                nzAllowClear\\n                nzShowSearch\\n                nzDropdownClassName=\\\"account-select\\\"\\n                nzPlaceHolder=\\\"Selecione\\\"\\n                [nzDisabled]=\\\"!cpfSearched\\\"\\n              >\\n                <nz-option\\n                  *ngFor=\\\"let state of states\\\"\\n                  [nzLabel]=\\\"state?.sigla\\\"\\n                  [nzValue]=\\\"state?.sigla\\\"\\n                >\\n                </nz-option>\\n              </nz-select>\\n              <nz-form-explain *ngIf=\\\"form.get('address.uf').dirty && form.get('address.uf').errors\\\">\\n                <ng-container *ngIf=\\\"form.get('address.uf').hasError('required')\\\">\\n                  Campo obrigatório, por favor selecione o UF.\\n                </ng-container>\\n              </nz-form-explain>\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </div>\\n    </form>\\n  </div>\\n  <nz-divider nzOrientation=\\\"left\\\" style=\\\"margin: 16px 0;\\\"></nz-divider>\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-md-6\\\">\\n      <div *ngIf=\\\"loading\\\">\\n        <ng-template #indicatorTemplate><i nz-icon nzType=\\\"loading\\\"></i></ng-template>\\n        <nz-spin nzSimple [nzIndicator]=\\\"indicatorTemplate\\\"></nz-spin>\\n      </div>\\n    </div>\\n    <div class=\\\"col-md-6 d-flex justify-content-end\\\" theme>\\n      <button nz-button class=\\\"btn-cancel mr-3\\\" (click)=\\\"close()\\\">Cancelar</button>\\n      <button nz-button class=\\\"btn-ok\\\" (click)=\\\"save()\\\" [ngClass]=\\\"{ disabled: !cpfSearched }\\\">\\n        {{ okText }}\\n      </button>\\n    </div>\\n  </div>\\n</div>\\n\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \"header {\\n  width: 100%;\\n  padding: 16px 24px;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 4px 4px 0 0;\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  background-color: var(--bg-modal-header);\\n  color: var(--color-white);\\n}\\nheader .title {\\n  margin: 0;\\n  font-weight: 500;\\n  color: var(--color-white);\\n  font-size: 16px;\\n  line-height: 22px;\\n  word-wrap: break-word;\\n}\\nh4 {\\n  margin: 35px 0 8px 0;\\n  text-align: center;\\n}\\n.modal-body {\\n  height: 100%;\\n  max-height: 55vh;\\n  margin-top: 8px;\\n  padding: 8px;\\n}\\n.modal-body input {\\n  border-radius: 10px;\\n}\\n.modal-body button {\\n  float: right;\\n}\\ni {\\n  font-size: 24px;\\n}\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n.mandatory {\\n  color: red;\\n}\\n.btn-ok {\\n  color: white;\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n.subtitle {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  justify-content: center;\\n  margin-top: 35px;\\n}\\n.subtitle h5 {\\n  font-size: 24px;\\n}\\n.subtitle span {\\n  font-size: 18px;\\n}\\n.disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n}\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CrService } from '@app/modules/document/services/cr.service';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { Library, Protocol } from '@app/shared/models/library';\nimport { LibraryService } from '@app/shared/services/library.service';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'app-modal-protocols-library',\n  templateUrl: './modal-protocols-library.component.html',\n  styleUrls: ['./modal-protocols-library.component.scss']\n})\nexport class ModalProtocolsLibraryComponent implements OnInit {\n  @Input() colorSetting: ColorSetting;\n\n  @Output() onAddProtocol = new EventEmitter<Protocol>();\n\n  loadingLibraries = false;\n  libraries: Library[] = [];\n\n  constructor(\n    private modalRef: BsModalRef,\n    private libraryService: LibraryService,\n    private crService: CrService\n  ) {}\n\n  ngOnInit(): void {\n    this.findAllLibraries();\n  }\n\n  findAllLibraries() {\n    this.loadingLibraries = true;\n    this.libraryService.search().subscribe(libraries => {\n      this.libraries = libraries;\n      this.loadingLibraries = false;\n    });\n  }\n\n  async expandedProtocol(protocol: Protocol) {\n    protocol.expanded = !protocol.expanded;\n    if (!protocol.medicamentCR) {\n      await this.loadMedicamentCR(protocol);\n    }\n  }\n\n  async loadMedicamentCR(protocol: Protocol) {\n    protocol.loadingMedicament = true;\n    const medicamentsCR = await this.crService.searchMedicament(protocol.ean).toPromise();\n    if (medicamentsCR.length > 0) {\n      const medicamentCR = medicamentsCR[0];\n      protocol.medicamentCR = {\n        nome: medicamentCR.nome,\n        prescriptionTypeId: medicamentCR.prescriptionTypeId,\n        typeCr: medicamentCR.typeCr,\n        type: 'industrialized',\n        laboratorio: medicamentCR.laboratorio,\n        apresentacaoCustomizada: medicamentCR.apresentacaoCustomizada,\n        principio: medicamentCR.principio\n      };\n      protocol.loadingMedicament = false;\n    }\n  }\n\n  async addProtocol(protocol: Protocol) {\n    if (!protocol.medicamentCR) {\n      await this.loadMedicamentCR(protocol);\n    }\n    this.onAddProtocol.emit(protocol);\n  }\n\n  get categories() {\n    if (this.libraries.length > 0) {\n      return this.libraries[0].categories;\n    }\n    return [];\n  }\n\n  close() {\n    this.modalRef.hide();\n  }\n}\n","export default \"<div class=\\\"modal-container\\\" theme>\\n  <div\\n    class=\\\"modal-header\\\"\\n    #modalHeader\\n    [ngStyle]=\\\"{\\n      'background-color': colorSetting?.primary,\\n      'border-color': colorSetting?.primary\\n    }\\\"\\n  >\\n    <h4 class=\\\"modal-title pull-left text-white\\\">Sugestão de Protocolos</h4>\\n    <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"close()\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button>\\n  </div>\\n\\n  <div class=\\\"modal-content\\\" theme>\\n    <ng-container *ngIf=\\\"!loadingLibraries && libraries.length > 0; else templateLoading\\\">\\n      <div *ngFor=\\\"let category of categories\\\" class=\\\"modal-content-category\\\">\\n        <div class=\\\"modal-content-category-item\\\">\\n          <i\\n            nz-icon\\n            [nzType]=\\\"category.expanded ? 'down' : 'right'\\\"\\n            nzTheme=\\\"outline\\\"\\n            (click)=\\\"category.expanded = !category.expanded\\\"\\n          ></i>\\n          <span>{{ category.name }}</span>\\n        </div>\\n        <div *ngIf=\\\"category.expanded\\\" class=\\\"ml-16\\\">\\n          <div *ngFor=\\\"let subcategory of category.subcategories\\\">\\n            <div class=\\\"modal-content-subcategory-item\\\">\\n              <i\\n                nz-icon\\n                [nzType]=\\\"subcategory.expanded ? 'down' : 'right'\\\"\\n                nzTheme=\\\"outline\\\"\\n                (click)=\\\"subcategory.expanded = !subcategory.expanded\\\"\\n              ></i>\\n              <span>{{ subcategory.name }}</span>\\n            </div>\\n            <div *ngIf=\\\"subcategory.expanded\\\" class=\\\"ml-16\\\">\\n              <div *ngFor=\\\"let protocol of subcategory.protocols; let i = index\\\">\\n                <div>\\n                  <div class=\\\"modal-container-protocol\\\">\\n                    <div class=\\\"modal-content-protocol-item\\\">\\n                      <i\\n                        nz-icon\\n                        [nzType]=\\\"protocol.expanded ? 'down' : 'right'\\\"\\n                        nzTheme=\\\"outline\\\"\\n                        (click)=\\\"expandedProtocol(protocol)\\\"\\n                      ></i>\\n                      <span>{{ i + 1 }} - {{ protocol.title }}</span>\\n                    </div>\\n                    <button\\n                      theme\\n                      class=\\\"ok-btn btn-adicionar\\\"\\n                      nz-button\\n                      [ngStyle]=\\\"{\\n                        'background-color': colorSetting?.primary,\\n                        'border-color': colorSetting?.primary\\n                      }\\\"\\n                      (click)=\\\"addProtocol(protocol)\\\"\\n                    >\\n                      <nz-spin\\n                        nzSimple\\n                        *ngIf=\\\"protocol?.loadingMedicament && !protocol.expanded; else templateButton\\\"\\n                      ></nz-spin>\\n                      <ng-template #templateButton>\\n                        <span>Adicionar</span>\\n                      </ng-template>\\n                    </button>\\n                  </div>\\n                  <div\\n                    *ngIf=\\\"protocol.expanded\\\"\\n                    style=\\\"display: flex; flex-direction: column; gap: 8px; margin: 8px 0;\\\"\\n                  >\\n                    <nz-alert nzBanner [nzMessage]=\\\"protocol.comments\\\" [nzShowIcon]=\\\"false\\\"></nz-alert>\\n                    <div style=\\\"display: flex; justify-content: center;\\\">\\n                      <nz-spin nzSimple *ngIf=\\\"protocol?.loadingMedicament\\\"></nz-spin>\\n                    </div>\\n                    <div *ngIf=\\\"protocol?.medicamentCR\\\">\\n                      <span style=\\\"font-size: 16px; font-weight: bold;\\\">{{\\n                        protocol?.medicamentCR.nome\\n                      }}</span>\\n                      <h2\\n                        class=\\\"description-medicament-cr\\\"\\n                        *ngIf=\\\"\\n                          protocol?.medicamentCR.principio ||\\n                          protocol?.medicamentCR.apresentacaoCustomizada\\n                        \\\"\\n                      >\\n                        {{ protocol?.medicamentCR.principio }}\\n                        <span\\n                          *ngIf=\\\"\\n                            protocol?.medicamentCR.principio &&\\n                            protocol?.medicamentCR.apresentacaoCustomizada\\n                          \\\"\\n                        >\\n                          - </span\\n                        >{{ protocol?.medicamentCR.apresentacaoCustomizada }}\\n                      </h2>\\n                    </div>\\n                    <p *ngFor=\\\"let description of protocol.dosage\\\">\\n                      {{ description }}\\n                    </p>\\n                  </div>\\n                </div>\\n              </div>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </ng-container>\\n  </div>\\n</div>\\n\\n<ng-template #templateLoading>\\n  <div style=\\\"padding: 8px;\\\" *ngIf=\\\"loadingLibraries\\\">\\n    <nz-spin nzSimple></nz-spin>\\n  </div>\\n</ng-template>\\n\";","export default \".modal-container .modal-header {\\n  font-family: \\\"probold\\\";\\n  width: 100% !important;\\n}\\n@media (min-width: 960px) {\\n  .modal-container .modal-header {\\n    width: 900px;\\n  }\\n}\\n.modal-container .modal-content {\\n  width: 100% !important;\\n}\\n@media (min-width: 960px) {\\n  .modal-container .modal-content {\\n    min-width: 900px;\\n    max-height: 700px;\\n    overflow: auto;\\n  }\\n}\\n.modal-container .modal-content .modal-content-category {\\n  width: 100%;\\n  padding: 4px;\\n}\\n.modal-container .modal-content .modal-content-category .modal-content-category-item {\\n  display: flex;\\n  align-items: center;\\n  gap: 8px;\\n  background-color: var(--bg-modal-header);\\n}\\n.modal-container .modal-content .modal-content-category .modal-content-category-item i {\\n  cursor: pointer;\\n  background-color: var(--bg-color-primary);\\n  color: white;\\n  padding: 8px;\\n}\\n.modal-container .modal-content .modal-content-category .modal-content-category-item span {\\n  font-weight: bold;\\n  color: var(--bg-color-primary);\\n}\\n.modal-container .modal-content .modal-content-category .modal-content-subcategory-item {\\n  display: flex;\\n  align-items: center;\\n  gap: 8px;\\n  margin-top: 4px;\\n  background-color: var(--bg-color-primary);\\n  color: white;\\n  padding: 4px;\\n  font-weight: 500;\\n}\\n.modal-container .modal-content .modal-content-category .modal-content-subcategory-item i {\\n  cursor: pointer;\\n}\\n.modal-container .modal-content .modal-content-category .modal-container-protocol {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  margin-top: 4px;\\n  background: #ebebeb;\\n  padding: 3px;\\n  color: #000;\\n  font-weight: bold;\\n}\\n.modal-container .modal-content .modal-content-category .modal-container-protocol .modal-content-protocol-item {\\n  display: flex;\\n  align-items: center;\\n  gap: 8px;\\n}\\n.modal-container .modal-content .modal-content-category .modal-container-protocol .modal-content-protocol-item i {\\n  cursor: pointer;\\n}\\n.modal-container .modal-content .btn-adicionar {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08);\\n}\\n.modal-container .modal-content .btn-adicionar::-moz-selection {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-secondary);\\n  border-color: var(--bg-color-secondary);\\n}\\n.modal-container .modal-content .btn-adicionar:hover,\\n.modal-container .modal-content .btn-adicionar:active,\\n.modal-container .modal-content .btn-adicionar::selection {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-secondary);\\n  border-color: var(--bg-color-secondary);\\n}\\n.modal-container .modal-content .description-medicament-cr {\\n  font-family: \\\"prolight\\\", sans-serif;\\n  font-size: 13px;\\n  color: #4d4d4d;\\n  margin: 14px 0;\\n}\\n.ml-16 {\\n  margin-left: 16px;\\n}\\n::ng-deep .ant-collapse {\\n  width: 100%;\\n}\\n::ng-deep .ant-spin-dot-item {\\n  background-color: var(--bg-color-secondary);\\n}\";","import { EventEmitter, Inject, Injectable } from '@angular/core';\nimport { CoreService } from '@app/core/services/core.service';\nimport { environment } from '@env/environment';\nimport { ACTIVE_THEME, THEMES, Theme } from './symbols';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ThemeService {\n  themeChange = new EventEmitter<Theme>();\n\n  constructor(\n    @Inject(THEMES) public themes: Theme[],\n    @Inject(ACTIVE_THEME) public theme: string,\n    private coreService: CoreService\n  ) {\n    if (this.coreService.isMrd) {\n      this.setTheme('theme-mrd');\n    } else {\n      this.setTheme('theme-receita-digital');\n    }\n  }\n\n  getTheme(name: string): Theme {\n    const theme = this.themes.find(t => t.name === name);\n    if (!theme) {\n      throw new Error(`Theme not found: '${name}'`);\n    }\n    return theme;\n  }\n\n  getActiveTheme() {\n    return this.getTheme(this.theme);\n  }\n\n  getProperty(propName: string) {\n    return this.getActiveTheme().properties[propName];\n  }\n\n  setTheme(name: string) {\n    this.theme = name;\n    this.themeChange.emit(this.getActiveTheme());\n  }\n\n  registerTheme(theme: Theme) {\n    this.themes.push(theme);\n  }\n\n  updateTheme(name: string, properties: { [key: string]: string }) {\n    const theme = this.getTheme(name);\n    theme.properties = {\n      ...theme.properties,\n      ...properties\n    };\n\n    if (name === this.theme) {\n      this.themeChange.emit(theme);\n    }\n  }\n}\n","import { FormArray, FormControl, FormGroup } from '@angular/forms';\r\n\r\nexport function markFormGroup(\r\n  formGroup: FormGroup,\r\n  option: 'markAsTouched' | 'markAsDirty' = 'markAsDirty'\r\n) {\r\n  if (formGroup.controls) {\r\n    Object.keys(formGroup.controls).forEach(key => {\r\n      const control = formGroup.controls[key];\r\n      if (control instanceof FormControl) {\r\n        control[option]();\r\n        control.updateValueAndValidity();\r\n      } else if (control instanceof FormGroup) {\r\n        markFormGroup(control);\r\n      } else if (control instanceof FormArray) {\r\n        control.controls.forEach((ctrl: FormGroup) => markFormGroup(ctrl));\r\n      }\r\n    });\r\n  }\r\n}\r\n","import { Patient } from '@app/shared/models/patient';\nimport { HealthProfessional } from './health-professional';\nimport { PetPatient } from './pet-patient';\nimport { ProductRennova } from './product-rennova';\n\nexport interface Medicamento {\n  precos: string;\n  principiosAtivos: string;\n  frequencia: string;\n  apresentacao: string;\n  nome: string;\n  id: string;\n  quantidade: number;\n  posologia: string;\n  valid: boolean;\n}\n\nexport interface Subreceita {\n  pdf: string;\n  numero: number;\n  xml: string;\n  hash: string;\n}\n\nexport interface Documentos {\n  pdf: string;\n  xml: string;\n  subreceitas: Subreceita[];\n  hash: string;\n}\n\nexport class Prescription {\n  _id: string;\n  code: string;\n  createdAt: Date;\n  status: string;\n  type: string;\n  patient?: Patient;\n  pet?: PetPatient;\n  healthProfessional: HealthProfessional;\n  medicaments: any[];\n  productsRennova: ProductRennova[];\n  retention: any[];\n  amountOfMedicines: number;\n  local: any;\n}\n","export default \"@media (max-width: 1025px) {\\n  .dashboard h5 {\\n    font-size: 20px !important;\\n  }\\n  .dashboard .date {\\n    font-size: 17px !important;\\n    line-height: 20px;\\n    margin-top: 10px;\\n  }\\n}\\n\\n.ngx-photo-editor-icons-container svg {\\n  fill: black;\\n}\\n\\n.ngx-photo-editor-custom-modal-footer {\\n  background: transparent !important;\\n}\\n\\n.container-dashboard {\\n  background: var(--color-white);\\n  background: linear-gradient(180deg, white 49%, var(--background-section) 49%, var(--background-section) 100%);\\n  height: calc(100vh - 130px);\\n  overflow-y: auto;\\n}\\n\\n.container-dashboard .section-profile {\\n  display: flex;\\n  padding-top: 10px;\\n}\\n\\n.container-dashboard .section-profile img {\\n  width: 100px;\\n  height: 100px;\\n}\\n\\n.container-dashboard .section-profile h5 {\\n  font-size: 50px;\\n  font-family: \\\"probold\\\", sans-serif;\\n  margin: 0;\\n  line-height: 1;\\n}\\n\\n.container-dashboard .section-profile p {\\n  color: #6f6f6f;\\n  margin-bottom: 0;\\n}\\n\\n.container-dashboard .section-profile p.date {\\n  font-family: \\\"prolight\\\", sans-serif;\\n  font-size: 20px;\\n}\\n\\n.container-dashboard .section-profile p.crm {\\n  font-size: 15px;\\n  font-family: \\\"prosemibold\\\", sans-serif;\\n  margin-bottom: 32px;\\n}\\n\\n.tile-container {\\n  padding: 0px;\\n}\\n\\n.tile-container .option-title {\\n  text-align: center !important;\\n}\\n\\n.section {\\n  position: initial;\\n  padding-top: 6rem !important;\\n}\\n\\n.avatar-container {\\n  transition: all 0.4s;\\n}\\n\\n.avatar-container:hover {\\n  transition: all 0.4s;\\n}\\n\\n.avatar-container:hover .avatar-placeholder {\\n  transition: all 0.4s;\\n  display: block !important;\\n}\\n\\n.page-header {\\n  height: 44.9vh;\\n}\\n\\n.media img {\\n  width: 100px;\\n  height: 100px;\\n}\\n\\n.media #avatar-input {\\n  display: none;\\n}\\n\\n.media .media-body h5 {\\n  font-size: 50px;\\n  font-family: \\\"probold\\\", sans-serif;\\n  margin: 0;\\n  line-height: 1;\\n}\\n\\n.media .media-body p {\\n  color: #6f6f6f;\\n  margin-bottom: 0;\\n}\\n\\n.media .media-body p.date {\\n  font-family: \\\"prolight\\\", sans-serif;\\n  font-size: 20px;\\n}\\n\\n.media .media-body p.crm {\\n  font-size: 15px;\\n  font-family: \\\"prosemibold\\\", sans-serif;\\n}\\n\\n@media (max-width: 720px) {\\n  .media .media-body h5 {\\n    font-size: 40px;\\n  }\\n}\\n\\n.raised {\\n  margin-top: -27.3vh;\\n  padding-right: 20px;\\n  background-color: transparent;\\n  min-height: 376px;\\n}\\n\\n.raised.menu-tiles {\\n  padding: 0;\\n}\\n\\n.menu-tiles [class^=col-]:not(:first-child):not(:last-child):not(:nth-child(5)),\\n.menu-tiles [class*=\\\" col-\\\"]:not(:first-child):not(:last-child):not(:nth-child(5)) {\\n  padding: 0;\\n}\\n\\n.menu-tiles [class^=col-]:last-child,\\n.menu-tiles [class*=\\\" col-\\\"]:last-child {\\n  padding-left: 0;\\n  padding-right: 0;\\n}\\n\\n.menu-tiles [class^=col-]:first-child, .menu-tiles [class^=col-]:nth-child(5), .menu-tiles [class^=col-]:nth-child(8),\\n.menu-tiles [class*=\\\" col-\\\"]:first-child,\\n.menu-tiles [class*=\\\" col-\\\"]:nth-child(5),\\n.menu-tiles [class*=\\\" col-\\\"]:nth-child(8) {\\n  padding-right: 0;\\n}\\n\\n.menu-tiles .row {\\n  justify-content: center;\\n}\\n\\n.tiles {\\n  height: 220px;\\n  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);\\n  text-transform: uppercase;\\n  font-size: 20px;\\n  color: white;\\n  font-family: \\\"problack\\\", sans-serif;\\n  transition: all 300ms ease;\\n}\\n\\n.tiles.card-nova-prescricao {\\n  background-color: var(--background-card-prescricao);\\n}\\n\\n.tiles.card-modelo-favorito {\\n  background-color: var(--background-card-modelo-favorito);\\n}\\n\\n.tiles.card-historico-prescricao {\\n  background-color: var(--background-card-historico);\\n}\\n\\n.tiles.card-pacientes {\\n  background-color: var(--background-card-pacientes);\\n  color: var(--color-card-pacientes);\\n}\\n\\n.tiles.card-meus-dados {\\n  background-color: var(--background-card-meus-dados);\\n}\\n\\n.tiles.card-tele-consulta {\\n  background-color: var(--background-card-tele-consulta);\\n}\\n\\n.tiles.card-agenda-virtual {\\n  background-color: var(--backgorund-card-agenda-virtual);\\n}\\n\\n.tiles.card-prescricao-renova {\\n  background-color: #1c3f3b;\\n  text-align: center;\\n  color: var(--color-white);\\n}\\n\\n.tiles.card-prescricao-renova i {\\n  font-size: 30px;\\n}\\n\\n.tiles.card-prescricao-renova a {\\n  color: var(--color-white) !important;\\n}\\n\\n.tiles.card-prescricao-renova a :hover {\\n  color: var(--color-white) !important;\\n}\\n\\n.tiles.card-new-prescription {\\n  position: relative;\\n  background-color: #43c7dd;\\n  text-align: center;\\n  color: var(--color-white);\\n  z-index: 1;\\n  /* top left*/\\n}\\n\\n.tiles.card-new-prescription :hover {\\n  color: var(--color-white);\\n}\\n\\n.tiles.card-new-prescription i {\\n  font-size: 30px;\\n}\\n\\n.tiles.card-new-prescription .ribbon {\\n  width: 150px;\\n  height: 150px;\\n  overflow: hidden;\\n  position: absolute;\\n}\\n\\n.tiles.card-new-prescription .ribbon::before,\\n.tiles.card-new-prescription .ribbon::after {\\n  position: absolute;\\n  z-index: -1;\\n  content: \\\"\\\";\\n  display: block;\\n  border: 5px solid #2980b9;\\n}\\n\\n.tiles.card-new-prescription .ribbon span {\\n  position: absolute;\\n  display: block;\\n  width: 225px;\\n  padding: 15px 0;\\n  background-color: #3498db;\\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);\\n  color: #fff;\\n  font: 700 18px/1 \\\"Lato\\\", sans-serif;\\n  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);\\n  text-transform: uppercase;\\n  text-align: center;\\n}\\n\\n.tiles.card-new-prescription .ribbon-top-left {\\n  top: -10px;\\n  left: -10px;\\n}\\n\\n.tiles.card-new-prescription .ribbon-top-left::before,\\n.tiles.card-new-prescription .ribbon-top-left::after {\\n  border-top-color: transparent;\\n  border-left-color: transparent;\\n}\\n\\n.tiles.card-new-prescription .ribbon-top-left::before {\\n  top: 0;\\n  right: 38px;\\n}\\n\\n.tiles.card-new-prescription .ribbon-top-left::after {\\n  bottom: 39px;\\n  left: 0;\\n}\\n\\n.tiles.card-new-prescription .ribbon-top-left span {\\n  right: -4px;\\n  top: 12px;\\n  transform: rotate(-45deg);\\n}\\n\\n.tiles:hover {\\n  transform: translateY(-1px);\\n  z-index: 1;\\n}\\n\\n.pointer {\\n  cursor: pointer;\\n}\\n\\n@media (max-width: 500px) {\\n  .container-dashboard {\\n    overflow-y: scroll;\\n  }\\n  .container-dashboard .section-profile {\\n    padding-top: 30px;\\n  }\\n  .container-dashboard .section-profile img {\\n    width: 60px;\\n    height: 60px;\\n  }\\n  .container-dashboard .section-profile h5 {\\n    font-size: 25px;\\n  }\\n  .container-dashboard .section-profile p.date {\\n    font-size: 15px;\\n  }\\n  .container-dashboard .section-profile p.crm {\\n    margin-bottom: 25px;\\n  }\\n}\\n\\np {\\n  text-align: justify;\\n}\\n\\n.col {\\n  text-align: center;\\n}\\n\\n.card-title {\\n  margin-bottom: 1.25rem;\\n  font-weight: bold;\\n  text-align: center;\\n  color: var(--color-icon-menu);\\n  font-size: 20px;\\n}\\n\\n.card {\\n  border: rgba(0, 0, 0, 0.16) 1px solid;\\n  border-radius: 5px;\\n  height: 215px;\\n}\\n\\n.search-card {\\n  background-color: var(--bg-input-text);\\n}\\n\\n.search-card input {\\n  height: 30px;\\n  background-color: var(--color-input-border-hover);\\n  border-radius: 5px;\\n  border: var(--bg-color-btn-success) 1px solid !important;\\n}\\n\\n.search-card i {\\n  cursor: pointer;\\n}\\n\\n.dispensation-card {\\n  background-color: var(--background-card-pacientes);\\n  text-align: center;\\n}\\n\\n.dispensation-card app-input-file {\\n  text-align: center;\\n}\\n\\n.dispensation-card .btn-send {\\n  background-color: white;\\n  border-color: #d9d9d9;\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n\\napp-input-file ::ng-deep .ant-btn:hover,\\napp-input-file ::ng-deep .ant-btn:focus {\\n  background-color: white;\\n  border-color: #d9d9d9;\\n  color: rgba(0, 0, 0, 0.65);\\n}\";","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'app-modal-resend-documento-empty',\n  templateUrl: './modal-resend-documento-empty.component.html',\n  styleUrls: ['./modal-resend-documento-empty.component.scss']\n})\nexport class ModalResendDocumentoEmptyComponent implements OnInit {\n  @Output() afterInit = new EventEmitter<any>();\n  @Output() goBack = new EventEmitter<any>();\n\n  code: string;\n\n  constructor(private modalref: BsModalRef, private activateRouter: ActivatedRoute) {}\n\n  ngOnInit() {\n    this.afterInit.emit();\n  }\n\n  back() {\n    this.goBack.emit();\n    this.close();\n  }\n\n  close() {\n    this.modalref.hide();\n  }\n\n  get isVeterinarian(): boolean {\n    const prefixCode = this.code.substring(0, 4);\n    return (\n      prefixCode === 'VETP' || prefixCode === 'VETA' || prefixCode === 'VETE' || prefixCode === 'VETO'\n    );\n  }\n\n  get title() {\n    if (this.isVeterinarian) {\n      return this.getTitlePet();\n    } else {\n      switch (this.code[0]) {\n        case 'A':\n          return 'Atestado não reenviado';\n        case 'E':\n          return 'Pedido de Exame não reenviado';\n        case 'O':\n          return 'Documento não reenviado';\n        default:\n          return 'Receita não reenviada';\n      }\n    }\n  }\n\n  getTitlePet() {\n    const prefixCode = this.code.substring(0, 4);\n    switch (prefixCode) {\n      case 'VETA':\n        return 'Atestado não reenviado';\n      case 'VETE':\n        return 'Pedido de Exame não reenviado';\n      case 'VETO':\n        return 'Documento não reenviado';\n      default:\n        return 'Receita não reenviada';\n    }\n  }\n}\n","export default \"<div class=\\\"modal-body\\\" theme>\\n  <h4 class=\\\"title\\\">\\n    {{ title }}\\n  </h4>\\n  <p class=\\\"codigo\\\">Código do documento: {{ code }}</p>\\n\\n  <p style=\\\"font-size: 20px;\\\">Nenhuma forma de reenvio foi selecionada ou os dados são inválidos.</p>\\n\\n  <span\\n    >Clique em <strong>voltar</strong> para selecionar uma forma válida de reenvio ou finalize o\\n    processo.</span\\n  >\\n</div>\\n\\n<div class=\\\"modal-footer\\\" theme>\\n  <button (click)=\\\"back()\\\" class=\\\"btn btn-back\\\">Voltar</button>\\n  <button (click)=\\\"close()\\\" class=\\\"btn\\\" theme>\\n    Finalizar\\n  </button>\\n</div>\\n\";","export default \".modal-body {\\n  text-align: center;\\n}\\n.modal-body .title {\\n  text-transform: none;\\n  font-size: 36px;\\n  line-height: normal;\\n}\\n@media (max-width: 1025px) {\\n  .modal-body .title {\\n    font-size: 22px;\\n    line-height: 24px;\\n  }\\n}\\n.modal-body .codigo {\\n  font-weight: 600;\\n  font-size: 22px;\\n}\\n.modal-footer {\\n  background-color: var(--bg-color-secondary);\\n  padding: 8px;\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.modal-footer .btn {\\n  font-size: 12px;\\n  color: #ebebeb;\\n  text-decoration: none;\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n.modal-footer .btn.btn-primary {\\n  background-color: #1b403a;\\n  border-color: #1b403a;\\n}\\n.modal-footer .btn.btn-back {\\n  background-color: #d4d4d4;\\n  border-color: #d4d4d4;\\n  color: #414141;\\n}\";","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { PharmacistService } from '../pharmacist/services/pharmacist.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DashboardGuard implements CanActivate {\n  constructor(\n    private authService: AuthService,\n    private pharmacistService: PharmacistService,\n    private router: Router\n  ) {}\n\n  @nativeAsync\n  async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\n    const user = this.authService.user();\n    const selectedPharmacy = localStorage.getItem('extra_data');\n    if (user.userType === 'pharmacist' && !selectedPharmacy) {\n      const pharmacies = await this.pharmacistService.getPharmacies(user._id).toPromise();\n      if (pharmacies.length === 1) {\n        const pharmacy = pharmacies[0];\n        localStorage.setItem(\n          'extra_data',\n          JSON.stringify({ pharmacyUserId: pharmacy.userId, pharmacyId: pharmacy._id })\n        );\n      } else {\n        this.router.navigate(['/entry/pharmacy-options'], { state: { pharmacies } });\n      }\n    }\n    return true;\n  }\n}\n","export default \"<app-alternative-navbar title=\\\"Meu Painel\\\" titleIcon=\\\"fa-view-compact\\\"></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n<app-float-button *ngIf=\\\"hasPatientRecordFeature\\\"></app-float-button>\\n\\n<ng-container *ngIf=\\\"hasCipFeature; then templateNew; else templateOld\\\"></ng-container>\\n\\n<ng-template #templateNew>\\n  <div class=\\\"container\\\">\\n    <div class=\\\"row justify-content-around pt-4\\\">\\n      <div class=\\\"col-1\\\"></div>\\n      <div class=\\\"col-md-4\\\">\\n        <p class=\\\"card-title\\\">RECEITA DIGITAL</p>\\n        <nz-card class=\\\"card search-card\\\">\\n          <form (submit)=\\\"search(param.value)\\\">\\n            <p>\\n              Digite abaixo o CPF do paciente (somente números) ou o código da receita para validar e\\n              registrar a dispensação.\\n            </p>\\n\\n            <nz-input-group [nzSuffix]=\\\"suffixIconSearch\\\">\\n              <input nz-input #param />\\n            </nz-input-group>\\n            <ng-template #suffixIconSearch>\\n              <i nz-icon nzType=\\\"search\\\" (click)=\\\"search(param.value)\\\"></i>\\n            </ng-template>\\n          </form>\\n        </nz-card>\\n      </div>\\n\\n      <div class=\\\"col-md-4\\\">\\n        <p class=\\\"card-title\\\">OUTRAS RECEITAS</p>\\n        <nz-card class=\\\"card dispensation-card\\\">\\n          <p>\\n            Faça upload do PDF de receitas que não foram feitas na Receita Digital para validar e\\n            registar a dispensação\\n          </p>\\n\\n          <app-input-file\\n            [(ngModel)]=\\\"pdf\\\"\\n            accept=\\\".pdf\\\"\\n            textButton=\\\"Selecione uma receita\\\"\\n            placeholder=\\\"\\\"\\n            maxSize=\\\"3145728\\\"\\n            name=\\\"pdf\\\"\\n            [(filename)]=\\\"filename\\\"\\n          ></app-input-file>\\n          <button *ngIf=\\\"pdf\\\" nz-button class=\\\"btn-send mt-2\\\" nzType=\\\"primary\\\" (click)=\\\"sendPdf()\\\">\\n            Enviar\\n          </button>\\n        </nz-card>\\n      </div>\\n      <div class=\\\"col-1\\\"></div>\\n    </div>\\n  </div>\\n</ng-template>\\n\\n<!-- ************************************************************************************************************** -->\\n<ng-template #templateOld>\\n  <div *ngIf=\\\"completeUser\\\" class=\\\"container-dashboard\\\">\\n    <div class=\\\"container\\\">\\n      <section class=\\\"section-profile\\\">\\n        <div class=\\\"avatar-container\\\" *ngIf=\\\"avatarB64\\\" title=\\\"Meus Dados\\\">\\n          <a routerLink=\\\"/profile\\\"><img class=\\\"mr-3 avatar\\\" [src]=\\\"avatarB64\\\"/></a>\\n        </div>\\n\\n        <img\\n          class=\\\"mr-3 avatar\\\"\\n          src=\\\"assets/img/default-avatar.png\\\"\\n          alt=\\\"Generic placeholder image\\\"\\n          *ngIf=\\\"!avatarB64 && completeUser.sex !== 'F'\\\"\\n        />\\n\\n        <img\\n          class=\\\"mr-3 avatar\\\"\\n          src=\\\"assets/img/default-avatar.F.png\\\"\\n          alt=\\\"Generic placeholder image\\\"\\n          *ngIf=\\\"!avatarB64 && completeUser.sex === 'F'\\\"\\n        />\\n\\n        <div>\\n          <ng-container [ngSwitch]=\\\"user?.userType\\\">\\n            <h5 class=\\\"mt-0 user-name\\\" *ngSwitchCase=\\\"'healthProfessional'\\\">Olá, {{ doctorName }}</h5>\\n            <h5 class=\\\"mt-0 user-name\\\" *ngSwitchCase=\\\"'patient'\\\">Olá, {{ completeUser?.name }}</h5>\\n            <h5 class=\\\"mt-0 user-name\\\" *ngSwitchCase=\\\"'pharmacist'\\\">Olá, {{ completeUser?.name }}</h5>\\n            <h5 class=\\\"mt-0 user-name\\\" *ngSwitchCase=\\\"'pharmacy'\\\">\\n              Olá, {{ completeUser?.fantasyName }}\\n            </h5>\\n          </ng-container>\\n          <p class=\\\"date\\\">{{ today | date: 'fullDate' }} | {{ today | date: 'HH:mm' }}</p>\\n          <p class=\\\"crm\\\" *ngIf=\\\"user?.userType === 'healthProfessional'\\\">\\n            {{ completeUser?.regionalCouncilNumber?.label }}:\\n            {{ completeUser?.regionalCouncilNumber?.number }}/{{\\n              completeUser?.regionalCouncilNumber?.uf\\n            }}\\n          </p>\\n        </div>\\n      </section>\\n      <section\\n        [ngSwitch]=\\\"user?.userType\\\"\\n        [ngStyle]=\\\"user?.userType !== 'healthProfessional' ? { 'margin-top': '30px' } : {}\\\"\\n      >\\n        <ng-container *ngSwitchCase=\\\"'healthProfessional'\\\">\\n          <div class=\\\"row flex-wrap justify-content-md-center\\\">\\n            <div\\n              class=\\\"col-md-3 tile-container\\\"\\n              *ngIf=\\\"!isVeterinarian && !authService.hasAccessNewModulePrescription\\\"\\n            >\\n              <div\\n                (click)=\\\"redirectDocumentNew(false)\\\"\\n                class=\\\"tiles card-new-prescription d-flex align-items-center flex-column justify-content-center pointer\\\"\\n              >\\n                <div class=\\\"ribbon ribbon-top-left\\\"><span>BETA</span></div>\\n                <span class=\\\"w-75\\\">\\n                  Experimente um novo jeito de prescrever!\\n                </span>\\n                <i class=\\\"fa-solid fa-pills\\\"></i>\\n              </div>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                [routerLink]=\\\"\\n                  isVeterinarian || authService.hasAccessNewModulePrescription\\n                    ? ['/document/new']\\n                    : ['/prescription/new']\\n                \\\"\\n                class=\\\"tiles card-nova-prescricao d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                Nova Prescrição\\n                <i class=\\\"fa fa-plus\\\"></i>\\n              </a>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/favorites\\\"\\n                class=\\\"tiles card-modelo-favorito d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                Modelos Favoritos\\n                <i class=\\\"fa fa-heart\\\"></i>\\n              </a>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/historic\\\"\\n                class=\\\"tiles card-historico-prescricao d-flex align-items-center flex-column justify-content-center pointer\\\"\\n              >\\n                <span class=\\\"option-title w-75\\\">\\n                  Histórico de Documentos\\n                </span>\\n                <i class=\\\"fas fa-history\\\"></i>\\n              </a>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/patients\\\"\\n                class=\\\"tiles card-pacientes d-flex align-items-center flex-column justify-content-center pointer\\\"\\n              >\\n                <span>\\n                  Pacientes\\n                </span>\\n                <i class=\\\"fa-assignment\\\"></i>\\n              </a>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\" *ngIf=\\\"hasRennovaFeature\\\">\\n              <div\\n                (click)=\\\"redirectDocumentNew(true)\\\"\\n                class=\\\"tiles card-prescricao-renova d-flex align-items-center flex-column justify-content-center pointer\\\"\\n              >\\n                <span class=\\\"w-75\\\">\\n                  Prescrição Rennova\\n                </span>\\n                <i class=\\\"fa fa-syringe\\\"></i>\\n              </div>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\" *ngIf=\\\"!hasAccessToManipulatedFunctionality()\\\">\\n              <a\\n                routerLink=\\\"/profile\\\"\\n                class=\\\"tiles card-meus-dados d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                Meus Dados\\n                <i class=\\\"fa fa-account-box\\\"></i>\\n              </a>\\n            </div>\\n          </div>\\n          <div\\n            class=\\\"row flex-wrap justify-content-md-center\\\"\\n            *ngIf=\\\"hasAccessToManipulatedFunctionality()\\\"\\n          >\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/profile\\\"\\n                class=\\\"tiles card-meus-dados d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                Meus Dados\\n                <i class=\\\"fa fa-account-box\\\"></i>\\n              </a>\\n            </div>\\n\\n            <div class=\\\"col-md-3 tile-container\\\" *ngIf=\\\"hasAccessToManipulatedFunctionality()\\\">\\n              <a\\n                routerLink=\\\"/personalized-medications\\\"\\n                class=\\\"tiles dark d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                <span class=\\\"option-title\\\">\\n                  Personalizar Tratamento\\n                </span>\\n                <i nz-icon nzType=\\\"profile\\\" nzTheme=\\\"outline\\\"></i>\\n              </a>\\n            </div>\\n          </div>\\n        </ng-container>\\n\\n        <ng-container *ngSwitchCase=\\\"'patient'\\\">\\n          <div class=\\\"row flex-wrap justify-content-md-center\\\">\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/historic\\\"\\n                class=\\\"tiles card-historico-prescricao d-flex align-items-center flex-column justify-content-center pointer\\\"\\n              >\\n                Minhas Prescrições\\n                <i class=\\\"fa fa-account-box\\\"></i>\\n              </a>\\n            </div>\\n\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/profile\\\"\\n                class=\\\"tiles card-meus-dados d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                <span class=\\\"option-title\\\">\\n                  Meus Dados\\n                </span>\\n                <i class=\\\"fas fa-history\\\"></i>\\n              </a>\\n            </div>\\n          </div>\\n        </ng-container>\\n\\n        <ng-container *ngSwitchCase=\\\"'pharmacy'\\\">\\n          <div class=\\\"row flex-wrap justify-content-md-center\\\" style=\\\"text-align: center;\\\">\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a>\\n                <div\\n                  (click)=\\\"open()\\\"\\n                  class=\\\"tiles card-nova-prescricao d-flex align-items-center flex-column justify-content-center\\\"\\n                >\\n                  Buscar Receitas\\n                  <i class=\\\"fas fa-search\\\"></i>\\n                </div>\\n              </a>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\" *ngIf=\\\"!hasFarmaRennovaFeature\\\">\\n              <a\\n                routerLink=\\\"/pharmacy/recipe\\\"\\n                class=\\\"tiles card-pacientes d-flex align-items-center flex-column justify-content-center pointer\\\"\\n              >\\n                <span>\\n                  Receita de Terceiros\\n                </span>\\n                <i class=\\\"fas fa-clipboard-list\\\"></i>\\n              </a>\\n            </div>\\n\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/pharmacist\\\"\\n                class=\\\"tiles card-meus-dados d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                Farmacêuticos\\n                <i nz-icon nzType=\\\"team\\\" nzTheme=\\\"outline\\\"></i>\\n              </a>\\n            </div>\\n          </div>\\n\\n          <div class=\\\"row flex-wrap justify-content-md-center\\\">\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/historic\\\"\\n                class=\\\"tiles card-historico-prescricao d-flex align-items-center flex-column justify-content-center pointer\\\"\\n              >\\n                <span>\\n                  Histórico de Retenções\\n                </span>\\n                <i class=\\\"fas fa-history\\\"></i>\\n              </a>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/profile\\\"\\n                class=\\\"tiles card-meus-dados d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                Meus dados\\n                <i class=\\\"fa fa-account-box\\\"></i>\\n              </a>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\" *ngIf=\\\"hasAccessToManipulatedFunctionality()\\\">\\n              <a\\n                routerLink=\\\"/personalized-medications\\\"\\n                class=\\\"tiles card-nova-prescricao d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                Manipulados\\n                <i nz-icon nzType=\\\"medicine-box\\\" nzTheme=\\\"outline\\\"></i>\\n              </a>\\n            </div>\\n          </div>\\n        </ng-container>\\n\\n        <ng-container *ngSwitchCase=\\\"'pharmacist'\\\">\\n          <div class=\\\"row flex-wrap justify-content-md-center\\\">\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <div\\n                (click)=\\\"open()\\\"\\n                class=\\\"tiles card-nova-prescricao d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                Buscar Receitas\\n                <i class=\\\"fas fa-search\\\"></i>\\n              </div>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/pharmacy/recipe\\\"\\n                class=\\\"tiles card-pacientes d-flex align-items-center flex-column justify-content-center pointer\\\"\\n              >\\n                Receita de Terceiros\\n                <i class=\\\"fas fa-clipboard-list\\\"></i>\\n              </a>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\">\\n              <a\\n                routerLink=\\\"/profile\\\"\\n                class=\\\"tiles card-meus-dados d-flex align-items-center flex-column justify-content-center\\\"\\n              >\\n                Meus Dados\\n                <i class=\\\"fa fa-account-box\\\"></i>\\n              </a>\\n            </div>\\n            <div class=\\\"col-md-3 tile-container\\\" *ngIf=\\\"hasAccessToManipulatedFunctionality()\\\">\\n              <a\\n                routerLink=\\\"/personalized-medications\\\"\\n                class=\\\"tiles card-pacientes d-flex align-items-center flex-column justify-content-center pointer\\\"\\n              >\\n                Manipulados\\n                <i nz-icon nzType=\\\"medicine-box\\\" nzTheme=\\\"outline\\\"></i>\\n              </a>\\n            </div>\\n          </div>\\n        </ng-container>\\n      </section>\\n    </div>\\n  </div>\\n</ng-template>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n<app-modal-cip-acceptance\\n  [(isVisible)]=\\\"isModalCipVisible\\\"\\n  [code]=\\\"this.cipFeature?.code\\\"\\n></app-modal-cip-acceptance>\\n<app-modal-rqe-warning\\n  *ngIf=\\\"completeUser\\\"\\n  [(isVisible)]=\\\"isModalRqeVisible\\\"\\n  [healthProfessional]=\\\"completeUser\\\"\\n>\\n</app-modal-rqe-warning>\\n<app-modal-womens-month *ngIf=\\\"completeUser\\\" [(isVisible)]=\\\"isModalWomanVisible\\\">\\n</app-modal-womens-month>\\n\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'app-modal-covid',\n  templateUrl: './modal-covid.component.html',\n  styleUrls: ['./modal-covid.component.scss']\n})\nexport class ModalCovidComponent implements OnInit {\n  @Output() searchEvent = new EventEmitter();\n  @Input() pharmacy;\n  public covidForm: FormGroup;\n\n  constructor(\n    private pharmacyService: PharmacyService,\n    private fb: FormBuilder,\n    private modalRef: BsModalRef,\n    private notification: AppToastService\n  ) {\n    this.covidForm = this.fb.group({\n      covid: this.fb.control('', Validators.required)\n    });\n  }\n\n  ngOnInit() {\n    const valCovidDB = this.pharmacy.covid;\n    this.covidForm.controls.covid.setValue(valCovidDB);\n    this.covidForm.patchValue(this.covidForm.controls.covid);\n  }\n\n  handleClick() {\n    this.modalRef.hide();\n  }\n\n  @nativeAsync\n  async save(param) {\n    if (param === '') {\n      this.notification.notify('warning', 'Atenção', 'Valor do teste Covid não informado');\n    } else {\n      const pharmacyId = this.pharmacy._id;\n      this.pharmacy.covid = this.covidForm.get('covid').value;\n      const pharmacy = await this.pharmacyService.update(pharmacyId, this.pharmacy).toPromise();\n      this.modalRef.hide();\n      this.notification.notify('success', 'Informação atualizada com sucesso .', null);\n    }\n  }\n}\n","export default \"<div>\\n  <div class=\\\"modal-header\\\">\\n    <img src=\\\"assets/icons/Covid-19 arte.png\\\" class=\\\"gfg\\\" />\\n    <h4 class=\\\"modal-title pull-left text-white\\\">MOVIMENTO COVID-19 : Teste Rápido</h4>\\n    <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button>\\n  </div>\\n  <div class=\\\"container\\\">\\n    <form form class=\\\"row justify-content-center\\\" [formGroup]=\\\"covidForm\\\">\\n      <p>\\n        Com o objetivo de ajudar no combate ao Covid-19, estamos mapeando as farmácias e drogarias que\\n        oferecem o teste rápido em suas lojas.\\n      </p>\\n      <h5>Sua farmácia realiza o Teste COVID-19?</h5>\\n      <div>\\n        <div class=\\\"form-input\\\">\\n          <nz-form-label nzFor=\\\"covid\\\" theme></nz-form-label>\\n          <nz-radio-group id=\\\"covid\\\" formControlName=\\\"covid\\\" theme>\\n            <h4>\\n              <label nz-radio nzValue=\\\"1\\\" (click)=\\\"save(1)\\\">Sim, realizo</label>\\n              <label nz-radio nzValue=\\\"2\\\" (click)=\\\"save(2)\\\">Não realizo</label>\\n              <label nz-radio nzValue=\\\"3\\\" (click)=\\\"save(3)\\\">Não realizo, mas gostaria de ter</label>\\n            </h4>\\n          </nz-radio-group>\\n        </div>\\n      </div>\\n    </form>\\n  </div>\\n</div>\\n\";","export default \".modal-header {\\n  background-color: #4cbca3;\\n  font-family: \\\"probold\\\";\\n}\\n\\n.gfg {\\n  width: auto;\\n  text-align: center;\\n  padding: 20px;\\n}\\n\\nimg {\\n  max-width: 100%;\\n  height: auto;\\n}\\n\\n.modal-body {\\n  padding: 0px;\\n  height: 170px;\\n  display: flex;\\n  align-items: center;\\n  flex-direction: column;\\n  justify-content: center;\\n}\\n\\n.modal-body input {\\n  width: 265px;\\n  height: 35px;\\n  font-family: \\\"prolight\\\";\\n  font-size: 12px;\\n}\\n\\n.modal-body label {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  position: relative;\\n  z-index: 1;\\n  right: -118px;\\n  top: -28px;\\n  font-size: 15px;\\n  margin: 0px;\\n  width: 30px;\\n}\\n\\n.modal-body label i {\\n  cursor: pointer;\\n}\\n\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n  text-align: center;\\n}\";","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { markFormGroup } from '@app/utils';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Patient } from './../../../shared/models/patient';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-modal-complement-info-patient',\n  templateUrl: './modal-complement-info-patient.component.html',\n  styleUrls: ['./modal-complement-info-patient.component.scss']\n})\nexport class ModalComplementInfoPatientComponent implements OnInit {\n  patientId: string;\n  patient: Patient;\n  @Output() updateCompleteUser = new EventEmitter();\n\n  form: FormGroup;\n\n  constructor(\n    private patientsService: PatientsService,\n    private modalRef: BsModalRef,\n    private notification: AppToastService,\n    private fb: FormBuilder\n  ) {}\n\n  ngOnInit() {\n    this.form = this.fb.group({\n      identity: [this.patient.identity],\n      cellphone: [this.patient.cellphone, Validators.required],\n      address: this.fb.group({\n        complement: [''],\n        city: [this.patient.address ? this.patient.address.city : '', Validators.required],\n        number: [this.patient.address ? this.patient.address.number : '', Validators.required],\n        street: [this.patient.address ? this.patient.address.street : '', Validators.required],\n        neighborhood: [\n          this.patient.address ? this.patient.address.neighborhood : '',\n          Validators.required\n        ],\n        cep: [this.patient.address ? this.patient.address.cep : '', Validators.required],\n        uf: [this.patient.address ? this.patient.address.uf : '', Validators.required]\n      })\n    });\n  }\n\n  @nativeAsync\n  async save() {\n    markFormGroup(this.form);\n    if (this.form.valid) {\n      try {\n        const data = {\n          ...this.patient,\n          identity: this.form.get('identity').value,\n          cellphone: this.form.get('cellphone').value,\n          address: {\n            ...this.form.get('address').value\n          }\n        } as Patient;\n\n        const patient = await this.patientsService.update(this.patientId, data).toPromise();\n        this.updateCompleteUser.emit(patient);\n        this.notification.notify('success', 'Dados atualizados com sucesso!', null);\n        this.modalRef.hide();\n      } catch (error) {\n        console.error(error);\n        this.notification.notify(\n          'error',\n          'Ocorreu um erro ao tentar atualizar os dados cadastrais',\n          null\n        );\n      }\n    }\n  }\n\n  viewAddress() {\n    return (\n      !this.patient.address ||\n      (this.patient.address &&\n        !this.patient.address.cep &&\n        !this.patient.address.street &&\n        !this.patient.address.number &&\n        !this.patient.address.neighborhood &&\n        !this.patient.address.city &&\n        !this.patient.address.uf)\n    );\n  }\n}\n","export default \"<div class=\\\"modal-header\\\" theme>\\n  <h4 class=\\\"modal-title pull-left text-white\\\">Atualizar dados cadastrais</h4>\\n</div>\\n<div class=\\\"modal-body\\\" [ngClass]=\\\"{ 'modal-body-width': !viewAddress() }\\\">\\n  <nz-alert\\n    class=\\\"mb-4 w-100\\\"\\n    nzType=\\\"warning\\\"\\n    nzMessage=\\\"Para continuar acessando o sistema, preencha os campos obrigatórios\\\"\\n  ></nz-alert>\\n  <form nz-form [formGroup]=\\\"form\\\">\\n    <fieldset class=\\\"w-100 mb-2\\\" *ngIf=\\\"!patient.identity || !patient.cellphone\\\">\\n      <legend theme>Dados Complementares</legend>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"col-sm-12 col-md-6 col-lg-6\\\" *ngIf=\\\"!patient.identity\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"identity\\\">Identidade</nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                formControlName=\\\"identity\\\"\\n                id=\\\"identity\\\"\\n                nz-input\\n                placeholder=\\\"Digite sua identidade (somente números)\\\"\\n                type=\\\"number\\\"\\n                theme\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-sm-12 col-md-6 col-lg-6\\\" *ngIf=\\\"!patient.cellphone\\\">\\n          <nz-form-item *ngIf=\\\"form.get('cellphone') as cellphone\\\">\\n            <nz-form-label nzFor=\\\"cellphone\\\">Telefone <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                id=\\\"cellphone\\\"\\n                [mask]=\\\"cellphone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n                placeholder=\\\"(21) 92222-2222\\\"\\n                formControlName=\\\"cellphone\\\"\\n                theme\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </div>\\n    </fieldset>\\n    <app-address-data-form\\n      *ngIf=\\\"viewAddress()\\\"\\n      [form]=\\\"form.get('address')\\\"\\n      [required]=\\\"true\\\"\\n      alertMsg=\\\"Para receber Receitas de Controle Especial (listas C1, C5 e adendos das listas A1, B1 e B2), deverá ser preenchido o endereço completo (RDC 344/98).\\\"\\n    ></app-address-data-form>\\n  </form>\\n</div>\\n<div class=\\\"modal-footer\\\">\\n  <button class=\\\"ok-btn btn-salvar\\\" nz-button theme (click)=\\\"save()\\\">Salvar <i class=\\\"fa\\\"></i></button>\\n</div>\\n\";","export default \".modal-body input {\\n  border-radius: 10px;\\n}\\n.modal-body .btn-save {\\n  float: right;\\n  padding-top: 7px;\\n  padding-bottom: 7px;\\n  margin-top: 13px;\\n  margin-bottom: 5px;\\n}\\n.modal-body i {\\n  font-size: 24px;\\n}\\n.modal-body .mandatory {\\n  color: red;\\n}\\n.modal-body input::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n::ng-deep .ant-select-selection {\\n  height: 100%;\\n}\\n.modal-header {\\n  margin: 0;\\n  font-family: \\\"probold\\\";\\n}\\n.modal-body {\\n  flex: 1;\\n  min-height: 29vh;\\n  max-height: 72vh;\\n  overflow-y: auto;\\n  overflow-x: hidden;\\n}\\n.modal-body-width {\\n  width: 950px;\\n}\\n.modal-footer {\\n  margin: 0;\\n}\\n.btn-salvar,\\n.btn-salvar:hover {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n}\\n@media screen and (max-width: 500px) {\\n  .modal-body-width {\\n    width: 410px;\\n  }\\n}\";","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '@app/core/services/auth.service';\r\nimport { ModalEditPharmacyTechnicianComponent } from '@app/modules/dashboard/modal-edit-pharmacy-technician/modal-edit-pharmacy-technician.component';\r\nimport { PrescriptionService } from '@app/modules/document/services/prescription.service';\r\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\r\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\r\nimport { PharmacistService } from '@app/modules/pharmacist/services/pharmacist.service';\r\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\r\nimport { UserService } from '@app/modules/user/user.service';\r\nimport { ModalSearchComponent } from '@app/shared/modals/modal-search/modal-search.component';\r\nimport { AdditionalFeatureAccept, HealthProfessional } from '@app/shared/models';\r\nimport { User } from '@app/shared/models/decodedLoginToken';\r\nimport { ProfessionalType } from '@app/shared/models/professional-type.enum';\r\nimport { UserType } from '@app/shared/models/user-type.enum';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\nimport { StateService } from '@app/shared/services/state.service';\r\nimport * as moment from 'moment';\r\nimport { NzModalService } from 'ng-zorro-antd/modal';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { CroppedEvent } from 'ngx-photo-editor';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { ModalCovidComponent } from '../../modal-covid/modal-covid.component';\r\nimport { ModalNewPortalDigitalSignaturesComponent } from './../../../../shared/modals/modal-new-portal-digital-signatures/modal-new-portal-digital-signatures.component';\r\nimport { ModalComplementInfoPatientComponent } from './../../modal-complement-info-patient/modal-complement-info-patient.component';\r\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\r\n\r\n@Component({\r\n  selector: 'app-index',\r\n  templateUrl: './index.component.html',\r\n  styleUrls: ['./index.component.scss']\r\n})\r\nexport class IndexComponent implements OnInit, OnDestroy {\r\n  loading = true;\r\n  completeUser: any;\r\n  userId: string;\r\n  crm: string;\r\n  modalRef: BsModalRef;\r\n  pharmacy: any;\r\n  functionalities = [];\r\n  imageChangedEvent: any;\r\n  avatarB64: any;\r\n  pdf: any;\r\n  filename: string;\r\n\r\n  isModalCipVisible = false;\r\n  isModalRqeVisible = false;\r\n  isModalWomanVisible = false;\r\n\r\n  private destroyed$: ReplaySubject<boolean> = new ReplaySubject();\r\n\r\n  constructor(\r\n    public authService: AuthService,\r\n    private healthProfessionalService: HealthProfessionalService,\r\n    private modalService: BsModalService,\r\n    private patientService: PatientsService,\r\n    private router: Router,\r\n    private userService: UserService,\r\n    private pharmacyService: PharmacyService,\r\n    private pharmacistService: PharmacistService,\r\n    private prescriptionService: PrescriptionService,\r\n    private notification: AppToastService,\r\n    private nzModalService: NzModalService,\r\n    private stateService: StateService\r\n  ) {}\r\n\r\n  @nativeAsync\r\n  async ngOnInit() {\r\n    try {\r\n      this.userService.getAvatar().subscribe(avatar => (this.avatarB64 = avatar));\r\n      this.completeUser = await this.getCompleteUser();\r\n\r\n      if (\r\n        this.user.userType === UserType.PATIENT &&\r\n        this.patientWithoutMandatoryInformationRegistered()\r\n      ) {\r\n        this.showModalComplementInfoPatient();\r\n      } else {\r\n        if (this.user.userType === UserType.PHARMACY) {\r\n          if (!this.completeUser.technicalResponsible || !this.completeUser.technicalResponsible.cpf) {\r\n            this.showModalEditPharmacyThechnical(this.completeUser);\r\n          } else {\r\n            this.openModalCovid();\r\n          }\r\n        }\r\n      }\r\n\r\n      this.checkCipAcceptance();\r\n      if (this.completeUser.professionalType === 'doctor') {\r\n        this.checkRQE();\r\n      }\r\n\r\n      if (this.completeUser.sex === 'F' && this.womensMonth && !this.hideWomensModal) {\r\n        this.isModalWomanVisible = false;\r\n      }\r\n    } catch (err) {\r\n      console.error(err);\r\n    }\r\n    this.loading = false;\r\n  }\r\n\r\n  @nativeAsync\r\n  private async showAgainModalNewPortalDigitalSignatures() {\r\n    if (this.user.userType === UserType.PHARMACY) {\r\n      const {\r\n        doNotShowAgainModalNewPortalDigitalSignatures\r\n      } = await this.userService.getControllerUserUi(this.user._id).toPromise();\r\n      if (!doNotShowAgainModalNewPortalDigitalSignatures) {\r\n        this.modalService.show(ModalNewPortalDigitalSignaturesComponent, {\r\n          backdrop: 'static',\r\n          keyboard: false,\r\n          class: 'modal-md'\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  private patientWithoutMandatoryInformationRegistered() {\r\n    return (\r\n      !this.completeUser.cellphone ||\r\n      !this.completeUser.address ||\r\n      (this.completeUser.address &&\r\n        !this.completeUser.address.cep &&\r\n        !this.completeUser.address.street &&\r\n        !this.completeUser.address.number &&\r\n        !this.completeUser.address.neighborhood &&\r\n        !this.completeUser.address.city &&\r\n        !this.completeUser.address.uf)\r\n    );\r\n  }\r\n\r\n  private openModalCovid() {\r\n    if (!this.completeUser.covid) {\r\n      this.showModalCovid(this.completeUser);\r\n    }\r\n  }\r\n\r\n  get user(): User {\r\n    return this.authService.user();\r\n  }\r\n\r\n  private get hideWomensModal() {\r\n    return localStorage.getItem('hideWomensModal');\r\n  }\r\n\r\n  private get womensMonth(): boolean {\r\n    return moment().month() === 2 && moment().year() === 2022;\r\n  }\r\n\r\n  private getCompleteUser() {\r\n    switch (this.user.userType) {\r\n      case 'patient':\r\n        return this.patientService.getPatientByUserId(this.user._id).toPromise();\r\n      case 'healthProfessional':\r\n        return this.healthProfessionalService.getHealthProfessional(this.user._id).toPromise();\r\n      case 'pharmacist':\r\n        return this.getPharmacistData();\r\n      case 'admin':\r\n        this.router.navigate(['/admin']);\r\n        break;\r\n      default:\r\n        return this.pharmacyService.getPharmacyByUserId(this.user._id).toPromise();\r\n    }\r\n  }\r\n\r\n  get today() {\r\n    return new Date();\r\n  }\r\n\r\n  get cipFeature() {\r\n    return this.user && this.user.features.find(f => f.name === 'CIP');\r\n  }\r\n\r\n  get hasCipFeature() {\r\n    return this.cipFeature && this.cipFeature.accept === AdditionalFeatureAccept.YES;\r\n  }\r\n\r\n  get hasPatientRecordFeature() {\r\n    return this.user && this.user.features.find(f => f.name === 'Prontuário');\r\n  }\r\n\r\n  get hasRennovaFeature(): boolean {\r\n    return this.user && this.user.features.some(f => f.name === 'Rennova');\r\n  }\r\n\r\n  get hasFarmaRennovaFeature(): boolean {\r\n    return this.user && this.user.features.some(f => f.name === 'Farma Rennova');\r\n  }\r\n\r\n  private checkCipAcceptance() {\r\n    const cipFeature = this.user.features.find(f => f.name === 'CIP');\r\n    if (\r\n      cipFeature &&\r\n      cipFeature.accept !== AdditionalFeatureAccept.YES &&\r\n      cipFeature.accept !== AdditionalFeatureAccept.NO\r\n    ) {\r\n      this.isModalCipVisible = true;\r\n    }\r\n  }\r\n\r\n  private checkRQE() {\r\n    const healthProfessional = <HealthProfessional>this.completeUser;\r\n    const showModal = healthProfessional.specialties.some(s => s.notExists === undefined);\r\n    if (showModal) {\r\n      this.isModalRqeVisible = true;\r\n    }\r\n  }\r\n\r\n  search(param: string) {\r\n    param = param && param.replace(/[^a-z0-9]+/gi, '');\r\n    if (param) {\r\n      if (param.length === 11 || param.length === 15) {\r\n        if (param.length === 15 && !this.hasFarmaRennovaFeature && param.substring(0, 3) === 'REN') {\r\n          this.notification.notify('warning', 'Atenção', 'Código informado inválido');\r\n        } else {\r\n          this.requests(param);\r\n        }\r\n      } else {\r\n        this.notification.notify('warning', 'Atenção', 'CPF ou código inválido');\r\n      }\r\n    }\r\n  }\r\n  @nativeAsync\r\n  private async requests(param: string) {\r\n    try {\r\n      const prescriptions = await this.prescriptionService.getPrescriptionsPatient(param).toPromise();\r\n\r\n      if (param.length === 11) {\r\n        if (prescriptions.length === 0) {\r\n          this.notification.notify(\r\n            'warning',\r\n            'Atenção',\r\n            'Não existe prescrições com medicamentos a serem dispensados para o CPF informado'\r\n          );\r\n          return;\r\n        }\r\n        this.router.navigate(['/document/listing-prescriptions/', param], {\r\n          state: { prescriptions: prescriptions }\r\n        });\r\n      } else {\r\n        this.router.navigate(['/document/confirmation', param], {\r\n          state: { prescription: prescriptions }\r\n        });\r\n      }\r\n    } catch (error) {\r\n      if (error.status === 404) {\r\n        this.notification.notify('warning', 'Atenção', error.error.message);\r\n      }\r\n    }\r\n  }\r\n\r\n  get doctorName() {\r\n    if (this.completeUser) {\r\n      return `Dr${this.completeUser.sex === 'F' ? 'a' : ''}. ${this.completeUser.name}`;\r\n    }\r\n    return '';\r\n  }\r\n  @nativeAsync\r\n  async getPharmacistData() {\r\n    return await this.pharmacistService.getPharmacistByUserId(this.user._id).toPromise();\r\n  }\r\n\r\n  hasAccessToManipulatedFunctionality() {\r\n    return false && this.functionalities.filter(i => i.code === 710588).length > 0;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroyed$.next(true);\r\n    this.destroyed$.complete();\r\n  }\r\n\r\n  open() {\r\n    this.modalRef = this.modalService.show(ModalSearchComponent, {\r\n      backdrop: 'static',\r\n      keyboard: false\r\n    });\r\n  }\r\n\r\n  get isDermatologist() {\r\n    return (\r\n      this.completeUser.specialties.filter(specialty => specialty.title === 'Dermatologia').length === 1\r\n    );\r\n  }\r\n\r\n  get isVeterinarian() {\r\n    return this.completeUser.professionalType == ProfessionalType.VETERINARIAN;\r\n  }\r\n\r\n  showModalComplementInfoPatient() {\r\n    const initialState = {\r\n      patientId: this.completeUser._id,\r\n      patient: this.completeUser\r\n    };\r\n\r\n    const modal = this.modalService.show(ModalComplementInfoPatientComponent, {\r\n      class: 'modal-lg',\r\n      initialState,\r\n      backdrop: 'static',\r\n      keyboard: false\r\n    });\r\n    modal.content.updateCompleteUser.subscribe(patient => (this.completeUser = patient));\r\n  }\r\n\r\n  public showModalEditPharmacyThechnical(completeUser) {\r\n    const modal = this.nzModalService.create({\r\n      nzContent: ModalEditPharmacyTechnicianComponent,\r\n      nzComponentParams: {\r\n        completeUser,\r\n        userType: this.user.userType\r\n      },\r\n      nzClosable: false,\r\n      nzMaskClosable: false,\r\n      nzFooter: null\r\n    });\r\n\r\n    modal.afterClose.subscribe(() => this.openModalCovid());\r\n  }\r\n\r\n  showModalCovid(completeUser: any) {\r\n    const config = {\r\n      backdrop: false,\r\n      keyboard: false,\r\n      ignoreBackdropClick: true\r\n    };\r\n\r\n    const initialState = {\r\n      pharmacy: completeUser\r\n    };\r\n    this.modalService.show(ModalCovidComponent, {\r\n      ...config,\r\n      initialState,\r\n      backdrop: 'static',\r\n      keyboard: false\r\n    });\r\n  }\r\n\r\n  fileChangeEvent(event: any) {\r\n    this.imageChangedEvent = event;\r\n  }\r\n\r\n  imageCropped(event: CroppedEvent) {\r\n    this.avatarB64 = event.base64;\r\n  }\r\n  @nativeAsync\r\n  async sendPdf() {\r\n    try {\r\n      if (this.pdf) {\r\n        this.loading = true;\r\n        const response = await this.prescriptionService.getPrescriptionByPdf(this.pdf);\r\n        if (!response.thirdParties) {\r\n          this.router.navigate(['/dispensation/consult']);\r\n        } else {\r\n          this.router.navigate(['/dispensation/consult-empty']);\r\n        }\r\n      }\r\n    } catch (err) {\r\n      console.error(err);\r\n      if (err.status === 404) {\r\n        const base64 = await this.prescriptionService.blobToBase64(this.pdf);\r\n        this.prescriptionService.pdfBase64 = base64;\r\n        this.prescriptionService.filename = this.filename;\r\n        this.prescriptionService.prescription = {\r\n          thirdParties: true,\r\n          medicaments: [\r\n            {\r\n              hidden: true,\r\n              checked: true\r\n            }\r\n          ]\r\n        };\r\n        this.router.navigate(['/dispensation/consult-not-found']);\r\n      }\r\n    }\r\n    this.loading = false;\r\n  }\r\n\r\n  redirectDocumentNew(isRennova: boolean) {\r\n    this.stateService.data = { isRennova };\r\n    this.router.navigateByUrl('/document/new');\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { DashboardGuard } from './dashboard.guard';\r\nimport { IndexComponent } from './pages/index/index.component';\r\n\r\nconst routes: Routes = [{ path: '', component: IndexComponent, canActivate: [DashboardGuard] }];\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forChild(routes)],\r\n  exports: [RouterModule]\r\n})\r\nexport class DashboardRoutingModule {}\r\n","export default \"<nz-modal\\n  theme\\n  class=\\\"modal-cip\\\"\\n  [nzTitle]=\\\"title\\\"\\n  [(nzVisible)]=\\\"isVisible\\\"\\n  [nzContent]=\\\"modalContent\\\"\\n  [nzFooter]=\\\"modalFooter\\\"\\n  [nzStyle]=\\\"{ top: '20px' }\\\"\\n  nzWidth=\\\"800\\\"\\n  nzKeyboard=\\\"false\\\"\\n  nzMaskClosable=\\\"false\\\"\\n  nzClosable=\\\"false\\\"\\n>\\n  <ng-template #modalContent>\\n    <p class=\\\"bold\\\">RESUMO</p>\\n    <p>\\n      O Projeto Piloto SERP tem o objetivo de centralizar a troca de informações de Prescrições e\\n      Dispensações Digitais.\\n    </p>\\n    <p>\\n      Para isso precisamos da sua autorização para compartilhar seus dados de identificação com as\\n      instituições que estão participando deste projeto.\\n    </p>\\n    <br />\\n    <p class=\\\"bold\\\">Quais dados vamos compartilhar?</p>\\n    <ol>\\n      <li>Nome</li>\\n      <li>CPF</li>\\n      <li>CRF/UF</li>\\n    </ol>\\n    <br />\\n    <p class=\\\"bold\\\">Com quais instituições vamos compartilhar?</p>\\n    <ul>\\n      <li>CIP (A centralizadora)</li>\\n      <li>Prontmed (plataforma de prontuários eletrônicos)</li>\\n    </ul>\\n\\n    <p>Confira abaixo o Termo de Consentimento <span class=\\\"bold\\\">na íntegra!</span></p>\\n\\n    <hr />\\n\\n    <h4 class=\\\"title\\\">Termo de Consentimento para Tratamento de Dados</h4>\\n    <h5 class=\\\"subtitle\\\">- Projeto Piloto para emissão da Receita Digital -</h5>\\n\\n    <p class=\\\"bold\\\">Olá, seja bem-vindo!</p>\\n    <p>\\n      A <span class=\\\"bold\\\">Receita Digital</span> é uma empresa inovadora, que transforma o\\n      relacionamento entre médicos, dentistas, pacientes e farmácias em um processo simples, prático e\\n      ágil, através de tecnologia.\\n    </p>\\n    <p>\\n      Nossa Plataforma é estruturada para oferecer a melhor solução em prescrição, gestão e dispensação\\n      de receitas digitais no mercado.\\n    </p>\\n    <p>\\n      Para que possamos desenvolver e continuar estruturando melhorias em nossa Plataforma, convidamos\\n      você, farmacêutico, para participar do nosso projeto piloto de registro centralizado de prescrições\\n      médicas e odontológicas e venda de medicamentos.\\n    </p>\\n    <p>\\n      Ao aceitar os termos desse documento, você concordará que a RECEITA DIGITAL realize o tratamento de\\n      seus dados pessoais, no que se referem a coleta, produção, recepção, classificação, utilização,\\n      acesso, reprodução, transmissão, distribuição, processamento, arquivamento, armazenamento,\\n      eliminação, avaliação ou controle da informação, modificação, comunicação, transferência, difusão\\n      ou extração.\\n    </p>\\n    <p>\\n      Por isso, pedimos que leia atentamente este documento e, em caso de dúvida, contate-nos através do\\n      e-mail privacidade@receitadigital.com ou consulte nossa Política de Privacidade.\\n    </p>\\n    <p>\\n      Salientamos que a participação do projeto não é obrigatória, mas será um prazer imenso contar com\\n      você na nossa jornada para promover a dispensação de medicamentos de forma ainda mais prática e\\n      segura!\\n    </p>\\n\\n    <h5 class=\\\"subtitle\\\">- Termos Gerais -</h5>\\n\\n    <p class=\\\"bold\\\">1. Sobre o que se trata o projeto?</p>\\n    <p>\\n      1.1. A Receita Digital disponibilizará na sua farmácia uma interface inovadora, onde será possível\\n      que você, farmacêutico responsável pelo atendimento, tenha acesso à prescrição de medicamentos de\\n      forma online (ou seja, sem a necessidade de qualquer documento físico ou preenchimento de\\n      formulários), com poucos cliques.\\n    </p>\\n    <p>Como vai funcionar?</p>\\n    <p>\\n      1.2. O médico irá emitir a receita médica do paciente, em formato digital, através do sistema do\\n      parceiro Prontmed, que é uma plataforma especializada em prontuários médicos, e encaminhará este\\n      arquivo digital à CIP (Câmara Interbancária de Pagamentos), que centralizará e armazenará os dados\\n      e arquivos desta prescrição eletrônica.\\n    </p>\\n    <p>\\n      1.3. Você, farmacêutico, realizará a validação e autenticação das informações desta receita, de\\n      acordo com a legislação vigente. Caso efetue a venda de algum medicamento, você coletará e validará\\n      os dados do comprador, através de apresentação do documento de identificação apresentado, e\\n      registrará as informações de dispensação do medicamento em nosso sistema.\\n    </p>\\n    <p>\\n      1.4. A Receita Digital, para isso, informará à CIP quando houver registro de compra de\\n      medicamentos, para que outros estabelecimentos, acessem seu histórico de dispensação e tomem a\\n      melhor decisão de acordo com a legislação vigente e melhores práticas de atendimento farmacêutico.\\n      A CIP, por sua vez, irá informar a Prontmed (e, com isso, o médico responsável), que o paciente\\n      adquiriu o medicamento, auxiliando no acompanhamento do tratamento.\\n    </p>\\n    <p>\\n      1.5. Ou seja, trata-se de uma operação que trará um maior controle na dispensação de medicamentos,\\n      pois você terá mais segurança de que a prescrição expedida está sendo corretamente utilizada pelo\\n      Usuário solicitante, bem como dispensará o uso de receitas médicas em papel, evitando o extravio,\\n      vazamento e perda das informações. Você, profissional, terá muitos benefícios!\\n    </p>\\n    <p>\\n      1.6. Para que seja possível a realização do projeto, portanto, será necessária a coleta e\\n      armazenamento de dados pessoais, nos termos abaixo explicitados.\\n    </p>\\n    <p class=\\\"bold\\\">2. Tipos de Dados Pessoais Coletados:</p>\\n    <p>\\n      2.1. Ao concordar com esse termo, você autorizará que a Receita Digital utilize os seguintes dados\\n      pessoais:\\n    </p>\\n    <ol>\\n      <li>Nome completo;</li>\\n      <li>CPF;</li>\\n      <li>Data de nascimento;</li>\\n      <li>Sexo;</li>\\n      <li>Filiação;</li>\\n      <li>E-mail;</li>\\n      <li>CRF;</li>\\n      <li>Informações sobre os estabelecimentos ao qual está vinculado.</li>\\n    </ol>\\n    <p class=\\\"bold\\\">3. Finalidades do Tratamento dos Dados</p>\\n    <p>3.1. O tratamento dos dados pessoais será realizado considerando as seguintes finalidades:</p>\\n    <ul>\\n      <li>Registrar atendimentos;</li>\\n      <li>Dispensar medicamentos;</li>\\n      <li>\\n        Impossibilitar a utilização da prescrição médica em prazo maior do que permitido pela legislação\\n        vigente ou em quantidades incompatíveis com o tratamento prescrito;\\n      </li>\\n      <li>Cumprimento de exigências legais pelos órgãos reguladores;</li>\\n      <li>Validar e autenticar o acesso.</li>\\n    </ul>\\n    <p>\\n      3.2. Os dados tratados não serão utilizados pela Receita Digital ou por seus parceiros para outras\\n      finalidades que não seja a descrita no item 3.1., tampouco compartilhar dados desnecessários para\\n      essa finalidade.\\n    </p>\\n\\n    <p class=\\\"bold\\\">4. Compartilhamento de Dados Pessoais</p>\\n    <p>\\n      4.1. Ao concordar com os termos do termo, você autoriza a Receita Digital a compartilhar os dados\\n      pessoais com os agentes de tratamento descritos acima, os seguintes dados pessoais:\\n      <span class=\\\"bold\\\">(I)</span> Nome completo; <span class=\\\"bold\\\">(II)</span> C.P.F.;\\n      <span class=\\\"bold\\\">(III)</span> Número do Registro no Conselho Regional de Farmácia. Os demais\\n      dados permanecerão apenas no Banco de Dados da Receita Digital.\\n    </p>\\n    <p>\\n      4.2. No que se refere à análise das informações sobre como seus dados trafegaram pelo processo\\n      descrito no item 1, seus dados serão tratados por:\\n    </p>\\n    <table style=\\\"width:100%\\\">\\n      <tr>\\n        <th>Nome da Empresa</th>\\n        <th>CNPJ</th>\\n        <th>Endereço</th>\\n        <th>Contato</th>\\n      </tr>\\n      <tr>\\n        <td>Prontmed</td>\\n        <td></td>\\n        <td></td>\\n        <td></td>\\n      </tr>\\n      <tr>\\n        <td>CIP</td>\\n        <td></td>\\n        <td></td>\\n        <td></td>\\n      </tr>\\n      <tr>\\n        <td>Receita Digital</td>\\n        <td>34.307.169/0001-00</td>\\n        <td>Rua Mem de Sá, 167, Icaraí, Niterói/RJ</td>\\n        <td></td>\\n      </tr>\\n    </table>\\n\\n    <p class=\\\"bold\\\">5. Segurança dos Dados</p>\\n    <p>\\n      5.1. A Receita Digital e os parceiros do projeto, se responsabilizam pela manutenção de medidas de\\n      segurança, técnicas e administrativas aptas a proteger os dados pessoais de acessos não autorizados\\n      e de situações acidentais ou ilícitas de destruição, perda, alteração, comunicação ou qualquer\\n      forma de tratamento inadequado ou ilícito.\\n    </p>\\n    <p class=\\\"bold\\\">6. Término do Tratamento dos Dados -</p>\\n    <p>\\n      6.1. O titular está ciente que os Controladores dados poderão manter e tratar os dados pessoais do\\n      Titular durante todo o período em que forem pertinentes para o projeto, de acordo com as\\n      finalidades listadas, da seguinte forma:\\n    </p>\\n\\n    <table style=\\\"width:100%;\\\">\\n      <tr>\\n        <th>Nome da Empresa</th>\\n        <th>Período de Retenção</th>\\n      </tr>\\n      <tr>\\n        <td>Prontmed</td>\\n        <td>Enquanto houver a prestação de serviços ao médico conveniado.</td>\\n      </tr>\\n      <tr>\\n        <td>CIP</td>\\n        <td>Até o encerramento do projeto piloto.</td>\\n      </tr>\\n      <tr>\\n        <td>Receita Digital</td>\\n        <td>Por até 5 anos, de acordo com a legislação vigente.</td>\\n      </tr>\\n    </table>\\n\\n    <p>\\n      6.2. Dados pessoais anonimizados, sem possibilidade de associação ao indivíduo, poderão ser\\n      mantidos por período indefinido.\\n    </p>\\n    <p>\\n      6.3. Você poderá solicitar através do e-mail privacidade@receitadigital.com a qualquer momento, que\\n      sejam eliminados os dados pessoais não anonimizados, desde que não haja base legal para retenção\\n      dos dados pessoais.\\n    </p>\\n    <p class=\\\"bold\\\">7. Direitos do Titular</p>\\n    <p>\\n      7.1. O Titular tem direito a obter da Controladora, em relação aos dados por ele tratados, a\\n      qualquer momento e mediante requisição, através do e-mail privacidade@receitadigital.com, os\\n      direitos previstos no artigo 18 da Lei Geral de Proteção de Dados, a saber: I - confirmação da\\n      existência de tratamento; II - acesso aos dados; III - correção de dados incompletos, inexatos ou\\n      desatualizados; IV - anonimização, bloqueio ou eliminação de dados desnecessários, excessivos ou\\n      tratados em desconformidade com o disposto na Lei nº 13.709; V - portabilidade dos dados a outro\\n      fornecedor de serviço ou produto, mediante requisição expressa e observados os segredos comercial e\\n      industrial, de acordo com a regulamentação do órgão controlador; V - portabilidade dos dados a\\n      outro fornecedor de serviço ou produto, mediante requisição expressa, de acordo com a\\n      regulamentação da autoridade nacional, observados os segredos comercial e industrial; VI -\\n      eliminação dos dados pessoais tratados com o consentimento do titular, exceto nas hipóteses\\n      previstas no art. 16 da Lei nº 13.709; VII - informação das entidades públicas e privadas com as\\n      quais o controlador realizou uso compartilhado de dados; VIII - informação sobre a possibilidade de\\n      não fornecer consentimento e sobre as consequências da negativa; IX - revogação do consentimento,\\n      nos termos do § 5º do art. 8º da Lei nº 13.709.\\n    </p>\\n    <p class=\\\"bold\\\">8. Direito de Revogação do Consentimento</p>\\n    <p>\\n      8.1. Este consentimento poderá ser revogado pelo Titular, a qualquer momento, mediante solicitação\\n      via e-mail ao encarregado de proteção de dados.\\n    </p>\\n    <p>Rio de Janeiro, 04 de novembro de 2021.</p>\\n  </ng-template>\\n\\n  <ng-template #modalFooter>\\n    <button nz-button nzType=\\\"default\\\" (click)=\\\"close()\\\">\\n      <span *ngIf=\\\"!isAnswered\\\">Agora não</span>\\n      <span *ngIf=\\\"isAnswered\\\">Cancelar</span>\\n    </button>\\n    <button\\n      nz-button\\n      nzType=\\\"danger\\\"\\n      (click)=\\\"refuse()\\\"\\n      [nzLoading]=\\\"refuseLoading\\\"\\n      [disabled]=\\\"acceptLoading\\\"\\n    >\\n      <span *ngIf=\\\"!isAnswered\\\">Recusar</span>\\n      <span *ngIf=\\\"isAnswered\\\">Revogar</span>\\n    </button>\\n    <button\\n      nz-button\\n      nzType=\\\"primary\\\"\\n      (click)=\\\"accept()\\\"\\n      [nzLoading]=\\\"acceptLoading\\\"\\n      [disabled]=\\\"refuseLoading\\\"\\n    >\\n      Aceitar\\n    </button>\\n  </ng-template>\\n</nz-modal>\\n\";","import { Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { AdditionalFeatureService } from '@app/modules/admin/listing/features-listing/additional-feature.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { AdditionalFeatureAccept } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\n\n@Component({\n  selector: 'app-modal-cip-acceptance',\n  templateUrl: './modal-cip-acceptance.component.html',\n  styleUrls: ['./modal-cip-acceptance.component.scss']\n})\nexport class ModalCipAcceptanceComponent implements OnInit {\n  @Input() code: number;\n  @Input() isVisible = false;\n  @Output() isVisibleChange = new EventEmitter<boolean>();\n  @Output() userChange = new EventEmitter<User>();\n\n  title =\n    'Termo de Consentimento para Tratamento de Dados <br> Projeto Piloto - Sistema Eletrônico de Registro de Prescrições';\n  refuseLoading = false;\n  acceptLoading = false;\n\n  constructor(\n    private authService: AuthService,\n    private additionalFeatureService: AdditionalFeatureService,\n    private notification: AppToastService\n  ) {}\n\n  ngOnInit() {\n    this.setHeight(window.innerHeight);\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  @HostListener('window:resize', ['$event'])\n  onResize(event) {\n    this.setHeight(window.innerHeight);\n  }\n\n  setHeight(height: number) {\n    const heightValue = `${height * 0.6}px`;\n    document.documentElement.style.setProperty('--modal-height', heightValue);\n  }\n\n  get isAnswered() {\n    return (\n      this.user &&\n      this.user.features.find(f => f.code === this.code).accept !== AdditionalFeatureAccept.NONE\n    );\n  }\n\n  close() {\n    this.isVisibleChange.emit(false);\n  }\n\n  @nativeAsync\n  async refuse() {\n    try {\n      this.refuseLoading = true;\n      await this.additionalFeatureService.refuseFeature(this.code);\n      await this.authService.refreshToken().toPromise();\n      this.userChange.emit(this.user);\n      this.close();\n      if (this.isAnswered) {\n        this.notification.notify('error', 'Termo revogado', '');\n      } else {\n        this.notification.notify(\n          'error',\n          'Termo rejeitado',\n          'Para alterar sua resposta acesse \"Meus Dados\"'\n        );\n      }\n    } catch (err) {\n      this.notification.notify('error', 'Erro', 'Ocorreu um erro, tente novamente');\n    }\n    this.refuseLoading = false;\n  }\n\n  @nativeAsync\n  async accept() {\n    try {\n      this.acceptLoading = true;\n      await this.additionalFeatureService.acceptFeature(this.code);\n      await this.authService.refreshToken().toPromise();\n      this.userChange.emit(this.user);\n      this.close();\n      if (this.isAnswered) {\n        this.notification.notify('success', 'Termo aceito', '');\n      } else {\n        this.notification.notify(\n          'success',\n          'Termo aceito com sucesso',\n          'Para alterar sua resposta acesse \"Meus Dados\"'\n        );\n      }\n    } catch (err) {\n      this.notification.notify('error', 'Erro', 'Ocorreu um erro, tente novamente');\n    }\n    this.acceptLoading = false;\n  }\n}\n","export default \"::ng-deep .modal-cip .ant-modal-header {\\n  background-color: var(--bg-modal-header);\\n}\\n::ng-deep .modal-cip .ant-modal-header .ant-modal-title {\\n  color: white;\\n  font-family: \\\"probold\\\";\\n  font-size: 20px;\\n}\\n::ng-deep .modal-cip .ant-modal-body {\\n  max-height: var(--modal-height);\\n  overflow: auto;\\n}\\n::ng-deep .modal-cip .ant-modal-body .title {\\n  font-family: \\\"probold\\\";\\n  text-align: center;\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n::ng-deep .modal-cip .ant-modal-body .subtitle {\\n  font-family: \\\"probold\\\";\\n  text-align: center;\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n::ng-deep .modal-cip .ant-modal-body .bold {\\n  font-family: \\\"probold\\\";\\n}\\n::ng-deep .modal-cip .ant-modal-body p {\\n  font-family: \\\"proregular\\\";\\n  line-height: 1.1;\\n  text-align: justify;\\n}\\n::ng-deep .modal-cip .ant-modal-body ol {\\n  counter-reset: list;\\n  margin: 0;\\n}\\n::ng-deep .modal-cip .ant-modal-body ol > li {\\n  list-style: none;\\n  position: relative;\\n}\\n::ng-deep .modal-cip .ant-modal-body ol > li:before {\\n  counter-increment: list;\\n  content: counter(list, lower-alpha) \\\") \\\";\\n  position: absolute;\\n  left: -1.4em;\\n}\\n::ng-deep .modal-cip .ant-modal-body li:last-child {\\n  margin-bottom: 10px;\\n}\\n::ng-deep .modal-cip .ant-modal-body table,\\n::ng-deep .modal-cip .ant-modal-body th,\\n::ng-deep .modal-cip .ant-modal-body td {\\n  border: 1px solid black;\\n  border-collapse: collapse;\\n  margin-bottom: 15px;\\n}\\n::ng-deep .modal-cip .ant-modal-body th {\\n  text-align: center;\\n}\\n::ng-deep .modal-cip .ant-modal-body td {\\n  padding-left: 5px;\\n}\\n::ng-deep .modal-cip .ant-modal-footer {\\n  background-color: var(--bg-modal-header);\\n}\\n::ng-deep .modal-cip .ant-btn-default:hover {\\n  color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n::ng-deep .modal-cip .ant-btn-default:focus {\\n  color: rgba(0, 0, 0, 0.65);\\n  border-color: #d9d9d9;\\n}\\n::ng-deep .modal-cip .ant-btn-primary {\\n  color: white;\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n::ng-deep .modal-cip .ant-btn-primary:hover {\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\";","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { HealthProfessional } from '@app/shared/models';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\n\n@Component({\n  selector: 'app-modal-rqe-warning',\n  templateUrl: './modal-rqe-warning.component.html',\n  styleUrls: ['./modal-rqe-warning.component.scss']\n})\nexport class ModalRqeWarningComponent {\n  @Input() isVisible = false;\n  @Input() healthProfessional: HealthProfessional;\n  @Output() isVisibleChange = new EventEmitter<boolean>();\n  @Input() healthProfessionalChange = new EventEmitter<HealthProfessional>();\n\n  refuseLoading = false;\n\n  constructor(\n    private router: Router,\n    private healthProfessionalService: HealthProfessionalService,\n    private notification: AppToastService\n  ) {}\n\n  submit(value: boolean) {\n    if (!value) {\n      this.refuseRqe();\n    } else {\n      this.router.navigate(['/profile'], { state: { showModalPersonalData: true } });\n      this.close();\n    }\n  }\n\n  @nativeAsync\n  private async refuseRqe() {\n    try {\n      this.refuseLoading = true;\n      this.healthProfessional.specialties.forEach(s => {\n        if (s.notExists === undefined) {\n          s.notExists = true;\n        }\n      });\n\n      const saved = await this.healthProfessionalService\n        .update(this.healthProfessional.userId, this.healthProfessional)\n        .toPromise();\n\n      this.close();\n      this.healthProfessionalChange.emit(saved);\n      this.notification.notify('success', 'Sucesso', 'Registro atualizado');\n    } catch (error) {\n      console.error(error);\n    }\n    this.refuseLoading = false;\n  }\n\n  private close() {\n    this.isVisibleChange.emit(false);\n  }\n}\n","export default \"<nz-modal\\n  theme\\n  class=\\\"modal-rqe\\\"\\n  [(nzVisible)]=\\\"isVisible\\\"\\n  [nzContent]=\\\"modalContent\\\"\\n  [nzFooter]=\\\"modalFooter\\\"\\n  [nzStyle]=\\\"{ top: '20px' }\\\"\\n  nzWidth=\\\"600\\\"\\n  nzKeyboard=\\\"false\\\"\\n  nzMaskClosable=\\\"false\\\"\\n  nzClosable=\\\"false\\\"\\n>\\n  <ng-template #modalContent>\\n    <h2 class=\\\"title\\\">\\n      <img src=\\\"assets/img/news.svg\\\" alt=\\\"News\\\" class=\\\"news-logo\\\" />\\n      Doutor<span *ngIf=\\\"healthProfessional.sex === 'F'\\\">a</span>, precisamos da sua atenção!\\n    </h2>\\n    <p>\\n      Para atender as exigências do Art 2º da Resolução nº 2299/2021 do CFM, em vigor desde o dia\\n      25/12/21, solicitamos que preencha os dados do seu RQE - Registro de Qualificação de Especialidsta\\n      no campo <i>\\\"especialidades\\\"</i> do seu cadastro. Caso não tenha uma especialidade registrada no\\n      CFM, favor marcar a opção <span class=\\\"bold\\\">\\\"Não possuo RQE\\\"</span>. Neste caso, não poderemos\\n      exibir a informação no cabeçalho dos documentos gerados dentro da plataforma.\\n    </p>\\n    <p style=\\\"font-size: 13px\\\">\\n      Para conhecer a Resolução nº 2299-21 do CFM,\\n      <a href=\\\"https://sistemas.cfm.org.br/normas/visualizar/resolucoes/BR/2021/2299\\\" target=\\\"_blank\\\"\\n        >clique aqui</a\\n      >.\\n    </p>\\n  </ng-template>\\n\\n  <ng-template #modalFooter>\\n    <button nz-button nzType=\\\"default\\\" (click)=\\\"submit(false)\\\" [nzLoading]=\\\"refuseLoading\\\">\\n      Não possuo RQE\\n    </button>\\n    <button nz-button nzType=\\\"primary\\\" (click)=\\\"submit(true)\\\">\\n      Preencher RQE\\n    </button>\\n  </ng-template>\\n</nz-modal>\\n\";","export default \"::ng-deep .modal-rqe .title {\\n  font-family: \\\"probold\\\";\\n  text-align: center;\\n  color: var(--color-title);\\n  font-size: 30px;\\n}\\n::ng-deep .modal-rqe .news-logo {\\n  width: 65px;\\n}\\n::ng-deep .modal-rqe .bold {\\n  font-family: \\\"probold\\\";\\n}\\n::ng-deep .modal-rqe p {\\n  font-family: \\\"proregular\\\";\\n  line-height: 1.3;\\n  text-align: justify;\\n}\\n::ng-deep .modal-rqe .ant-modal-footer {\\n  background-color: var(--bg-modal-header);\\n}\\n::ng-deep .modal-rqe .ant-btn-default:hover {\\n  color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n::ng-deep .modal-rqe .ant-btn-default:focus {\\n  color: rgba(0, 0, 0, 0.65);\\n  border-color: #d9d9d9;\\n}\\n::ng-deep .modal-rqe .ant-btn-primary {\\n  color: white;\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n::ng-deep .modal-rqe .ant-btn-primary:hover {\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\";","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\n\n@Component({\n  selector: 'app-file-step',\n  templateUrl: './file-step.component.html',\n  styleUrls: ['./file-step.component.scss']\n})\nexport class FileStepComponent implements OnInit {\n  @Output() formChange = new EventEmitter<any>();\n\n  private _form: FormGroup;\n\n  constructor(private fb: FormBuilder) {\n    this._form = this.fb.group({\n      filename: this.fb.control(''),\n      documentFile: this.fb.control('', Validators.required)\n    });\n  }\n\n  ngOnInit() {\n    this._form.valueChanges.subscribe(value => this.formChange.emit(value));\n  }\n\n  @Input()\n  set form(form: any) {\n    if (form) {\n      this._form.setValue(form);\n    }\n  }\n\n  get form() {\n    return this._form;\n  }\n\n  get file() {\n    return this._form.get('documentFile').value;\n  }\n\n  get filename() {\n    return this._form.get('filename').value;\n  }\n\n  set filename(value: string) {\n    this._form.get('filename').setValue(value);\n  }\n\n  get invalid() {\n    return this._form.invalid;\n  }\n\n  get errorMessage() {\n    return 'Você precisa selecionar uma foto da sua carteira profissional para upload';\n  }\n}\n","export default \"<p class=\\\"bold\\\">Contratação do plano de Teleconsulta Receita Digital</p>\\n<p>\\n  A partir de agora você está contratando o plano mensal de Teleconsulta da Receita Digital!\\n</p>\\n<p>\\n  Você já viu na tela anterior como funciona, mas pode conferir o contrato clicando nesse link abaixo:\\n</p>\\n<a href=\\\"\\\">link</a>\\n<p>\\n  São 3 passos simples para contratar, e você ainda tem 15 dias grátis para experimentar.\\n</p>\\n<p>\\n  Para começar, precisamos ter certeza de que você é um profissional habilitado para fazer consultas. Por\\n  isso, precisamos que você clique no botão abaixo e anexe uma foto da sua carteira profissional.\\n</p>\\n\\n<form nz-form [formGroup]=\\\"form\\\" class=\\\"p-3 mb-2\\\">\\n  <nz-form-label nzFor=\\\"documentFile\\\">Upload CRM ou CRO</nz-form-label>\\n  <app-input-file\\n    accept=\\\"image/*,.pdf\\\"\\n    formControlName=\\\"documentFile\\\"\\n    name=\\\"documentFile\\\"\\n    textButton=\\\"Selecione uma foto\\\"\\n    transformTo=\\\"base64\\\"\\n    maxSize=\\\"3145728\\\"\\n    [file]=\\\"file\\\"\\n    [(filename)]=\\\"filename\\\"\\n  >\\n  </app-input-file>\\n</form>\\n\\n<p>Agora é só clicar no botão ao lado, para ir para a próxima etapa.</p>\\n\";","export default \"\";","export default \"<nz-progress [nzPercent]=\\\"(100.0 / 3) * step\\\" [nzShowInfo]=\\\"false\\\" nzStrokeColor=\\\"#0b6054\\\"></nz-progress>\\n\\n<div class=\\\"register-body\\\">\\n  <app-file-step *ngIf=\\\"step === 1\\\" [(form)]=\\\"fileForm\\\"></app-file-step>\\n\\n  <app-subaccount-step\\n    *ngIf=\\\"step === 2\\\"\\n    [(form)]=\\\"subaccountForm\\\"\\n    [(profile)]=\\\"profile\\\"\\n  ></app-subaccount-step>\\n\\n  <app-subscription-step *ngIf=\\\"step === 3\\\" [(form)]=\\\"subscriptionForm\\\"></app-subscription-step>\\n\\n  <div class=\\\"steps-btn\\\">\\n    <button nz-button class=\\\"btn btn-primary\\\" type=\\\"button\\\" nzType=\\\"primary\\\" (click)=\\\"changeStep(false)\\\">\\n      <div>\\n        <i class=\\\"fas fa-arrow-left\\\"></i>\\n        <span>VOLTAR</span>\\n      </div>\\n    </button>\\n\\n    <button nz-button class=\\\"btn btn-primary\\\" type=\\\"button\\\" nzType=\\\"primary\\\" (click)=\\\"changeStep(true)\\\">\\n      <div>\\n        <span>{{ step < 3 ? 'PRÓXIMO' : 'CONCLUIR' }}</span>\\n        <i class=\\\"fas fa-arrow-right\\\"></i>\\n      </div>\\n    </button>\\n  </div>\\n</div>\\n\";","export default \"::ng-deep .modal-backdrop {\\n  z-index: 10;\\n}\\n::ng-deep .modal {\\n  z-index: 10;\\n}\\n::ng-deep .modal-body {\\n  background-color: white;\\n  padding: 0px;\\n}\\n::ng-deep .modal-body .register-body {\\n  padding-left: 20px;\\n  padding-right: 20px;\\n  padding-bottom: 60px;\\n}\\n::ng-deep .modal-header {\\n  min-width: 36vw;\\n  width: 100%;\\n}\\n::ng-deep .modal-header .btn-cancel {\\n  display: flex;\\n  justify-content: space-evenly;\\n}\\n::ng-deep .modal-dialog {\\n  display: flex;\\n  justify-content: center;\\n}\\n.modal-video-conf {\\n  overflow: auto;\\n  max-height: 48vw;\\n  min-width: 36vw;\\n  width: 100%;\\n}\\n.modal-video-conf .modal-header {\\n  background-color: #4cbca3;\\n  font-family: \\\"probold\\\";\\n  display: flex;\\n  align-items: center;\\n  position: sticky;\\n  top: 0;\\n  z-index: 999;\\n}\\n.modal-video-conf .modal-header .title {\\n  display: flex;\\n  justify-items: center;\\n  align-items: center;\\n}\\n.modal-video-conf .modal-header .title h4 {\\n  margin-left: 5px;\\n  color: #363636 !important;\\n}\\n@media (max-width: 1025px) {\\n  .modal-video-conf .modal-header .title h4 {\\n    font-size: 15px;\\n  }\\n}\\n.modal-video-conf .modal-header .hire-btn {\\n  border: none;\\n  height: 35px;\\n  width: 120px;\\n  border-radius: 3px;\\n}\\np {\\n  color: #363636;\\n  font-size: 16px;\\n  font-family: \\\"proregular\\\";\\n}\\n.steps-btn {\\n  margin: 0.5rem !important;\\n  float: right;\\n}\\n.steps-btn .btn {\\n  color: white;\\n  background-color: #4cbca3;\\n  border-color: #4cbca3;\\n  border-radius: 0px;\\n  font-size: 12px;\\n  font-weight: bold;\\n  margin-left: 10px;\\n  min-height: 38px;\\n}\\n.anexar {\\n  background-color: #0b6054;\\n  color: white;\\n  padding: 0.5rem;\\n  font-family: \\\"probold\\\";\\n  border-radius: 0.3rem;\\n  cursor: pointer;\\n  margin-top: 1rem;\\n}\\n.mandatory {\\n  color: red;\\n}\\n::ng-deep .ant-tabs {\\n  min-height: 350px;\\n}\\n::ng-deep .ant-tabs-tabpane {\\n  padding: 17px 30px 20px;\\n}\\n::ng-deep .ant-tabs-nav {\\n  width: 100%;\\n}\\n::ng-deep .ant-tabs-tab {\\n  width: 12.34%;\\n}\\n::ng-deep .ant-tabs-nav .ant-tabs-tab {\\n  margin: 0 1px 0 0;\\n  min-width: 54px;\\n  text-align: center;\\n}\\n::ng-deep .ant-tabs-tab:nth-child(1) {\\n  background-color: #00d3b2;\\n}\\n::ng-deep .ant-tabs-tab:nth-child(2) {\\n  background-color: #17c6ac;\\n}\\n::ng-deep .ant-tabs-tab:nth-child(3) {\\n  background-color: #0b6054;\\n}\\n::ng-deep .ant-tabs-tab:nth-child(4) {\\n  background-color: #1b403a;\\n}\\n::ng-deep .ant-tabs-tab:nth-child(5) {\\n  background-color: #ebebeb;\\n}\\n::ng-deep .ant-tabs-tab:nth-child(6) {\\n  background-color: #4d4d4d;\\n}\\n::ng-deep .ant-tabs-tab:nth-child(7) {\\n  background-color: #363636;\\n}\\n::ng-deep .ant-tabs-tab:nth-child(8) {\\n  background-color: #1e1e1e;\\n}\\n::ng-deep .ant-tabs-tab-active {\\n  transform: translateY(-1px);\\n  box-shadow: 0px 15px 15px 10px #000000ad;\\n}\\n::ng-deep .ant-progress {\\n  top: -11px;\\n}\\n::ng-deep img {\\n  min-width: 22px;\\n  height: 20px;\\n}\\n.white {\\n  filter: invert(1);\\n}\\n::ng-deep .cdk-overlay-pane {\\n  width: 55vw !important;\\n}\";","import { BrazilBanks } from '../models/brazil-banks';\n\nexport const BrazilianBanks: BrazilBanks[] = [\n  {\n    code: '001',\n    name: 'BANCO DO BRASIL',\n    document: '00.000.000/0001-91',\n    createdAt: '2017-04-19 15:52:42.400',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '341',\n    name: 'ITAÚ',\n    createdAt: '2017-04-19 15:53:59.107',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '104',\n    name: 'CAIXA ECONÔMICA FEDERAL',\n    createdAt: '2017-04-19 15:54:41.200',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '033',\n    name: 'BANCO SANTANDER S.A.',\n    createdAt: '2017-04-19 15:55:59.197',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '070',\n    name: 'BRB - BANCO DE BRASÍLIA',\n    createdAt: '2017-04-19 15:58:17.387',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '077',\n    name: 'BANCO INTER',\n    document: '00.416.968/0001-01',\n    createdAt: '2017-04-19 15:58:39.887',\n    updatedAt: '2020-04-29 11:08:00.000',\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '237',\n    name: 'BRADESCO',\n    createdAt: '2017-04-19 16:00:31.407',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '745',\n    name: 'CITIBANK',\n    createdAt: '2017-04-19 16:01:50.353',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '422',\n    name: 'BANCO SAFRA',\n    createdAt: '2017-04-19 16:04:20.790',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '399',\n    name: 'BANCO HSBC',\n    createdAt: '2017-04-19 16:05:20.353',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '756',\n    name: 'BANCOOB',\n    createdAt: '2017-08-01 22:29:11.827',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '212',\n    name: 'BANCO ORIGINAL',\n    createdAt: '2017-10-11 20:33:06.803',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '002',\n    name: 'BANCO CENTRAL DO BRASIL',\n    createdAt: '2018-01-29 15:12:24.270',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '003',\n    name: 'BANCO DA AMAZONIA S.A',\n    createdAt: '2018-01-29 15:12:24.270',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '004',\n    name: 'BANCO DO NORDESTE DO BRASIL S.A',\n    createdAt: '2018-01-29 15:12:24.270',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '007',\n    name: 'BANCO NAC DESENV. ECO. SOCIAL S.A',\n    createdAt: '2018-01-29 15:12:24.270',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '008',\n    name: 'BANCO MERIDIONAL DO BRASIL',\n    createdAt: '2018-01-29 15:12:24.270',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '020',\n    name: 'BANCO DO ESTADO DE ALAGOAS S.A',\n    createdAt: '2018-01-29 15:12:24.270',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '021',\n    name: 'BANCO DO ESTADO DO ESPIRITO SANTO S.A',\n    createdAt: '2018-01-29 15:12:24.270',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '022',\n    name: 'BANCO DE CREDITO REAL DE MINAS GERAIS SA',\n    createdAt: '2018-01-29 15:12:24.273',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '024',\n    name: 'BANCO DO ESTADO DE PERNAMBUCO',\n    createdAt: '2018-01-29 15:12:24.273',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '025',\n    name: 'BANCO ALFA S/A',\n    createdAt: '2018-01-29 15:12:24.273',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '026',\n    name: 'BANCO DO ESTADO DO ACRE S.A',\n    createdAt: '2018-01-29 15:12:24.273',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '027',\n    name: 'BANCO DO ESTADO DE SANTA CATARINA S.A',\n    createdAt: '2018-01-29 15:12:24.273',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '028',\n    name: 'BANCO DO ESTADO DA BAHIA S.A',\n    createdAt: '2018-01-29 15:12:24.277',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '029',\n    name: 'BANCO DO ESTADO DO RIO DE JANEIRO S.A',\n    createdAt: '2018-01-29 15:12:24.277',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '030',\n    name: 'BANCO DO ESTADO DA PARAIBA S.A',\n    createdAt: '2018-01-29 15:12:24.277',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '031',\n    name: 'BANCO DO ESTADO DE GOIAS S.A',\n    createdAt: '2018-01-29 15:12:24.277',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '032',\n    name: 'BANCO DO ESTADO DO MATO GROSSO S.A.',\n    createdAt: '2018-01-29 15:12:24.277',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '034',\n    name: 'BANCO DO ESADO DO AMAZONAS S.A',\n    createdAt: '2018-01-29 15:12:24.280',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '035',\n    name: 'BANCO DO ESTADO DO CEARA S.A',\n    createdAt: '2018-01-29 15:12:24.280',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '036',\n    name: 'BANCO DO ESTADO DO MARANHAO S.A',\n    createdAt: '2018-01-29 15:12:24.280',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '037',\n    name: 'BANCO DO ESTADO DO PARA S.A',\n    createdAt: '2018-01-29 15:12:24.280',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '038',\n    name: 'BANCO DO ESTADO DO PARANA S.A',\n    createdAt: '2018-01-29 15:12:24.280',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '039',\n    name: 'BANCO DO ESTADO DO PIAUI S.A',\n    createdAt: '2018-01-29 15:12:24.280',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '041',\n    name: 'BANCO DO ESTADO DO RIO GRANDE DO SUL S.A',\n    createdAt: '2018-01-29 15:12:24.283',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '047',\n    name: 'BANCO DO ESTADO DE SERGIPE S.A',\n    createdAt: '2018-01-29 15:12:24.283',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '048',\n    name: 'BANCO DO ESTADO DE MINAS GERAIS S.A',\n    createdAt: '2018-01-29 15:12:24.283',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '059',\n    name: 'BANCO DO ESTADO DE RONDONIA S.A',\n    createdAt: '2018-01-29 15:12:24.283',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '106',\n    name: 'BANCO ITABANCO S.A.',\n    createdAt: '2018-01-29 15:12:24.287',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '107',\n    name: 'BANCO BBM S.A',\n    createdAt: '2018-01-29 15:12:24.287',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '109',\n    name: 'BANCO CREDIBANCO S.A',\n    createdAt: '2018-01-29 15:12:24.290',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '116',\n    name: 'BANCO B.N.L DO BRASIL S.A',\n    createdAt: '2018-01-29 15:12:24.290',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '148',\n    name: 'MULTI BANCO S.A',\n    createdAt: '2018-01-29 15:12:24.290',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '151',\n    name: 'CAIXA ECONOMICA DO ESTADO DE SAO PAULO',\n    createdAt: '2018-01-29 15:12:24.290',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '153',\n    name: 'CAIXA ECONOMICA DO ESTADO DO R.G.SUL',\n    createdAt: '2018-01-29 15:12:24.290',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '165',\n    name: 'BANCO NORCHEM S.A',\n    createdAt: '2018-01-29 15:12:24.290',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '166',\n    name: 'BANCO INTER-ATLANTICO S.A',\n    createdAt: '2018-01-29 15:12:24.293',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '168',\n    name: 'BANCO C.C.F. BRASIL S.A',\n    createdAt: '2018-01-29 15:12:24.293',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '175',\n    name: 'CONTINENTAL BANCO S.A',\n    createdAt: '2018-01-29 15:12:24.293',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '184',\n    name: 'BBA - CREDITANSTALT S.A',\n    createdAt: '2018-01-29 15:12:24.293',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '199',\n    name: 'BANCO FINANCIAL PORTUGUES',\n    createdAt: '2018-01-29 15:12:24.293',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '200',\n    name: 'BANCO FRICRISA AXELRUD S.A',\n    createdAt: '2018-01-29 15:12:24.297',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '201',\n    name: 'BANCO AUGUSTA INDUSTRIA E COMERCIAL S.A',\n    createdAt: '2018-01-29 15:12:24.297',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '204',\n    name: 'BANCO S.R.L S.A',\n    createdAt: '2018-01-29 15:12:24.297',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '205',\n    name: 'BANCO SUL AMERICA S.A',\n    createdAt: '2018-01-29 15:12:24.297',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '206',\n    name: 'BANCO MARTINELLI S.A',\n    createdAt: '2018-01-29 15:12:24.297',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '208',\n    name: 'BANCO PACTUAL S.A',\n    createdAt: '2018-01-29 15:12:24.300',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '210',\n    name: 'DEUTSCH SUDAMERIKANICHE BANK AG',\n    createdAt: '2018-01-29 15:12:24.300',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '211',\n    name: 'BANCO SISTEMA S.A',\n    createdAt: '2018-01-29 15:12:24.300',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '213',\n    name: 'BANCO ARBI S.A',\n    createdAt: '2018-01-29 15:12:24.300',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '214',\n    name: 'BANCO DIBENS S.A',\n    createdAt: '2018-01-29 15:12:24.303',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '215',\n    name: 'BANCO AMERICA DO SUL S.A',\n    createdAt: '2018-01-29 15:12:24.303',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '216',\n    name: 'BANCO REGIONAL MALCON S.A',\n    createdAt: '2018-01-29 15:12:24.303',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '217',\n    name: 'BANCO AGROINVEST S.A',\n    createdAt: '2018-01-29 15:12:24.303',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '218',\n    name: 'BS2',\n    document: '71.027.866/0001-34',\n    createdAt: '2018-01-29 15:12:24.303',\n    updatedAt: '2019-05-21 08:14:51.000',\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '219',\n    name: 'BANCO DE CREDITO DE SAO PAULO S.A',\n    createdAt: '2018-01-29 15:12:24.307',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '220',\n    name: 'BANCO CREFISUL',\n    createdAt: '2018-01-29 15:12:24.307',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '221',\n    name: 'BANCO GRAPHUS S.A',\n    createdAt: '2018-01-29 15:12:24.307',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '222',\n    name: 'BANCO AGF BRASIL S. A.',\n    createdAt: '2018-01-29 15:12:24.307',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '223',\n    name: 'BANCO INTERUNION S.A',\n    createdAt: '2018-01-29 15:12:24.307',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '224',\n    name: 'BANCO FIBRA S.A',\n    createdAt: '2018-01-29 15:12:24.307',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '225',\n    name: 'BANCO BRASCAN S.A',\n    createdAt: '2018-01-29 15:12:24.310',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '228',\n    name: 'BANCO ICATU S.A',\n    createdAt: '2018-01-29 15:12:24.310',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '229',\n    name: 'BANCO CRUZEIRO S.A',\n    createdAt: '2018-01-29 15:12:24.310',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '230',\n    name: 'BANCO BANDEIRANTES S.A',\n    createdAt: '2018-01-29 15:12:24.310',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '231',\n    name: 'BANCO BOAVISTA S.A',\n    createdAt: '2018-01-29 15:12:24.310',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '232',\n    name: 'BANCO INTERPART S.A',\n    createdAt: '2018-01-29 15:12:24.310',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '233',\n    name: 'BANCO MAPPIN S.A',\n    createdAt: '2018-01-29 15:12:24.313',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '234',\n    name: 'BANCO LAVRA S.A.',\n    createdAt: '2018-01-29 15:12:24.313',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '235',\n    name: 'BANCO LIBERAL S.A',\n    createdAt: '2018-01-29 15:12:24.313',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '236',\n    name: 'BANCO CAMBIAL S.A',\n    createdAt: '2018-01-29 15:12:24.313',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '239',\n    name: 'BANCO BANCRED S.A',\n    createdAt: '2018-01-29 15:12:24.317',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '240',\n    name: 'BANCO DE CREDITO REAL DE MINAS GERAIS S.',\n    createdAt: '2018-01-29 15:12:24.317',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '241',\n    name: 'BANCO CLASSICO S.A',\n    createdAt: '2018-01-29 15:12:24.317',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '242',\n    name: 'BANCO EUROINVEST S.A',\n    createdAt: '2018-01-29 15:12:24.317',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '243',\n    name: 'BANCO MÁXIMA S.A',\n    document: '33.923.798/0001-00',\n    createdAt: '2018-01-29 15:12:24.317',\n    updatedAt: '2020-03-20 17:00:00.000',\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '244',\n    name: 'BANCO CIDADE S.A',\n    createdAt: '2018-01-29 15:12:24.320',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '245',\n    name: 'BANCO EMPRESARIAL S.A',\n    createdAt: '2018-01-29 15:12:24.320',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '246',\n    name: 'BANCO ABC ROMA S.A',\n    createdAt: '2018-01-29 15:12:24.320',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '247',\n    name: 'BANCO OMEGA S.A',\n    createdAt: '2018-01-29 15:12:24.320',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '249',\n    name: 'BANCO INVESTCRED S.A',\n    createdAt: '2018-01-29 15:12:24.320',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '250',\n    name: 'BANCO SCHAHIN CURY S.A',\n    createdAt: '2018-01-29 15:12:24.320',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '251',\n    name: 'BANCO SAO JORGE S.A.',\n    createdAt: '2018-01-29 15:12:24.323',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '252',\n    name: 'BANCO FININVEST S.A',\n    createdAt: '2018-01-29 15:12:24.323',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '254',\n    name: 'BANCO PARANA BANCO S.A',\n    createdAt: '2018-01-29 15:12:24.323',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '255',\n    name: 'MILBANCO S.A.',\n    createdAt: '2018-01-29 15:12:24.323',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '256',\n    name: 'BANCO GULVINVEST S.A',\n    createdAt: '2018-01-29 15:12:24.323',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '258',\n    name: 'BANCO INDUSCRED S.A',\n    createdAt: '2018-01-29 15:12:24.327',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '261',\n    name: 'BANCO VARIG S.A',\n    createdAt: '2018-01-29 15:12:24.327',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '262',\n    name: 'BANCO BOREAL S.A',\n    createdAt: '2018-01-29 15:12:24.327',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '263',\n    name: 'BANCO CACIQUE',\n    createdAt: '2018-01-29 15:12:24.327',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '264',\n    name: 'BANCO PERFORMANCE S.A',\n    createdAt: '2018-01-29 15:12:24.330',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '265',\n    name: 'BANCO FATOR S.A',\n    createdAt: '2018-01-29 15:12:24.330',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '266',\n    name: 'BANCO CEDULA S.A',\n    createdAt: '2018-01-29 15:12:24.330',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '267',\n    name: 'BANCO BBM-COM.C.IMOB.CFI S.A.',\n    createdAt: '2018-01-29 15:12:24.330',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '275',\n    name: 'BANCO REAL S.A',\n    createdAt: '2018-01-29 15:12:24.330',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '277',\n    name: 'BANCO PLANIBANC S.A',\n    createdAt: '2018-01-29 15:12:24.330',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '282',\n    name: 'BANCO BRASILEIRO COMERCIAL',\n    createdAt: '2018-01-29 15:12:24.330',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '291',\n    name: 'BANCO DE CREDITO NACIONAL S.A',\n    createdAt: '2018-01-29 15:12:24.333',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '294',\n    name: 'BCR - BANCO DE CREDITO REAL S.A',\n    createdAt: '2018-01-29 15:12:24.333',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '295',\n    name: 'BANCO CREDIPLAN S.A',\n    createdAt: '2018-01-29 15:12:24.333',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '300',\n    name: 'BANCO DE LA NACION ARGENTINA S.A',\n    createdAt: '2018-01-29 15:12:24.333',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '302',\n    name: 'BANCO DO PROGRESSO S.A',\n    createdAt: '2018-01-29 15:12:24.337',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '303',\n    name: 'BANCO HNF S.A.',\n    createdAt: '2018-01-29 15:12:24.337',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '304',\n    name: 'BANCO PONTUAL S.A',\n    createdAt: '2018-01-29 15:12:24.337',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '308',\n    name: 'BANCO COMERCIAL BANCESA S.A.',\n    createdAt: '2018-01-29 15:12:24.337',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '318',\n    name: 'BANCO B.M.G. S.A',\n    createdAt: '2018-01-29 15:12:24.337',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '320',\n    name: 'BANCO INDUSTRIAL E COMERCIAL',\n    createdAt: '2018-01-29 15:12:24.340',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '346',\n    name: 'BANCO FRANCES E BRASILEIRO S.A',\n    createdAt: '2018-01-29 15:12:24.340',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '347',\n    name: 'BANCO SUDAMERIS BRASIL S.A',\n    createdAt: '2018-01-29 15:12:24.340',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '351',\n    name: 'BANCO BOZANO SIMONSEN S.A',\n    createdAt: '2018-01-29 15:12:24.340',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '353',\n    name: 'BANCO GERAL DO COMERCIO S.A',\n    createdAt: '2018-01-29 15:12:24.340',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '356',\n    name: 'ABN AMRO S.A',\n    createdAt: '2018-01-29 15:12:24.340',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '366',\n    name: 'BANCO SOGERAL S.A',\n    createdAt: '2018-01-29 15:12:24.343',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '369',\n    name: 'PONTUAL',\n    createdAt: '2018-01-29 15:12:24.343',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '370',\n    name: 'BEAL - BANCO EUROPEU PARA AMERICA LATINA',\n    createdAt: '2018-01-29 15:12:24.343',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '372',\n    name: 'BANCO ITAMARATI S.A',\n    createdAt: '2018-01-29 15:12:24.347',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '375',\n    name: 'BANCO FENICIA S.A',\n    createdAt: '2018-01-29 15:12:24.347',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '376',\n    name: 'CHASE MANHATTAN BANK S.A',\n    createdAt: '2018-01-29 15:12:24.347',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '388',\n    name: 'BANCO MERCANTIL DE DESCONTOS S/A',\n    createdAt: '2018-01-29 15:12:24.347',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '389',\n    name: 'BANCO MERCANTIL DO BRASIL S.A',\n    createdAt: '2018-01-29 15:12:24.347',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '392',\n    name: 'BANCO MERCANTIL DE SAO PAULO S.A',\n    createdAt: '2018-01-29 15:12:24.350',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '394',\n    name: 'BANCO B.M.C. S.A',\n    createdAt: '2018-01-29 15:12:24.350',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '409',\n    name: 'UNIBANCO - UNIAO DOS BANCOS BRASILEIROS',\n    createdAt: '2018-01-29 15:12:24.350',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '412',\n    name: 'BANCO NACIONAL DA BAHIA S.A',\n    createdAt: '2018-01-29 15:12:24.350',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '415',\n    name: 'BANCO NACIONAL S.A',\n    createdAt: '2018-01-29 15:12:24.350',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '420',\n    name: 'BANCO NACIONAL DO NORTE S.A',\n    createdAt: '2018-01-29 15:12:24.350',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '424',\n    name: 'BANCO NOROESTE S.A',\n    createdAt: '2018-01-29 15:12:24.353',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '434',\n    name: 'BANCO FORTALEZA S.A',\n    createdAt: '2018-01-29 15:12:24.353',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '453',\n    name: 'BANCO RURAL S.A',\n    createdAt: '2018-01-29 15:12:24.353',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '456',\n    name: 'BANCO TOKIO S.A',\n    createdAt: '2018-01-29 15:12:24.353',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '464',\n    name: 'BANCO SUMITOMO BRASILEIRO S.A',\n    createdAt: '2018-01-29 15:12:24.357',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '466',\n    name: 'BANCO MITSUBISHI BRASILEIRO S.A',\n    createdAt: '2018-01-29 15:12:24.357',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '472',\n    name: 'LLOYDS BANK PLC',\n    createdAt: '2018-01-29 15:12:24.357',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '473',\n    name: 'BANCO FINANCIAL PORTUGUES S.A',\n    createdAt: '2018-01-29 15:12:24.357',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '477',\n    name: 'CITIBANK N.A',\n    createdAt: '2018-01-29 15:12:24.357',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '479',\n    name: 'BANCO DE BOSTON S.A',\n    createdAt: '2018-01-29 15:12:24.360',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '480',\n    name: 'BANCO PORTUGUES DO ATLANTICO-BRASIL S.A',\n    createdAt: '2018-01-29 15:12:24.360',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '483',\n    name: 'BANCO AGRIMISA S.A.',\n    createdAt: '2018-01-29 15:12:24.360',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '487',\n    name: 'DEUTSCHE BANK S.A - BANCO ALEMAO',\n    createdAt: '2018-01-29 15:12:24.360',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '488',\n    name: 'BANCO J. P. MORGAN S.A',\n    createdAt: '2018-01-29 15:12:24.360',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '489',\n    name: 'BANESTO BANCO URUGAUAY S.A',\n    createdAt: '2018-01-29 15:12:24.360',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '492',\n    name: 'INTERNATIONALE NEDERLANDEN BANK N.V.',\n    createdAt: '2018-01-29 15:12:24.363',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '493',\n    name: 'BANCO UNION S.A.C.A',\n    createdAt: '2018-01-29 15:12:24.363',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '494',\n    name: 'BANCO LA REP. ORIENTAL DEL URUGUAY',\n    createdAt: '2018-01-29 15:12:24.363',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '495',\n    name: 'BANCO LA PROVINCIA DE BUENOS AIRES',\n    createdAt: '2018-01-29 15:12:24.363',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '496',\n    name: 'BANCO EXTERIOR DE ESPANA S.A',\n    createdAt: '2018-01-29 15:12:24.363',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '498',\n    name: 'CENTRO HISPANO BANCO',\n    createdAt: '2018-01-29 15:12:24.367',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '499',\n    name: 'BANCO IOCHPE S.A',\n    createdAt: '2018-01-29 15:12:24.367',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '501',\n    name: 'BANCO BRASILEIRO IRAQUIANO S.A.',\n    createdAt: '2018-01-29 15:12:24.367',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '502',\n    name: 'BANCO SANTANDER DE NEGOCIOS S.A',\n    createdAt: '2018-01-29 15:12:24.367',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '504',\n    name: 'BANCO MULTIPLIC S.A',\n    createdAt: '2018-01-29 15:12:24.367',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '505',\n    name: 'BANCO GARANTIA S.A',\n    createdAt: '2018-01-29 15:12:24.370',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '600',\n    name: 'BANCO LUSO BRASILEIRO S.A',\n    createdAt: '2018-01-29 15:12:24.370',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '601',\n    name: 'BFC BANCO S.A.',\n    createdAt: '2018-01-29 15:12:24.370',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '602',\n    name: 'BANCO PATENTE S.A',\n    createdAt: '2018-01-29 15:12:24.370',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '604',\n    name: 'BANCO INDUSTRIAL DO BRASIL S.A',\n    createdAt: '2018-01-29 15:12:24.370',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '607',\n    name: 'BANCO SANTOS NEVES S.A',\n    createdAt: '2018-01-29 15:12:24.373',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '608',\n    name: 'BANCO OPEN S.A',\n    createdAt: '2018-01-29 15:12:24.373',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '610',\n    name: 'BANCO V.R. S.A',\n    createdAt: '2018-01-29 15:12:24.373',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '611',\n    name: 'BANCO PAULISTA S.A',\n    createdAt: '2018-01-29 15:12:24.373',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '612',\n    name: 'BANCO GUANABARA S.A',\n    createdAt: '2018-01-29 15:12:24.377',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '613',\n    name: 'BANCO PECUNIA S.A',\n    createdAt: '2018-01-29 15:12:24.377',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '616',\n    name: 'BANCO INTERPACIFICO S.A',\n    createdAt: '2018-01-29 15:12:24.377',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '617',\n    name: 'BANCO INVESTOR S.A.',\n    createdAt: '2018-01-29 15:12:24.377',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '618',\n    name: 'BANCO TENDENCIA S.A',\n    createdAt: '2018-01-29 15:12:24.377',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '621',\n    name: 'BANCO APLICAP S.A.',\n    createdAt: '2018-01-29 15:12:24.380',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '622',\n    name: 'BANCO DRACMA S.A',\n    createdAt: '2018-01-29 15:12:24.380',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '623',\n    name: 'BANCO PAnameRICANO S.A',\n    createdAt: '2018-01-29 15:12:24.380',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '624',\n    name: 'BANCO GENERAL MOTORS S.A',\n    createdAt: '2018-01-29 15:12:24.380',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '625',\n    name: 'BANCO ARAUCARIA S.A',\n    createdAt: '2018-01-29 15:12:24.380',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '626',\n    name: 'BANCO FICSA S.A',\n    createdAt: '2018-01-29 15:12:24.380',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '627',\n    name: 'BANCO DESTAK S.A',\n    createdAt: '2018-01-29 15:12:24.383',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '628',\n    name: 'BANCO CRITERIUM S.A',\n    createdAt: '2018-01-29 15:12:24.383',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '629',\n    name: 'BANCORP BANCO COML. E. DE INVESTMENTO',\n    createdAt: '2018-01-29 15:12:24.383',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '630',\n    name: 'BANCO INTERCAP S.A',\n    createdAt: '2018-01-29 15:12:24.383',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '633',\n    name: 'BANCO REDIMENTO S.A',\n    createdAt: '2018-01-29 15:12:24.383',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '634',\n    name: 'BANCO TRIANGULO S.A',\n    createdAt: '2018-01-29 15:12:24.387',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '635',\n    name: 'BANCO DO ESTADO DO AMAPA S.A',\n    createdAt: '2018-01-29 15:12:24.387',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '637',\n    name: 'BANCO SOFISA S.A',\n    createdAt: '2018-01-29 15:12:24.387',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '638',\n    name: 'BANCO PROSPER S.A',\n    createdAt: '2018-01-29 15:12:24.387',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '639',\n    name: 'BIG S.A. - BANCO IRMAOS GUIMARAES',\n    createdAt: '2018-01-29 15:12:24.387',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '640',\n    name: 'BANCO DE CREDITO METROPOLITANO S.A',\n    createdAt: '2018-01-29 15:12:24.390',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '641',\n    name: 'BANCO EXCEL ECONOMICO S/A',\n    createdAt: '2018-01-29 15:12:24.390',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '643',\n    name: 'BANCO SEGMENTO S.A',\n    createdAt: '2018-01-29 15:12:24.390',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '645',\n    name: 'BANCO DO ESTADO DE RORAIMA S.A',\n    createdAt: '2018-01-29 15:12:24.390',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '647',\n    name: 'BANCO MARKA S.A',\n    createdAt: '2018-01-29 15:12:24.390',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '648',\n    name: 'BANCO ATLANTIS S.A',\n    createdAt: '2018-01-29 15:12:24.390',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '649',\n    name: 'BANCO DIMENSAO S.A',\n    createdAt: '2018-01-29 15:12:24.390',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '650',\n    name: 'BANCO PEBB S.A',\n    createdAt: '2018-01-29 15:12:24.393',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '652',\n    name: 'BANCO FRANCES E BRASILEIRO SA',\n    createdAt: '2018-01-29 15:12:24.393',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '653',\n    name: 'BANCO INDUSVAL S.A',\n    createdAt: '2018-01-29 15:12:24.393',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '654',\n    name: 'BANCO A. J. RENNER S.A',\n    createdAt: '2018-01-29 15:12:24.393',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '655',\n    name: 'BANCO VOTORANTIM S.A.',\n    createdAt: '2018-01-29 15:12:24.393',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '656',\n    name: 'BANCO MATRIX S.A',\n    createdAt: '2018-01-29 15:12:24.397',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '657',\n    name: 'BANCO TECNICORP S.A',\n    createdAt: '2018-01-29 15:12:24.397',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '658',\n    name: 'BANCO PORTO REAL S.A',\n    createdAt: '2018-01-29 15:12:24.397',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '702',\n    name: 'BANCO SANTOS S.A',\n    createdAt: '2018-01-29 15:12:24.397',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '705',\n    name: 'BANCO INVESTCORP S.A.',\n    createdAt: '2018-01-29 15:12:24.400',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '707',\n    name: 'BANCO DAYCOVAL S.A',\n    createdAt: '2018-01-29 15:12:24.400',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '711',\n    name: 'BANCO VETOR S.A.',\n    createdAt: '2018-01-29 15:12:24.400',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '713',\n    name: 'BANCO CINDAM S.A',\n    createdAt: '2018-01-29 15:12:24.400',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '715',\n    name: 'BANCO VEGA S.A',\n    createdAt: '2018-01-29 15:12:24.400',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '718',\n    name: 'BANCO OPERADOR S.A',\n    createdAt: '2018-01-29 15:12:24.400',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '719',\n    name: 'BANCO PRIMUS S.A',\n    createdAt: '2018-01-29 15:12:24.400',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '720',\n    name: 'BANCO MAXINVEST S.A',\n    createdAt: '2018-01-29 15:12:24.403',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '721',\n    name: 'BANCO CREDIBEL S.A',\n    createdAt: '2018-01-29 15:12:24.403',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '722',\n    name: 'BANCO INTERIOR DE SAO PAULO S.A',\n    createdAt: '2018-01-29 15:12:24.403',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '724',\n    name: 'BANCO PORTO SEGURO S.A',\n    createdAt: '2018-01-29 15:12:24.403',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '725',\n    name: 'BANCO FINABANCO S.A',\n    createdAt: '2018-01-29 15:12:24.407',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '726',\n    name: 'BANCO UNIVERSAL S.A',\n    createdAt: '2018-01-29 15:12:24.407',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '728',\n    name: 'BANCO FITAL S.A',\n    createdAt: '2018-01-29 15:12:24.407',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '729',\n    name: 'BANCO FONTE S.A',\n    createdAt: '2018-01-29 15:12:24.407',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '730',\n    name: 'BANCO COMERCIAL PARAGUAYO S.A',\n    createdAt: '2018-01-29 15:12:24.407',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '731',\n    name: 'BANCO GNPP S.A.',\n    createdAt: '2018-01-29 15:12:24.410',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '732',\n    name: 'BANCO PREMIER S.A.',\n    createdAt: '2018-01-29 15:12:24.410',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '733',\n    name: 'BANCO NACOES S.A.',\n    createdAt: '2018-01-29 15:12:24.410',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '734',\n    name: 'BANCO GERDAU S.A',\n    createdAt: '2018-01-29 15:12:24.410',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '735',\n    name: 'BANCO NEON',\n    createdAt: '2018-01-29 15:12:24.410',\n    updatedAt: '2019-11-12 19:15:00.000',\n    deletedAt: '2019-11-12 19:15:00.000',\n    isDeleted: true\n  },\n  {\n    code: '736',\n    name: 'BANCO UNITED S.A',\n    createdAt: '2018-01-29 15:12:24.410',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '737',\n    name: 'THECA',\n    createdAt: '2018-01-29 15:12:24.413',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '738',\n    name: 'MARADA',\n    createdAt: '2018-01-29 15:12:24.413',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '739',\n    name: 'BGN',\n    createdAt: '2018-01-29 15:12:24.413',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '740',\n    name: 'BCN BARCLAYS',\n    createdAt: '2018-01-29 15:12:24.413',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '741',\n    name: 'BRP',\n    createdAt: '2018-01-29 15:12:24.413',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '742',\n    name: 'EQUATORIAL',\n    createdAt: '2018-01-29 15:12:24.417',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '743',\n    name: 'BANCO EMBLEMA S.A',\n    createdAt: '2018-01-29 15:12:24.417',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '744',\n    name: 'THE FIRST NATIONAL BANK OF BOSTON',\n    createdAt: '2018-01-29 15:12:24.417',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '746',\n    name: 'MODAL S.A.',\n    createdAt: '2018-01-29 15:12:24.417',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '747',\n    name: 'RABOBANK DO BRASIL',\n    document: '01.023.570/0001-60',\n    createdAt: '2018-01-29 15:12:24.420',\n    updatedAt: '2020-04-23 22:00:00.000',\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '748',\n    name: 'SICREDI',\n    createdAt: '2018-01-29 15:12:24.420',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '749',\n    name: 'BRMSANTIL SA',\n    createdAt: '2018-01-29 15:12:24.420',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '750',\n    name: 'BANCO REPUBLIC NATIONAL OF NEW YORK (BRA',\n    createdAt: '2018-01-29 15:12:24.420',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '751',\n    name: 'DRESDNER BANK LATEInameRIKA-BRASIL S/A',\n    createdAt: '2018-01-29 15:12:24.420',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '752',\n    name: 'BANCO BANQUE NATIONALE DE PARIS BRASIL S',\n    createdAt: '2018-01-29 15:12:24.420',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '753',\n    name: 'BANCO COMERCIAL URUGUAI S.A.',\n    createdAt: '2018-01-29 15:12:24.423',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '755',\n    name: 'BANCO MERRILL LYNCH S.A',\n    createdAt: '2018-01-29 15:12:24.423',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '757',\n    name: 'BANCO KEB DO BRASIL S.A.',\n    createdAt: '2018-01-29 15:12:24.423',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '260',\n    name: 'Nu Pagamentos S.A',\n    document: '18.236.120/0001-58',\n    createdAt: '2018-01-29 16:47:35.153',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '102',\n    name: 'XP INVESTIMENTOS',\n    createdAt: '2018-01-29 16:47:35.210',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '336',\n    name: 'BANCO C6 S.A.',\n    document: '31.872.495/0001-72',\n    createdAt: '2019-08-02 13:11:00.000',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '290',\n    name: 'PagSeguro Internet S.A.',\n    document: '08.561.701/0001-01',\n    createdAt: '2019-08-21 12:48:00.000',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '323',\n    name: 'MercadoPago.com Representações Ltda.',\n    document: '10.573.521/0001-91',\n    createdAt: '2019-09-13 15:23:00.000',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '332',\n    name: 'Acesso Soluções de Pagamento S.A.',\n    document: '13.140.088/0001-99',\n    createdAt: '2019-12-26 15:00:00.000',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '325',\n    name: 'Órama DTVM S.A.',\n    document: '13.293.225/0001-25',\n    createdAt: '2020-01-15 19:27:00.000',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '085',\n    name: 'COOPERATIVA CENTRAL DE CREDITO - AILOS',\n    document: '05.463.212/0001-29',\n    createdAt: '2020-03-20 18:04:00.000',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '125',\n    name: 'PLURAL S.A. BANCO MULTIPLO',\n    document: '45.246.410/0001-55',\n    createdAt: '2020-03-20 18:13:00.000',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '197',\n    name: 'STONE PAGAMENTOS S.A.',\n    document: '16.501.555/0002-38',\n    createdAt: '2020-04-24 12:58:00.000',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '380',\n    name: 'PICPAY SERVIÇOS S.A.',\n    document: '22.896.431/0001-10',\n    createdAt: '2021-01-06 08:36:00.000',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  },\n  {\n    code: '335',\n    name: 'BANCO DIGIO S.A.',\n    document: '27.098.060/0001-45',\n    createdAt: '2021-01-20 08:26:00.000',\n    updatedAt: null,\n    deletedAt: null,\n    isDeleted: false\n  }\n];\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { CepService } from '@app/modules/entry/services/cep.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { BrazilianBanks } from '@app/shared/data/Brazilian-banks';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { BrazilState, HealthProfessional } from '@app/shared/models';\nimport { BrazilBanks } from '@app/shared/models/brazil-banks';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { markFormGroup } from '@app/utils/markFormGroup';\n\n@Component({\n  selector: 'app-subaccount-step',\n  templateUrl: './subaccount-step.component.html',\n  styleUrls: ['./subaccount-step.component.scss', '../../modal-telemedicine-contract.component.scss']\n})\nexport class SubaccountStepComponent implements OnInit {\n  @Input() profile: string;\n  @Output() profileChange = new EventEmitter<string>();\n  @Output() formChange = new EventEmitter<any>();\n\n  @ViewChild('numero')\n  numeroRef: ElementRef;\n\n  states: BrazilState[] = BrazilianStates;\n  banks: BrazilBanks[] = BrazilianBanks;\n\n  private _form: FormGroup;\n  private lastCep: string;\n  private healthProfessional: HealthProfessional;\n  private personalForm: any;\n  private companyForm: any;\n\n  constructor(\n    private fb: FormBuilder,\n    private cepService: CepService,\n    private authService: AuthService,\n    private healthProfessionalService: HealthProfessionalService\n  ) {\n    this._form = this.fb.group({\n      name: this.fb.control('', Validators.required),\n      commercialName: this.fb.control(null),\n      identity: this.fb.control('', [Validators.minLength(11)]),\n      responsibleName: this.fb.control(null),\n      responsibleIdentity: this.fb.control(null),\n      email: this.fb.control('', Validators.compose([Validators.required, Validators.email])),\n      techName: this.fb.control(null),\n      techIdentity: this.fb.control(null),\n      techEmail: this.fb.control(null),\n      bankData: this.fb.group({\n        bank: this.fb.group({\n          code: this.fb.control('', Validators.required)\n        }),\n        accountType: this.fb.group({\n          code: this.fb.control('', Validators.required)\n        }),\n        bankAgency: this.fb.control('', Validators.required),\n        bankAgencyDigit: this.fb.control('', Validators.required),\n        bankAccount: this.fb.control('', Validators.required),\n        bankAccountDigit: this.fb.control('', Validators.required)\n      }),\n      address: this.fb.group({\n        zipCode: this.fb.control('', Validators.required),\n        street: this.fb.control('', Validators.required),\n        number: this.fb.control('', Validators.required),\n        complement: this.fb.control(''),\n        district: this.fb.control('', Validators.required),\n        cityName: this.fb.control('', Validators.required),\n        stateInitials: this.fb.control('', Validators.required),\n        countryName: this.fb.control('', Validators.required)\n      })\n    });\n  }\n\n  ngOnInit() {\n    this._form.valueChanges.subscribe(value => {\n      this.formChange.emit(value);\n      if (value.name) {\n        if (this.profile === 'pf') {\n          this.personalForm = value;\n        } else if (this.profile === 'pj') {\n          this.companyForm = value;\n        }\n      }\n    });\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  @Input()\n  set form(form: any) {\n    if (form) {\n      this._form.setValue(form);\n    }\n  }\n\n  get form() {\n    return this._form;\n  }\n\n  @nativeAsync\n  async onChangeProfile(profile: string) {\n    this.profileChange.emit(profile);\n    this._form.reset();\n\n    if (profile === 'pf') {\n      this._form.get('commercialName').setValidators([]);\n      this._form.get('responsibleName').setValidators([]);\n      this._form.get('responsibleIdentity').setValidators([]);\n\n      if (!this.healthProfessional) {\n        const healthProfessional = await this.healthProfessionalService\n          .getHealthProfessional(this.user._id)\n          .toPromise();\n        this.healthProfessional = healthProfessional;\n      }\n\n      if (this.personalForm) {\n        this._form.setValue(this.personalForm);\n      } else {\n        this._form.patchValue({\n          identity: this.healthProfessional.cpf,\n          name: this.healthProfessional.name,\n          email: this.user.email\n        });\n\n        const { commercialData } = this.healthProfessional;\n        const { address } = commercialData && commercialData[0];\n        if (address) {\n          this._form.get('address').patchValue({\n            ...address,\n            zipCode: address.cep,\n            district: address.neighborhood,\n            cityName: address.city,\n            stateInitials: address.uf,\n            countryName: 'Brasil'\n          });\n        }\n      }\n    } else {\n      this._form.get('responsibleName').setValidators([Validators.required]);\n      this._form.get('responsibleIdentity').setValidators([Validators.required]);\n\n      if (this.companyForm) {\n        this._form.setValue(this.companyForm);\n      }\n    }\n  }\n\n  @nativeAsync\n  async consultCep(value: string) {\n    const cep = value.replace(/[^\\d]+/g, '');\n    if (cep.length === 8 && this.lastCep !== cep) {\n      this.lastCep = cep;\n      const data = await this.cepService.consult(cep);\n      if (!data.erro) {\n        this._form.get('address').patchValue({\n          street: data.logradouro,\n          number: null,\n          district: data.bairro,\n          zipCode: data.cep,\n          cityName: data.localidade,\n          stateInitials: data.uf,\n          countryName: 'Brasil'\n        });\n        if (data.logradouro) {\n          this.numeroRef.nativeElement.focus();\n        }\n      }\n    }\n  }\n\n  get invalid() {\n    markFormGroup(this._form);\n    return this._form.invalid;\n  }\n\n  get errorMessage() {\n    return 'Você precisa preencher todos os campos obrigatórios';\n  }\n}\n","export default \"<p class=\\\"bold\\\">Dados bancários para recebimento do valor das consultas.</p>\\n\\n<p>\\n  Você pode usar a Teleconsulta Receita Digital para atender seus próprios pacientes e também para\\n  atender novos pacientes que procuram nossa plataforma em busca de atedimento médico.\\n</p>\\n\\n<p>\\n  Assim, o paciente faz o pagamento online direto no nosso site, e nós encaminhamos o pagamento para\\n  você! Para isso, precisaremos dos seus dados bancários para encaminhar o valor das consultas pagar\\n  online.\\n</p>\\n\\n<p>\\n  Fique tranquilo, está informação não será divulgada em lugar nenhum, e servirá exclusivamente para\\n  encaminhar o valor das suas consultas! Se você usa um CNPJ para receber pelas suas consultas, basta\\n  escolher a opção \\\"Pessoa Jurídica\\\" no campo PERFIL DA CONTA. Estes serão os dados utilizados para\\n  emissão da Nota Fiscal das consultas pagas através da nossa plataforma.\\n</p>\\n\\n<p>Se tiver alguma dúvida, é só clicar no link abaixo e falar com a gente pelo chat!</p>\\n<a href=\\\"\\\">link</a>\\n\\n<!-- Tipo de perfil -->\\n<nz-divider nzText=\\\"Perfil da conta\\\" nzOrientation=\\\"left\\\"></nz-divider>\\n<nz-select\\n  [(ngModel)]=\\\"profile\\\"\\n  (ngModelChange)=\\\"onChangeProfile($event)\\\"\\n  nzPlaceHolder=\\\"Selecione o perfil\\\"\\n  class=\\\"col-sm-6\\\"\\n>\\n  <nz-option nzValue=\\\"pf\\\" nzLabel=\\\"PESSOA FÍSICA\\\"></nz-option>\\n  <nz-option nzValue=\\\"pj\\\" nzLabel=\\\"PESSOA JURÍDICA\\\"></nz-option>\\n</nz-select>\\n\\n<form nz-form [formGroup]=\\\"form\\\" *ngIf=\\\"profile\\\">\\n  <div *ngIf=\\\"profile === 'pj'\\\">\\n    <div class=\\\"row\\\">\\n      <nz-divider nzText=\\\"Dados da empresa\\\" nzOrientation=\\\"left\\\"></nz-divider>\\n      <nz-form-item class=\\\"col-4\\\">\\n        <nz-form-label>CNPJ<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"identity\\\" mask=\\\"00.000.000/0000-00\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-4\\\">\\n        <nz-form-label>Razão Social<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"name\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-4\\\">\\n        <nz-form-label>Nome Fantasia</nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"commercialName\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n\\n    <div formGroupName=\\\"address\\\">\\n      <nz-divider nzText=\\\"Endereço\\\" nzOrientation=\\\"left\\\"></nz-divider>\\n      <div class=\\\"row\\\">\\n        <nz-form-item class=\\\"col-sm-4\\\">\\n          <nz-form-label>CEP<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              (keyup)=\\\"consultCep($event.target.value)\\\"\\n              mask=\\\"00000-000\\\"\\n              formControlName=\\\"zipCode\\\"\\n            />\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item class=\\\"col-sm-5\\\">\\n          <nz-form-label>Logradouro<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input nz-input formControlName=\\\"street\\\" />\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item class=\\\"col-sm-3\\\">\\n          <nz-form-label>Número<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input nz-input formControlName=\\\"number\\\" type=\\\"number\\\" #numero />\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n\\n      <div class=\\\"row\\\">\\n        <nz-form-item class=\\\"col-sm-6\\\">\\n          <nz-form-label>Complemento</nz-form-label>\\n          <input nz-input formControlName=\\\"complement\\\" />\\n        </nz-form-item>\\n\\n        <nz-form-item class=\\\"col-sm-6\\\">\\n          <nz-form-label>Bairro<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input nz-input formControlName=\\\"district\\\" />\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n\\n      <div class=\\\"row\\\">\\n        <nz-form-item class=\\\"col-sm-8\\\">\\n          <nz-form-label>Cidade<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input nz-input formControlName=\\\"cityName\\\" />\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item class=\\\"col-sm-4\\\">\\n          <nz-form-label>UF<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <nz-select nzShowSearch nzPlaceHolder=\\\"Selecione\\\" formControlName=\\\"stateInitials\\\">\\n              <nz-option\\n                *ngFor=\\\"let state of states\\\"\\n                [nzLabel]=\\\"state?.sigla\\\"\\n                [nzValue]=\\\"state?.sigla\\\"\\n              ></nz-option>\\n            </nz-select>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n\\n    <nz-divider nzText=\\\"Responsável Legal\\\" nzOrientation=\\\"left\\\"></nz-divider>\\n    <div class=\\\"row\\\">\\n      <nz-form-item class=\\\"col-4\\\">\\n        <nz-form-label>Nome<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"responsibleName\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-4\\\">\\n        <nz-form-label>CPF<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input appPatientSearch formControlName=\\\"responsibleIdentity\\\" mask=\\\"000.000.000-99\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-4\\\">\\n        <nz-form-label>E-mail<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"email\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n\\n  <!-- dados bancarios -->\\n  <div formGroupName=\\\"bankData\\\">\\n    <nz-divider nzText=\\\"Dados bancários\\\" nzOrientation=\\\"left\\\"></nz-divider>\\n\\n    <div class=\\\"row\\\">\\n      <nz-form-item class=\\\"col-sm-7\\\" formGroupName=\\\"bank\\\">\\n        <nz-form-label>Banco<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <nz-select nzShowSearch nzPlaceHolder=\\\"Selecione o banco\\\" formControlName=\\\"code\\\">\\n            <nz-option\\n              *ngFor=\\\"let bank of banks\\\"\\n              [nzLabel]=\\\"bank?.code + ' - ' + bank?.name\\\"\\n              [nzValue]=\\\"bank?.code\\\"\\n            ></nz-option>\\n          </nz-select>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-sm-5\\\" formGroupName=\\\"accountType\\\">\\n        <nz-form-label>Tipo de Conta<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <nz-select nzPlaceHolder=\\\"Selecione o tipo de conta\\\" formControlName=\\\"code\\\">\\n            <nz-option nzValue=\\\"CC\\\" nzLabel=\\\"Conta Corrente\\\"></nz-option>\\n            <nz-option nzValue=\\\"PP\\\" nzLabel=\\\"Conta Poupança\\\"></nz-option>\\n          </nz-select>\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n\\n    <div class=\\\"row\\\">\\n      <nz-form-item class=\\\"col-sm-4\\\">\\n        <nz-form-label>Agência<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"bankAgency\\\" type=\\\"tel\\\" maxlength=\\\"5\\\" pattern=\\\"\\\\d{1,5}\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-sm-2\\\">\\n        <nz-form-label>Dígito<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"bankAgencyDigit\\\" type=\\\"tel\\\" maxlength=\\\"2\\\" pattern=\\\"\\\\d{1,2}\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-sm-4\\\">\\n        <nz-form-label>Conta<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"bankAccount\\\" type=\\\"tel\\\" maxlength=\\\"12\\\" pattern=\\\"\\\\d{1,12}\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-sm-2\\\">\\n        <nz-form-label>Dígito<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            formControlName=\\\"bankAccountDigit\\\"\\n            type=\\\"tel\\\"\\n            maxlength=\\\"2\\\"\\n            pattern=\\\"\\\\d{1,2}\\\"\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n</form>\\n\";","export default \"\";","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { CepService } from '@app/modules/entry/services/cep.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { BrazilState } from '@app/shared/models';\nimport { markFormGroup } from '@app/utils';\nimport { CreditCardValidators } from 'angular-cc-library';\n\n@Component({\n  selector: 'app-subscription-step',\n  templateUrl: './subscription-step.component.html',\n  styleUrls: ['./subscription-step.component.scss', '../../modal-telemedicine-contract.component.scss']\n})\nexport class SubscriptionStepComponent implements OnInit {\n  @Output() formChange = new EventEmitter<any>();\n\n  @ViewChild('numberInput')\n  numberInputRef: ElementRef;\n\n  states: BrazilState[] = BrazilianStates;\n\n  private _form: FormGroup;\n  private lastCep: string;\n\n  constructor(private fb: FormBuilder, private cepService: CepService) {\n    this._form = this.fb.group({\n      customer: this.fb.group({\n        name: ['', Validators.required],\n        identity: [''],\n        phone: ['', Validators.required],\n        email: ['', [Validators.required, Validators.email]],\n        address: this.fb.group({\n          street: ['', Validators.required],\n          number: ['', Validators.required],\n          district: ['', Validators.required],\n          zipCode: ['', Validators.required],\n          cityName: ['', Validators.required],\n          stateInitials: ['', Validators.required],\n          countryName: ['', Validators.required]\n        })\n      }),\n      creditCard: this.fb.group({\n        holder: ['', Validators.required],\n        cardNumber: ['', CreditCardValidators.validateCCNumber],\n        expirationDate: ['', CreditCardValidators.validateExpDate],\n        securityCode: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(4)]]\n      })\n    });\n  }\n\n  ngOnInit() {\n    this._form.valueChanges.subscribe(value => this.formChange.emit(value));\n  }\n\n  @Input()\n  set form(form: any) {\n    if (form) {\n      this._form.setValue(form);\n    }\n  }\n\n  get form() {\n    return this._form;\n  }\n\n  get billingDate() {\n    const now = new Date();\n    now.setDate(now.getDate() + 16);\n    return now;\n  }\n\n  @nativeAsync\n  async consultCep(value: string) {\n    const cep = value.replace(/[^\\d]+/g, '');\n    if (cep.length === 8 && this.lastCep !== cep) {\n      this.lastCep = cep;\n      const data = await this.cepService.consult(cep);\n      if (!data.erro) {\n        const customer = this._form.get('customer');\n        customer.get('address').patchValue({\n          street: data.logradouro,\n          number: null,\n          district: data.bairro,\n          zipCode: data.cep,\n          cityName: data.localidade,\n          stateInitials: data.uf,\n          countryName: 'Brasil'\n        });\n        if (data.logradouro) {\n          this.numberInputRef.nativeElement.focus();\n        }\n      }\n    }\n  }\n\n  get invalid() {\n    markFormGroup(this._form);\n    return this._form.invalid;\n  }\n\n  get errorMessage() {\n    return 'Você precisa preencher todos os campos obrigatórios';\n  }\n\n  public goToNextCreditCardField(controlName: string, nextField: HTMLInputElement) {\n    const ctrl = this._form.get('creditCard').get(controlName);\n    if (ctrl && ctrl.valid) {\n      nextField.focus();\n    }\n  }\n}\n","export default \"<p>Pagamento do plano</p>\\n\\n<p>Para concluir a contratação do plano, preencha os dados para pagamento da mensalidade.</p>\\n\\n<p>\\n  A data da primeira cobrança será dia {{ billingDate | date: 'dd/MM/yyyy' }}. A liberação do seu acesso\\n  acontecerá em até 24h, após validarmos sua habilitação junto ao seu Conselho de Classe.\\n</p>\\n\\n<p>Caso desista da contratação nesse período</p>\\n\\n<!-- <p>CRIAR ADESÃO AO PLANO DA RECEITA DIGITAL</p> -->\\n\\n<form [formGroup]=\\\"form\\\" autocomplete=\\\"on\\\">\\n  <div formGroupName=\\\"customer\\\">\\n    <nz-divider nzText=\\\"Dados pessoais do dono do cartão\\\" nzOrientation=\\\"left\\\"></nz-divider>\\n    <div class=\\\"row\\\">\\n      <nz-form-item class=\\\"col-sm\\\">\\n        <nz-form-label>Nome Completo<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"name\\\" autocomplete=\\\"name\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-sm\\\">\\n        <nz-form-label>CPF/CNPJ<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"identity\\\" mask=\\\"CPF_CNPJ\\\" autocomplete=\\\"cpf\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n    <div class=\\\"row\\\">\\n      <nz-form-item class=\\\"col-sm\\\">\\n        <nz-form-label>Telefone<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"phone\\\" mask=\\\"(00) 00000-0000\\\" autocomplete=\\\"tel\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-sm\\\">\\n        <nz-form-label>E-mail<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"email\\\" autocomplete=\\\"email\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n\\n    <div formGroupName=\\\"address\\\">\\n      <nz-divider nzText=\\\"Endereço do dono do cartão\\\" nzOrientation=\\\"left\\\"></nz-divider>\\n      <div class=\\\"row\\\">\\n        <nz-form-item class=\\\"col-sm-4\\\">\\n          <nz-form-label>CEP<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              (keyup)=\\\"consultCep($event.target.value)\\\"\\n              mask=\\\"00000-000\\\"\\n              formControlName=\\\"zipCode\\\"\\n              autocomplete=\\\"postal-code\\\"\\n            />\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item class=\\\"col-sm-5\\\">\\n          <nz-form-label>Logradouro<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input nz-input formControlName=\\\"street\\\" autocomplete=\\\"street-address\\\" />\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item class=\\\"col-sm-3\\\">\\n          <nz-form-label>Número<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input nz-input formControlName=\\\"number\\\" type=\\\"number\\\" #numberInput autocomplete=\\\"off\\\" />\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n\\n      <div class=\\\"row\\\">\\n        <nz-form-item class=\\\"col-sm-4\\\">\\n          <nz-form-label>Bairro<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input nz-input formControlName=\\\"district\\\" autocomplete=\\\"address-level2\\\" />\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item class=\\\"col-sm-5\\\">\\n          <nz-form-label>Cidade<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input nz-input formControlName=\\\"cityName\\\" autocomplete=\\\"address-level1\\\" />\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item class=\\\"col-sm-3\\\">\\n          <nz-form-label>UF<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <nz-select nzShowSearch nzPlaceHolder=\\\"Selecione\\\" formControlName=\\\"stateInitials\\\">\\n              <nz-option\\n                *ngFor=\\\"let state of states\\\"\\n                [nzLabel]=\\\"state?.sigla\\\"\\n                [nzValue]=\\\"state?.sigla\\\"\\n              ></nz-option>\\n            </nz-select>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n  </div>\\n\\n  <div formGroupName=\\\"creditCard\\\">\\n    <nz-divider nzText=\\\"Dados do Cartão\\\" nzOrientation=\\\"left\\\"></nz-divider>\\n\\n    <div class=\\\"row\\\">\\n      <nz-form-item class=\\\"col-sm\\\">\\n        <nz-form-label>Número do cartão<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            type=\\\"tel\\\"\\n            autocomplete=\\\"cc-number\\\"\\n            formControlName=\\\"cardNumber\\\"\\n            placeholder=\\\"•••• •••• •••• ••••\\\"\\n            ccNumber\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-sm\\\">\\n        <nz-form-label>Nome impresso no cartão<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input nz-input formControlName=\\\"holder\\\" autocomplete=\\\"cc-name\\\" />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n\\n    <div class=\\\"row\\\">\\n      <nz-form-item class=\\\"col-sm\\\">\\n        <nz-form-label>Data de vencimento<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            #expireInput\\n            nz-input\\n            type=\\\"tel\\\"\\n            autocomplete=\\\"cc-exp\\\"\\n            formControlName=\\\"expirationDate\\\"\\n            placeholder=\\\"••/••••\\\"\\n            mask=\\\"00/0000\\\"\\n            appDate\\n            ccExp\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-sm\\\">\\n        <nz-form-label>Código de segurança<span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            #cvcInput\\n            nz-input\\n            formControlName=\\\"securityCode\\\"\\n            type=\\\"tel\\\"\\n            autocomplete=\\\"cc-csc\\\"\\n            placeholder=\\\"•••\\\"\\n            required\\n            ccCVC\\n          />\\n        </nz-form-control>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n</form>\\n\";","export default \"\";","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { FileStepComponent } from './file-step/file-step.component';\nimport { SubaccountStepComponent } from './subaccount-step/subaccount-step.component';\nimport { SubscriptionStepComponent } from './subscription-step/subscription-step.component';\n\n@Component({\n  selector: 'app-form-steps',\n  templateUrl: './form-steps.component.html',\n  styleUrls: ['./form-steps.component.scss', '../modal-telemedicine-contract.component.scss']\n})\nexport class FormStepsComponent implements OnInit {\n  @Input() userType: string;\n  @Output() title = new EventEmitter<string>();\n  @Output() cancel = new EventEmitter<any>();\n  @Output() submitForm = new EventEmitter<any>();\n\n  @ViewChild(FileStepComponent)\n  fileStepComponent: FileStepComponent;\n\n  @ViewChild(SubaccountStepComponent)\n  subaccountStepComponent: SubaccountStepComponent;\n\n  @ViewChild(SubscriptionStepComponent)\n  subscriptionStepComponent: SubscriptionStepComponent;\n\n  step = 1;\n  profile: string;\n\n  fileForm: any;\n  subaccountForm: any;\n  subscriptionForm: any;\n\n  constructor(private notification: AppToastService) {}\n\n  ngOnInit() {\n    this.emitTitle(this.step);\n  }\n\n  changeStep(advance: boolean) {\n    if (advance) {\n      this.advanceStep();\n    } else {\n      this.backStep();\n    }\n  }\n\n  private advanceStep() {\n    if (this.step === 1 && this.fileStepComponent.invalid) {\n      this.showWarning(this.fileStepComponent.errorMessage);\n    } else if (this.step === 2 && this.subaccountStepComponent.invalid) {\n      this.showWarning(this.subaccountStepComponent.errorMessage);\n    } else if (this.step === 3) {\n      if (this.subscriptionStepComponent.invalid) {\n        this.showWarning(this.subscriptionStepComponent.errorMessage);\n      } else {\n        this.submit();\n      }\n    } else {\n      this.step += 1;\n      this.emitTitle(this.step);\n    }\n  }\n\n  private backStep() {\n    if (this.step === 1) {\n      this.title.emit(null);\n      this.cancel.emit();\n    } else {\n      this.step -= 1;\n      this.emitTitle(this.step);\n    }\n  }\n\n  private showWarning(message: string) {\n    this.notification.notify('warning', 'Aviso', message);\n  }\n\n  private emitTitle(step: number) {\n    if (step === 1) {\n      this.title.emit('Documento');\n    } else if (step === 2) {\n      this.title.emit('Dados bancários');\n    } else if (step === 3) {\n      this.title.emit('Pagamento');\n    }\n  }\n\n  private submit() {\n    this.submitForm.emit({\n      subaccount: this.subaccountForm,\n      subscription: {\n        ...this.subscriptionForm,\n        emails: [this.subaccountForm.email]\n      },\n      document: this.fileForm.documentFile\n    });\n  }\n}\n","export default \"\";","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-intro',\n  templateUrl: './intro.component.html',\n  styleUrls: ['./intro.component.scss', '../modal-telemedicine-contract.component.scss']\n})\nexport class IntroComponent implements OnInit {\n  @Input() userType: string;\n\n  constructor() {}\n\n  ngOnInit() {}\n}\n","export default \"<nz-tabset>\\n  <nz-tab [nzTitle]=\\\"tab01\\\">\\n    <ng-template #tab01>\\n      <img src=\\\"assets/icons/door-open-solid.svg\\\" />\\n    </ng-template>\\n    <ng-container *ngIf=\\\"userType == 'healthProfessional'\\\">\\n      <p class=\\\"bold\\\">Bem vindo à Teleconsulta Receita Digital</p>\\n      <p>\\n        Esta é uma das ferramentas que fazem parte do plano pago da plataforma Receita Digital.\\n      </p>\\n      <p>\\n        Para saber como funciona, basta clicar nos botões acima e conhecer todos os detalhes desta nova\\n        ferramenta.\\n      </p>\\n      <p>\\n        Gostou do que viu? Clique no botão CONTRATAR acima.\\n      </p>\\n    </ng-container>\\n\\n    <ng-container *ngIf=\\\"userType == 'patient'\\\">\\n      <p class=\\\"bold\\\">Bem vindo à Teleconsulta Receita Digital</p>\\n      <p>\\n        Aqui você encontra diversos médicos que atendem online, via teleconsulta e estão prontos para\\n        fazer sua Receita Digital.\\n      </p>\\n      <p>\\n        Para saber como funciona, navegue pelos botões acima e tire suas principais dúvidas sobre a\\n        consulta, formas de pagamento, como receber sua receita, políticas de cancelamento, e mais!\\n      </p>\\n    </ng-container>\\n  </nz-tab>\\n\\n  <nz-tab [nzTitle]=\\\"tab02\\\">\\n    <ng-template #tab02>\\n      <img\\n        src=\\\"{{\\n          userType == 'healthProfessional'\\n            ? 'assets/icons/dollar-sign-solid.svg'\\n            : 'assets/icons/ambulance-solid.svg'\\n        }}\\\"\\n      />\\n    </ng-template>\\n    <ng-container *ngIf=\\\"userType == 'healthProfessional'\\\">\\n      <p class=\\\"bold\\\">Quanto custa?</p>\\n      <p>\\n        Esta é uma das ferramentas que fazem parte do plano pago da plataforma Receita Digital.\\n      </p>\\n      <p>\\n        Pagando apenas R$139,90 por mês você usa nossa plataforma para fazer quantas consultas quiser.\\n      </p>\\n      <p>\\n        Você pode usar a Teleconsulta Receita Digital para atender seus próprios pacientes e também para\\n        atender novos pacientes que procuram nossa plataforma em busca de atendimento médico.\\n      </p>\\n      <p>\\n        Cancele quando quiser, a fidelidade que acreditamos é aquela em que o cliente gosta do produto,\\n        pode isso decide ficar!\\n      </p>\\n    </ng-container>\\n\\n    <ng-container *ngIf=\\\"userType == 'patient'\\\">\\n      <p class=\\\"bold\\\">É uma emergência?</p>\\n\\n      <p>Se você está se sentindo mal, considere procurar a emergência mais próxima!</p>\\n\\n      <p>Até mesmo as consultas do plantão podem demorar mais do que é seguro esperar!</p>\\n    </ng-container>\\n  </nz-tab>\\n\\n  <nz-tab [nzTitle]=\\\"tab03\\\">\\n    <ng-template #tab03>\\n      <img\\n        src=\\\"{{\\n          userType == 'healthProfessional'\\n            ? 'assets/icons/tools-solid.svg'\\n            : 'assets/icons/video-solid.svg'\\n        }}\\\"\\n      />\\n      <!-- <img src=\\\"assets/icons/video-solid.svg\\\" *ngIf=\\\"userType == 'patient'\\\" /> -->\\n    </ng-template>\\n    <ng-container *ngIf=\\\"userType == 'healthProfessional'\\\">\\n      <p class=\\\"bold\\\">Quais as ferramentas terei acesso?</p>\\n      <p>\\n        Ao contratar a Teleconsulta Receita Digital você terá acesso a todas as ferramentas da plataforma\\n        que você já usa e mais:\\n      </p>\\n      <br />\\n      <p>\\n        Agenda para marcar as consultas dos seus pacientes e receber agendamento de novos pacientes\\n      </p>\\n      <p>\\n        Ferramenta de videoconferência com criptografia ponta a ponta, e segurança adequada para\\n        atendimentos médicos.\\n      </p>\\n      <p>\\n        Ferramenta para anotações durante as consultas, que já ficam salvas no perfil do seu paciente.\\n      </p>\\n    </ng-container>\\n\\n    <ng-container *ngIf=\\\"userType == 'patient'\\\">\\n      <p class=\\\"bold\\\">Às vezes você precisa mais do que uma teleconsulta...</p>\\n      <p>\\n        A teleconsulta possui limitações pela distância médico-paciente, portanto nem sempre é possível\\n        fazer um diagnóstico.\\n      </p>\\n      <p>\\n        Dê prefereência a consultas com médicos próximos de você, caso seja necessária uma consulta\\n        complementar presencial.\\n      </p>\\n      <p>Está em dúvida? Converse com um dos nossos atendentes!</p>\\n    </ng-container>\\n  </nz-tab>\\n\\n  <nz-tab [nzTitle]=\\\"tab04\\\">\\n    <ng-template #tab04>\\n      <img\\n        src=\\\"{{\\n          userType == 'healthProfessional'\\n            ? 'assets/icons/video-solid.svg'\\n            : 'assets/icons/stethoscope-solid.svg'\\n        }}\\\"\\n      />\\n      <!-- <img src=\\\"assets/icons/stethoscope-solid.svg\\\" *ngIf=\\\"userType == 'patient'\\\" /> -->\\n    </ng-template>\\n    <ng-container *ngIf=\\\"userType == 'healthProfessional'\\\">\\n      <p class=\\\"bold\\\">Como funciona?</p>\\n      <p>\\n        Esta é uma das ferramentas que fazem parte do plano pago da plataforma Receita Digital. Veja como\\n        funciona:\\n      </p>\\n    </ng-container>\\n\\n    <ng-container *ngIf=\\\"userType == 'patient'\\\">\\n      <p class=\\\"bold\\\">Não interferimos na conduta do profissional!</p>\\n      <p>O médico é soberano para decidir qual a melhor conduta a se adotar;</p>\\n      <p>\\n        Se você não gostar do desfecho da consulta, você pode buscar uma segunda opinião, mas não será\\n        possível solicitar reembolso da consulta.\\n      </p>\\n    </ng-container>\\n  </nz-tab>\\n\\n  <nz-tab [nzTitle]=\\\"tab05\\\">\\n    <ng-template #tab05>\\n      <img\\n        src=\\\"{{\\n          userType == 'healthProfessional'\\n            ? 'assets/icons/calendar-alt-solid.svg'\\n            : 'assets/icons/dot-circle-regular.svg'\\n        }}\\\"\\n      />\\n      <!-- <img src=\\\"assets/icons/dot-circle-regular.svg\\\" *ngIf=\\\"userType == 'patient'\\\" /> -->\\n    </ng-template>\\n\\n    <ng-container *ngIf=\\\"userType == 'healthProfessional'\\\">\\n      <p class=\\\"bold\\\">Agendamento de consulta</p>\\n      <p>\\n        Esta é uma das ferramentas que fazem parte do plano pago da plataforma Receita Digital. Veja como\\n        funciona:\\n      </p>\\n    </ng-container>\\n\\n    <ng-container *ngIf=\\\"userType == 'patient'\\\">\\n      <p class=\\\"bold\\\">É proibido gravar!</p>\\n      <p>Médicos e pacientes são proibidos de gravar a consulta sem o consentimento do outro!</p>\\n      <p>Também é proibido \\\"printar\\\" a tela sem autorização!</p>\\n      <p>\\n        Se por algum motivo você acha que precisa gravar a consulta ou \\\"printar\\\" a tela, informe o\\n        profissional que está lhe atendendo e solicite sua autorização!\\n      </p>\\n    </ng-container>\\n  </nz-tab>\\n\\n  <nz-tab [nzTitle]=\\\"tab06\\\">\\n    <ng-template #tab06>\\n      <img\\n        class=\\\"white\\\"\\n        src=\\\"{{\\n          userType == 'healthProfessional'\\n            ? 'assets/icons/credit-card-solid.svg'\\n            : 'assets/icons/capsules-solid.svg'\\n        }}\\\"\\n      />\\n      <!-- <img\\n        class=\\\"white\\\"\\n        src=\\\"\\\"\\n        *ngIf=\\\"userType == 'patient'\\\"\\n      /> -->\\n    </ng-template>\\n    <ng-container *ngIf=\\\"userType == 'healthProfessional'\\\">\\n      <p>Receba pelas consultas com pagamento online</p>\\n      <p>\\n        Esta é uma das ferramentas que fazem parte do plano pago da plataforma Receita Digital. Veja como\\n        funciona:\\n      </p>\\n      <p>Usamos a ferramenta de pagamento Safe2Pay, da Safeweb, segurança...</p>\\n    </ng-container>\\n\\n    <ng-container *ngIf=\\\"userType == 'patient'\\\">\\n      <p class=\\\"bold\\\">Pagar por uma consulta não lhe garante uma receita médica!</p>\\n      <p>\\n        Nem toda consulta gera uma receita médica e o médico não é obrigado a prescrever um medicamento,\\n        um pedido de exames ou atestado médico, mesmo que você tenha solicitado.\\n      </p>\\n      <p>Assim como acontece nas consultas presenciais.</p>\\n    </ng-container>\\n  </nz-tab>\\n\\n  <nz-tab [nzTitle]=\\\"tab07\\\">\\n    <ng-template #tab07>\\n      <img\\n        class=\\\"white\\\"\\n        src=\\\"{{\\n          userType == 'healthProfessional'\\n            ? 'assets/icons/users-solid.svg'\\n            : 'assets/icons/dollar-sign-solid.svg'\\n        }}\\\"\\n      />\\n      <!-- <img\\n        class=\\\"white\\\"\\n        src=\\\"assets/icons/dollar-sign-solid.svg\\\"\\n        *ngIf=\\\"userType == 'patient'\\\"\\n      /> -->\\n    </ng-template>\\n    <ng-container *ngIf=\\\"userType == 'healthProfessional'\\\">\\n      <p class=\\\"bold\\\">Atenda seus pacientes e novos pacientes</p>\\n      <p>\\n        Esta é uma das ferramentas que fazem parte do plano pago da plataforma Receita Digital. Veja como\\n        funciona:\\n      </p>\\n    </ng-container>\\n\\n    <ng-container *ngIf=\\\"userType == 'patient'\\\">\\n      <p class=\\\"bold\\\">Quanto vou pagar? Como vou pagar?</p>\\n      <p>\\n        Cada médico decide quanto cobrar pela consulta. Você poderá consultar este valor nas informações\\n        dos médicos disponíveis. Também será possível definir um filtro com o valor máximo que você\\n        deseja pagar.\\n      </p>\\n      <p>\\n        Para consultas agendadas com 48h de antecedência, você pode pagar com cartão de crédito, débito e\\n        boleto bancário. Para as consultas de emergências, com menos de 48h de antecedência, somente com\\n        cartões de crédito e débito.\\n      </p>\\n    </ng-container>\\n  </nz-tab>\\n\\n  <nz-tab [nzTitle]=\\\"tab08\\\">\\n    <ng-template #tab08>\\n      <!-- assets/icons/notes-medical-solid.svg -->\\n      <img\\n        class=\\\"white\\\"\\n        src=\\\"{{\\n          userType == 'healthProfessional'\\n            ? 'assets/icons/notes-medical-solid.svg'\\n            : 'assets/icons/times-circle-solid.svg'\\n        }}\\\"\\n      />\\n      <!-- <img\\n        class=\\\"white\\\"\\n        src=\\\"\\\"\\n        *ngIf=\\\"userType == 'patient'\\\"\\n      /> -->\\n    </ng-template>\\n    <ng-container *ngIf=\\\"userType == 'healthProfessional'\\\">\\n      <p class=\\\"bold\\\">Atenda seus pacientes e novos pacientes</p>\\n      <p>\\n        Esta é uma das ferramentas que fazem parte do plano pago da plataforma Receita Digital. Veja como\\n        funciona:\\n      </p>\\n    </ng-container>\\n\\n    <ng-container *ngIf=\\\"userType == 'patient'\\\">\\n      <p class=\\\"bold\\\">E se precisar cancelar ou reagendar uma consulta?</p>\\n      <p>\\n        Você poderá solicitar a alteração da consulta previamente marcada, escolhendo um novo horário com\\n        o mesmo profissional ou usando o valor pago como crédito para escolher outro profissional.\\n      </p>\\n      <p>\\n        Se desejar cancelar a consulta e solicitar o reembolso do valor pago, será cobrado o valor de 5%\\n        para cobrir as despesas da operadora financeira.\\n      </p>\\n      <p>\\n        Caso o profissional não compareça no horário marcado, você poderá solicitar o reembolso integral\\n        do valor pago, e nós nos responsabilizamos pelo pagamento das despesas da operadora.\\n      </p>\\n    </ng-container>\\n  </nz-tab>\\n</nz-tabset>\\n\";","export default \".bold {\\n  font-family: \\\"probold\\\";\\n}\";","export default \"<div class=\\\"modal-video-conf\\\">\\n  <div class=\\\"modal-header\\\">\\n    <div class=\\\"title\\\">\\n      <img src=\\\"assets/icons/video-solid.svg\\\" />\\n      <h4 class=\\\"modal-title pull-left text-white\\\">TELECONSULTA {{ title ? ' - ' + title : '' }}</h4>\\n    </div>\\n    <!-- <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button> -->\\n\\n    <button\\n      class=\\\"hire-btn\\\"\\n      type=\\\"button\\\"\\n      *ngIf=\\\"!hire && user?.userType === 'healthProfessional'\\\"\\n      (click)=\\\"hire = true\\\"\\n    >\\n      <span aria-hidden=\\\"true\\\">Contratar</span>\\n    </button>\\n\\n    <button class=\\\"hire-btn\\\" type=\\\"button\\\" *ngIf=\\\"!hire && user?.userType === 'patient'\\\">\\n      <span aria-hidden=\\\"true\\\">Começar</span>\\n    </button>\\n\\n    <button class=\\\"hire-btn\\\" type=\\\"button\\\" *ngIf=\\\"hire\\\" (click)=\\\"closeModal()\\\">\\n      <div class=\\\"btn-cancel\\\">\\n        <span aria-hidden=\\\"true\\\">Cancelar</span>\\n      </div>\\n    </button>\\n  </div>\\n\\n  <div class=\\\"modal-body\\\">\\n    <app-intro *ngIf=\\\"!hire\\\" [userType]=\\\"user?.userType\\\"></app-intro>\\n    <app-form-steps\\n      *ngIf=\\\"hire\\\"\\n      (title)=\\\"title = $event\\\"\\n      [userType]=\\\"user?.userType\\\"\\n      (cancel)=\\\"hire = false\\\"\\n      (submitForm)=\\\"submitForm($event)\\\"\\n    ></app-form-steps>\\n  </div>\\n</div>\\n\";","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\n\nconst USER_TELEMEDICINE = 'user-telemedicine';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class VideoConferenceService {\n  constructor(private http: HttpClient) {}\n\n  getById(id: string) {\n    return this.http.get<any>(`${environment.apiRoot}${USER_TELEMEDICINE}/${id}`);\n  }\n\n  create(form: any) {\n    return this.http.post<any>(`${environment.apiRoot}${USER_TELEMEDICINE}`, form);\n  }\n\n  uploadDocument(base64: string) {\n    return this.http.post<any>(`${environment.apiRoot}${USER_TELEMEDICINE}/upload-document`, { base64 });\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { VideoConferenceService } from './user-telemedicine.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-modal-telemedicine-contract',\n  templateUrl: './modal-telemedicine-contract.component.html',\n  styleUrls: ['./modal-telemedicine-contract.component.scss']\n})\nexport class ModalTelemedicineContractComponent implements OnInit {\n  title: string;\n  hire: boolean;\n\n  constructor(\n    protected modalRef: BsModalRef,\n    private authService: AuthService,\n    private nzModalService: NzModalService,\n    private notification: AppToastService,\n    private videoConferenceService: VideoConferenceService\n  ) {}\n\n  ngOnInit() {}\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  @nativeAsync\n  submitForm(data: any) {\n    this.nzModalService.confirm({\n      nzTitle: 'Atenção',\n      nzContent: 'Tem certeza que deseja submeter seus dados?',\n      nzOnOk: async () => {\n        try {\n          await this.videoConferenceService.create(data).toPromise();\n          this.notification.notify(\n            'success',\n            'Cadastro realizado com sucesso.',\n            'Aguarde 24 horas que retornaremos a análise dos seus dados'\n          );\n          this.closeModal();\n        } catch (err) {\n          console.error(err);\n          if (err.error.message) {\n            this.notification.notify('error', 'Alerta', err.error.message);\n          } else {\n            this.notification.notify(\n              'error',\n              'Erro',\n              'Ocorreu um erro na solicitação. Entre em contato conosco'\n            );\n          }\n        }\n      }\n    });\n  }\n\n  closeModal() {\n    this.modalRef.hide();\n    this.modalRef = null;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { SharedModule } from '@app/shared';\nimport { CreditCardDirectivesModule } from 'angular-cc-library';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { FileStepComponent } from './form-steps/file-step/file-step.component';\nimport { FormStepsComponent } from './form-steps/form-steps.component';\nimport { SubaccountStepComponent } from './form-steps/subaccount-step/subaccount-step.component';\nimport { SubscriptionStepComponent } from './form-steps/subscription-step/subscription-step.component';\nimport { IntroComponent } from './intro/intro.component';\nimport { ModalTelemedicineContractComponent } from './modal-telemedicine-contract.component';\n\n@NgModule({\n  declarations: [\n    ModalTelemedicineContractComponent,\n    IntroComponent,\n    FormStepsComponent,\n    FileStepComponent,\n    SubaccountStepComponent,\n    SubscriptionStepComponent\n  ],\n  imports: [SharedModule, NgxMaskModule.forRoot(), CreditCardDirectivesModule],\n  exports: [ModalTelemedicineContractComponent]\n})\nexport class ModalTelemedicineContractModule {}\n","import { UserService } from '@app/modules/user/user.service';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'app-modal-womens-month',\n  templateUrl: './modal-womens-month.component.html',\n  styleUrls: ['./modal-womens-month.component.scss']\n})\nexport class ModalWomensMonthComponent {\n  @Input() isVisible = false;\n  @Output() isVisibleChange = new EventEmitter<boolean>();\n\n  constructor(private userService: UserService) {}\n\n  later() {\n    localStorage.setItem('hideWomensModal', 'true');\n    this.close();\n  }\n\n  open() {\n    window.open('https://consultaremedios.com.br', '_blank');\n    this.close();\n    this.userService.checkWomensMonth().subscribe(_ => localStorage.setItem('hideWomensModal', 'true'));\n  }\n\n  private close() {\n    this.isVisibleChange.emit(false);\n  }\n}\n","export default \"<nz-modal\\n  theme\\n  class=\\\"modal-women\\\"\\n  [(nzVisible)]=\\\"isVisible\\\"\\n  [nzContent]=\\\"modalContent\\\"\\n  [nzFooter]=\\\"modalFooter\\\"\\n  [nzStyle]=\\\"{ top: '100px' }\\\"\\n  nzWidth=\\\"400\\\"\\n>\\n  <ng-template #modalContent>\\n    <div class=\\\"row\\\">\\n      <div class=\\\"col-3 align-self-center\\\">\\n        <img src=\\\"assets/icons/batom.png\\\" alt=\\\"Batom\\\" class=\\\"logo\\\" />\\n      </div>\\n      <div class=\\\"col\\\">\\n        <h2 class=\\\"title\\\">\\n          Parabéns, Mulher!\\n        </h2>\\n        <p>\\n          Que tal comemorar aproveitando descontos especiais, frete grátis e kits exclusivos do\\n          <span class=\\\"bold\\\">mês da mulher CR</span>? Clique e aproveite.\\n        </p>\\n      </div>\\n    </div>\\n  </ng-template>\\n\\n  <ng-template #modalFooter>\\n    <button nz-button nzType=\\\"default\\\" (click)=\\\"later()\\\">\\n      Ver depois\\n    </button>\\n    <button nz-button nzType=\\\"primary\\\" (click)=\\\"open()\\\">\\n      Quero ver\\n    </button>\\n  </ng-template>\\n</nz-modal>\\n\";","export default \"::ng-deep .modal-women .title {\\n  font-family: \\\"probold\\\";\\n  text-align: start;\\n  color: var(--color-title);\\n  font-size: 30px;\\n}\\n::ng-deep .modal-women .logo {\\n  width: 100px;\\n}\\n::ng-deep .modal-women .bold {\\n  font-family: \\\"probold\\\";\\n}\\n::ng-deep .modal-women p {\\n  font-family: \\\"proregular\\\";\\n  line-height: 1.3;\\n  text-align: justify;\\n}\\n::ng-deep .modal-women .ant-modal-footer {\\n  background-color: var(--bg-modal-header);\\n}\\n::ng-deep .modal-women .ant-btn-default:hover {\\n  color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n::ng-deep .modal-women .ant-btn-default:focus {\\n  color: rgba(0, 0, 0, 0.65);\\n  border-color: #d9d9d9;\\n}\\n::ng-deep .modal-women .ant-btn-primary {\\n  color: white;\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n::ng-deep .modal-women .ant-btn-primary:hover {\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\";","import { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { ModalEditPharmacyTechnicianComponent } from '@app/modules/dashboard/modal-edit-pharmacy-technician/modal-edit-pharmacy-technician.component';\r\nimport { SharedModule } from '@app/shared';\r\nimport { ThemeModule, themeMrd, themeReceitaDigital } from '@app/theme';\r\nimport { environment } from '@env/environment';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { NgxLoadingModule } from 'ngx-loading';\r\nimport { NgxPhotoEditorModule } from 'ngx-photo-editor';\r\nimport { PatientsModule } from '../patients/patients.module';\r\nimport { DashboardRoutingModule } from './dashboard-routing.module';\r\nimport { ModalCipAcceptanceComponent } from './modal-cip-acceptance/modal-cip-acceptance.component';\r\nimport { ModalComplementInfoPatientComponent } from './modal-complement-info-patient/modal-complement-info-patient.component';\r\nimport { ModalCovidComponent } from './modal-covid/modal-covid.component';\r\nimport { ModalPetFormComponent } from './modal-pet-form/modal-pet-form.component';\r\nimport { ModalRqeWarningComponent } from './modal-rqe-warning/modal-rqe-warning.component';\r\nimport { ModalTelemedicineContractModule } from './modal-telemedicine-contract/modal-telemedicine-contract.module';\r\nimport { ModalWomensMonthComponent } from './modal-womens-month/modal-womens-month.component';\r\nimport { IndexComponent } from './pages/index/index.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    SharedModule,\r\n    DashboardRoutingModule,\r\n    NgxLoadingModule.forRoot({}),\r\n    ModalModule.forRoot(),\r\n    ModalTelemedicineContractModule,\r\n    PatientsModule,\r\n    NgxPhotoEditorModule,\r\n    ThemeModule.forRoot({ themes: [themeReceitaDigital, themeMrd], active: environment.template })\r\n  ],\r\n  declarations: [\r\n    IndexComponent,\r\n    ModalCovidComponent,\r\n    ModalCipAcceptanceComponent,\r\n    ModalRqeWarningComponent,\r\n    ModalWomensMonthComponent,\r\n    ModalEditPharmacyTechnicianComponent,\r\n    ModalComplementInfoPatientComponent,\r\n    ModalPetFormComponent\r\n  ],\r\n  exports: [ModalCipAcceptanceComponent],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]\r\n})\r\nexport class DashboardModule {}\r\n","export * from './markFormGroup';\r\n","import { Fur } from '@app/shared/models';\n\nexport const Furs: Fur[] = [\n  { title: 'abricot' },\n  { title: 'amarelo' },\n  { title: 'arlequim' },\n  { title: 'azul aço' },\n  { title: 'azul roão' },\n  { title: 'bege' },\n  { title: 'black and tan' },\n  { title: 'boston' },\n  { title: 'branca' },\n  { title: 'branco e bege' },\n  { title: 'branco e cinza' },\n  { title: 'branco e marrom' },\n  { title: 'branco e preto' },\n  { title: 'branco e vermelho' },\n  { title: 'bronze' },\n  { title: 'caramelo' },\n  { title: 'champagne' },\n  { title: 'cinza' },\n  { title: 'dourado' },\n  { title: 'fulvo' },\n  { title: 'indefinida' },\n  { title: 'manto negro' },\n  { title: 'marrom' },\n  { title: 'pelo duro (arame)' },\n  { title: 'pintado' },\n  { title: 'preta' },\n  { title: 'preta e amarelo' },\n  { title: 'preto e vermelho' },\n  { title: 'preto, branco e marrom' },\n  { title: 'sal e pimenta' },\n  { title: 'tigrado' },\n  { title: 'tricolor' },\n  { title: 'vermelho' },\n  { title: 'vermelho e branco' }\n];\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Patient } from '@app/shared/models';\nimport { environment } from '@env/environment';\nimport { Observable, of } from 'rxjs';\n\nexport const PATIENT_URL = 'patient';\n\n@Injectable({ providedIn: 'root' })\nexport class PatientsService {\n  constructor(private http: HttpClient) {}\n\n  save(patient: Patient): Observable<Patient> {\n    return this.http.post<Patient>(`${environment.apiRoot}${PATIENT_URL}`, patient);\n  }\n\n  getPatient(id: string): Observable<Patient> {\n    return this.http.get<Patient>(`${environment.apiRoot}${PATIENT_URL}`, { params: { id } });\n  }\n\n  getPatientByCpf(cpf: string): Observable<Patient & Patient[]> {\n    return this.http.get<Patient & Patient[]>(`${environment.apiRoot}${PATIENT_URL}`, {\n      params: { cpf }\n    });\n  }\n\n  getPatientByEmail(email: string): Observable<Patient[]> {\n    return this.http.get<Patient[]>(`${environment.apiRoot}${PATIENT_URL}/?email=${email}`);\n  }\n\n  getPatients(): Observable<Patient[]> {\n    return this.http.get<Patient[]>(`${environment.apiRoot}${PATIENT_URL}`);\n  }\n\n  getPatientByUserId(userId: string): Observable<Patient> {\n    return this.http.get<Patient>(`${environment.apiRoot}${PATIENT_URL}/user/${userId}`);\n  }\n\n  update(id: string, data: any): Observable<Patient> {\n    return this.http.put<Patient>(`${environment.apiRoot}${PATIENT_URL}/${id}`, data);\n  }\n\n  consultCpf(cpf: string): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${PATIENT_URL}/consult/${cpf}`);\n  }\n\n  getPatientsByFilter(filter: any): Observable<{ patients: Patient[]; totalRecord: number }> {\n    return this.http.get<any>(`${environment.apiRoot}${PATIENT_URL}/filter`, { params: filter });\n  }\n\n  resolvePending() {\n    return this.http.post(`${environment.apiRoot}${PATIENT_URL}/pendency`, {});\n  }\n\n  sendDocument(data) {\n    return this.http.post(`${environment.apiRoot}${PATIENT_URL}/send-document`, data);\n  }\n\n  exportData() {\n    return this.http.get(`${environment.apiRoot}${PATIENT_URL}/export`).subscribe((response: any) => {\n      const blob = new Blob([response.data], { type: 'text/csv' });\n      const a = document.createElement('a');\n      a.href = URL.createObjectURL(blob);\n      a.download = 'pacientes.csv';\n      a.click();\n    });\n  }\n\n  unsubscribePatient(id: string) {\n    return this.http.delete(`${environment.apiRoot}${PATIENT_URL}/${id}`);\n  }\n\n  existsPatient(cpf: string) {\n    return this.http.get(`${environment.apiRoot}${PATIENT_URL}/cpf/${cpf}/exists`);\n  }\n\n  switchReponsible(id: string, cpfNewReponsible: string) {\n    return this.http.put(\n      `${environment.apiRoot}${PATIENT_URL}/${id}/responsible/${cpfNewReponsible}`,\n      {}\n    );\n  }\n}\n","import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\n\n@Component({\n  selector: 'app-unsigned-prescription-modal',\n  templateUrl: './unsigned-prescription-modal.component.html',\n  styleUrls: ['./unsigned-prescription-modal.component.scss']\n})\nexport class UnsignedPrescriptionModalComponent implements OnInit {\n  tplModal: NzModalRef;\n\n  @ViewChild('tplTitle')\n  tplTitle: TemplateRef<{}>;\n\n  @ViewChild('tplContent', { static: true })\n  tplContent: TemplateRef<{}>;\n\n  @ViewChild('tplFooter', { static: true })\n  tplFooter: TemplateRef<{}>;\n\n  title: string;\n  code: string;\n\n  constructor(private modalService: NzModalService) {}\n\n  ngOnInit() {}\n\n  createTplModal(code: string) {\n    this.code = code;\n    switch (code[0]) {\n      case 'P':\n      case 'I':\n        this.title = 'Receita salva com sucesso!';\n        break;\n      case 'A':\n        this.title = 'Atestado salvo com sucesso!';\n        break;\n      case 'E':\n        this.title = 'Exame salvo com sucesso!';\n        break;\n      case 'O':\n        this.title = 'Orientação salva com sucesso!';\n        break;\n      default:\n        this.title = 'Documento salvo com sucesso!';\n    }\n\n    this.tplModal = this.modalService.create({\n      nzContent: this.tplContent,\n      nzFooter: this.tplFooter,\n      nzClosable: false,\n      nzWidth: 650,\n      nzMaskClosable: false,\n      nzOnCancel: () => {},\n      nzWrapClassName: 'modal-unsigned-prescription',\n      nzOnOk: () => console.log('Click ok')\n    });\n  }\n\n  close(): void {\n    this.tplModal.destroy();\n  }\n}\n","export default \"<ng-template #tplContent>\\n  <div class=\\\"container\\\">\\n    <h4 class=\\\"title text-primary\\\">\\n      {{ title }}\\n    </h4>\\n    <p>Código do documento: {{ code }}</p>\\n    <br />\\n  </div>\\n</ng-template>\\n<ng-template #tplFooter>\\n  <div class=\\\"container d-flex align-items-end flex-column modal-footer\\\" theme>\\n    <div class=\\\"row\\\">\\n      <button (click)=\\\"close()\\\" class=\\\"btn btn-ok\\\" theme>\\n        Ok\\n      </button>\\n    </div>\\n  </div>\\n</ng-template>\\n\";","export default \".title {\\n  text-transform: none;\\n  font-size: 50px;\\n  line-height: normal;\\n}\\n\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n}\\n\\n.print-without-sign {\\n  font-size: 12px;\\n  color: #1b403a;\\n  margin-bottom: 0;\\n}\\n\\n.print-without-sign a:not(.btn) {\\n  font-family: \\\"problack\\\";\\n  text-decoration: underline;\\n}\\n\\n.modal-footer {\\n  padding: 10px 32px;\\n  background-color: var(--bg-modal-header);\\n}\\n\\n.modal-footer .btn {\\n  font-size: 12px;\\n}\\n\\n::ng-deep .ant-modal-body {\\n  text-align: center;\\n  padding-bottom: 0;\\n}\\n\\n::ng-deep .ant-modal-content {\\n  border-radius: 10px;\\n  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);\\n}\\n\\n::ng-deep .ant-modal-footer {\\n  border-radius: 0 0 10px 10px;\\n  border-top: 0;\\n  padding: 0 !important;\\n}\";","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Buyer } from '@app/shared/models/buyer';\nimport { environment } from '@env/environment';\nimport { Observable, throwError, pipe } from 'rxjs';\n\nconst BUYER_URL = 'buyer';\n\n@Injectable({ providedIn: 'root' })\nexport class BuyerService {\n  constructor(private http: HttpClient) {}\n\n  public getBuyerByCpf(cpf: string): Observable<Buyer> {\n    return this.http.get<Buyer>(`${environment.apiRoot}${BUYER_URL}/${cpf}`);\n  }\n\n  save(buyer: Buyer): Observable<Buyer> {\n    return this.http.post<Buyer>(`${environment.apiRoot}${BUYER_URL}`, buyer);\n  }\n\n  handleError(error) {\n    let errorMessage = '';\n    if (error.error instanceof ErrorEvent) {\n      // client-side error\n      errorMessage = `Error: ${error.error.message}`;\n    } else {\n      // server-side error\n      errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\n    }\n    window.alert(errorMessage);\n\n    return throwError(errorMessage);\n  }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport Swal, { SweetAlertIcon, SweetAlertResult } from 'sweetalert2';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SweetalertService {\n  notificarSucesso(msg: string): void {\n    Swal.fire({\n      position: 'center',\n      icon: 'success',\n      title: msg,\n      showConfirmButton: false,\n      timer: 1500\n    });\n  }\n\n  notificarWarning(msg: string): void {\n    Swal.fire({\n      icon: 'warning',\n      title: 'Atenção',\n      text: msg\n    });\n  }\n\n  notificarWarningComOnClose(msg: string, onClose: (isConfirmed: boolean) => void): void {\n    Swal.fire({\n      icon: 'warning',\n      title: 'Atenção',\n      text: msg,\n      confirmButtonColor: '#0B6054',\n      allowOutsideClick: false\n    }).then(result => {\n      if (result) {\n        onClose(result.isConfirmed);\n      }\n    });\n  }\n\n  confirmDialog(title: string, msg: string, icon: SweetAlertIcon = 'info'): Promise<SweetAlertResult> {\n    return Swal.fire({\n      title,\n      text: msg,\n      icon,\n      showCancelButton: true,\n      confirmButtonColor: '#0B6054',\n      cancelButtonColor: '#EBEBEB',\n      confirmButtonText: 'Sim',\n      cancelButtonText: 'Não',\n      allowOutsideClick: true\n    });\n  }\n\n  notificarError(\n    titulo: string,\n    detalhe: string,\n    erro: HttpErrorResponse,\n    icon: string = 'error'\n  ): void {\n    const htmlTitle = `<p class='mt-10'>${titulo}</p>`;\n\n    let title = 'Ocorreu um erro';\n\n    let footer;\n\n    let isAlerta: boolean;\n\n    if (erro && [400, 401, 402, 403, 404].includes(erro.status)) {\n      icon = 'warning';\n      title = 'Atenção!';\n      isAlerta = true;\n    }\n\n    if (detalhe) {\n      const htmlDetail = `\n        <div class='box-log'>\n          <div class='box-log-description'>\n            ${detalhe}\n          </div>\n        </div>\n      `;\n      footer = htmlDetail;\n    } else if (isAlerta && erro && erro.error && erro.error.detail) {\n      const detail = erro.error.detail;\n      const htmlDetail = `\n        <div class='box-log'>\n          <div class='box-log-description'>\n           (${erro.error.status}) - ${detail}\n          </div>\n        </div>\n      `;\n      footer = htmlDetail;\n    }\n\n    const options: any = {\n      icon,\n      title,\n      html: htmlTitle,\n      customClass: {\n        container: 'box-class-modal-sweetalert',\n        confirmButton: 'sweetalert-btn sweetalert-btn-confirm',\n        cancelButton: 'sweetalert-btn sweetalert-btn-info'\n      },\n      buttonsStyling: false,\n      showCancelButton: true,\n      confirmButtonText: '<i class=\"fa fa-check-circle\"></i> OK',\n      cancelButtonText: '<i class=\"fa fa-info-circle\"></i>',\n      footer\n    };\n    Swal.fire(options).then((res: any) => {\n      if (res && res.dismiss === 'cancel') {\n        const logErroElemento: HTMLElement = document.getElementById('log-erro-menu');\n        setTimeout(() => {\n          if (logErroElemento) {\n            logErroElemento.click();\n          }\n        }, 500);\n      }\n    });\n  }\n}\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"crnd\";","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Specialty } from '@app/shared/models';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\n\nconst SPECIALTY_URL = 'specialty';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SpecialtiesService {\n  constructor(private http: HttpClient) {}\n\n  getSpecialtiesByType(type: string): Observable<Specialty[]> {\n    return this.http.get<any>(`${environment.apiRoot}${SPECIALTY_URL}/${type}`);\n  }\n\n  save(specialty: Specialty): Observable<Specialty> {\n    return this.http.post<Specialty>(`${environment.apiRoot}${SPECIALTY_URL}`, specialty);\n  }\n\n  update(code, specialty: Specialty): Observable<Specialty> {\n    return this.http.put<Specialty>(`${environment.apiRoot}${SPECIALTY_URL}/${code}`, specialty);\n  }\n\n  delete(specialty: Specialty): Observable<Specialty> {\n    return this.http.delete<Specialty>(`${environment.apiRoot}${SPECIALTY_URL}/${specialty._id}`);\n  }\n\n  getSpecialties(filter: any): Observable<Specialty[]> {\n    return this.http.get<Specialty[]>(`${environment.apiRoot}${SPECIALTY_URL}`, {\n      params: filter\n    });\n  }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { User } from '@app/shared/models/decodedLoginToken';\r\nimport { DataBigboostConsult } from '@app/shared/models/paciente';\r\nimport { environment } from '@env/environment';\r\nimport { CroppedEvent } from 'ngx-photo-editor';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map, shareReplay } from 'rxjs/operators';\r\nexport const USER_URL = 'user';\r\nconst ACCEPT_MANIPULATED_ACCEPTANCE_TERM = 'user/accept-manipulated-acceptance-term';\r\nconst ACCEPTED_MANIPULATED_TERM = 'user/accepted-manipulated-term';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class UserService {\r\n  constructor(private http: HttpClient) {}\r\n\r\n  private profileAvatar$: Observable<string>;\r\n\r\n  /*\r\n   * ------------------------\r\n   *  Cache da Imagem de Perfil\r\n   * ------------------------\r\n   */\r\n\r\n  getAvatar(): Observable<string> {\r\n    if (!this.profileAvatar$) {\r\n      this.profileAvatar$ = this.http.get<any>(`${environment.apiRoot}${USER_URL}/avatar`).pipe(\r\n        shareReplay(1),\r\n        map(({ avatar }) => `data:image/jpeg;base64,` + avatar),\r\n        catchError(_ => {\r\n          return of('');\r\n        })\r\n      );\r\n    }\r\n    return this.profileAvatar$;\r\n  }\r\n\r\n  updateAvatar({ file, base64 }: CroppedEvent): Observable<any> {\r\n    const data = new FormData();\r\n\r\n    data.append('avatar', file);\r\n    return this.http.put<any>(`${environment.apiRoot}${USER_URL}/avatar`, data).pipe(\r\n      map(res => {\r\n        this.profileAvatar$ = of(base64);\r\n      })\r\n    ); // on success\r\n  }\r\n\r\n  clearAvatar(): void {\r\n    this.profileAvatar$ = null;\r\n  }\r\n\r\n  getQuantityUsers(tenantId: string): Observable<any> {\r\n    return this.http.get<any>(`${environment.apiRoot}${USER_URL}/quantities`, { params: { tenantId } });\r\n  }\r\n\r\n  async acceptedManipulatedTerm(userId) {\r\n    const response = await this.http\r\n      .get<any>(`${environment.apiRoot}${ACCEPTED_MANIPULATED_TERM}/${userId}`)\r\n      .toPromise();\r\n    return response.manipulatedAccepranceTerm;\r\n  }\r\n\r\n  update(userId, data): Observable<any> {\r\n    return this.http.put<any>(`${environment.apiRoot}${USER_URL}/${userId}`, data);\r\n  }\r\n\r\n  acceptManipulatedAcceptanceTerm(userId): Observable<any> {\r\n    return this.http.put<any>(\r\n      `${environment.apiRoot}${ACCEPT_MANIPULATED_ACCEPTANCE_TERM}/${userId}`,\r\n      {}\r\n    );\r\n  }\r\n\r\n  getUser(params: any): Observable<any> {\r\n    return this.http.get<any>(`${environment.apiRoot}${USER_URL}`, { params });\r\n  }\r\n\r\n  checkEmailExists(email: string, tenantId?: string): Observable<any> {\r\n    const params = { email };\r\n    if (tenantId) {\r\n      params['tenantId'] = tenantId;\r\n    }\r\n    return this.http.get<any>(`${environment.apiRoot}${USER_URL}/exists`, { params });\r\n  }\r\n\r\n  checkWomensMonth(): Observable<any> {\r\n    return this.http.put<any>(`${environment.apiRoot}${USER_URL}/women`, {});\r\n  }\r\n\r\n  checkUi({\r\n    doNotShowAgainModalSuccessPrescription,\r\n    doNotShowAgainModalNewPortalDigitalSignatures\r\n  }: any): Observable<any> {\r\n    return this.http.patch<any>(`${environment.apiRoot}${USER_URL}/ui`, {\r\n      doNotShowAgainModalSuccessPrescription,\r\n      doNotShowAgainModalNewPortalDigitalSignatures\r\n    });\r\n  }\r\n\r\n  getControllerUserUi(id: string): Observable<any> {\r\n    return this.http.get<any>(`${environment.apiRoot}${USER_URL}/${id}/ui`);\r\n  }\r\n\r\n  revalidateCpf({ id, userType }) {\r\n    return this.http.post<{ user: User; consult: DataBigboostConsult }>(\r\n      `${environment.apiRoot}revalidate/cpf`,\r\n      { id, userType }\r\n    );\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { PdfData } from '@app/shared/models/pdf-data';\nimport { PdfRequest } from '@app/shared/models/pdf-request';\nimport { environment } from '@env/environment';\nexport const PDF_URL = 'pdf';\n\ninterface UploadResponse {\n  message: string;\n  url: string;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PdfService {\n  private _endpoint = `${environment.apiRoot}${PDF_URL}`;\n\n  constructor(private http: HttpClient) {}\n\n  get endpoint(): string {\n    return this._endpoint;\n  }\n\n  useV1Endpoint(): void {\n    this._endpoint = `${environment.apiV1}/${PDF_URL}`;\n  }\n\n  generatePdf(code: string, theme: string): Promise<PdfData> {\n    const params = { theme };\n    return this.http.get<PdfData>(`${this._endpoint}/${code}/generate`, { params }).toPromise();\n  }\n\n  generateAndSavePdf({ code, draft = false, layout = {} }: PdfRequest): Promise<PdfData> {\n    const options = {\n      params: {\n        ...layout,\n        draft: draft.toString(),\n        showPrescriberCpf: layout.showPrescriberCpf && layout.showPrescriberCpf.toString()\n      }\n    };\n    return this.http.put<PdfData>(`${this._endpoint}/${code}/save`, {}, options).toPromise();\n  }\n\n  downloadPdfDocument(code: string, _secretCode = '') {\n    const params = _secretCode ? { params: { _secretCode } } : {};\n    return this.http.get<PdfData>(`${this._endpoint}/${code}`, params).toPromise();\n  }\n\n  postFilePdf(file: Blob, code: string): Promise<string> {\n    return new Promise(async resolve => {\n      const reader = new FileReader();\n      reader.onloadend = async event => {\n        const base64 = reader.result;\n        const res = await this.http\n          .post<UploadResponse>(`${this._endpoint}/upload`, { base64, code })\n          .toPromise();\n\n        resolve(res.url);\n      };\n      reader.readAsDataURL(file);\n    });\n  }\n\n  openPdf(pdf: PdfData) {\n    const pdfBase64 = pdf.data;\n    const binary = atob(pdfBase64.split(',')[1].replace(/\\s/g, ''));\n    const len = binary.length;\n    const buffer = new ArrayBuffer(len);\n    const view = new Uint8Array(buffer);\n\n    for (let i = 0; i < len; i += 1) {\n      view[i] = binary.charCodeAt(i);\n    }\n\n    const blob = new Blob([view], { type: 'application/pdf' });\n    const url = URL.createObjectURL(blob);\n\n    const a = document.createElement('a');\n    document.body.appendChild(a);\n    a.href = url;\n    a.download = pdf.filename;\n    a.target = '_blank';\n    a.click();\n    a.remove();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\n\nconst KEY = 'token';\n\n@Injectable({ providedIn: 'root' })\nexport class TokenService {\n  readonly jwtHelper = new JwtHelperService();\n\n  hasToken(): boolean {\n    return this.getToken() !== null;\n  }\n\n  setToken(token: string): void {\n    window.localStorage.setItem(KEY, token);\n  }\n\n  getToken(): string | null {\n    return window.localStorage.getItem(KEY);\n  }\n\n  removeToken(): void {\n    window.localStorage.removeItem(KEY);\n  }\n\n  tokenEstaExpirado() {\n    return this.hasToken() && this.jwtHelper.isTokenExpired(this.getToken());\n  }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\n\nimport * as moment from 'moment';\nimport { AuthService } from '../services/auth.service';\nimport { TokenService } from '../security/token/token.service';\nimport { SweetalertService } from '@app/shared/services/sweetalert.service';\nimport { environment } from '@env/environment';\n\n@Component({\n  selector: 'app-usuario-inativo',\n  template: ``\n})\nexport class UsuarioInativoComponent implements OnInit, OnDestroy {\n  readonly validadeSessao = '_validadeSessao';\n  readonly quinzeSegundos = 15000;\n  readonly intervaloDeTempoParaVerificarSeUsuarioEstaAtivo = this.quinzeSegundos;\n  private _validandoSessao = false;\n  private _intervalId: any;\n  private _tempoDeValidadeDaSessao = environment.tempoDeValidadeDaSessao;\n\n  constructor(\n    private _authService: AuthService,\n    private _tokenService: TokenService,\n    private _sweetalertService: SweetalertService,\n    private _router: Router\n  ) {}\n\n  ngOnInit(): void {\n    console.info(`tempo de sessão configurado: ${this._tempoDeValidadeDaSessao} minutos`);\n    this.renovarTempoDeSessao();\n    this.monitorarAtividadeDoUsuario();\n    this.monitorarSeUsuarioEstaAtivo();\n  }\n\n  ngOnDestroy(): void {\n    clearInterval(this._intervalId);\n  }\n\n  renovarTempoDeSessao() {\n    const validade = moment()\n      .add(this._tempoDeValidadeDaSessao, 'minutes')\n      .unix();\n    localStorage.setItem(this.validadeSessao, validade.toString());\n    this._validandoSessao = false;\n  }\n\n  monitorarAtividadeDoUsuario() {\n    if (!this._authService.isLoggedIn) {\n      return;\n    }\n\n    window.addEventListener('mousemove', this.verificarValidadeDoToken.bind(this), true);\n    window.addEventListener('scroll', this.verificarValidadeDoToken.bind(this), true);\n    window.addEventListener('keydown', this.verificarValidadeDoToken.bind(this), true);\n  }\n\n  monitorarSeUsuarioEstaAtivo() {\n    this._intervalId = setInterval(() => {\n      this.usuarioEstaAtivo();\n    }, this.intervaloDeTempoParaVerificarSeUsuarioEstaAtivo);\n  }\n\n  usuarioEstaAtivo() {\n    if (!this._validandoSessao && this._authService.isLoggedIn) {\n      this._validandoSessao = true;\n      const validadeSessao = parseInt(localStorage.getItem(this.validadeSessao), 10);\n      const now = moment().unix();\n      if (validadeSessao < now) {\n        this.deslogarUsuarioComNotificacao();\n\n        this._validandoSessao = false;\n      } else {\n        this._validandoSessao = false;\n      }\n    }\n  }\n\n  verificarValidadeDoToken() {\n    if (this._validandoSessao) {\n      return;\n    }\n\n    this._validandoSessao = true;\n    const tokenExpirado = this._tokenService.tokenEstaExpirado();\n\n    tokenExpirado ? this.deslogarUsuarioComNotificacao() : this.renovarTempoDeSessao();\n  }\n\n  deslogarUsuarioComNotificacao() {\n    this._validandoSessao = false;\n    clearInterval(this._intervalId);\n    const timeText = environment.tempoDeValidadeDaSessao > 60 ? '4 horas' : '1 hora';\n    this._sweetalertService.notificarWarningComOnClose(\n      `Tempo de inatividade acima de ${timeText}. É preciso realizar login novamente`,\n      () => {\n        this._tokenService.removeToken();\n        this.pararMonitoramentoDeUsuarioInativo();\n      }\n    );\n  }\n\n  pararMonitoramentoDeUsuarioInativo() {\n    clearInterval(this._intervalId);\n    window.location.href = 'entry/login';\n    window.removeEventListener('mousemove', this.verificarValidadeDoToken.bind(this), true);\n    window.removeEventListener('scroll', this.verificarValidadeDoToken.bind(this), true);\n    window.removeEventListener('keydown', this.verificarValidadeDoToken.bind(this), true);\n  }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UsuarioInativoComponent } from './usuario-inativo/usuario-inativo.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [UsuarioInativoComponent],\r\n  exports: [UsuarioInativoComponent]\r\n})\r\nexport class CoreModule {}\r\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AdditionalFeature } from '@app/shared/models';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\n\nconst ADDITIONAL_FEATURE_URL = 'additional-feature';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AdditionalFeatureService {\n  constructor(private http: HttpClient) {}\n\n  save(additionalFeature: AdditionalFeature): Observable<AdditionalFeature> {\n    return this.http.post<AdditionalFeature>(\n      `${environment.apiRoot}${ADDITIONAL_FEATURE_URL}`,\n      additionalFeature\n    );\n  }\n\n  update(code, additionalFeature: AdditionalFeature): Observable<AdditionalFeature> {\n    return this.http.put<AdditionalFeature>(\n      `${environment.apiRoot}${ADDITIONAL_FEATURE_URL}/${code}`,\n      additionalFeature\n    );\n  }\n\n  associateFunctionalities(userId, data: any): Observable<any> {\n    return this.http.post<AdditionalFeature>(\n      `${environment.apiRoot}${ADDITIONAL_FEATURE_URL}/user/${userId}`,\n      data\n    );\n  }\n\n  disassociateFunctionality(userId, featureId) {\n    return this.http.delete<AdditionalFeature>(\n      `${environment.apiRoot}${ADDITIONAL_FEATURE_URL}/user/disassociate-functionality/${userId}/${featureId}`\n    );\n  }\n\n  getAdditionalFeatures(filter: any): Observable<AdditionalFeature[]> {\n    return this.http.get<AdditionalFeature[]>(`${environment.apiRoot}${ADDITIONAL_FEATURE_URL}`, {\n      params: filter\n    });\n  }\n\n  getAdditionalFeaturesByUser(userId, filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${ADDITIONAL_FEATURE_URL}/user/${userId}`, {\n      params: filter\n    });\n  }\n\n  acceptFeature(code: number) {\n    return this.http\n      .put<any>(`${environment.apiRoot}${ADDITIONAL_FEATURE_URL}/${code}/accept`, {})\n      .toPromise();\n  }\n\n  refuseFeature(code: number) {\n    return this.http\n      .delete(`${environment.apiRoot}${ADDITIONAL_FEATURE_URL}/${code}/accept`)\n      .toPromise();\n  }\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport { OnlyNumbersPipe } from '@app/shared/pipes/only-numbers.pipe';\r\nimport { numeroEspecial } from './helpers';\r\n\r\n@Pipe({\r\n  name: 'formattedTel'\r\n})\r\n@Injectable()\r\nexport class FormattedTelPipe implements PipeTransform {\r\n  transform(value): string {\r\n    if (value && value !== '') {\r\n      let tel;\r\n      const receivedValue = value ? new OnlyNumbersPipe().transform(value) : value;\r\n      if (numeroEspecial(receivedValue) && receivedValue.length === 8) {\r\n        tel = receivedValue.substring(0, 3) + '-' + receivedValue.substring(3, receivedValue.length - 3);\r\n      } else if (numeroEspecial(receivedValue) && receivedValue.length > 8) {\r\n        tel =\r\n          receivedValue.substring(0, 3) +\r\n          '-' +\r\n          receivedValue.substring(4, receivedValue.length - 4) +\r\n          '-' +\r\n          receivedValue.substring(receivedValue.length - 3, receivedValue.length);\r\n      } else if (receivedValue.length > 2 && receivedValue.length <= 7) {\r\n        tel = `(${receivedValue.substring(0, 2)}) ${receivedValue.substring(2)}`;\r\n      } else if (receivedValue.length <= 2) {\r\n        tel = receivedValue.substring(0, 7);\r\n      } else if (receivedValue.length === 11) {\r\n        tel = `(${receivedValue.substring(0, 2)}) ${receivedValue.substring(\r\n          2,\r\n          7\r\n        )}-${receivedValue.substring(7, receivedValue.length)}`;\r\n      } else {\r\n        tel = `(${receivedValue.substring(0, 2)}) ${receivedValue.substring(\r\n          2,\r\n          6\r\n        )}-${receivedValue.substring(6, receivedValue.length)}`;\r\n      }\r\n      return tel;\r\n    }\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\nimport { HostListener, Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OrientationService } from '@app/modules/document/pages/orientation/orientation.service';\nimport { HealthProfessional, Orientation } from '@app/shared/models';\nimport { md5 } from '@app/utils/md5';\nimport { environment } from '@env/environment';\nimport { AttestationService } from './../pages/attestation/attestation.service';\nimport { ExamService } from './exam.service';\nimport { InfusionService } from './infusion.service';\nimport { PdfService } from './pdf.service';\nimport { PrescriptionService } from './prescription.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { Prescription } from '@app/shared/models/prescription';\nimport { Exam } from '@app/shared/models/exam';\nimport { Attestation } from '@app/shared/models/attestation';\n\ninterface PdfSignParams {\n  code: string;\n  version?: string;\n  prescriber: HealthProfessional;\n  patientId: string;\n  token?: string;\n  layout?: any;\n  payload?: string;\n  callbackUrl?: string;\n  showSendDocumentOnCallback?: boolean;\n  victaFeature?: boolean;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DocumentService {\n  private _model: any;\n  private _patientForm: FormGroup;\n  private _documentTypeSelected: string;\n  private _plusGApp: string;\n  private _sharedKey: string;\n\n  constructor(\n    private prescriptionService: PrescriptionService,\n    private attestationService: AttestationService,\n    private examService: ExamService,\n    private orientationService: OrientationService,\n    private infusionService: InfusionService,\n    private pdfService: PdfService,\n    private http: HttpClient\n  ) {}\n\n  get model() {\n    return this._model;\n  }\n\n  set model(model: any) {\n    this._model = model;\n  }\n\n  get patientForm() {\n    return this._patientForm;\n  }\n\n  set patientForm(patientForm: FormGroup) {\n    this._patientForm = patientForm;\n  }\n\n  get documentTypeSelected() {\n    return this._documentTypeSelected;\n  }\n\n  set documentTypeSelected(documentType: string) {\n    this._documentTypeSelected = documentType;\n  }\n\n  usePdfV1Endpoint() {\n    this.pdfService.useV1Endpoint();\n  }\n\n  @nativeAsync\n  async getDocument(code: string, type?: string): Promise<any> {\n    let document = null;\n    if (code[0] === 'A' || code.substring(0, 4) === 'VETA' || type === 'attestation') {\n      document = await this.attestationService.getAttestation(code).toPromise();\n      document.type = 'Atestado';\n    } else if (code[0] === 'E' || code.substring(0, 4) === 'VETE' || type === 'exam') {\n      document = await this.examService.getExam(code).toPromise();\n      document.type = 'Exame';\n    } else if (code[0] === 'O' || code.substring(0, 4) === 'VETO' || type === 'orientation') {\n      document = await this.orientationService.getOrientation(code).toPromise();\n      document.type = 'Outros';\n    } else if (code[0] === 'I' || type === 'infusion') {\n      document = await this.infusionService.getInfusion(code).toPromise();\n      document.type = 'Infusão';\n    } else if (code[0] === 'P' || code[0] === 'V' || type === 'prescription' || !type) {\n      document = await this.prescriptionService.getPrescriptionbyCode(code).toPromise();\n      document.type = 'Prescrição';\n    } else if (code.substring(0, 3) === 'REN' || type === 'prescription-renew') {\n      document = await this.prescriptionService.getPrescriptionbyCode(code).toPromise();\n      document.type = 'Prescrição Rennova';\n    }\n\n    return document;\n  }\n\n  archive(code: string) {\n    return this.http.put(`${environment.apiRoot}documents/${code}/archive`, {});\n  }\n\n  unarchive(code: string) {\n    return this.http.delete(`${environment.apiRoot}documents/${code}/archive`);\n  }\n\n  getTotals(tenantId: string) {\n    return this.http.get<any>(`${environment.apiRoot}documents/totals`, { params: { tenantId } });\n  }\n\n  @nativeAsync\n  async generateAndOpenPdf(code: string, layout = {}) {\n    const pdf = await this.pdfService.generateAndSavePdf({ code, draft: true, layout });\n    const link = document.createElement('a');\n    link.target = '_blank';\n    link.href = pdf.url;\n    link.download = pdf.filename;\n    link.click();\n    link.remove();\n  }\n\n  @nativeAsync\n  async getUrlToSignDocument({\n    code,\n    version,\n    prescriber,\n    patientId,\n    token,\n    layout,\n    payload,\n    callbackUrl,\n    showSendDocumentOnCallback = true,\n    victaFeature\n  }: PdfSignParams): Promise<string> {\n    if (victaFeature) {\n      this._plusGApp = `${environment.plusGApp}/institutodosoro`;\n      this._sharedKey = environment.envPlusSecretKeyIS;\n    } else {\n      this._plusGApp = `${environment.plusGApp}/receitadigital`;\n      this._sharedKey = environment.envPlusSecretKey;\n    }\n\n    try {\n      const { filename, url: pdfUrl } = await this.pdfService.generateAndSavePdf({ code, layout });\n      if (!pdfUrl) {\n        throw Error('Erro ao gerar PDF');\n      }\n\n      return this.buildSignPdfPayload({\n        filename,\n        pdfUrl,\n        prescriber,\n        patientId,\n        code,\n        version,\n        token,\n        payload,\n        callbackUrl,\n        showSendDocumentOnCallback\n      });\n    } catch (err) {\n      throw err;\n    }\n  }\n\n  private buildSignPdfPayload({\n    filename,\n    pdfUrl,\n    prescriber,\n    patientId,\n    code,\n    version,\n    token,\n    payload: payloadB64,\n    callbackUrl,\n    showSendDocumentOnCallback\n  }): string {\n    const isBeta = version === 'BETA';\n    const path = isBeta ? 'document/new' : 'prescription/new';\n    let route = path;\n    if (token) {\n      if (isBeta) {\n        route = `recipe-v2/new/${token}`;\n      } else {\n        route = `recipe/new/${token}`;\n      }\n    }\n\n    let url = `${window.location.origin}/${route}`;\n\n    const params: any = { code };\n    if (payloadB64) {\n      params.payload = payloadB64;\n    }\n\n    if (prescriber.professionalType === 'veterinarian') {\n      params.petId = patientId;\n    } else {\n      params.patientId = patientId;\n    }\n\n    if (callbackUrl) {\n      if (showSendDocumentOnCallback) {\n        params.callbackUrl = callbackUrl;\n      } else {\n        url = callbackUrl;\n      }\n    }\n\n    const urlParams = new URLSearchParams(params).toString();\n    const host = `${window.location.protocol}//${window.location.hostname}`;\n\n    const payload: any = {\n      callbackUrl: `${url}?${urlParams}&response=`,\n      webhookUrl: `${environment.apiRoot}pdf/upload-signed?code=${code}`,\n      ui: {\n        username: prescriber.cpf,\n        preferPreview: 'description'\n      },\n      security: {\n        allowAddNewDocument: false,\n        allowDocumentType: false,\n        payloadCallbackUrl: true,\n        allowChangeUsername: !environment.production\n      },\n      files: [\n        {\n          name: filename,\n          description: this.getContent(host),\n          src: pdfUrl,\n          signatureSetting: {\n            id: code,\n            type: 'DOC-pdf',\n            visibleSignatureField: 'Assinatura',\n            visibleSignatureDateFormat: 'd/m/Y\\nH:i:s|TZ|America/Sao_Paulo',\n            visibleSignatureCustomTemplateSrc: `${host}/assets/templates/signature.html`\n          }\n        }\n      ]\n    };\n\n    if (environment.production) {\n      payload.certificates = {\n        filters: [\n          {\n            validity: 'now',\n            'issuer=>organizationName': 'ICP-Brasil',\n            'subjectAltName=>otherName=>2.16.76.1.3.1': `********${prescriber.cpf}**************************`\n          }\n        ]\n      };\n    }\n\n    return this.computeHmacUrl(JSON.stringify(payload).replace(/\\//g, '\\\\/'));\n  }\n\n  private computeHmacUrl(payloadJson: string): string {\n    // Payload\n    const payloadEncoded = btoa(payloadJson);\n    console.log('payloadEncoded: ', payloadEncoded);\n\n    // Compute HMAC\n    const time = Math.round(new Date().getTime() / 1000);\n    const rand = Math.floor(Math.random() * 9999);\n    const nonce = `${time}${rand}`;\n    const token = `${nonce}-${md5(`${nonce}${this._sharedKey}${md5(payloadEncoded)}`)}`;\n\n    // URL\n    return `${this._plusGApp}/${token}/embed?payload=${encodeURIComponent(payloadEncoded)}`;\n  }\n\n  private getContent(host: string) {\n    return `\n    <div class=\"d-flex justify-content-center\">\n    <img\n        class=\"border\"\n        src=\"${host}/assets/public/RECEITA_BORRADA_RD_480w.png\"\n        alt=\"Receita Borrada Sem efeitos Legais\"\n      />\n    </div>\n    `;\n  }\n}\n","import { Injectable } from '@angular/core';\r\nimport { AdminService } from '@app/modules/admin/admin.service';\r\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\r\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\r\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\r\nimport { HealthProfessional, Patient, Pharmacy } from '@app/shared/models';\r\nimport { Administrator } from '@app/shared/models/admin';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class RegisterService {\r\n  constructor(\r\n    private healthProfessionalService: HealthProfessionalService,\r\n    private patientService: PatientsService,\r\n    private pharmacyService: PharmacyService,\r\n    private adminService: AdminService\r\n  ) {}\r\n\r\n  register(\r\n    registerType: string,\r\n    data: any\r\n  ): Observable<HealthProfessional | Patient | Pharmacy | Administrator> {\r\n    data.originHost = window.location.origin;\r\n\r\n    switch (registerType) {\r\n      case 'doctor':\r\n      case 'dentist':\r\n      case 'veterinarian':\r\n        return this.healthProfessionalService.save(data);\r\n      case 'pharmacy':\r\n        return this.pharmacyService.save(data);\r\n      case 'admin':\r\n        return this.adminService.save(data);\r\n      default:\r\n        return this.patientService.save(data);\r\n    }\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { DateUtils } from '@app/shared/data/DateUtils';\nimport { DataBigboostConsult } from '@app/shared/models/paciente';\nimport { Patient } from '@app/shared/models/patient';\nimport { ProfessionalType } from '@app/shared/models/professional-type.enum';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { logInvalidForm } from '@app/utils/logInvalidForm';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { PatientsService } from '../../services/patients.service';\nimport { PetPatientService } from '../../services/pet-patient.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-modal-add-patient',\n  templateUrl: './modal-add-patient.component.html',\n  styleUrls: ['./modal-add-patient.component.scss']\n})\nexport class ModalAddPatientComponent {\n  @Input() prescriber: any;\n  @Input() patient: DataBigboostConsult & Patient;\n  @Input() isPet = false;\n  @Input() isResponsible = false;\n  @Input() existingPatient = false;\n  @Input() registeredByResponsible = false;\n  @Output() updateListPatientEvent = new EventEmitter<any>();\n\n  loading = false;\n  form: FormGroup;\n\n  constructor(\n    private router: Router,\n    public modalRef: BsModalRef,\n    private patientService: PatientsService,\n    private petPatientService: PetPatientService,\n    private healthProfessionalService: HealthProfessionalService,\n    private notification: AppToastService\n  ) {}\n\n  get hasPendency() {\n    return !this.patient || this.patient.status !== 1;\n  }\n\n  get isUnderAge() {\n    // the pet's age doesn't matter\n    if (this.isVeterinarian) {\n      return true;\n    }\n\n    if (!this.hasPendency) {\n      const nascimento = this.patient.nascimento;\n      return DateUtils.isUnderAge(nascimento, 'DD/MM/YYYY');\n    }\n    return this.patient.menorIdade;\n  }\n\n  get isVeterinarian(): boolean {\n    return (\n      this.isPet ||\n      (this.prescriber && this.prescriber.professionalType === ProfessionalType.VETERINARIAN)\n    );\n  }\n\n  @nativeAsync\n  async submit() {\n    markFormGroup(this.form);\n\n    const form = this.form.getRawValue();\n    if (!form.pendency && this.patient.status === -1) {\n      form.pendency = this.patient;\n    }\n\n    if (this.form.valid) {\n      try {\n        this.loading = true;\n        markFormGroup(this.form);\n        const { responsible } = form;\n        if (responsible) {\n          const responsibleSaved = responsible._id\n            ? await this.updateResponsible(responsible._id, responsible)\n            : await this.saveResponsible(responsible);\n          form.responsible = responsibleSaved._id;\n        }\n\n        const msg =\n          !form.email && this.isPet\n            ? 'O Tutor/Responsável deverá ativar sua conta na plataforma para acessar seu perfil.'\n            : 'Acesse seu e-mail e ative sua conta!';\n\n        if (!this.registeredByResponsible) {\n          const patientSaved = await this.saveAddPatient(form);\n          this.notification.notify('success', 'Paciente cadastrado com sucesso!', msg);\n          this.updateListPatientEvent.emit(patientSaved);\n        } else {\n          await this.savePatient(form);\n          this.notification.notify('success', 'Parabéns! Cadastro realizado com sucesso.', msg);\n          this.router.navigate(['entry/login']);\n        }\n        this.modalRef.hide();\n      } catch (err) {\n        console.error(err);\n        const msg = err.error ? err.error.message : 'Erro ao salvar paciente';\n        if (err.status === 400) {\n          this.notification.notify('warning', 'Atenção', msg);\n        } else {\n          this.notification.notify('error', 'Erro', msg);\n          if (msg === 'E-mail já cadastrado') {\n            if (this.isVeterinarian) {\n              this.form.get('responsible.email').setErrors({ alreadyExists: true });\n            } else {\n              this.form.get('email').setErrors({ alreadyExists: true });\n            }\n          } else {\n            if (this.isVeterinarian) {\n              this.form.get('responsible.email').setErrors(null);\n            } else {\n              this.form.get('email').setErrors(null);\n            }\n          }\n        }\n      } finally {\n        this.loading = false;\n      }\n    } else {\n      logInvalidForm(this.form);\n    }\n  }\n\n  private savePatient(patient: any) {\n    patient.originHost = window.location.origin;\n    if (this.isVeterinarian && this.isPet) {\n      return this.petPatientService.save(patient).toPromise();\n    }\n    return this.patientService.save(patient).toPromise();\n  }\n\n  private saveResponsible(patient: any) {\n    patient.originHost = window.location.origin;\n    return this.patientService.save(patient).toPromise();\n  }\n\n  private updateResponsible(responsibleId, patient: any) {\n    patient.originHost = window.location.origin;\n    return this.patientService.update(responsibleId, patient).toPromise();\n  }\n\n  private saveAddPatient(patient: any) {\n    patient.originHost = window.location.origin;\n    if (this.isVeterinarian) {\n      return this.healthProfessionalService.savePetPatient(patient).toPromise();\n    }\n\n    return this.healthProfessionalService.savePatient(this.prescriber._id, patient).toPromise();\n  }\n\n  private addPatient(patientId: string) {\n    return this.healthProfessionalService.addPatient(this.prescriber._id, patientId).toPromise();\n  }\n\n  close() {\n    this.modalRef.hide();\n  }\n}\n","export default \"<div class=\\\"modal-header\\\" theme>\\n  <h4 class=\\\"modal-title pull-left text-white\\\">Novo paciente</h4>\\n  <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"close()\\\">\\n    <span aria-hidden=\\\"true\\\">&times;</span>\\n  </button>\\n</div>\\n<div class=\\\"modal-body\\\">\\n  <app-simplified-patient-form\\n    *ngIf=\\\"!isUnderAge && !isResponsible && !isVeterinarian\\\"\\n    [patient]=\\\"patient\\\"\\n    (formChange)=\\\"form = $event\\\"\\n  ></app-simplified-patient-form>\\n  <app-simplified-underage-patient-form\\n    *ngIf=\\\"(isUnderAge || isResponsible) && !isVeterinarian\\\"\\n    [patient]=\\\"patient\\\"\\n    [isResponsible]=\\\"isResponsible\\\"\\n    [existingPatient]=\\\"existingPatient\\\"\\n    (formChange)=\\\"form = $event\\\"\\n  ></app-simplified-underage-patient-form>\\n  <app-simplified-pet-patient-form\\n    *ngIf=\\\"isVeterinarian\\\"\\n    [responsible]=\\\"patient\\\"\\n    [responsibleExists]=\\\"existingPatient\\\"\\n    (formChange)=\\\"form = $event\\\"\\n  ></app-simplified-pet-patient-form>\\n</div>\\n<div class=\\\"modal-footer\\\">\\n  <button class=\\\"ok-btn btn-cancel\\\" nz-button (click)=\\\"close()\\\" theme>\\n    Cancelar\\n  </button>\\n  <button class=\\\"ok-btn btn-salvar\\\" nz-button (click)=\\\"submit()\\\" theme>Salvar <i class=\\\"fa\\\"></i></button>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \".modal-body {\\n  padding: 30px;\\n}\\n.modal-body input {\\n  border-radius: 10px;\\n}\\n.modal-body .btn-save {\\n  float: right;\\n  padding-top: 7px;\\n  padding-bottom: 7px;\\n  margin-top: 13px;\\n  margin-bottom: 5px;\\n}\\n.modal-body i {\\n  font-size: 24px;\\n}\\n.modal-body .mandatory {\\n  color: red;\\n}\\n.modal-body input::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n::ng-deep .ant-select-selection {\\n  height: 100%;\\n}\\n.modal-header {\\n  margin: 0;\\n  font-family: \\\"probold\\\";\\n}\\n.modal-body {\\n  max-height: 68vh;\\n  overflow-y: auto;\\n}\\n.modal-footer {\\n  margin: 0;\\n}\\n.btn-salvar,\\n.btn-salvar:hover {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\";","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class CrService {\n  constructor(private http: HttpClient) {}\n\n  searchMedicament(name: string): Observable<any[]> {\n    return this.http\n      .get<any>(`${environment.apiRoot}medicaments/search`, { params: { q: name } })\n      .pipe(\n        map(items =>\n          items.map(item => ({\n            nome: item.productName,\n            apresentacaoCustomizada: item.name,\n            tipo: this.translateClassification(item.classification),\n            classification: item.classification,\n            principio: item.substance,\n            laboratorio: item.factory,\n            ean: `${item.sku}`,\n            typeCr: item.type,\n            prescriptionTypeId: item.prescription_type ? item.prescription_type.id : null\n          }))\n        )\n      );\n  }\n\n  private translateClassification(classification: string) {\n    switch (classification) {\n      case 'generic':\n        return 'Genérico';\n      case 'similar':\n        return 'Similar';\n      case 'reference':\n        return 'Referência';\n      case 'biologic':\n        return 'Biológico';\n      case 'interchangeable':\n        return 'Similar Intercambiável';\n      case 'new':\n        return 'Novo';\n      case 'specific':\n        return 'Específico';\n      case 'other':\n        return 'Outro';\n      case 'radiofarmac':\n        return 'Radiofármaco';\n      default:\n        return classification;\n    }\n  }\n}\n","import { FormArray, FormControl, FormGroup } from '@angular/forms';\n\nexport function removeFormGroupValidators(formGroup: FormGroup) {\n  if (formGroup.controls) {\n    Object.keys(formGroup.controls).forEach(key => {\n      const control = formGroup.controls[key];\n      if (control instanceof FormControl) {\n        control.setValidators(null);\n        control.updateValueAndValidity();\n      } else if (control instanceof FormGroup) {\n        removeFormGroupValidators(control);\n      } else if (control instanceof FormArray) {\n        control.controls.forEach((ctrl: FormGroup) => removeFormGroupValidators(ctrl));\n      }\n    });\n  }\n}\n","import { animate, group, state, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { SpecialtiesService } from '@app/modules/admin/listing/features-listing/specialties.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\nimport { PharmacistService } from '@app/modules/pharmacist/services/pharmacist.service';\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\nimport { UserService } from '@app/modules/user/user.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { BrazilState, Specialty } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { ThemeService } from '@app/theme';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport { removeFormGroupValidators } from '@app/utils/removeFormGroupValidators';\nimport * as moment from 'moment';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\nimport { of } from 'rxjs';\nimport { catchError, debounceTime, distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-modal-edit-personal-data',\n  templateUrl: './modal-edit-personal-data.component.html',\n  styleUrls: ['./modal-edit-personal-data.component.scss'],\n  animations: [\n    trigger('slideInOut', [\n      state('in', style({ height: '*', opacity: 0 })),\n      transition(':leave', [\n        style({ height: '*', opacity: 1 }),\n        group([animate(300, style({ height: 0 })), animate('400ms ease-in-out', style({ opacity: 0 }))])\n      ]),\n      transition(':enter', [\n        style({ height: 0, opacity: 0 }),\n        group([\n          animate(300, style({ height: '*' })),\n          animate('400ms ease-in-out', style({ opacity: 1 }))\n        ])\n      ])\n    ])\n  ]\n})\nexport class ModalEditPersonalDataComponent implements OnInit {\n  @Input() user: User;\n  @Input() completeUser: any;\n  @Input() userTypeLogged: string;\n  @Input() touched = false;\n  form: FormGroup;\n  patientForm: FormGroup;\n  pharmacyForm: FormGroup;\n  loading = false;\n  states: BrazilState[] = BrazilianStates;\n  specialtiesOptions: Specialty[] = [];\n  selectedSpecialties: string[] = [];\n  currentDate = new Date();\n  isMobile = false;\n\n  @Output() updateUserEvent = new EventEmitter<User>();\n\n  constructor(\n    private fb: FormBuilder,\n    private userService: UserService,\n    private healthProfessionalService: HealthProfessionalService,\n    private pharmacyService: PharmacyService,\n    private pharmacistService: PharmacistService,\n    private patientService: PatientsService,\n    private nzModalRef: NzModalRef,\n    private specialtyService: SpecialtiesService,\n    private notification: AppToastService,\n    private themeService: ThemeService\n  ) {}\n\n  ngOnInit() {\n    if (this.user.userType === 'patient') {\n      this.buildPatientForm();\n    } else if (this.user.userType === 'healthProfessional') {\n      this.getSpecialties();\n      this.buildHealthProfessionalForm();\n    } else if (this.user.userType === 'pharmacist') {\n      this.buildPharmacistForm();\n    } else {\n      this.buildPharmacyForm();\n    }\n\n    if (this.isAdmin) {\n      removeFormGroupValidators(this.form);\n    } else {\n      this.disableFields();\n    }\n\n    if (this.emailForm) {\n      this.emailForm.valueChanges\n        .pipe(\n          map(email => {\n            const value = email && email.toLowerCase();\n            this.emailForm.setValue(value, { emitEvent: false });\n            return value;\n          }),\n          filter(_ => this.emailForm.valid),\n          debounceTime(400),\n          distinctUntilChanged(),\n          switchMap(email =>\n            email\n              ? this.userService\n                  .checkEmailExists(email, this.completeUser.tenantId)\n                  .pipe(catchError(err => of(err)))\n              : of()\n          )\n        )\n        .subscribe(res => {\n          if (res.status === 200) {\n            const exists = this.user.email !== res.email;\n            this.emailForm.setErrors(exists ? { exists } : null);\n          } else if (res.status === 404) {\n            this.emailForm.setErrors(null);\n          } else if (res.status === 400) {\n            this.emailForm.setErrors({ invalid: true });\n          }\n        });\n    }\n    this.getScreenSize();\n\n    if (this.touched) {\n      markFormGroup(this.form);\n    }\n  }\n\n  @HostListener('window:resize', ['$event'])\n  private getScreenSize(event?) {\n    const { innerWidth: width, innerHeight: height } = window;\n    this.isMobile = width < 1025;\n  }\n\n  get hasAccount() {\n    return this.user && !this.user.activationToken && this.user.email;\n  }\n\n  get isAdmin() {\n    return this.userTypeLogged === 'admin';\n  }\n\n  get emailForm() {\n    return this.form.get('email');\n  }\n\n  get isDentist() {\n    return this.completeUser.professionalType === 'dentist';\n  }\n\n  get isVeterinarian(): boolean {\n    return this.completeUser.professionalType === 'veterinarian';\n  }\n\n  get specialtiesForm() {\n    return <FormArray>this.form.get('specialties');\n  }\n\n  private disableFields() {\n    if (this.form.get('cpf') && this.form.value.cpf) {\n      this.form.get('cpf').disable();\n    }\n\n    if (this.form.get('dateOfBirth') && this.form.value.dateOfBirth) {\n      this.form.get('dateOfBirth').disable();\n    }\n\n    if (this.form.get('cnpj')) {\n      this.form.get('cnpj').disable();\n    }\n\n    if (this.themeService.getActiveTheme().name === 'theme-mrd') {\n      this.form.get('email').disable();\n    }\n  }\n\n  get popoverContent() {\n    return this.user.userType === 'patient'\n      ? 'Será utilizado para receber suas receitas e demais documentos via WhatsApp e SMS'\n      : 'Será exibido no cabeçalho dos documentos emitidos na plataforma';\n  }\n\n  private getSpecialties() {\n    this.specialtyService\n      .getSpecialtiesByType(this.completeUser.professionalType)\n      .subscribe(specialties => {\n        specialties.forEach(function(item, i) {\n          if (item.code === 1) {\n            specialties.splice(i, 1);\n            specialties.unshift(item);\n          }\n        });\n        this.specialtiesOptions = specialties;\n      });\n  }\n\n  private buildPatientForm() {\n    const dateOfBirth =\n      this.completeUser.dateOfBirth && this.getDateOfBirth(new Date(this.completeUser.dateOfBirth));\n    const email = this.completeUser.user ? this.completeUser.user.email : this.user.email;\n    const emailContact = this.completeUser.user\n      ? this.completeUser.user.emailContact\n      : this.user.emailContact;\n\n    this.form = this.fb.group({\n      tenantId: [this.completeUser.tenantId],\n      fullname: [this.completeUser.fullname, Validators.required],\n      name: [this.completeUser.name, Validators.required],\n      cellphone: [this.completeUser.cellphone, Validators.required],\n      telephone: [this.completeUser.telephone],\n      identity: [this.completeUser.identity],\n      sex: [this.completeUser.sex, Validators.required],\n      cpf: [this.completeUser.cpf, ValidationService.cpfValidator],\n      email: [email, Validators.email],\n      emailContact: [emailContact, Validators.email],\n      dateOfBirth: [dateOfBirth, Validators.required]\n    });\n  }\n\n  private buildPharmacistForm() {\n    const dateOfBirth = this.getDateOfBirth(this.completeUser.dateOfBirth);\n    const email = this.completeUser.user ? this.completeUser.user.email : this.user.email;\n    const emailContact = this.completeUser.user\n      ? this.completeUser.user.emailContact || this.completeUser.user.email\n      : this.user.email;\n\n    this.form = this.fb.group({\n      name: [this.completeUser.name, Validators.required],\n      cellphone: [this.completeUser.cellphone],\n      telephone: [this.completeUser.telephone],\n      identity: [this.completeUser.identity],\n      cpf: [this.completeUser.cpf],\n      email: [email, Validators.email],\n      emailContact: [emailContact, Validators.email],\n      dateOfBirth: [dateOfBirth, Validators.required]\n    });\n  }\n\n  private buildPharmacyForm() {\n    const email = this.completeUser.user ? this.completeUser.user.email : this.user.email;\n    this.form = this.fb.group({\n      telephone: [this.completeUser.telephone, Validators.required],\n      cellphone: [this.completeUser.cellphone],\n      fantasyName: [this.completeUser.fantasyName],\n      cnpj: [this.completeUser.cnpj, Validators.required],\n      email: [email, Validators.email]\n    });\n  }\n\n  private buildHealthProfessionalForm() {\n    const dateOfBirth =\n      this.completeUser.dateOfBirth && this.getDateOfBirth(this.completeUser.dateOfBirth);\n\n    const completeUser = this.completeUser;\n    const email = completeUser.user ? completeUser.user.email : this.user.email;\n    const emailContact = this.completeUser.user\n      ? this.completeUser.user.emailContact || this.completeUser.user.email\n      : this.user.email;\n\n    this.form = this.fb.group({\n      tenantId: [this.completeUser.tenantId],\n      fullname: [this.completeUser.fullname, Validators.required],\n      name: [completeUser.name],\n      sex: [completeUser.sex, Validators.required],\n      professionalType: [completeUser.professionalType],\n      cellphone: [completeUser.cellphone, Validators.required],\n      telephone: [completeUser.telephone],\n      regionalCouncilNumber: this.fb.group({\n        number: [completeUser.regionalCouncilNumber.number, Validators.required],\n        uf: [completeUser.regionalCouncilNumber.uf, Validators.required]\n      }),\n      cpf: [completeUser.cpf, Validators.required],\n      specialties: this.fb.array([], Validators.required),\n      email: [email, [Validators.required, Validators.email]],\n      emailContact: [emailContact, [Validators.required, Validators.email]],\n      dateOfBirth: [dateOfBirth, Validators.required]\n    });\n\n    if (this.isVeterinarian) {\n      this.form.setControl('mapaSipeagro', new FormControl(this.completeUser.mapaSipeagro));\n    }\n\n    completeUser.specialties.forEach(specialty => {\n      const formGroup = this.buildSpecialtyForm(specialty);\n      this.specialtiesForm.push(formGroup);\n      if (!this.isVeterinarian) {\n        const rqeCtrl = <FormGroup>formGroup.controls.rqe;\n        if (specialty.notExists !== undefined) {\n          this.checkRQE(rqeCtrl, specialty.notExists);\n        }\n      }\n    });\n    if (this.isDentist) {\n      this.selectedSpecialties = this.specialtiesForm.value.map(({ specialty }) => specialty);\n      this.addSpecialties();\n    }\n  }\n\n  private getDateOfBirth(date: Date): string {\n    return moment(date)\n      .utcOffset(0)\n      .format('YYYY-MM-DD');\n  }\n\n  addSpecialties() {\n    if (this.selectedSpecialties.length <= 3) {\n      const specialtiesArray = this.selectedSpecialties.map(_id => this.buildSpecialtyForm({ _id }));\n      this.form.setControl(\n        'specialties',\n        this.fb.array(specialtiesArray, ValidationService.minLengthArray(1))\n      );\n    } else if (this.selectedSpecialties.length > 3) {\n      this.selectedSpecialties.pop();\n      this.notification.notify('warning', 'Aviso', 'Você pode escolher no máximo 3 especialidades');\n    }\n  }\n\n  checkRQE(rqeForm: FormGroup, disable: boolean) {\n    if (disable) {\n      rqeForm.setValidators(null);\n      rqeForm.setValue(null);\n      rqeForm.disable();\n    } else {\n      rqeForm.setValidators(Validators.required);\n      rqeForm.markAsPristine();\n      rqeForm.enable();\n    }\n  }\n\n  addSpecialty() {\n    this.specialtiesForm.push(this.buildSpecialtyForm());\n  }\n\n  private buildSpecialtyForm({ _id = null, rqe = null, notExists = null } = {}) {\n    return this.fb.group({\n      specialty: [_id, Validators.required],\n      rqe: [rqe, this.isDentist || this.isVeterinarian ? null : Validators.required],\n      notExists: [notExists]\n    });\n  }\n\n  trackById(index, specialty: Specialty) {\n    return specialty ? specialty.code : null;\n  }\n\n  @nativeAsync\n  async submitForm() {\n    markFormGroup(this.form);\n    if (this.form.invalid) return;\n\n    try {\n      if (this.form.value.specialties && this.form.value.specialties.length === 0) {\n        this.notification.notify(\n          'warning',\n          'Atenção',\n          'Você precisa escolher ao menos uma especialidade.'\n        );\n        return;\n      }\n\n      if (this.form.valid) {\n        this.loading = true;\n        if (this.user.userType === 'patient') {\n          this.completeUser = await this.patientService\n            .update(this.completeUser._id, this.form.value)\n            .toPromise();\n        } else if (this.user.userType === 'pharmacist') {\n          this.completeUser = await this.pharmacistService\n            .update(this.completeUser._id, this.form.value)\n            .toPromise();\n        } else if (this.user.userType === 'healthProfessional') {\n          this.completeUser = await this.healthProfessionalService\n            .update(this.completeUser.userId, this.form.value)\n            .toPromise();\n        } else {\n          this.completeUser = await this.pharmacyService\n            .update(this.completeUser._id, this.form.value)\n            .toPromise();\n        }\n        this.form.enable();\n        this.updateUserEvent.emit(this.completeUser);\n        this.loading = false;\n        this.nzModalRef.destroy();\n        this.notification.notify('success', 'Sucesso', 'Dados salvos com sucesso');\n      } else {\n        ValidationService.printInvalidFields(this.form);\n      }\n    } catch (err) {\n      this.loading = false;\n      console.error(err);\n      this.notification.notify('error', 'Erro', 'Não foi possível salvar os dados');\n    }\n  }\n\n  repeatEmailLoginForContact(value: boolean) {\n    if (value) {\n      const valueEmail = this.form.get('email').value;\n      if (valueEmail) {\n        this.form.get('emailContact').setValue(valueEmail);\n      } else {\n        this.form.get('emailContact').setValue(this.user.email);\n      }\n    } else {\n      this.form.get('emailContact').setValue('');\n    }\n  }\n}\n","export default \"<div theme>\\r\\n  <header>\\r\\n    <span class=\\\"title\\\">\\r\\n      DADOS PESSOAIS\\r\\n    </span>\\r\\n  </header>\\r\\n  <div class=\\\"modal-body\\\">\\r\\n    <form nz-form [formGroup]=\\\"form\\\">\\r\\n      <div\\r\\n        class=\\\"row\\\"\\r\\n        *ngIf=\\\"isAdmin && user?.userType !== 'pharmacy' && user?.userType !== 'pharmacist'\\\"\\r\\n      >\\r\\n        <nz-form-item class=\\\"col-md\\\">\\r\\n          <nz-form-label nzFor=\\\"fullname\\\">Nome Completo <span class=\\\"mandatory\\\">*</span></nz-form-label>\\r\\n          <nz-form-control>\\r\\n            <nz-input-group>\\r\\n              <input\\r\\n                id=\\\"fullname\\\"\\r\\n                type=\\\"text\\\"\\r\\n                nz-input\\r\\n                formControlName=\\\"fullname\\\"\\r\\n                maxlength=\\\"128\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n            </nz-input-group>\\r\\n            <nz-form-explain *ngIf=\\\"form.get('fullname').dirty && form.get('fullname').errors\\\">\\r\\n              <ng-container *ngIf=\\\"form.get('fullname').hasError('required')\\\">\\r\\n                Campo obrigatório, por favor digite o seu nome e sobrenome.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n      <div class=\\\"row\\\" *ngIf=\\\"user?.userType !== 'pharmacy'\\\">\\r\\n        <nz-form-item class=\\\"col-md\\\">\\r\\n          <nz-form-label nzFor=\\\"name\\\"\\r\\n            >Nome de exibição/social <span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\">*</span></nz-form-label\\r\\n          >\\r\\n          <nz-form-control>\\r\\n            <nz-input-group>\\r\\n              <input\\r\\n                id=\\\"name\\\"\\r\\n                type=\\\"text\\\"\\r\\n                nz-input\\r\\n                formControlName=\\\"name\\\"\\r\\n                maxlength=\\\"128\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n            </nz-input-group>\\r\\n            <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\r\\n              <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\r\\n                Campo obrigatório, por favor digite o seu nome e sobrenome.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <nz-form-item class=\\\"col-md-6\\\" *ngIf=\\\"user.userType === 'healthProfessional'\\\">\\r\\n          <nz-form-label nzFor=\\\"sex\\\"\\r\\n            >Sexo <span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\">*</span></nz-form-label\\r\\n          >\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <select nz-input id=\\\"sex\\\" formControlName=\\\"sex\\\" nzPlaceHolder=\\\"Selecione\\\">\\r\\n              <option value=\\\"M\\\">Masculino</option>\\r\\n              <option value=\\\"F\\\">Feminino</option>\\r\\n            </select>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n      <div class=\\\"row\\\">\\r\\n        <div class=\\\"col-6\\\">\\r\\n          <nz-form-item *ngIf=\\\"form.get('cellphone') as cellphone\\\">\\r\\n            <nz-form-label nzFor=\\\"cellphone\\\"\\r\\n              >Telefone 1 <span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\">*</span>\\r\\n              <app-popover-button\\r\\n                *ngIf=\\\"user.userType === 'healthProfessional' || user.userType === 'patient'\\\"\\r\\n                [content]=\\\"popoverContent\\\"\\r\\n              ></app-popover-button>\\r\\n            </nz-form-label>\\r\\n            <nz-form-control>\\r\\n              <nz-input-group>\\r\\n                <input\\r\\n                  id=\\\"cellphone\\\"\\r\\n                  type=\\\"text\\\"\\r\\n                  nz-input\\r\\n                  formControlName=\\\"cellphone\\\"\\r\\n                  placeholder=\\\"(21) 92222-2222\\\"\\r\\n                  [mask]=\\\"cellphone.value?.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\r\\n                  mask=\\\"(00) 0000-0000\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n              </nz-input-group>\\r\\n              <nz-form-explain *ngIf=\\\"cellphone.dirty && cellphone.errors\\\">\\r\\n                <ng-container *ngIf=\\\"cellphone.hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor digite seu telefone para contato.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n        <div class=\\\"col-6\\\">\\r\\n          <nz-form-item *ngIf=\\\"form.get('telephone') as telephone\\\">\\r\\n            <nz-form-label\\r\\n              nzFor=\\\"telephone\\\"\\r\\n              [ngClass]=\\\"\\r\\n                user.userType === 'healthProfessional' || user.userType === 'patient' ? 'cellphone' : ''\\r\\n              \\\"\\r\\n              >Telefone 2\\r\\n            </nz-form-label>\\r\\n\\r\\n            <nz-form-control>\\r\\n              <nz-input-group>\\r\\n                <input\\r\\n                  id=\\\"telephone\\\"\\r\\n                  type=\\\"text\\\"\\r\\n                  nz-input\\r\\n                  formControlName=\\\"telephone\\\"\\r\\n                  placeholder=\\\"(21) 2222-2222\\\"\\r\\n                  [mask]=\\\"telephone.value?.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n              </nz-input-group>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-12\\\" *ngIf=\\\"user.userType === 'healthProfessional' && isVeterinarian\\\">\\r\\n          <nz-form-item nzFor=\\\"mapaSipeagro\\\">\\r\\n            <nz-form-label>MAPA Sipeagro </nz-form-label>\\r\\n\\r\\n            <nz-form-control>\\r\\n              <nz-input-group>\\r\\n                <input\\r\\n                  id=\\\"mapaSipeagro\\\"\\r\\n                  type=\\\"text\\\"\\r\\n                  nz-input\\r\\n                  formControlName=\\\"mapaSipeagro\\\"\\r\\n                  placeholder=\\\"XXXXX/YYYY\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n              </nz-input-group>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n      </div>\\r\\n\\r\\n      <div\\r\\n        class=\\\"row\\\"\\r\\n        *ngIf=\\\"user.userType === 'healthProfessional' && form.get('regionalCouncilNumber') as rcn\\\"\\r\\n        [formGroup]=\\\"form.get('regionalCouncilNumber')\\\"\\r\\n      >\\r\\n        <div class=\\\"col-6\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"number\\\"\\r\\n              >{{ rcn.value.label }}<span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\"> *</span>\\r\\n            </nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <nz-input-group>\\r\\n                <input\\r\\n                  id=\\\"number\\\"\\r\\n                  nz-input\\r\\n                  type=\\\"text\\\"\\r\\n                  formControlName=\\\"number\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                  inputmode=\\\"numeric\\\"\\r\\n                  pattern=\\\"[0-9]*\\\"\\r\\n                  maxlength=\\\"10\\\"\\r\\n                  digitOnly\\r\\n                />\\r\\n              </nz-input-group>\\r\\n              <nz-form-explain *ngIf=\\\"rcn.get('number').dirty && rcn.get('number').errors\\\">\\r\\n                <ng-container *ngIf=\\\"rcn.get('number').hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor digite seu {{ rcn.value.label }}.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-6\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"uf\\\"\\r\\n              >UF<span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n            >\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <nz-select\\r\\n                formControlName=\\\"uf\\\"\\r\\n                id=\\\"uf\\\"\\r\\n                nzShowSearch\\r\\n                nzAllowClear\\r\\n                nzDropdownClassName=\\\"account-select\\\"\\r\\n                nzPlaceHolder=\\\"Selecione\\\"\\r\\n              >\\r\\n                <nz-option\\r\\n                  *ngFor=\\\"let state of states\\\"\\r\\n                  [nzLabel]=\\\"state?.sigla\\\"\\r\\n                  [nzValue]=\\\"state?.sigla\\\"\\r\\n                >\\r\\n                </nz-option>\\r\\n              </nz-select>\\r\\n              <nz-form-explain\\r\\n                *ngIf=\\\"\\r\\n                  form.get('regionalCouncilNumber.uf').dirty &&\\r\\n                  form.get('regionalCouncilNumber.uf').errors\\r\\n                \\\"\\r\\n              >\\r\\n                <ng-container *ngIf=\\\"form.get('regionalCouncilNumber.uf').hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor selecione o UF do {{ rcn.value.label }}.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col-12\\\" *ngIf=\\\"isDentist; else doctorSpecialties\\\">\\r\\n          <nz-form-item>\\r\\n            <nz-form-label nzFor=\\\"specialties\\\"\\r\\n              >Especialidades <span style=\\\"font-size: 10px;\\\">no máximo 3 opções</span\\r\\n              ><span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n            >\\r\\n            <nz-form-control>\\r\\n              <nz-select\\r\\n                id=\\\"specialties\\\"\\r\\n                nzSize=\\\"large\\\"\\r\\n                nzMode=\\\"multiple\\\"\\r\\n                nzDropdownClassName=\\\"account-select\\\"\\r\\n                nzPlaceHolder=\\\"Selecione a sua especialidade\\\"\\r\\n                [(ngModel)]=\\\"selectedSpecialties\\\"\\r\\n                (ngModelChange)=\\\"addSpecialties()\\\"\\r\\n                [ngModelOptions]=\\\"{ standalone: true }\\\"\\r\\n                nzAllowClear\\r\\n                nzShowSearch\\r\\n              >\\r\\n                <nz-option\\r\\n                  *ngFor=\\\"let specialty of specialtiesOptions; trackBy: trackById\\\"\\r\\n                  [nzLabel]=\\\"specialty?.description\\\"\\r\\n                  [nzValue]=\\\"specialty?._id\\\"\\r\\n                >\\r\\n                </nz-option>\\r\\n              </nz-select>\\r\\n              <nz-form-explain *ngIf=\\\"specialtiesForm.dirty && specialtiesForm.errors\\\">\\r\\n                <ng-container *ngIf=\\\"specialtiesForm.hasError('minLengthArray')\\\">\\r\\n                  Campo obrigatório, por favor selecione uma especialidade.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n\\r\\n        <ng-template #doctorSpecialties>\\r\\n          <div\\r\\n            class=\\\"col-12\\\"\\r\\n            *ngFor=\\\"let specialty of specialtiesForm.controls; let i = index\\\"\\r\\n            [@slideInOut]\\r\\n            [formGroup]=\\\"specialty\\\"\\r\\n          >\\r\\n            <div class=\\\"row justify-content-between\\\">\\r\\n              <div [ngClass]=\\\"specialtiesForm.length > 1 ? 'col-11' : 'col-12'\\\">\\r\\n                <nz-divider nzOrientation=\\\"left\\\"></nz-divider>\\r\\n              </div>\\r\\n              <div\\r\\n                class=\\\"col-1 pl-0 d-flex align-items-center justify-content-center\\\"\\r\\n                *ngIf=\\\"specialtiesForm.length > 1\\\"\\r\\n              >\\r\\n                <a\\r\\n                  (click)=\\\"$event.preventDefault()\\\"\\r\\n                  [nzContent]=\\\"contentTemplateSpecialty\\\"\\r\\n                  class=\\\"popover-trigger\\\"\\r\\n                  nz-popover\\r\\n                  nzPlacement=\\\"right\\\"\\r\\n                >\\r\\n                  <i class=\\\"fa fa-ellipsis-solid\\\"></i>\\r\\n                </a>\\r\\n                <ng-template #contentTemplateSpecialty>\\r\\n                  <a (click)=\\\"specialtiesForm.removeAt(i)\\\"><i class=\\\"fa fa-trash-solid\\\"></i></a>\\r\\n                </ng-template>\\r\\n              </div>\\r\\n            </div>\\r\\n            <div class=\\\"row\\\">\\r\\n              <div [ngClass]=\\\"isVeterinarian ? 'col-12' : 'col-7'\\\">\\r\\n                <nz-form-item>\\r\\n                  <nz-form-label [nzFor]=\\\"'specialty_' + i\\\"\\r\\n                    >Especialidade <span *ngIf=\\\"specialtiesForm.length > 1\\\">{{ i + 1 }}</span>\\r\\n                    <span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n                  >\\r\\n                  <nz-form-control nzHasFeedback *ngIf=\\\"specialty.get('specialty') as specialtyId\\\">\\r\\n                    <nz-select\\r\\n                      [id]=\\\"'specialty_' + i\\\"\\r\\n                      formControlName=\\\"specialty\\\"\\r\\n                      nzSize=\\\"large\\\"\\r\\n                      nzDropdownClassName=\\\"account-select\\\"\\r\\n                      nzPlaceHolder=\\\"Selecione uma especialidade\\\"\\r\\n                      nzAllowClear\\r\\n                      nzShowSearch\\r\\n                    >\\r\\n                      <nz-option\\r\\n                        *ngFor=\\\"let specialty of specialtiesOptions; trackBy: trackById\\\"\\r\\n                        class=\\\"disableClick\\\"\\r\\n                        [nzLabel]=\\\"specialty?.title\\\"\\r\\n                        [nzValue]=\\\"specialty?._id\\\"\\r\\n                      >\\r\\n                      </nz-option>\\r\\n                    </nz-select>\\r\\n                    <nz-form-explain *ngIf=\\\"specialtyId.dirty && specialtyId.errors\\\">\\r\\n                      <ng-container *ngIf=\\\"specialtyId.hasError('required')\\\">\\r\\n                        Campo obrigatório, por favor selecione uma especialidade.\\r\\n                      </ng-container>\\r\\n                    </nz-form-explain>\\r\\n                  </nz-form-control>\\r\\n                </nz-form-item>\\r\\n              </div>\\r\\n              <div class=\\\"col-5\\\" *ngIf=\\\"!isVeterinarian\\\">\\r\\n                <nz-form-item *ngIf=\\\"specialty.get('rqe') as rqe\\\">\\r\\n                  <label\\r\\n                    *ngIf=\\\"isMobile\\\"\\r\\n                    nz-checkbox\\r\\n                    formControlName=\\\"notExists\\\"\\r\\n                    (nzCheckedChange)=\\\"checkRQE(rqe, $event)\\\"\\r\\n                    style=\\\"font-size: 14px;\\\"\\r\\n                    >Não possuo RQE</label\\r\\n                  >\\r\\n                  <div class=\\\"row\\\" *ngIf=\\\"!isMobile\\\">\\r\\n                    <div class=\\\"col-5 pr-0\\\">\\r\\n                      <nz-form-label [nzFor]=\\\"'rqe_' + i\\\"\\r\\n                        >RQE <span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\">*</span></nz-form-label\\r\\n                      >\\r\\n                    </div>\\r\\n                    <div class=\\\"col pl-0\\\">\\r\\n                      <label\\r\\n                        nz-checkbox\\r\\n                        formControlName=\\\"notExists\\\"\\r\\n                        (nzCheckedChange)=\\\"checkRQE(rqe, $event)\\\"\\r\\n                        style=\\\"font-size: 14px;\\\"\\r\\n                        >Não possuo</label\\r\\n                      >\\r\\n                    </div>\\r\\n                  </div>\\r\\n                  <nz-form-control nzHasFeedback>\\r\\n                    <input nz-input [id]=\\\"'rqe_' + i\\\" formControlName=\\\"rqe\\\" maxlength=\\\"20\\\" onlyNumbers />\\r\\n                    <nz-form-explain *ngIf=\\\"rqe.dirty && rqe.errors\\\">\\r\\n                      <ng-container *ngIf=\\\"rqe.hasError('required')\\\">\\r\\n                        Campo obrigatório, por favor informe o RQE da especialidade.\\r\\n                      </ng-container>\\r\\n                    </nz-form-explain>\\r\\n                  </nz-form-control>\\r\\n                </nz-form-item>\\r\\n              </div>\\r\\n            </div>\\r\\n          </div>\\r\\n          <div class=\\\"col-12\\\">\\r\\n            <button\\r\\n              *ngIf=\\\"specialtiesForm.length < 3\\\"\\r\\n              (click)=\\\"addSpecialty()\\\"\\r\\n              class=\\\"btn btn-icon btn-success btn-add text-capitalize\\\"\\r\\n              type=\\\"button\\\"\\r\\n            >\\r\\n              <span class=\\\"btn-inner--text\\\">Adicionar Outra Especialidade</span>\\r\\n              <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\r\\n            </button>\\r\\n          </div>\\r\\n        </ng-template>\\r\\n      </div>\\r\\n\\r\\n      <div\\r\\n        class=\\\"row\\\"\\r\\n        *ngIf=\\\"\\r\\n          (user.userType === 'patient' || user.userType === 'pharmacist') &&\\r\\n          (userTypeLogged === 'patient' || userTypeLogged === 'pharmacy' || isAdmin)\\r\\n        \\\"\\r\\n      >\\r\\n        <nz-form-item\\r\\n          [ngClass]=\\\"user.userType === 'patient' && userTypeLogged === 'patient' ? 'col-6' : 'col'\\\"\\r\\n        >\\r\\n          <nz-form-label nzFor=\\\"identity\\\">Identidade</nz-form-label>\\r\\n          <nz-form-control nzErrorTip=\\\"Campo obrigatório, por favor digite a sua identidade\\\">\\r\\n            <nz-input-group>\\r\\n              <input\\r\\n                id=\\\"identity\\\"\\r\\n                type=\\\"text\\\"\\r\\n                nz-input\\r\\n                formControlName=\\\"identity\\\"\\r\\n                placeholder=\\\"ex: 18.040.818-5\\\"\\r\\n                maxlength=\\\"12\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n            </nz-input-group>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <nz-form-item [class.col-6]=\\\"user.userType === 'patient'\\\" *ngIf=\\\"user.userType === 'patient'\\\">\\r\\n          <nz-form-label nzFor=\\\"sex\\\"\\r\\n            >Sexo<span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n          >\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\r\\n              <option value=\\\"M\\\">Masculino</option>\\r\\n              <option value=\\\"F\\\">Feminino</option>\\r\\n            </select>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n\\r\\n      <ng-container *ngIf=\\\"user.userType == 'pharmacy'\\\">\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"cnpj\\\"\\r\\n            >CNPJ <span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\">*</span></nz-form-label\\r\\n          >\\r\\n          <nz-form-control nzErrorTip=\\\"Campo obrigatório, por favor digite o seu CNPJ\\\">\\r\\n            <nz-input-group>\\r\\n              <input\\r\\n                id=\\\"cnpj\\\"\\r\\n                type=\\\"text\\\"\\r\\n                nz-input\\r\\n                formControlName=\\\"cnpj\\\"\\r\\n                placeholder=\\\"20.259.798/0001-06\\\"\\r\\n                mask=\\\"00.000.000/0000-00\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n            </nz-input-group>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"nomeFantasia\\\">Nome Fantasia</nz-form-label>\\r\\n\\r\\n          <nz-input-group>\\r\\n            <input\\r\\n              [attr.id]=\\\"'nomeFantasia'\\\"\\r\\n              formControlName=\\\"fantasyName\\\"\\r\\n              nz-input\\r\\n              formControlName=\\\"fantasyName\\\"\\r\\n              placeholder=\\\"ex: Farmácia Dona Santa\\\"\\r\\n              autocomplete=\\\"disabled\\\"\\r\\n            />\\r\\n          </nz-input-group>\\r\\n        </nz-form-item>\\r\\n\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"email\\\"\\r\\n            >E-mail\\r\\n            <span *ngIf=\\\"user.userType === userTypeLogged\\\" class=\\\"mandatory\\\">*</span></nz-form-label\\r\\n          >\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <nz-input-group>\\r\\n              <input\\r\\n                id=\\\"email\\\"\\r\\n                type=\\\"text\\\"\\r\\n                nz-input\\r\\n                formControlName=\\\"email\\\"\\r\\n                style=\\\"text-transform: lowercase;\\\"\\r\\n                (keydown.space)=\\\"$event.preventDefault()\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n            </nz-input-group>\\r\\n            <nz-form-explain>\\r\\n              <ng-container *ngIf=\\\"emailForm.hasError('exists'); else required\\\">\\r\\n                E-mail já existe, por favor escolha outro e-mail.\\r\\n              </ng-container>\\r\\n              <ng-template #required>\\r\\n                <ng-container *ngIf=\\\"emailForm.hasError('required') && emailForm.dirty; else invalid\\\">\\r\\n                  <span class=\\\"error\\\">Campo obrigatório, por favor digite seu e-mail.</span>\\r\\n                </ng-container>\\r\\n              </ng-template>\\r\\n              <ng-template #invalid>\\r\\n                <ng-container *ngIf=\\\"emailForm.invalid && emailForm.value.length > 0\\\">\\r\\n                  <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span>\\r\\n                </ng-container>\\r\\n              </ng-template>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </ng-container>\\r\\n\\r\\n      <ng-container *ngIf=\\\"user.userType !== 'pharmacy'\\\">\\r\\n        <nz-divider nzOrientation=\\\"left\\\"></nz-divider>\\r\\n\\r\\n        <div class=\\\"row\\\">\\r\\n          <div class=\\\"col-md-6\\\">\\r\\n            <nz-form-item>\\r\\n              <div class=\\\"row\\\">\\r\\n                <div class=\\\"col-6\\\">\\r\\n                  <nz-form-label nzFor=\\\"email\\\"\\r\\n                    >E-mail de login\\r\\n                    <span class=\\\"mandatory\\\" *ngIf=\\\"user.userType === userTypeLogged\\\"\\r\\n                      >*</span\\r\\n                    ></nz-form-label\\r\\n                  >\\r\\n                </div>\\r\\n                <div class=\\\"col-6\\\">\\r\\n                  <label\\r\\n                    nz-checkbox\\r\\n                    style=\\\"font-size: 14px;\\\"\\r\\n                    (nzCheckedChange)=\\\"repeatEmailLoginForContact($event)\\\"\\r\\n                    >Repetir</label\\r\\n                  >\\r\\n                </div>\\r\\n              </div>\\r\\n\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <nz-input-group>\\r\\n                  <input\\r\\n                    id=\\\"email\\\"\\r\\n                    type=\\\"text\\\"\\r\\n                    nz-input\\r\\n                    formControlName=\\\"email\\\"\\r\\n                    style=\\\"text-transform: lowercase;\\\"\\r\\n                    (keydown.space)=\\\"$event.preventDefault()\\\"\\r\\n                    autocomplete=\\\"disabled\\\"\\r\\n                  />\\r\\n                </nz-input-group>\\r\\n                <nz-form-explain *ngIf=\\\"hasAccount\\\">\\r\\n                  Paciente com conta ativada\\r\\n                </nz-form-explain>\\r\\n\\r\\n                <nz-form-explain *ngIf=\\\"emailForm.dirty && emailForm.errors\\\">\\r\\n                  <ng-container *ngIf=\\\"emailForm.hasError('exists')\\\">\\r\\n                    E-mail já existe, por favor escolha outro e-mail.\\r\\n                  </ng-container>\\r\\n                  <ng-container *ngIf=\\\"!emailForm.hasError('exists')\\\">\\r\\n                    E-mail inválido, por favor digite um e-mail válido.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n\\r\\n          <div class=\\\"col-md-6\\\">\\r\\n            <nz-form-item *ngIf=\\\"form.get('emailContact') as emailContact\\\">\\r\\n              <nz-form-label nzFor=\\\"emailContact\\\"\\r\\n                >E-mail de contato\\r\\n                <span class=\\\"mandatory\\\" *ngIf=\\\"user.userType === userTypeLogged\\\">*</span></nz-form-label\\r\\n              >\\r\\n              <nz-form-control nzHasFeedback>\\r\\n                <nz-input-group>\\r\\n                  <input\\r\\n                    id=\\\"emailContact\\\"\\r\\n                    type=\\\"text\\\"\\r\\n                    nz-input\\r\\n                    formControlName=\\\"emailContact\\\"\\r\\n                    style=\\\"text-transform: lowercase;\\\"\\r\\n                    (keydown.space)=\\\"$event.preventDefault()\\\"\\r\\n                    autocomplete=\\\"disabled\\\"\\r\\n                  />\\r\\n                </nz-input-group>\\r\\n                <nz-form-explain *ngIf=\\\"emailContact.dirty && emailContact.errors\\\">\\r\\n                  <ng-container *ngIf=\\\"emailContact.errors\\\">\\r\\n                    E-mail inválido, por favor digite um e-mail válido.\\r\\n                  </ng-container>\\r\\n                </nz-form-explain>\\r\\n              </nz-form-control>\\r\\n            </nz-form-item>\\r\\n          </div>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"row\\\">\\r\\n          <nz-form-item\\r\\n            *ngIf=\\\"userTypeLogged !== 'pharmacy'\\\"\\r\\n            [ngClass]=\\\"user.userType === 'patient' ? 'col-md-6' : 'col-md'\\\"\\r\\n          >\\r\\n            <nz-form-label nzFor=\\\"cpf\\\"\\r\\n              >CPF <span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\">*</span></nz-form-label\\r\\n            >\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <nz-input-group>\\r\\n                <input\\r\\n                  id=\\\"cpf\\\"\\r\\n                  type=\\\"text\\\"\\r\\n                  nz-input\\r\\n                  formControlName=\\\"cpf\\\"\\r\\n                  mask=\\\"000.000.000-00\\\"\\r\\n                  autocomplete=\\\"disabled\\\"\\r\\n                />\\r\\n              </nz-input-group>\\r\\n              <nz-form-explain *ngIf=\\\"form.get('cpf').dirty && form.get('cpf').errors\\\">\\r\\n                <ng-container *ngIf=\\\"form.get('cpf').hasError('required')\\\">\\r\\n                  O CPF é obrigatório\\r\\n                </ng-container>\\r\\n                <ng-container\\r\\n                  *ngIf=\\\"!form.get('cpf').hasError('required') && form.get('cpf').hasError('cpf')\\\"\\r\\n                >\\r\\n                  CPF inválido, por favor digite um CPF válido.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n\\r\\n          <nz-form-item\\r\\n            *ngIf=\\\"userTypeLogged !== 'pharmacy' && form.get('dateOfBirth') as dateOfBirth\\\"\\r\\n            class=\\\"col-md\\\"\\r\\n          >\\r\\n            <nz-form-label nzFor=\\\"dateOfBirth\\\"\\r\\n              >Data de nascimento <span *ngIf=\\\"!isAdmin\\\" class=\\\"mandatory\\\">*</span>\\r\\n            </nz-form-label>\\r\\n            <nz-form-control nzHasFeedback>\\r\\n              <input\\r\\n                nz-input\\r\\n                id=\\\"dateOfBirth\\\"\\r\\n                type=\\\"date\\\"\\r\\n                formControlName=\\\"dateOfBirth\\\"\\r\\n                [max]=\\\"currentDate\\\"\\r\\n                autocomplete=\\\"disabled\\\"\\r\\n              />\\r\\n\\r\\n              <nz-form-explain *ngIf=\\\"dateOfBirth.dirty && dateOfBirth.errors\\\">\\r\\n                <ng-container *ngIf=\\\"dateOfBirth.hasError('required')\\\">\\r\\n                  Campo obrigatório, por favor digite sua data de nascimento.\\r\\n                </ng-container>\\r\\n                <ng-container\\r\\n                  *ngIf=\\\"!dateOfBirth.hasError('required') && dateOfBirth.hasError('dateOfBirth')\\\"\\r\\n                >\\r\\n                  Data de nascimento inválida.\\r\\n                </ng-container>\\r\\n              </nz-form-explain>\\r\\n            </nz-form-control>\\r\\n          </nz-form-item>\\r\\n        </div>\\r\\n      </ng-container>\\r\\n    </form>\\r\\n\\r\\n    <div class=\\\"row\\\">\\r\\n      <div class=\\\"col-8\\\"></div>\\r\\n\\r\\n      <div class=\\\"col-4\\\">\\r\\n        <button\\r\\n          nz-button\\r\\n          type=\\\"button\\\"\\r\\n          class=\\\"btn btn-icon btn-ok text-capitalize\\\"\\r\\n          (click)=\\\"submitForm()\\\"\\r\\n          [disabled]=\\\"!form.valid\\\"\\r\\n          [nzLoading]=\\\"loading\\\"\\r\\n        >\\r\\n          <span class=\\\"btn-inner--text\\\">Salvar</span>\\r\\n        </button>\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\\r\\n\";","export default \"header {\\n  width: 100%;\\n  padding: 16px 24px;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 4px 4px 0 0;\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  background-color: var(--bg-modal-header);\\n  color: var(--color-white);\\n}\\nheader .title {\\n  margin: 0;\\n  color: var(--color-white);\\n  font-weight: 500;\\n  font-size: 16px;\\n  line-height: 22px;\\n  word-wrap: break-word;\\n}\\n.cellphone {\\n  padding-bottom: 6px;\\n  padding-top: 8px;\\n}\\n.mandatory {\\n  color: red;\\n}\\n.modal-body {\\n  padding-bottom: 40px;\\n  margin-top: 37px;\\n  height: 50vh;\\n  overflow-y: scroll;\\n}\\n.modal-body input {\\n  border-radius: 10px;\\n}\\n.modal-body input::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n@media (max-width: 978px) {\\n  .modal-body {\\n    padding: 0;\\n  }\\n}\\n::ng-deep .ant-select-selection {\\n  height: 100%;\\n}\\n.btn {\\n  float: right;\\n  padding-top: 7px;\\n  padding-bottom: 7px;\\n  margin-top: 13px;\\n  margin-bottom: 5px;\\n  font-size: 12px;\\n}\\n.btn-add {\\n  display: flex;\\n  padding: 0 0 0 1.25rem;\\n  height: 40px;\\n  align-items: center;\\n  border-radius: 10px;\\n  overflow: hidden;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n  background-color: var(--bg-color-secondary);\\n}\\n.btn-add .btn-inner--icon {\\n  background-color: var(--bg-color-primary);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 40px;\\n  width: 50px;\\n}\";","import { Injectable } from '@angular/core';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\n\ntype TypeToast = 'success' | 'info' | 'warning' | 'error';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AppToastService {\n  constructor(private notification: NzNotificationService) {}\n\n  public notify(type: TypeToast, title: string, subtitle?: string, duration?: number) {\n    this.notification.create(type, title, subtitle, {\n      nzStyle: {\n        'z-index': 1000000\n      },\n      nzDuration: !!duration ? duration : 5000\n    });\n  }\n}\n","export default class DocumentUtil {\n  static getAttestationsDays() {\n    return [\n      { value: 'UM', label: '1 (hum) dia' },\n      { value: 'DOIS', label: '2 (dois) dias' },\n      { value: 'TRES', label: '3 (três) dias' },\n      { value: 'QUATRO', label: '4 (quatro) dias' },\n      { value: 'CINCO', label: '5 (cinco) dias' },\n      { value: 'SEIS', label: '6 (seis) dias' },\n      { value: 'SETE', label: '7 (sete) dias' },\n      { value: 'OITO', label: '8 (oito) dias' },\n      { value: 'NOVE', label: '9 (nove) dias' },\n      { value: 'DEZ', label: '10 (dez) dias' },\n      { value: 'ONZE', label: '11 (onze) dias' },\n      { value: 'DOZE', label: '12 (doze) dias' },\n      { value: 'TREZE', label: '13 (treze) dias' },\n      { value: 'QUATORZE', label: '14 (quatorze) dias' },\n      { value: 'QUINZE', label: '15 (quinze) dias' },\n      { value: 'TRINTA', label: '30 (trinta) dias' },\n      { value: 'QUARENTA_CINCO', label: '45 (quarenta e cinco) dias' },\n      { value: 'SESSENTA', label: '60 (sessenta) dias' },\n      { value: 'NOVENTA', label: '90 (noventa) dias' },\n      { value: 'CENTO_OITENTA', label: '180 (cento e oitenta) dias' }\n    ];\n  }\n\n  static getTypesOfActivity() {\n    return [\n      { value: 'LABORAL', label: 'Laborais' },\n      { value: 'ESCOLAR', label: 'Escolares' },\n      { value: 'LABORAL_ESCOLAR', label: 'Laborais e Escolares' }\n    ];\n  }\n}\n","import { BsModalRef } from 'ngx-bootstrap/modal';\nimport {\n  Component,\n  OnInit,\n  Input,\n  Output,\n  EventEmitter,\n  ViewChild,\n  AfterViewInit,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { DocumentModel } from '@app/shared/models/documet-model';\nimport { CrService } from '../../services/cr.service';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\n\n@Component({\n  selector: 'app-model-list-favorite-prescription',\n  templateUrl: './model-list-favorite-document.component.html',\n  styleUrls: ['./model-list-favorite-document.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class ModelListFavoriteDocumentComponent {\n  @Input() documentsTemplate: DocumentModel[];\n  @Input() documentType: string;\n  @Input() colorSetting: ColorSetting;\n  @Input() hideEdit = false;\n  @Output() selectEvent = new EventEmitter<DocumentModel>();\n  @Output() editEvent = new EventEmitter<DocumentModel>();\n  @Output() deleteEvent = new EventEmitter<string>();\n\n  @ViewChild('modalHeader') modalHeader: HTMLDivElement;\n\n  typesOfDocuments = ['Prescrição', 'Exame', 'Atestado', 'Outros'];\n\n  loadingSearchMedicament = false;\n\n  constructor(\n    public modalRef: BsModalRef,\n    private crService: CrService,\n    private toast: AppToastService\n  ) {}\n\n  activeChange(item: DocumentModel) {\n    item.active = !item.active;\n  }\n\n  async onSelect(item: DocumentModel) {\n    if (item.document === 'prescription') {\n      await this.updateMedicaments(item);\n    }\n    this.selectEvent.emit(item);\n    this.modalRef.hide();\n  }\n\n  async onEdit(item: DocumentModel) {\n    if (item.document === 'prescription') {\n      await this.updateMedicaments(item);\n    }\n    this.editEvent.emit(item);\n    this.modalRef.hide();\n  }\n\n  onDelete(item: DocumentModel) {\n    this.deleteEvent.emit(item.id);\n  }\n\n  getText(arrayText: any[]) {\n    return arrayText.reduce((acc, val) => (acc ? `${acc}\\n${val}` : val), '');\n  }\n\n  async updateMedicaments(prescription: DocumentModel) {\n    for await (const medicament of prescription.medicaments) {\n      if (!!medicament.ean) {\n        this.loadingSearchMedicament = true;\n        try {\n          const medicamentsCR = await this.crService.searchMedicament(medicament.ean).toPromise();\n          if (medicamentsCR.length > 0) {\n            const medicamentCR = medicamentsCR[0];\n            medicament.name = medicamentCR.nome;\n            medicament.prescriptionTypeId = medicamentCR.prescriptionTypeId;\n            medicament.typeCr = medicamentCR.typeCr;\n            medicament.type = 'industrialized';\n            medicament.laboratory = medicamentCR.laboratorio;\n            medicament.description = medicamentCR.apresentacaoCustomizada;\n            medicament.medicamentId = medicamentCR.id;\n            medicament.principle = medicamentCR.principio;\n          }\n        } catch (error) {\n          console.log(error);\n          this.toast.notify('error', 'Erro ao consultar dados do medicamento.');\n        } finally {\n          this.loadingSearchMedicament = false;\n        }\n      } else {\n        medicament.type = 'free-text';\n      }\n    }\n  }\n}\n","export default \"<div class=\\\"favorite-document-modal\\\" theme>\\n  <div\\n    class=\\\"modal-header\\\"\\n    #modalHeader\\n    [ngStyle]=\\\"{\\n      'background-color': colorSetting?.primary,\\n      'border-color': colorSetting?.primary\\n    }\\\"\\n  >\\n    <h4 class=\\\"modal-title pull-left text-white\\\">Modelos de {{ documentType }}</h4>\\n    <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button>\\n  </div>\\n  <div class=\\\"body prescription\\\">\\n    <nz-list nzBordered>\\n      <nz-list-item *ngFor=\\\"let item of documentsTemplate\\\">\\n        <div>\\n          <div class=\\\"row header prescription align-items-center\\\">\\n            <div class=\\\"col-1\\\" (click)=\\\"activeChange(item)\\\">\\n              <i nz-icon nzType=\\\"right\\\" *ngIf=\\\"!item.active\\\" nzTheme=\\\"outline\\\"></i>\\n              <i nz-icon nzType=\\\"down\\\" *ngIf=\\\"item.active\\\" nzTheme=\\\"outline\\\"></i>\\n            </div>\\n\\n            <div class=\\\"col pt-2\\\" (click)=\\\"activeChange(item)\\\">\\n              <h6>{{ item.title }}</h6>\\n            </div>\\n\\n            <div class=\\\"p-1\\\">\\n              <button\\n                class=\\\"ok-btn btn-selecionar\\\"\\n                nz-button\\n                (click)=\\\"onSelect(item)\\\"\\n                [ngStyle]=\\\"{\\n                  'background-color': colorSetting?.secondary,\\n                  'border-color': colorSetting?.secondary\\n                }\\\"\\n              >\\n                Adicionar\\n              </button>\\n            </div>\\n\\n            <div class=\\\"pl-0\\\">\\n              <button (click)=\\\"onDelete(item)\\\" title=\\\"Excluir\\\" class=\\\"btn btn-trash\\\">\\n                <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-trash-solid position-inherit\\\"></i></span>\\n              </button>\\n            </div>\\n          </div>\\n\\n          <div *ngIf=\\\"item.active && documentType === typesOfDocuments[0]\\\">\\n            <div *ngFor=\\\"let medicament of item.medicaments\\\">\\n              <br />\\n              <p><span class=\\\"bold\\\">Nome:</span> {{ medicament.name }}</p>\\n              <p><span class=\\\"bold\\\">Princípio ativo:</span> {{ medicament.principle }}</p>\\n              <p><span class=\\\"bold\\\">Descrição:</span> {{ medicament.description }}</p>\\n              <p><span class=\\\"bold\\\">Quantidade:</span> {{ medicament.prescribedQuantity }}</p>\\n              <p><span class=\\\"bold\\\">Posologia:</span> {{ medicament.dosage }}</p>\\n            </div>\\n          </div>\\n          <div *ngIf=\\\"item.active && documentType === typesOfDocuments[1]\\\">\\n            <div *ngFor=\\\"let row of item.examList\\\">\\n              Material: {{ row.material }}\\n              <div>\\n                Exames:\\n                <ul>\\n                  <p *ngFor=\\\"let exam of row.exams\\\">{{ exam.name }}</p>\\n                </ul>\\n              </div>\\n              <div *ngIf=\\\"getText(item.justification)\\\">\\n                <p class=\\\"mt-4 mb-0\\\">Justificativa:</p>\\n                <ul>\\n                  <p *ngFor=\\\"let j of item.justification\\\">{{ j }}</p>\\n                </ul>\\n              </div>\\n            </div>\\n          </div>\\n          <div *ngIf=\\\"item.active && documentType === typesOfDocuments[2]\\\">\\n            <div>\\n              <br />\\n              <p>{{ getText(item.description) }}</p>\\n            </div>\\n          </div>\\n          <div *ngIf=\\\"item.active && documentType === typesOfDocuments[3]\\\">\\n            <div>\\n              <br />\\n              <p>{{ getText(item.orientations) }}</p>\\n            </div>\\n          </div>\\n        </div>\\n      </nz-list-item>\\n    </nz-list>\\n    <br />\\n  </div>\\n</div>\\n\\n<ngx-loading\\n  *ngIf=\\\"loadingSearchMedicament\\\"\\n  [show]=\\\"loading\\\"\\n  [config]=\\\"{ backdropBorderRadius: '3px' }\\\"\\n></ngx-loading>\\n\";","export default \".favorite-document-modal .modal-header {\\n  font-family: \\\"probold\\\";\\n  width: 500px;\\n}\\n.favorite-document-modal .header {\\n  border-bottom: 1px solid #dcdcdc;\\n  background-color: #dcdcdc;\\n  width: 480px;\\n  min-height: 40px;\\n}\\n.favorite-document-modal .header i {\\n  cursor: pointer;\\n}\\n.favorite-document-modal .bold {\\n  font-weight: bold;\\n}\\n.favorite-document-modal p {\\n  font-size: 14px;\\n  margin: 0;\\n}\\n.favorite-document-modal .col {\\n  align-self: center;\\n}\\n@media (max-width: 575px) {\\n  .favorite-document-modal .body.prescription .ant-spin-container,\\n.favorite-document-modal .body.prescription .ant-list-item,\\n.favorite-document-modal .body.prescription .ng-star-inserted {\\n    width: 100%;\\n  }\\n  .favorite-document-modal .col-1 {\\n    display: none;\\n  }\\n  .favorite-document-modal .header.prescription {\\n    position: relative;\\n    width: 100% !important;\\n    margin: 0;\\n    height: auto;\\n    min-height: 42px;\\n  }\\n  .favorite-document-modal .header.prescription h6 {\\n    margin-right: 20px;\\n  }\\n}\\n.favorite-document-modal .action-buttons {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n}\\n.favorite-document-modal .position-inherit {\\n  position: inherit !important;\\n}\\n.favorite-document-modal textarea {\\n  box-sizing: border-box;\\n  width: 100%;\\n}\\n.favorite-document-modal .btn-selecionar {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08);\\n}\\n.favorite-document-modal .btn-selecionar::-moz-selection {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-secondary);\\n  border-color: var(--bg-color-secondary);\\n}\\n.favorite-document-modal .btn-selecionar:hover,\\n.favorite-document-modal .btn-selecionar:active,\\n.favorite-document-modal .btn-selecionar::selection {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-secondary);\\n  border-color: var(--bg-color-secondary);\\n}\\n.favorite-document-modal .btn-edit,\\n.favorite-document-modal .btn-trash {\\n  padding: 8px;\\n}\";","import { Directive, OnInit, OnDestroy, ElementRef } from '@angular/core';\nimport { ThemeService } from './theme.service';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { Theme } from './symbols';\n\n@Directive({\n  selector: '[theme]'\n})\nexport class ThemeDirective implements OnInit, OnDestroy {\n  private _destroy$ = new Subject();\n\n  constructor(private _elementRef: ElementRef, private _themeService: ThemeService) {}\n\n  ngOnInit() {\n    const active = this._themeService.getActiveTheme();\n    if (active) {\n      this.updateTheme(active);\n    }\n\n    this._themeService.themeChange\n      .pipe(takeUntil(this._destroy$))\n      .subscribe((theme: Theme) => this.updateTheme(theme));\n  }\n\n  ngOnDestroy() {\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  updateTheme(theme: Theme) {\n    // project properties onto the element\n    for (const key in theme.properties) {\n      this._elementRef.nativeElement.style.setProperty(key, theme.properties[key]);\n    }\n\n    // remove old theme\n    for (const name of this._themeService.theme) {\n      this._elementRef.nativeElement.classList.remove(`${name}-theme`);\n    }\n\n    // alias element with theme name\n    this._elementRef.nativeElement.classList.add(`${theme.name}-theme`);\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ACTIVE_THEME, ThemeOptions, THEMES } from './symbols';\nimport { ThemeDirective } from './theme.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [ThemeDirective],\n  exports: [ThemeDirective]\n})\nexport class ThemeModule {\n  static forRoot(options: ThemeOptions): ModuleWithProviders<ThemeModule> {\n    return {\n      ngModule: ThemeModule,\n      providers: [\n        {\n          provide: THEMES,\n          useValue: options.themes\n        },\n        {\n          provide: ACTIVE_THEME,\n          useValue: options.active\n        }\n      ]\n    };\n  }\n}\n","import { Theme } from './symbols';\n\nexport const themeReceitaDigital: Theme = {\n  title: 'Receita Digital',\n  name: 'theme-receita-digital',\n  favicon: 'assets/icons/favicon.ico',\n  properties: {\n    '--color-white': '#FFFFFF',\n    '--color-black': '#000000',\n    '--color-alert': '#e94a3c',\n    '--color-icon-menu': '#0B6054',\n    '--color-title': '#1b403a',\n    '--color-hover-item-menu': '#5ce1c2',\n    '--bg-color-primary': '#0B6054',\n    '--on-bg-color-primary': '#FFFFFF',\n    '--bg-color-secondary': '#17C6AC',\n    '--on-bg-color-secondary': '#0B6054',\n    '--bg-color-cinza-escuro': '#494949',\n    '--on-bg-color-cinza-escuro': '#FFFFFF',\n    '--bg-color-cinza-intermediario': '#797979',\n    '--on-bg-color-cinza-intermediario': '#FFFFFF',\n    '--bg-color-cinza-claro': '#EBEBEB',\n    '--on-bg-color-cinza-claro': '#4B4945',\n    '--bg-footer': '#0B6054',\n\n    '--background-header': '#17C6AC',\n    '--on-background-header': '#0B6054',\n    '--background-section': '#0B6054',\n    '--background-card-prescricao': '#17C6AC',\n    '--background-card-historico': '#4D4D4D',\n    '--background-card-pacientes': '#EBEBEB',\n    '--color-card-pacientes': '#4d4d4d',\n    '--background-card-meus-dados': '#363636',\n    '--background-card-tele-consulta': '#363636',\n    '--backgorund-card-agenda-virtual': '#17C6AC',\n    '--background-card-modelo-favorito': '#5ce1c2',\n\n    '--color-label-input': '#0b6054',\n    '--color-input-border-hover': '#bcfdec',\n    '--bg-input-text': '#f1fffc',\n\n    '--bg-color-btn-success': '#00d3b2',\n    '--bd-color-btn-success': '#00d3b2',\n    '--color-btn-success': '#FFF',\n    '--bg-color-btn-save': '#17C6AC',\n\n    '--bg-select': 'rgba(101, 242, 218, 0.5)',\n    '--bd-select': '#17c6ac',\n    '--color-select-placeholder': '#0b6054',\n\n    '--bg-btn-menu': '#0B6054',\n\n    '--bg-data-profile': '#5ce1c2',\n    '--bg-sub-header-pacientes': '#5ce1c2',\n\n    '--bg-modal-header': '#4cbca3',\n\n    '--color-primary': '#4cbca3'\n  }\n};\n","import { Theme } from './symbols';\n\nexport const themeMrd: Theme = {\n  title: 'Meu Receituário',\n  name: 'theme-mrd',\n  favicon: 'assets/img/mrd/logo-03.png',\n  properties: {\n    '--color-white': '#FFFFFF',\n    '--color-black': '#000000',\n    '--color-alert': '#FFFF00',\n    '--color-icon-menu': '#FFFFFF',\n    '--color-title': '#494949',\n    '--color-hover-item-menu': '#ccc',\n    '--bg-color-primary': '#EB5E54',\n    '--on-bg-color-primary': '#FFFFFF',\n    '--bg-color-secondary': '#F69487',\n    '--on-bg-color-secondary': '#FFFFFF',\n    '--bg-color-cinza-escuro': '#494949',\n    '--on-bg-color-cinza-escuro': '#FFFFFF',\n    '--bg-color-cinza-intermediario': '#797979',\n    '--on-bg-color-cinza-intermediario': '#FFFFFF',\n    '--bg-color-cinza-claro': '#EBEBEB',\n    '--on-bg-color-cinza-claro': '#4B4945',\n    '--bg-footer': '#494949',\n\n    '--background-header': '#494949',\n    '--on-background-header': '#FFF',\n    '--background-section': '#797979',\n    '--background-card-prescricao': '#F59487',\n    '--background-card-historico': '#494949',\n    '--background-card-pacientes': '#EBEBEB',\n    '--color-card-pacientes': '#494949',\n    '--background-card-meus-dados': '#EB5E53',\n    '--background-card-tele-consulta': '#EBEBEB',\n    '--backgorund-card-agenda-virtual': '#17C6A6',\n    '--background-card-modelo-favorito': '#acacac',\n\n    '--color-label-input': '#494949',\n    '--color-input-border-hover': '#ccc',\n    '--bg-input-text': '#fdece9',\n\n    '--bg-color-btn-success': '#797979',\n    '--bd-color-btn-success': '#494949',\n    '--color-btn-success': '#FFF',\n    '--bg-color-btn-save': '#EB5E54',\n\n    '--bg-select': '#e5e5e5',\n    '--bd-select': '#494949',\n    '--color-select-placeholder': '#000',\n\n    '--bg-btn-menu': '#d72a12',\n\n    '--bg-data-profile': '#EB5E53',\n    '--bg-sub-header-pacientes': '#acacac',\n\n    '--bg-modal-header': '#F59487',\n\n    '--color-primary': '#d72a12'\n  }\n};\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { PdfService } from '@app/modules/document/services/pdf.service';\nimport { PATIENT_URL } from '@app/modules/patients/services/patients.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { Patient } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { PdfData } from '@app/shared/models/pdf-data';\nimport { Prescription } from '@app/shared/models/prescription';\nimport { StateService } from '@app/shared/services/state.service';\nimport { ThemeService } from '@app/theme';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nexport const PRESCRIPTION_URL = `prescription`;\nexport const PRESCRIPTION_PATIENT_URL = `prescription/patient`;\nexport const PRESCRIPTION_PRESCRIBER_URL = `prescription/prescriber`;\nexport const MEDICAMENT_URL = 'medicament';\n\n@Injectable({ providedIn: 'root' })\nexport class PrescriptionService {\n  private savedPatient = false;\n\n  medicamentsRetained = [];\n  prescription: any;\n  pdfBase64: any;\n  filename: string;\n\n  constructor(\n    private http: HttpClient,\n    private pdfService: PdfService,\n    private themeService: ThemeService,\n    private authService: AuthService,\n    private stateService: StateService\n  ) {}\n\n  private get theme() {\n    return this.themeService.getActiveTheme().name;\n  }\n\n  private get rennovaFeature(): boolean {\n    const user: User = this.authService.user();\n    return (\n      user &&\n      user.features.some(f => f.name === 'Rennova') &&\n      this.stateService.data &&\n      this.stateService.data.isRennova\n    );\n  }\n\n  save(prescription: any) {\n    if (prescription.code) {\n      return this.http.put(\n        `${environment.apiRoot}${PRESCRIPTION_URL}/${prescription.code}`,\n        prescription\n      );\n    }\n    return this.http.post(`${environment.apiRoot}${PRESCRIPTION_URL}`, prescription);\n  }\n\n  getMedicationsPrescription(prescriptionCode) {\n    return this.http\n      .get(`${environment.apiRoot}${PRESCRIPTION_URL}/${prescriptionCode}/medicamentsAfterRetetion`)\n      .toPromise()\n      .then((res: any) => {\n        return res.map(m => ({ ...m, valid: false }));\n      });\n  }\n\n  getPrescriptionsPatient(param: string): Observable<Prescription[]> {\n    return this.http.get<Prescription[]>(`${environment.apiRoot}${PRESCRIPTION_URL}/find/${param}`);\n  }\n\n  getPrescriptionsByPatientId(patientId: string, filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${PRESCRIPTION_PATIENT_URL}/${patientId}`, {\n      params: filter\n    });\n  }\n\n  getPrescriptionsByPrescriberUserId(prescriber: string, filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${PRESCRIPTION_PRESCRIBER_URL}/${prescriber}`, {\n      params: filter\n    });\n  }\n\n  getPrescription(prescriptionCode): Observable<Prescription> {\n    return this.http.get<Prescription>(`${environment.apiRoot}${PRESCRIPTION_URL}/${prescriptionCode}`);\n  }\n\n  getPrescriptionbyCode(prescriptionCode): Observable<Prescription> {\n    return this.http\n      .get<Prescription>(`${environment.apiRoot}${PRESCRIPTION_URL}/code/${prescriptionCode}`)\n      .pipe(\n        tap(prescription => {\n          if (prescription.pet) {\n            prescription.patient = prescription.pet as any;\n          }\n        })\n      );\n  }\n\n  getPrescriptions(): Observable<Prescription[]> {\n    return this.http.get<Prescription[]>(`${environment.apiRoot}${PRESCRIPTION_URL}`);\n  }\n\n  getPrescriptionsByFilter(filter: any): Promise<Prescription[]> {\n    return this.http\n      .get<Prescription[]>(`${environment.apiRoot}${PRESCRIPTION_URL}/filter`, {\n        params: filter\n      })\n      .toPromise();\n  }\n\n  getPatientPrescription(prescriptionCode): Observable<Patient> {\n    return this.http.get<Patient>(\n      `${environment.apiRoot}${PRESCRIPTION_URL}/${prescriptionCode}/patient`\n    );\n  }\n\n  getPatients(payload: string): Observable<Patient[]> {\n    payload = this.unMask(payload);\n    const prefix = this.onlyNumbers(payload) ? 'cpf/' : 'name/';\n    return this.http.get<Patient[]>(`${environment.apiRoot}${PATIENT_URL}/${prefix}${payload}`);\n  }\n\n  getPrescriptionByPdf(pdf: Blob) {\n    const formData = new FormData();\n    formData.append('pdf', pdf);\n    return this.http\n      .post<any>(`${environment.apiRoot}bundle`, formData)\n      .pipe(\n        tap(prescription => {\n          this.prescription = prescription;\n          this.blobToBase64(pdf).then(base64 => (this.pdfBase64 = base64));\n        })\n      )\n      .toPromise();\n  }\n\n  postDispensation(dispensation: any) {\n    return this.http.post(`${environment.apiRoot}bundle/dispensation`, dispensation).toPromise();\n  }\n\n  private unMask(value: string): string {\n    return value.replace(/[\\.\\-]+/g, '');\n  }\n\n  private onlyNumbers(value: String): Boolean {\n    return value.match(/^[0-9]+$/) != null;\n  }\n\n  confirm(retention, pharmacyId, code) {\n    localStorage.setItem('medicamentsRetained', JSON.stringify(retention.medicamentsRetained));\n    const headers = new HttpHeaders().set('Content-Type', 'application/json');\n    return this.http\n      .put(\n        `${environment.apiRoot}${PRESCRIPTION_URL}/${code}/retain`,\n        { retention, pharmacyId },\n        { headers }\n      )\n      .toPromise()\n      .then(res => {\n        return res;\n      });\n  }\n\n  setSavedPatient(): void {\n    this.savedPatient = true;\n  }\n\n  getSavedPatient(): boolean {\n    return this.savedPatient;\n  }\n\n  setMedicamentsRetained(medicaments): void {\n    this.medicamentsRetained = medicaments;\n  }\n\n  getMedicamentsRetained() {\n    return this.medicamentsRetained;\n  }\n\n  @nativeAsync\n  async downloadPrescriptionPdf(code: string, secretCode = '') {\n    const pdf = await this.pdfService.downloadPdfDocument(code, secretCode);\n    this.pdfService.openPdf(pdf);\n    return pdf;\n  }\n\n  @nativeAsync\n  async generatePdf(code: string) {\n    const param = this.rennovaFeature ? 'rennova' : this.theme;\n\n    const pdf = await this.pdfService.generatePdf(code, param);\n    this.pdfService.openPdf(pdf);\n  }\n\n  @nativeAsync\n  async downloadOrGeneratePdf(code: string) {\n    let pdf: PdfData;\n    try {\n      pdf = await this.pdfService.downloadPdfDocument(code);\n    } catch (err) {\n      const param = this.rennovaFeature ? 'rennova' : this.theme;\n      pdf = await this.pdfService.generatePdf(code, param);\n    }\n\n    this.pdfService.openPdf(pdf);\n  }\n\n  delete(prescriptionId: number): Observable<any> {\n    return this.http.delete(`${environment.apiRoot}${PRESCRIPTION_URL}/${prescriptionId}`);\n  }\n\n  blobToBase64(blob: Blob): Promise<any> {\n    return new Promise((resolve, _) => {\n      const reader = new FileReader();\n      reader.onloadend = () => resolve(reader.result);\n      reader.readAsDataURL(blob);\n    });\n  }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { PetPatient } from '@app/shared/models/pet-patient';\nimport { Race } from '@app/shared/models/races';\nimport { Species } from '@app/shared/models/species';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\n\nexport const PET_PATIENT_URL = 'pets';\n\nexport type FilterSearch = {\n  name?: string;\n  responsibleCpf?: string;\n  responsibleName?: string;\n};\n\nexport type FilterPaginate = {\n  page: number;\n  limit: number;\n  orderBy?: string;\n  sortOrder?: string;\n};\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PetPatientService {\n  constructor(private http: HttpClient) {}\n\n  getPetsByResponsibleCpf(cpf: string): Observable<PetPatient[]> {\n    return this.http.get<PetPatient[]>(`${environment.apiRoot}${PET_PATIENT_URL}`, {\n      params: { cpf }\n    });\n  }\n\n  getSpecies(): Observable<Species[]> {\n    return this.http.get<Species[]>(`${environment.apiRoot}${PET_PATIENT_URL}/species`);\n  }\n\n  getRaces(speciesId: string): Observable<Race[]> {\n    return this.http.get<Race[]>(`${environment.apiRoot}${PET_PATIENT_URL}/${speciesId}/races`);\n  }\n\n  save(patient: PetPatient): Observable<PetPatient> {\n    return this.http.post<PetPatient>(`${environment.apiRoot}${PET_PATIENT_URL}`, patient);\n  }\n\n  getPetById(id: string): Observable<PetPatient> {\n    return this.http.get<PetPatient>(`${environment.apiRoot}${PET_PATIENT_URL}/${id}`);\n  }\n\n  update(id: string, data: any, healthProfessionalId?: string): Observable<PetPatient> {\n    let params = new HttpParams();\n    if (healthProfessionalId) {\n      params = params.set('healthProfessional', healthProfessionalId);\n    }\n    return this.http.put<PetPatient>(`${environment.apiRoot}${PET_PATIENT_URL}/${id}`, data, {\n      params\n    });\n  }\n\n  searchPaginate(params: FilterSearch) {\n    let httpParams = new HttpParams();\n    if (params) {\n      Object.keys(params)\n        .filter(key => params[key])\n        .forEach(k => {\n          httpParams = httpParams.set(k, params[k]);\n        });\n    }\n\n    return this.http.get<{ list: PetPatient[]; totalRecord: number }>(\n      `${environment.apiRoot}${PET_PATIENT_URL}/search-paginate`,\n      { params: httpParams }\n    );\n  }\n\n  switchReponsible(id: string, cpfNewReponsible: string) {\n    return this.http.put(\n      `${environment.apiRoot}${PET_PATIENT_URL}/${id}/responsible/${cpfNewReponsible}`,\n      {}\n    );\n  }\n}\n","import { FormGroup, FormArray, AbstractControl } from '@angular/forms';\n\nexport function logInvalidForm(form: AbstractControl): void {\n  Object.entries((form as FormGroup | FormArray).controls)\n    .filter(([_, ctrl]) => ctrl.invalid)\n    .forEach(([key, ctrl]) => {\n      if (ctrl instanceof FormArray) {\n        logInvalidForm(ctrl);\n      } else {\n        console.log(key, ctrl.errors);\n      }\n    });\n}\n","import { PetPatient } from '@app/shared/models/pet-patient';\nimport { Address } from './address';\nimport { User } from './decodedLoginToken';\nimport { Membership } from './membership';\nimport { Pendency } from './pendency';\n\nexport class Patient {\n  _id?: string;\n  id?: string;\n  userId?: string;\n  name?: string;\n  fullname?: string;\n  cpf?: string;\n  identity?: string;\n  telephone?: string;\n  cellphone?: string;\n  email?: string;\n  sex?: string;\n  dateOfBirth?: Date | string;\n  membership?: Membership;\n  address?: Address;\n  user?: User;\n  img?: string;\n  pendency?: Pendency;\n  responsible?: Patient;\n  dependents?: Patient[];\n  pets?: PetPatient[];\n  tenantId?: string;\n  exists?: boolean;\n  emailContact?: string;\n  womenOver40?: boolean;\n\n  loadingRevalidate?: boolean;\n  loadingTenant?: boolean;\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\n\n@Component({\n  selector: 'app-modal-select-layout',\n  templateUrl: './modal-select-layout.component.html',\n  styleUrls: ['./modal-select-layout.component.scss']\n})\nexport class ModalSelectLayoutComponent {\n  @Input() colorSetting: ColorSetting;\n  @Output() selectLayout = new EventEmitter<any>();\n\n  tplModal: NzModalRef;\n\n  @ViewChild('tplContent', { static: true })\n  tplContent: TemplateRef<{}>;\n\n  @ViewChild('tplFooter', { static: true })\n  tplFooter: TemplateRef<{}>;\n\n  form: FormGroup;\n  layout = 'simple';\n  showPrescriberCpf = false;\n  patientDoesNotHaveAddress = false;\n\n  constructor(private modalService: NzModalService, private fb: FormBuilder) {}\n\n  createTplModal(patientDoesNotHaveAddress = false) {\n    this.patientDoesNotHaveAddress = patientDoesNotHaveAddress;\n\n    this.tplModal = this.modalService.create({\n      nzContent: this.tplContent,\n      nzFooter: this.tplFooter,\n      nzClosable: false,\n      nzWidth: 600,\n      nzMaskClosable: false,\n      nzClassName: 'modal-select-layout',\n      nzOnOk: () => {},\n      nzOnCancel: () => {}\n    });\n\n    if (patientDoesNotHaveAddress) {\n      this.form = this.fb.group({\n        uf: ['', Validators.required],\n        city: ['', Validators.required],\n        complement: [''],\n        number: ['', Validators.required],\n        street: ['', Validators.required],\n        neighborhood: ['', Validators.required],\n        cep: ['', Validators.required]\n      });\n    }\n\n    this.tplModal.afterOpen.subscribe(() => {\n      this.setBackgroundColorFooter();\n    });\n  }\n\n  get showAddressForm(): boolean {\n    return this.patientDoesNotHaveAddress && this.layout === 'special';\n  }\n\n  setBackgroundColorFooter() {\n    const elements = document.getElementsByClassName('ant-modal-footer');\n    if (elements) {\n      if (this.colorSetting) {\n        elements[0].setAttribute('style', `background-color: ${this.colorSetting.footer}`);\n      } else {\n        elements[0].setAttribute('style', `background-color: var(--bg-modal-header)`);\n      }\n    }\n  }\n\n  changeLayout() {\n    if (this.showAddressForm) {\n      this.tplModal.getInstance().nzWidth = 800;\n    } else {\n      this.tplModal.getInstance().nzWidth = 600;\n    }\n  }\n\n  submit() {\n    if (this.layout === 'special' && this.showAddressForm) {\n      markFormGroup(this.form);\n      if (this.form.valid) {\n        this.emitEventAndCloseModal();\n      }\n    } else {\n      this.emitEventAndCloseModal();\n    }\n  }\n\n  emitEventAndCloseModal() {\n    this.selectLayout.emit({\n      layout: this.layout,\n      addressValue: this.form ? this.form.value : null\n    });\n    this.close();\n  }\n\n  close() {\n    this.tplModal.close();\n    this.tplModal.destroy();\n  }\n}\n","export default \"<ng-template #tplContent>\\n  <div class=\\\"container send-document\\\" theme>\\n    <h1 class=\\\"title\\\" [ngStyle]=\\\"{ color: colorSetting?.primary }\\\">\\n      Selecione o layout da prescrição\\n    </h1>\\n\\n    <nz-radio-group [(ngModel)]=\\\"layout\\\" (ngModelChange)=\\\"changeLayout()\\\">\\n      <label nz-radio nzValue=\\\"simple\\\">Receita Simples</label>\\n      <label nz-radio nzValue=\\\"antimicrobial\\\">Receita de Antibiótico</label>\\n      <label nz-radio nzValue=\\\"special\\\">Receita de Controle Especial</label>\\n    </nz-radio-group>\\n\\n    <div *ngIf=\\\"showAddressForm\\\" style=\\\"margin-top: 1rem; position: relative; width: 100%;\\\">\\n      <form nz-form [formGroup]=\\\"form\\\" theme>\\n        <app-address-data-form\\n          [form]=\\\"form\\\"\\n          alertMsg=\\\"Para prosseguir, complete os dados obrigatórios de endereço do paciente, conforme RDC 344/98 (Anvisa)\\\"\\n          [required]=\\\"true\\\"\\n        ></app-address-data-form>\\n      </form>\\n    </div>\\n  </div>\\n</ng-template>\\n<ng-template #tplFooter>\\n  <div\\n    class=\\\"d-flex align-items-end flex-column modal-footer\\\"\\n    theme\\n    [ngStyle]=\\\"\\n      colorSetting && {\\n        'background-color': colorSetting.secondary,\\n        'border-color': colorSetting.secondary\\n      }\\n    \\\"\\n  >\\n    <div class=\\\"row\\\">\\n      <button\\n        (click)=\\\"close()\\\"\\n        class=\\\"btn btn-black\\\"\\n        [ngStyle]=\\\"colorSetting && { color: colorSetting.primary }\\\"\\n      >\\n        Cancelar\\n      </button>\\n      <button\\n        (click)=\\\"submit()\\\"\\n        class=\\\"btn btn-ok\\\"\\n        [ngStyle]=\\\"\\n          colorSetting && {\\n            'background-color': colorSetting?.primary,\\n            'border-color': colorSetting?.primary\\n          }\\n        \\\"\\n      >\\n        OK\\n      </button>\\n    </div>\\n  </div>\\n</ng-template>\\n\";","export default \".title {\\n  text-transform: none;\\n  font-size: 35px;\\n  line-height: normal;\\n}\\n\\n.modal-footer {\\n  padding: 10px 32px;\\n  background-color: var(--bg-modal-header);\\n}\\n\\n.modal-footer .btn {\\n  font-size: 12px;\\n}\\n\\n::ng-deep .modal-select-layout .ant-modal-content {\\n  border-radius: 10px;\\n  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16);\\n}\\n\\n::ng-deep .modal-select-layout .ant-modal-confirm .ant-modal-confirm-btns {\\n  float: none;\\n}\\n\\n::ng-deep .modal-select-layout .ant-input-group-addon {\\n  width: 93px;\\n}\\n\\n::ng-deep .modal-select-layout .ant-modal-footer {\\n  border-radius: 0 0 10px 10px;\\n  border-top: 0;\\n  padding: 0 !important;\\n}\\n\\n::ng-deep .modal-select-layout .ant-radio-checked .ant-radio-inner,\\n::ng-deep .modal-select-layout .ant-radio-checked .ant-radio-inner:hover {\\n  border-color: var(--bg-color-primary);\\n}\\n\\n::ng-deep .modal-select-layout .ant-radio-inner::after {\\n  background-color: var(--bg-color-primary);\\n}\\n\\n@media (max-width: 1025px) {\\n  .container.send-document {\\n    padding: 0;\\n  }\\n  .container.send-document .title {\\n    font-size: 22px;\\n    line-height: 24px;\\n  }\\n  .container.send-document .sub-title {\\n    font-size: 18px;\\n    line-height: 18px;\\n  }\\n\\n  .inputs.responsive {\\n    padding: 0;\\n  }\\n  .inputs.responsive .ant-form-item label {\\n    margin-top: 0px;\\n    font-size: 14px !important;\\n  }\\n}\\n\\n[nz-radio] {\\n  display: block;\\n  height: 32px;\\n  line-height: 32px;\\n  text-align: left;\\n  font-size: 16px;\\n}\\n\\ninput {\\n  width: 100px;\\n  margin-left: 10px;\\n}\\n\\n.column {\\n  flex-direction: column;\\n}\\n\\n.item {\\n  margin: 0;\\n}\\n\\n.horm {\\n  font-style: italic;\\n  font-size: 12px;\\n}\\n\\n.btn {\\n  font-size: 12px;\\n}\";","export class Base64Utils {\n  static decode<T>(base64: string): T {\n    return JSON.parse(atob(decodeURIComponent(base64))) as T;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { AuthService } from './../../../core/services/auth.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DocumentGuard implements CanActivate {\n  constructor(private router: Router, private authService: AuthService) {}\n\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n    const user = this.authService.user();\n    const isPrescriber = user.userType === 'healthProfessional';\n    if (!isPrescriber) {\n      this.router.navigate(['']);\n    }\n    return isPrescriber;\n  }\n}\n","export default \"<app-alternative-navbar\\n  title=\\\"Informações da Receita\\\"\\n  titleIcon=\\\"fa-assignment\\\"\\n></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n\\n<div class=\\\"section pt-0 container-fluid d-flex flex-column overflow-hidden\\\">\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-md-6 p-0\\\">\\n      <div class=\\\"toolbar bg-green flex-column\\\">\\n        <h4 class=\\\"title text-white\\\">\\n          Dados do Paciente\\n        </h4>\\n      </div>\\n      <section class=\\\"p-50 pl-80 patient\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-md-12\\\">\\n            <div class=\\\"label\\\">\\n              <ng-container *ngIf=\\\"prescription.patient as patient\\\">\\n                <div class=\\\"label\\\">\\n                  Nome: <span class=\\\"regular\\\">{{ patient.name }}</span>\\n                </div>\\n                <div class=\\\"label mt-15\\\">\\n                  CPF: <span class=\\\"regular\\\">{{ patient.cpf | mask: '000.000.000-00' }}</span>\\n                </div>\\n              </ng-container>\\n            </div>\\n            <ng-container *ngIf=\\\"prescription.healthProfessional as healthProfessional\\\">\\n              <div class=\\\"label mt-38\\\">\\n                {{ getProfessionalTypeName() }}:\\n                <span class=\\\"regular\\\">{{ healthProfessional.name }}</span>\\n              </div>\\n              <div class=\\\"label mt-15\\\">\\n                {{ healthProfessional.regionalCouncilNumber?.label }}:\\n                <span class=\\\"regular\\\"\\n                  >{{ healthProfessional.regionalCouncilNumber?.number }}/{{\\n                    healthProfessional.regionalCouncilNumber?.uf\\n                  }}</span\\n                >\\n              </div>\\n              <div class=\\\"label mt-15\\\">\\n                Especialidade:\\n                <span class=\\\"regular\\\">{{ getSpecialties() }}</span>\\n              </div>\\n            </ng-container>\\n          </div>\\n        </div>\\n      </section>\\n    </div>\\n    <div class=\\\"col-md-6 p-0\\\">\\n      <div class=\\\"toolbar bg-gray-black flex-column\\\">\\n        <h4 class=\\\"title text-white\\\">\\n          Dados da Receita\\n        </h4>\\n      </div>\\n      <section class=\\\"bg-secondary prescription\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-md-12\\\">\\n            <div class=\\\"row\\\">\\n              <div class=\\\"col-md-6\\\">\\n                <span class=\\\"code\\\">Código:</span>\\n                <span class=\\\"font-xl-36 font-light ml-1\\\">{{ prescription.code }}</span>\\n              </div>\\n              <div class=\\\"col-md-6\\\">\\n                <div class=\\\"download-pdf\\\" (click)=\\\"downloadPrescriptionPdf(prescription)\\\">\\n                  <i\\n                    nz-icon\\n                    nzType=\\\"file-pdf\\\"\\n                    nzTheme=\\\"twotone\\\"\\n                    nzTwotoneColor=\\\"#B22222\\\"\\n                    class=\\\"icon-pdf\\\"\\n                  ></i\\n                  ><br />\\n                  <span>Clique para baixar o documento assinado</span>\\n                </div>\\n              </div>\\n            </div>\\n\\n            <h4 class=\\\"subtitle mt-38\\\">\\n              Selecione abaixo as unidades de medicamentos que deseja vender. Ao confirmar a venda os\\n              medicamentos selecionados serão retidos no sistema.\\n            </h4>\\n            <label\\n              (ngModelChange)=\\\"checkAll($event)\\\"\\n              [(ngModel)]=\\\"allChecked\\\"\\n              [nzIndeterminate]=\\\"indeterminate\\\"\\n              class=\\\"custom-check select-all\\\"\\n              nz-checkbox\\n              >SELECIONAR TODOS</label\\n            >\\n          </div>\\n        </div>\\n\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-md-12\\\">\\n            <ng-container *ngFor=\\\"let medicament of prescription.medicaments; let i = index\\\">\\n              <div class=\\\"medication-container d-flex align-items-center\\\">\\n                <label\\n                  [(ngModel)]=\\\"medicament.valid\\\"\\n                  (nzCheckedChange)=\\\"refreshStatus()\\\"\\n                  class=\\\"custom-check mr-1 align-self-start\\\"\\n                  [nzDisabled]=\\\"medicament?.availableQuantity === 0\\\"\\n                  nz-checkbox\\n                ></label>\\n                <div class=\\\"medication\\\">\\n                  <pre><h4 class=\\\"title mb-0\\\">{{ i + 1 }} - {{ medicament?.name }}</h4></pre>\\n                  <pre\\n                    *ngIf=\\\"medicament?.description\\\"\\n                  ><p class=\\\"mb-0 description\\\">{{ medicament?.description }}</p></pre>\\n                  <pre>Posologia: {{ medicament?.dosage }}</pre>\\n                  <app-auto-width-input-number\\n                    [(ngModel)]=\\\"medicament.availableQuantity\\\"\\n                    [id]=\\\"'quantidade_' + i\\\"\\n                    [max]=\\\"quantities[i]\\\"\\n                    [disabled]=\\\"medicament?.availableQuantity === 0\\\"\\n                  >\\n                  </app-auto-width-input-number>\\n                </div>\\n              </div>\\n            </ng-container>\\n          </div>\\n        </div>\\n      </section>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"footer bg-dark d-flex align-items-center fixed-bottom justify-content-end\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-success\\\" (click)=\\\"changeRoute()\\\" theme>\\n      Voltar\\n      <i class=\\\"fa fa-undo\\\"></i>\\n    </button>\\n    <button type=\\\"button\\\" class=\\\"btn btn-success\\\" (click)=\\\"openModalBuyerData()\\\" theme>\\n      VALIDAR SELEÇÃO {{ checkedNumber ? '(' + checkedNumber + ')' : '' }}\\n      <i class=\\\"fa fa-arrow-right\\\"></i>\\n    </button>\\n  </div>\\n</div>\\n\";","import { distinctUntilChanged } from 'rxjs/operators';\nimport { Component, NgZone, OnInit, TemplateRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\nimport { ModalBuyerDataComponent } from '@app/shared/modals/modal-buyer-data/modal-buyer-data.component';\nimport { HealthProfessional } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { Prescription } from '@app/shared/models/prescription';\nimport { Retention } from '@app/shared/models/retention';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { PrescriptionService } from '../../services/prescription.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { CrService } from '../../services/cr.service';\n\n@Component({\n  selector: 'app-confirmation',\n  templateUrl: './confirmation.component.html',\n  styleUrls: ['./confirmation.component.scss']\n})\nexport class ConfirmationComponent implements OnInit {\n  quantidade = 1;\n  allChecked = false;\n  indeterminate = false;\n  prescription: Prescription = new Prescription();\n  prescriptionCode;\n  medications;\n  quantities = [];\n  checkedNumber: number;\n  loading = false;\n  completeUser: any;\n  pharmacyId: any;\n\n  constructor(\n    private router: Router,\n    private route: ActivatedRoute,\n    private authService: AuthService,\n    private prescriptionService: PrescriptionService,\n    private notification: AppToastService,\n    private pharmacyService: PharmacyService,\n    private modalService: NzModalService,\n    private ngZone: NgZone,\n    private crService: CrService,\n    private toast: AppToastService\n  ) {\n    const state = this.router.getCurrentNavigation().extras.state;\n    if (state) {\n      this.prescription = state.prescription;\n      this.prescriptionCode = this.prescription.code;\n    }\n  }\n\n  @nativeAsync\n  async ngOnInit() {\n    this.loading = true;\n\n    this.route.params.subscribe(params => {\n      this.prescriptionCode = params['param'];\n    });\n    await this.getCompleteUser();\n\n    this.prescription = await this.prescriptionService\n      .getPrescriptionbyCode(this.prescriptionCode)\n      .toPromise();\n\n    this.updateMedicaments();\n\n    this.quantities = this.prescription.medicaments.map(m => m.availableQuantity);\n    this.loading = false;\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  refreshStatus(): void {\n    const allChecked = this.prescription.medicaments.every(value => value.valid === true);\n    const allUnChecked = this.prescription.medicaments.every(value => !value.valid);\n    this.allChecked = allChecked;\n    this.indeterminate = !allChecked && !allUnChecked;\n    this.checkedNumber = this.prescription.medicaments.filter(value => value.valid).length;\n  }\n\n  @nativeAsync\n  private async getCompleteUser() {\n    try {\n      this.loading = true;\n      const userType = this.user.userType;\n\n      switch (userType) {\n        case 'pharmacy':\n          this.completeUser = await this.pharmacyService.getPharmacyByUserId(this.user._id).toPromise();\n          this.pharmacyId = this.completeUser._id;\n          break;\n        default:\n          const extraData = JSON.parse(localStorage.getItem('extra_data'));\n          this.pharmacyId = extraData.pharmacyId;\n      }\n\n      this.loading = false;\n    } catch (error) {\n      this.loading = false;\n      console.log(error);\n    }\n  }\n\n  checkAll(value: boolean): void {\n    this.prescription.medicaments.forEach(data => {\n      if (data.availableQuantity > 0) {\n        data.valid = value;\n      }\n    });\n    this.refreshStatus();\n  }\n\n  getSpecialties() {\n    return this.prescription.healthProfessional.specialties.map(s => s.title).join(', ');\n  }\n\n  openModalBuyerData() {\n    const medicinesRetained = this.prescription.medicaments.filter(m => m.valid);\n    if (medicinesRetained.length === 0) {\n      this.notification.notify('warning', 'Aviso', 'Selecione um medicamento');\n    } else {\n      const modal = this.modalService.create({\n        nzContent: ModalBuyerDataComponent,\n        nzComponentParams: {\n          patient: this.prescription.patient\n        },\n        nzTitle: null,\n        nzFooter: null,\n        nzWidth: 900\n      });\n      this.ngZone.run(() => {\n        modal.afterOpen.pipe(distinctUntilChanged()).subscribe(() => {\n          const instance = modal.getContentComponent();\n          if (instance) {\n            instance.saveRetention.subscribe(cpf => {\n              this.saveRetentionFeedback(cpf, medicinesRetained);\n              modal.close();\n            });\n          }\n        });\n      });\n    }\n  }\n\n  @nativeAsync\n  async saveRetentionFeedback(cpfBuyer: string, medicinesRetained: any[]) {\n    const cpf = cpfBuyer.replace(/[^\\d]+/g, '');\n    await this.confirm(cpf, medicinesRetained);\n  }\n\n  @nativeAsync\n  async confirm(cpfBuyer: string, medicinesRetained: any[]) {\n    const retention = {\n      cpfBuyer,\n      medicinesRetained\n    };\n\n    this.prescriptionService\n      .confirm(retention, this.pharmacyId, this.prescriptionCode)\n      .then((res: Retention) => {\n        this.router.navigate([`prescription/confirmation/successful/${res.dispensationCode}`]);\n      });\n  }\n\n  changeRoute() {\n    window.location.href = '/dashboard';\n  }\n\n  downloadPrescriptionPdf(prescription) {\n    this.prescriptionService.downloadPrescriptionPdf(prescription.code);\n  }\n\n  getProfessionalTypeName() {\n    return HealthProfessional.getProfessionalTypeName(\n      this.prescription.healthProfessional.professionalType\n    );\n  }\n\n  async updateMedicaments() {\n    for await (const medicament of this.prescription.medicaments) {\n      if (!!medicament.ean) {\n        try {\n          const medicamentsCR = await this.crService.searchMedicament(medicament.ean).toPromise();\n          if (medicamentsCR.length > 0) {\n            const medicamentCR = medicamentsCR[0];\n            medicament.name = medicamentCR.nome;\n            medicament.prescriptionTypeId = medicamentCR.prescriptionTypeId;\n            medicament.typeCr = medicamentCR.typeCr;\n            medicament.type = 'industrialized';\n            medicament.laboratory = medicamentCR.laboratorio;\n            medicament.description = medicamentCR.apresentacaoCustomizada;\n            medicament.medicamentId = medicamentCR.id;\n            medicament.principle = medicamentCR.principio;\n          }\n        } catch (error) {\n          console.log(error);\n          this.toast.notify('error', 'Erro ao consultar dados do medicamento.');\n        }\n      } else {\n        medicament.type = 'free-text';\n      }\n    }\n  }\n}\n","export default \".toolbar {\\n  height: 10.94rem;\\n  display: flex;\\n}\\n.toolbar .title {\\n  font-size: 50px;\\n  margin-bottom: 32px;\\n  padding: 40px 15px 15px 35px;\\n  text-align: center;\\n}\\n.footer {\\n  padding: 0;\\n  border: 0;\\n  z-index: 1;\\n}\\n.footer .btn {\\n  box-shadow: none;\\n  border-radius: 0;\\n  height: 100%;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding-top: 0.725rem;\\n}\\n.footer .btn i {\\n  margin-left: 10px;\\n}\\n.footer .btn i:before {\\n  font-size: 16px;\\n}\\n.prescription {\\n  padding: 50px 50px 50px 30px;\\n}\\n.prescription .label,\\n.prescription .subtitle {\\n  color: #4d4d4d;\\n  font-family: \\\"prolight\\\", sans-serif;\\n  font-size: 18px;\\n  padding-left: 0px;\\n}\\n.prescription .code {\\n  font-family: \\\"probold\\\";\\n}\\n.prescription .prescription-code {\\n  line-height: 1;\\n}\\n.patient {\\n  padding-top: 5.5rem !important;\\n}\\n.patient .label,\\n.patient .subtitle {\\n  color: #6f6f6f;\\n  font-family: \\\"probold\\\";\\n  font-size: 18px;\\n  padding-left: 0px;\\n}\\n.patient .regular {\\n  font-family: \\\"proregular\\\";\\n  text-transform: none;\\n}\\n.label {\\n  font-size: 18px;\\n  text-transform: uppercase;\\n}\\n.barcode img:last-of-type {\\n  margin-top: -10px;\\n}\\n.custom-check {\\n  font-size: 14px;\\n  font-family: \\\"probold\\\";\\n  color: #0b6054;\\n}\\n.custom-check.select-all ::ng-deep:not(.ant-checkbox-indeterminate) .ant-checkbox-inner {\\n  background-color: #0b6054;\\n}\\n.custom-check.select-all ::ng-deep.ant-checkbox-indeterminate .ant-checkbox-inner:after {\\n  background-color: #0b6054;\\n}\\n.custom-check.select-all ::ng-deep .ant-checkbox-checked .ant-checkbox-inner {\\n  border-color: #0b6054;\\n}\\n.custom-check ::ng-deep .ant-checkbox-inner {\\n  background-color: #fff;\\n  border: 2px solid #0b6054;\\n}\\n.custom-check ::ng-deep .ant-checkbox-checked .ant-checkbox-inner {\\n  background-color: #0b6054;\\n}\\n.medication-container {\\n  padding-left: 0;\\n}\\n.medication-container .custom-check {\\n  margin-top: 4px;\\n}\\n.medication-container:hover {\\n  background-color: transparent;\\n}\\n.uppercase {\\n  text-transform: uppercase !important;\\n}\\n.download-pdf {\\n  font-size: 40px;\\n  cursor: pointer;\\n}\\n.download-pdf span {\\n  font-size: 12px;\\n  text-transform: none !important;\\n  color: #000000;\\n  font-weight: bolder;\\n}\\n.icon-pdf {\\n  font-size: 40px;\\n  margin-left: 80px;\\n  cursor: pointer;\\n}\";","export default \"<div class=\\\"page-content\\\">\\n  <app-navigation [brandBackGround]=\\\"false\\\" navbarBackGround=\\\"bg-primary\\\" title=\\\"Informações da Receita\\\">\\n  </app-navigation>\\n  <section class=\\\"container-fluid\\\">\\n    <div class=\\\"row\\\">\\n      <div class=\\\"col sucessfull bg-green full-height\\\">\\n        <h4 class=\\\"title text-white\\\">\\n          Venda/retenção confirmada com sucesso!\\n        </h4>\\n        <div class=\\\"code text-white\\\">\\n          <span class=\\\"title-2\\\">CÓDIGO DE DISPENSAÇÃO</span>\\n          <span class=\\\"codeNumber\\\">{{ retention?.dispensationCode }}</span>\\n        </div>\\n        <br />\\n        <div class=\\\"code text-white\\\">\\n          <span class=\\\"title-2\\\">CÓDIGO DA RECEITA</span>\\n          <span class=\\\"codeNumber\\\">{{ retention?.prescription?.code }}</span>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"col data-col\\\">\\n        <div class=\\\"toolbar bg-gray-black data-height text-white title\\\">\\n          <span>DADOS PARA EXPORTAÇÃO SNGPC:</span>\\n          <br />\\n          <div class=\\\"row\\\">\\n            <div class=\\\"col\\\">\\n              <span>PACIENTE</span>\\n              <br />\\n              <div class=\\\"data\\\">\\n                <span>{{ retention?.prescription?.patient?.name }}</span\\n                ><br />\\n                <span>\\n                  {{ retention?.prescription?.patient?.address.street }}, nº\\n                  {{ retention?.prescription?.patient?.address.number }}\\n                  {{ retention?.prescription?.patient?.address.complement }},\\n                  {{ retention?.prescription?.patient?.address.city }}/\\n                  {{ retention?.prescription?.patient?.address.uf }} </span\\n                ><br />\\n                <span>{{ getAgePatient() }} Anos</span> <br />\\n                <span\\n                  >Gênero:\\n                  {{ retention?.prescription?.patient?.sex === 'M' ? 'Masculino' : 'Feminino' }}</span\\n                >\\n                <br />\\n              </div>\\n            </div>\\n            <div class=\\\"col\\\">\\n              <span>COMPRADOR</span>\\n              <br />\\n              <div class=\\\"data\\\">\\n                <span>{{ buyer?.name }}</span\\n                ><br />\\n                <span>\\n                  {{ buyer?.address?.street }}, nº {{ buyer?.address?.number }}\\n                  {{ buyer?.address?.complement }}, {{ buyer?.address?.city }}/\\n                  {{ buyer?.address?.uf }} </span\\n                ><br />\\n                <span *ngIf=\\\"buyer?.telephone\\\">Tel: {{ buyer?.telephone | formattedTel }}<br /></span>\\n                <span *ngIf=\\\"buyer?.cellphone\\\">Cel: {{ buyer?.cellphone | formattedCel }}<br /></span>\\n                <span>RG {{ buyer?.identity }}</span>\\n              </div>\\n            </div>\\n          </div>\\n          <br />\\n\\n          <span>PRESCRITOR</span>\\n          <br />\\n          <div class=\\\"data\\\">\\n            <span>{{ getPreWriterInfo(retention?.prescription)?.name }}</span\\n            ><br />\\n            <span\\n              >{{ getPreWriterInfo(retention?.prescription)?.regionalCouncil.label }}:\\n              {{ getPreWriterInfo(retention?.prescription)?.regionalCouncil.number }}/{{\\n                getPreWriterInfo(retention?.prescription)?.regionalCouncil.uf\\n              }} </span\\n            ><br />\\n            <span>\\n              {{ retention?.prescription?.local?.address.street }}, nº\\n              {{ retention?.prescription?.local?.address.number }}\\n              {{ retention?.prescription?.local?.address.complement }},\\n              {{ retention?.prescription?.local?.address.city }}/\\n              {{ retention?.prescription?.local?.address.uf }} </span\\n            ><br />\\n            <span *ngIf=\\\"retention?.prescription?.healthProfessional.telephone\\\"\\n              >Tel: {{ retention?.prescription?.healthProfessional.telephone | formattedTel }}</span\\n            ><br />\\n            <span *ngIf=\\\"retention?.prescription?.healthProfessional.cellphone\\\"\\n              >Cel: {{ retention?.prescription?.healthProfessional.cellphone | formattedCel }}</span\\n            >\\n          </div>\\n          <br />\\n        </div>\\n\\n        <div class=\\\"listing\\\">\\n          <div class=\\\"text-black medicaments\\\">MEDICAMENTOS</div>\\n          <div class=\\\"text-black medicaments\\\" *ngFor=\\\"let medicament of retention?.medicaments\\\">\\n            <span class=\\\"title-2 name\\\">{{ medicament.name }} - {{ medicament.principle }}</span>\\n            <span class=\\\"title-2 name\\\">Posologia: {{ medicament.dosage }}</span>\\n            <div class=\\\"quantity text-white\\\">\\n              <span class=\\\"title\\\">QUANTIDADE</span>\\n              <span class=\\\"number\\\">{{ medicament.quantityRetained }}</span>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div class=\\\"btns\\\">\\n          <div class=\\\"btn-medicament\\\" *ngIf=\\\"retention?.prescription?.amountOfMedicines\\\">\\n            <button class=\\\"btn btn-primary btn-md register-btn other-medicament\\\" (click)=\\\"retainAgain()\\\">\\n              SELECIONAR OUTRO MEDICAMENTO\\n            </button>\\n          </div>\\n          <div class=\\\"btn-prescription\\\">\\n            <button class=\\\"btn btn-primary btn-md register-btn other-prescription\\\" (click)=\\\"openModal()\\\">\\n              SELECIONAR OUTRA RECEITA\\n            </button>\\n          </div>\\n          <div class=\\\"btn-prescription\\\">\\n            <button\\n              class=\\\"btn btn-primary btn-md register-btn other-prescription\\\"\\n              (click)=\\\"changeRoute('dashboard')\\\"\\n            >\\n              FINALIZAR\\n            </button>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </section>\\n  <app-footer></app-footer>\\n</div>\\n\";","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ModalSearchComponent } from '@app/shared/modals/modal-search/modal-search.component';\nimport { Buyer, HealthProfessional } from '@app/shared/models';\nimport { Retention } from '@app/shared/models/retention';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { BuyerService } from '../../services/buyer.service';\nimport { RetentionService } from '../../services/retention.service';\n\n@Component({\n  selector: 'app-retention-confirmation',\n  templateUrl: './retention-confirmation.component.html',\n  styleUrls: ['./retention-confirmation.component.scss']\n})\nexport class RetentionConfirmationComponent implements OnInit {\n  retention: Retention;\n  buyer: Buyer;\n  medicamentsRetained;\n  modalRef: BsModalRef;\n\n  constructor(\n    private router: Router,\n    private route: ActivatedRoute,\n    private modalService: BsModalService,\n    private retentionService: RetentionService,\n    private buyerService: BuyerService\n  ) {}\n\n  ngOnInit() {\n    this.route.params.subscribe(async params => {\n      const dispensationCode = params['dispensationCode'];\n      this.retention = await this.retentionService.getRetentionByCode(dispensationCode).toPromise();\n      this.setInfoInMedicamentsRetained();\n      if (this.retention.prescription.patient.cpf === this.retention.cpfBuyer) {\n        this.buyer = new Buyer();\n        this.buyer.name = this.retention.prescription.patient.name;\n        this.buyer.cpf = this.retention.prescription.patient.cpf;\n        this.buyer.address = this.retention.prescription.patient.address;\n        this.buyer.telephone = this.retention.prescription.patient.telephone;\n        this.buyer.cellphone = this.retention.prescription.patient.cellphone;\n        this.buyer.identity = this.retention.prescription.patient.identity;\n      } else {\n        this.buyer = await this.buyerService.getBuyerByCpf(this.retention.cpfBuyer).toPromise();\n      }\n    });\n  }\n\n  setInfoInMedicamentsRetained() {\n    for (const medicamentRetained of this.retention.medicaments) {\n      const medicament = this.retention.prescription.medicaments.filter(\n        m => m.ean === medicamentRetained.ean\n      )[0];\n      medicamentRetained.name = medicament.name;\n      medicamentRetained.principle = medicament.principle;\n      medicamentRetained.dosage = medicament.dosage;\n    }\n  }\n\n  getPreWriterInfo(prescription) {\n    const preWriter = {\n      name: '',\n      cpf: '',\n      label: '',\n      regionalCouncil: { label: '', number: 0, uf: '' },\n      specialties: '',\n      contact: ''\n    };\n\n    if (prescription) {\n      preWriter.label = HealthProfessional.getProfessionalTypeName(\n        prescription.healthProfessional.professionalType\n      );\n      preWriter.name = prescription.healthProfessional.name;\n      preWriter.cpf = prescription.healthProfessional.cpf;\n      preWriter.regionalCouncil.label = HealthProfessional.getRegionalCouncilLabel(\n        prescription.healthProfessional.professionalType\n      );\n      preWriter.regionalCouncil.number = prescription.healthProfessional.regionalCouncilNumber.number;\n      preWriter.regionalCouncil.uf = prescription.healthProfessional.regionalCouncilNumber.uf;\n    }\n\n    return preWriter;\n  }\n\n  getAgePatient() {\n    if (\n      this.retention !== undefined &&\n      this.retention.prescription.patient &&\n      this.retention.prescription.patient.dateOfBirth\n    ) {\n      const nascimento = new Date(this.retention.prescription.patient.dateOfBirth);\n      const hoje = new Date();\n      let diferencaAnos = hoje.getFullYear() - nascimento.getFullYear();\n      if (\n        new Date(hoje.getFullYear(), hoje.getMonth(), hoje.getDate()) <\n        new Date(hoje.getFullYear(), nascimento.getMonth(), nascimento.getDate())\n      ) {\n        diferencaAnos--;\n      }\n      return diferencaAnos;\n    }\n    return 0;\n  }\n\n  retainAgain() {\n    this.router.navigate([`prescription/confirmation/${this.retention.prescription.code}`]);\n  }\n\n  validatePrescription() {\n    this.modalRef.hide();\n    const prescriptionCode = (<HTMLInputElement>document.getElementById('prescriptionCode')).value;\n    localStorage.setItem('prescriptionCode', prescriptionCode);\n    this.router.navigate([`/prescription/confirmation/${prescriptionCode}`]);\n  }\n\n  getMedicamentsRetained(prescription) {\n    const medicaments = prescription.medicaments;\n    const retention = prescription.retention;\n  }\n\n  openModal() {\n    this.modalRef = this.modalService.show(ModalSearchComponent, {\n      backdrop: 'static',\n      keyboard: false\n    });\n  }\n\n  async changeRoute(route: string) {\n    this.router.navigate([`/${route}`]);\n  }\n}\n","export default \".full-height {\\n  min-height: calc(95.3vh - 100px);\\n}\\n\\n.data-height {\\n  min-height: calc(120vh - 465px);\\n}\\n\\n.sucessfull {\\n  padding-left: 0px;\\n  padding-right: 0px;\\n  padding: 40px 0px 0px 35px;\\n}\\n\\n.sucessfull .title {\\n  font-size: 50px;\\n  margin-bottom: 100px;\\n}\\n\\n.sucessfull .code {\\n  display: grid;\\n}\\n\\n.sucessfull .code .codeNumber {\\n  font-size: 42px;\\n  font-family: \\\"prolight\\\";\\n}\\n\\n.text-white .export-data {\\n  font-family: \\\"probold\\\";\\n  font-size: 18px;\\n}\\n\\n.text-white .patient,\\n.text-white .prescriber {\\n  font-family: \\\"probold\\\";\\n}\\n\\n.title-2 {\\n  font-size: 15px;\\n  font-family: \\\"probold\\\";\\n}\\n\\n.data-col {\\n  padding-left: 0px;\\n  padding-right: 0px;\\n}\\n\\n.data-col .toolbar {\\n  padding-left: 15px;\\n  padding-top: 35px;\\n}\\n\\n.data-col .toolbar .data {\\n  font-family: \\\"prolight\\\";\\n}\\n\\n.data-col .listing {\\n  overflow: overlay;\\n  height: 18vh;\\n}\\n\\n.data-col .listing .medicaments {\\n  display: grid;\\n  padding-left: 15px;\\n  padding-top: 13px;\\n}\\n\\n.data-col .listing .medicaments .name {\\n  font-size: 14px;\\n  color: #363636;\\n}\\n\\n.data-col .listing .medicaments .description {\\n  font-size: 11px;\\n  color: #363636c4;\\n}\\n\\n.data-col .listing .medicaments .quantity {\\n  font-size: 10px;\\n  font-family: \\\"probold\\\";\\n}\\n\\n.data-col .listing .medicaments .quantity .title {\\n  padding: 2px 13px;\\n  background-color: #363636b3;\\n}\\n\\n.data-col .listing .medicaments .quantity .number {\\n  padding: 2px 6px;\\n  background-color: #36363659;\\n}\\n\\n.data-col .btns {\\n  padding-top: 0px;\\n  background-color: #80808030;\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  height: 52px;\\n  font-size: 10px;\\n  position: absolute;\\n  width: 100%;\\n  bottom: 0px;\\n}\\n\\n.data-col .btns .btn-medicament {\\n  margin-right: 10px;\\n}\\n\\n.data-col .btns .btn-medicament .other-medicament {\\n  background-color: #363636;\\n  font-family: \\\"probold\\\";\\n  font-size: 10.5px;\\n}\\n\\n.data-col .btns .btn-prescription {\\n  margin-left: 10px;\\n}\\n\\n.data-col .btns .btn-prescription .other-prescription {\\n  background-color: #5ce1c2;\\n  border-color: #5ce1c2;\\n  font-family: \\\"probold\\\";\\n  font-size: 10.5px;\\n  color: #363636;\\n}\\n\\n.page-content {\\n  overflow: hidden;\\n  padding-bottom: 0px;\\n}\\n\\n.select-model {\\n  display: flex;\\n  border: solid 4px blue;\\n}\\n\\n.modal-header {\\n  background-color: #4cbca3;\\n  font-family: \\\"probold\\\";\\n}\\n\\n.modal-body {\\n  padding: 0px;\\n  height: 170px;\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n}\\n\\n.modal-body input {\\n  width: 320px;\\n  height: 35px;\\n  font-family: \\\"prolight\\\";\\n  font-size: 12px;\\n}\\n\\n.modal-body label {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  position: relative;\\n  z-index: 1;\\n  right: 33px;\\n  top: 2px;\\n  font-size: 15px;\\n  margin: 0px;\\n  width: 30px;\\n}\\n\\n.modal-body label i {\\n  cursor: pointer;\\n}\";","export default \"<app-alternative-navbar title=\\\"Receitas\\\" titleIcon=\\\"fas fa-list-ul\\\"></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n\\n<div class=\\\"container\\\">\\n  <div class=\\\"listing\\\">\\n    <nz-card *ngFor=\\\"let prescription of prescriptions\\\" [nzBordered]=\\\"false\\\" theme>\\n      <nz-tabset [nzTabBarExtraContent]=\\\"cardPrescription\\\">\\n        <nz-tab nzTitle=\\\"Receita\\\">\\n          <p><span class=\\\"bold\\\">Código da receita: </span>{{ prescription.code }}</p>\\n          <p>\\n            <span class=\\\"bold\\\">Data de emissão: </span\\n            >{{ prescription.createdAt | date: 'dd/MM/yyyy, HH:mm' }}\\n          </p>\\n          <p>\\n            <span class=\\\"bold\\\">Quantidade de medicamentos: </span>\\n            {{ prescription?.amountOfMedicines }}\\n          </p>\\n        </nz-tab>\\n        <nz-tab\\n          *ngIf=\\\"prescription.healthProfessional as healthProfessional\\\"\\n          [nzTitle]=\\\"getProfessionalTypeName(healthProfessional.professionalType)\\\"\\n        >\\n          <p><span class=\\\"bold\\\">Nome: </span>{{ healthProfessional.name }}</p>\\n          <p>\\n            <span class=\\\"bold\\\">{{ healthProfessional.regionalCouncilNumber.label }}: </span\\n            >{{ healthProfessional.regionalCouncilNumber?.number }} -\\n            {{ healthProfessional.regionalCouncilNumber?.uf }}\\n          </p>\\n          <p *ngIf=\\\"prescription.local as local\\\">\\n            <span class=\\\"bold\\\">Endereço: </span>{{ local.name }} - {{ local.address?.city }} /\\n            {{ local.address?.uf }}\\n          </p>\\n        </nz-tab>\\n        <nz-tab *ngIf=\\\"prescription.patient as patient\\\" nzTitle=\\\"Paciente\\\">\\n          <p><span class=\\\"bold\\\">Nome: </span>{{ patient.name }}</p>\\n          <p><span class=\\\"bold\\\">CPF: </span>{{ patient.cpf }}</p>\\n          <p>\\n            <span class=\\\"bold\\\">Endereço: </span>{{ patient.address?.city }} -\\n            {{ patient.address?.uf }}\\n          </p>\\n        </nz-tab>\\n      </nz-tabset>\\n\\n      <ng-template #cardPrescription>\\n        <button (click)=\\\"changeRoute(prescription.code)\\\" class=\\\"btn btn-success\\\" theme>\\n          Abrir receita\\n        </button>\\n      </ng-template>\\n    </nz-card>\\n  </div>\\n</div>\\n<div class=\\\"bg-dark-green\\\"></div>\\n\";","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { HealthProfessional } from '@app/shared/models/health-professional';\nimport { Prescription } from '@app/shared/models/prescription';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { PrescriptionService } from '../../services/prescription.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-listing',\n  templateUrl: './listing.component.html',\n  styleUrls: ['./listing.component.scss']\n})\nexport class ListingComponent implements OnInit {\n  initLoading = true;\n  loadingMore = false;\n  prescriptions: Prescription[];\n  showPrescriptionTab: Boolean = true;\n  showDoctorTab: Boolean = false;\n  showPatientTab: Boolean = false;\n\n  constructor(\n    private router: Router,\n    private route: ActivatedRoute,\n    private prescriptionService: PrescriptionService,\n    private notification: AppToastService\n  ) {\n    const state = this.router.getCurrentNavigation().extras.state;\n    if (state) {\n      this.prescriptions = state.prescriptions;\n    }\n  }\n\n  ngOnInit() {\n    if (!this.prescriptions) {\n      this.route.params.subscribe(params => {\n        const param = params['param'];\n        this.requests(param);\n      });\n    }\n  }\n\n  @nativeAsync\n  private async requests(param: string) {\n    this.prescriptions = await this.prescriptionService.getPrescriptionsPatient(param).toPromise();\n  }\n\n  changeRoute(prescriptionCode) {\n    this.router.navigate(['/prescription/confirmation', prescriptionCode]);\n    this.notification.notify(\n      'warning',\n      'Atenção',\n      'Esta prescrição só é válida mediante o registro da dispensação.'\n    );\n  }\n\n  getProfessionalTypeName(professionalType: string) {\n    return HealthProfessional.getProfessionalTypeName(professionalType);\n  }\n}\n","export default \".container {\\n  display: flex;\\n  justify-content: center;\\n}\\n\\n.listing {\\n  z-index: 4;\\n  overflow: overlay;\\n  width: 500px;\\n  height: 500px;\\n  margin-top: 30px;\\n}\\n\\n.bg-dark-green {\\n  background-color: #0b6054;\\n  height: 280px;\\n  position: absolute;\\n  width: 100%;\\n  bottom: 0px;\\n}\\n\\nnz-card {\\n  border: solid;\\n  border-color: #e8e8e8;\\n  border-width: 1px;\\n  margin-bottom: 10px;\\n}\\n\\nnz-card p {\\n  margin-bottom: 0px;\\n}\\n\\nnz-card p .bold {\\n  font-weight: 600;\\n}\\n\\nnz-tabset .ant-tabs-tab {\\n  color: red;\\n}\\n\\n.btn {\\n  height: 32px;\\n  font-size: 13px;\\n  padding-top: 2px;\\n  padding-bottom: 2px;\\n}\";","export default \"<div class=\\\"page-content\\\">\\n  <app-navigation></app-navigation>\\n  <app-sidebar-menu></app-sidebar-menu>\\n  <div class=\\\"upload-content\\\">\\n    <img class=\\\"download-icon\\\" src=\\\"assets/icons/download-solid.svg\\\" />\\n    <span>O download da sua receita foi realizado com sucesso.</span>\\n    <span>\\n      Agora você precisa assinar digitalmente o PDF da receita e depois salvá-la dentro da plataforma.\\n    </span>\\n    <br /><br />\\n    <span\\n      >Obs.: Caso tenha duvidas,\\n      <a target=\\\"_blank\\\" href=\\\"/assets/file/tutorial_sign.pdf\\\">clique aqui</a> para verificar o passo a\\n      passo de como assinar a Receita</span\\n    >\\n    <br />\\n    <span>Salvar o PDF da Receita Assinado</span>\\n    <br />\\n    <input\\n      class=\\\"btn btn-primary text-white mt-50\\\"\\n      type=\\\"file\\\"\\n      (change)=\\\"uploadFile($event)\\\"\\n      placeholder=\\\"Upload file\\\"\\n      accept=\\\".pdf\\\"\\n    />\\n  </div>\\n</div>\\n\\n<app-unsigned-prescription-modal></app-unsigned-prescription-modal>\\n\";","import { Component, ViewChild } from '@angular/core';\nimport { PdfService } from '@app/modules/document/services/pdf.service';\nimport { UnsignedPrescriptionModalComponent } from '@app/modules/document/pages/prescription/unsigned-prescription-modal.component';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component({\n  selector: 'app-upload-pdf',\n  templateUrl: './upload-pdf.component.html',\n  styleUrls: ['./upload-pdf.component.scss']\n})\nexport class UploadPdfComponent {\n  constructor(private pdfService: PdfService, private router: ActivatedRoute) {}\n\n  @ViewChild(UnsignedPrescriptionModalComponent, { static: true })\n  unsignedPrescriptionModal: UnsignedPrescriptionModalComponent;\n\n  uploadFile(event) {\n    const fileList: FileList = event.target.files;\n    this.router.params.subscribe(async params => {\n      const code = params['code'];\n      if (fileList.length > 0) {\n        const file: File = fileList[0];\n        await this.pdfService.postFilePdf(file, code);\n        this.unsignedPrescriptionModal.createTplModal(code);\n      }\n    });\n  }\n}\n","export default \".upload-content {\\n  height: 100vh;\\n  display: flex;\\n  flex-direction: column;\\n  justify-content: center;\\n  align-items: center;\\n  color: #3c3c3c;\\n}\\n.upload-content a {\\n  color: #1ae0c2;\\n}\\n.upload-content .download-icon {\\n  height: 4rem;\\n}\\n.btn-upload {\\n  border: none;\\n  box-sizing: border-box;\\n  background-color: #fff;\\n}\";","export default \"<div class=\\\"page-content\\\">\\n  <app-alternative-navbar></app-alternative-navbar>\\n  <app-sidebar-menu></app-sidebar-menu>\\n  <app-float-button *ngIf=\\\"patientRecordFeature\\\"></app-float-button>\\n\\n  <section class=\\\"section container-fluid prescription d-flex flex-column\\\">\\n    <div class=\\\"row _p-20\\\">\\n      <div class=\\\"hospital-brand doc-type\\\">\\n        <nz-dropdown *ngIf=\\\"!document?.code && !modelId\\\" nzTrigger=\\\"click\\\">\\n          <a nz-dropdown><i class=\\\"fa fa-caret-circle-solid\\\"></i></a>\\n          <ul nz-menu nzSelectable>\\n            <div *ngFor=\\\"let docType of typesOfDocumentsOptions\\\">\\n              <li nz-menu-item (click)=\\\"changeDocumentType(docType)\\\">\\n                <a>{{ docType }}</a>\\n              </li>\\n            </div>\\n          </ul>\\n        </nz-dropdown>\\n        <h4 class=\\\"hospital-name\\\"><span *ngIf=\\\"modelId\\\">Editar modelo de </span>{{ documentType }}</h4>\\n      </div>\\n\\n      <div class=\\\"hospital-brand\\\" *ngIf=\\\"!modelId\\\">\\n        <nz-dropdown nzTrigger=\\\"click\\\">\\n          <a nz-dropdown><i class=\\\"fa fa-caret-circle-solid\\\"></i></a>\\n          <ul nz-menu nzSelectable>\\n            <div *ngFor=\\\"let address of prescriber?.commercialData\\\">\\n              <li nz-menu-item (click)=\\\"changeLocal(address)\\\">\\n                <a>{{ address.name }}</a>\\n              </li>\\n            </div>\\n          </ul>\\n        </nz-dropdown>\\n        <h4 class=\\\"hospital-name\\\">{{ local?.name }}</h4>\\n      </div>\\n\\n      <div class=\\\"hospital-brand\\\">\\n        <div class=\\\"add-prescription add-patient\\\" *ngIf=\\\"!signed && !modelId\\\">\\n          <button\\n            class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n            type=\\\"button\\\"\\n            (click)=\\\"showModalSearch()\\\"\\n          >\\n            <span class=\\\"btn-inner--text\\\">Novo paciente</span>\\n            <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n          </button>\\n        </div>\\n      </div>\\n    </div>\\n\\n    <form [formGroup]=\\\"patientForm\\\">\\n      <ng-container [formGroup]=\\\"patientForm\\\" *ngIf=\\\"!patient\\\">\\n        <nz-form-item>\\n          <nz-form-control>\\n            <input\\n              id=\\\"cpfPatient\\\"\\n              [nzAutocomplete]=\\\"autoName\\\"\\n              appPatientSearch\\n              class=\\\"input-name\\\"\\n              formControlName=\\\"name\\\"\\n              maxlength=\\\"128\\\"\\n              nz-input\\n              [placeholder]=\\\"\\n                isVeterinarian\\n                  ? 'Digite o CPF do responsável para buscar'\\n                  : 'Digite o CPF ou nome completo do paciente para buscar'\\n              \\\"\\n              [disabled]=\\\"signed\\\"\\n            />\\n            <nz-autocomplete #autoName nzBackfill (selectionChange)=\\\"onChangePatient($event.nzValue)\\\">\\n              <nz-auto-option\\n                *ngFor=\\\"let option of patients\\\"\\n                [nzLabel]=\\\"option.cpf !== '-1' ? option?.name || option?.fullname : ''\\\"\\n                [nzValue]=\\\"option\\\"\\n                class=\\\"mao\\\"\\n              >\\n                {{ option?.name || option?.fullname }}\\n                {{ option?.cpf !== '-1' ? (option?.cpf | formattedCpf) : '' }}\\n                <span *ngIf=\\\"option?.responsible\\\"\\n                  >&nbsp;({{ option.responsible.name || option.responsible.fullname }}\\n                  {{ option.responsible.cpf | formattedCpf }})</span\\n                >\\n              </nz-auto-option>\\n            </nz-autocomplete>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </ng-container>\\n\\n      <ng-container *ngIf=\\\"patient\\\">\\n        <div\\n          style=\\\"display: flex;align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 8px;\\\"\\n        >\\n          <nz-form-label>\\n            <span class=\\\"label-name-patient\\\">{{ patient?.name }}</span>\\n          </nz-form-label>\\n          <i\\n            nz-icon\\n            nzType=\\\"close\\\"\\n            nzTheme=\\\"outline\\\"\\n            class=\\\"label-name-patient__icon\\\"\\n            nz-tooltip=\\\"Remover paciente\\\"\\n            (click)=\\\"clearSelectionPatient()\\\"\\n          ></i>\\n        </div>\\n      </ng-container>\\n\\n      <ng-container\\n        [formGroup]=\\\"documentForm\\\"\\n        *ngIf=\\\"modelId && documentForm.value.title != undefined && documentType != typesOfDocuments[3]\\\"\\n      >\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"title\\\">Título<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input nz-input formControlName=\\\"title\\\" [attr.id]=\\\"'title'\\\" />\\n            <nz-form-explain\\n              *ngIf=\\\"documentForm?.get('title').dirty && documentForm?.get('title').errors\\\"\\n            >\\n              <ng-container *ngIf=\\\"documentForm?.get('title').hasError('required')\\\">\\n                Campo obrigatório, por favor digite o título.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </ng-container>\\n\\n      <app-infusion-protocol\\n        *ngIf=\\\"documentType === 'Infusão' && victaFeature\\\"\\n        [infusion]=\\\"document\\\"\\n        [protocolSelected]=\\\"selectedDocumentModel\\\"\\n        (formEmitter)=\\\"documentForm = $event\\\"\\n      ></app-infusion-protocol>\\n\\n      <app-prescription\\n        *ngIf=\\\"documentType === typesOfDocuments[0] && !victaFeature && adding\\\"\\n        [manipulatedProfile]=\\\"manipulatedProfile\\\"\\n        [prescription]=\\\"document\\\"\\n        [prescriptionModel]=\\\"selectedDocumentModel\\\"\\n        [editMode]=\\\"!!modelId\\\"\\n        [patient]=\\\"patient\\\"\\n        [isVeterinarian]=\\\"isVeterinarian\\\"\\n        (formEmitter)=\\\"documentForm = $event\\\"\\n      ></app-prescription>\\n\\n      <app-exam\\n        *ngIf=\\\"documentType === typesOfDocuments[1] && adding\\\"\\n        [exam]=\\\"document\\\"\\n        [patient]=\\\"patient\\\"\\n        [isVeterinarian]=\\\"isVeterinarian\\\"\\n        [examModel]=\\\"selectedDocumentModel\\\"\\n        (formEmitter)=\\\"documentForm = $event\\\"\\n      ></app-exam>\\n\\n      <app-attestation\\n        *ngIf=\\\"documentType === typesOfDocuments[2] && adding\\\"\\n        [patient]=\\\"patient\\\"\\n        [attestationModel]=\\\"selectedDocumentModel\\\"\\n        [attestation]=\\\"document\\\"\\n        [isVeterinarian]=\\\"isVeterinarian\\\"\\n        (formEmitter)=\\\"documentForm = $event\\\"\\n      ></app-attestation>\\n\\n      <app-orientation\\n        *ngIf=\\\"documentType === typesOfDocuments[3] && adding\\\"\\n        [orientation]=\\\"document\\\"\\n        [orientationModel]=\\\"selectedDocumentModel\\\"\\n        [editMode]=\\\"!!modelId\\\"\\n        [patient]=\\\"patient\\\"\\n        [isVeterinarian]=\\\"isVeterinarian\\\"\\n        (formEmitter)=\\\"documentForm = $event\\\"\\n      ></app-orientation>\\n\\n      <div class=\\\"add-prescription\\\" *ngIf=\\\"!signed && !modelId\\\">\\n        <button\\n          (click)=\\\"showVictaProtocols()\\\"\\n          *ngIf=\\\"victaFeature && documentType === 'Infusão'\\\"\\n          class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n          type=\\\"button\\\"\\n        >\\n          <span class=\\\"btn-inner--text\\\">Sugestão de Protocolos</span>\\n          <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n        </button>\\n        <button\\n          *ngIf=\\\"documentType !== 'Infusão'\\\"\\n          (click)=\\\"showModelListFavoriteDocument()\\\"\\n          class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n          type=\\\"button\\\"\\n          [disabled]=\\\"!prescriber\\\"\\n        >\\n          <span class=\\\"btn-inner--text\\\">Selecionar modelo de {{ documentType }}</span>\\n          <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n        </button>\\n        <button\\n          (click)=\\\"showModalAddFavoriteDocument()\\\"\\n          *ngIf=\\\"adding\\\"\\n          class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n          type=\\\"button\\\"\\n        >\\n          <span class=\\\"btn-inner--text\\\">Salvar em favoritos</span>\\n          <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n        </button>\\n        <button\\n          (click)=\\\"toggleAdding()\\\"\\n          *ngIf=\\\"!adding && documentType !== 'Infusão'\\\"\\n          class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n          type=\\\"button\\\"\\n        >\\n          <span class=\\\"btn-inner--text\\\" *ngIf=\\\"!adding || documentType === 'Prescrição'\\\"\\n            >Adicionar {{ documentType }}</span\\n          >\\n          <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-plus\\\"></i></span>\\n        </button>\\n      </div>\\n      <div class=\\\"add-prescription\\\" *ngIf=\\\"modelId\\\">\\n        <button\\n          (click)=\\\"updateDocumentModel(documentForm.value, modelId)\\\"\\n          class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n          type=\\\"button\\\"\\n        >\\n          <span class=\\\"btn-inner--text\\\">Salvar modelo</span>\\n          <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-check\\\"></i></span>\\n        </button>\\n        <button\\n          (click)=\\\"cancelEditModel()\\\"\\n          class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n          type=\\\"button\\\"\\n        >\\n          <span class=\\\"btn-inner--text\\\">Cancelar</span>\\n          <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-times\\\"></i></span>\\n        </button>\\n      </div>\\n    </form>\\n  </section>\\n</div>\\n\\n<div class=\\\"footer d-flex align-items-center fixed-bottom justify-content-between\\\">\\n  <div class=\\\"col\\\">\\n    <div class=\\\"d-flex align-self-center flex-column\\\" *ngIf=\\\"!isMobile\\\">\\n      <div *ngIf=\\\"isThemeActiveReceitaDigital()\\\">\\n        <div class=\\\"d-flex flex-fill justify-content-end\\\">\\n          <a class=\\\"mr-3 helpContainer\\\" href=\\\"https://ajuda.receitadigital.com\\\"\\n            ><i class=\\\"fa fa-comments mr-1\\\"></i>Fale Conosco.</a\\n          >\\n        </div>\\n      </div>\\n    </div>\\n  </div>\\n  <!-- <button\\n    class=\\\"btn\\\"\\n    type=\\\"button\\\"\\n    (click)=\\\"saveAndPreviewPdf()\\\"\\n    [ngClass]=\\\"{ disabled: invalidForm }\\\"\\n    [disabled]=\\\"invalidForm\\\"\\n  >\\n    Salvar e visualizar impressão <i class=\\\"fa fa-arrow-right\\\"></i>\\n  </button> -->\\n  <button\\n    class=\\\"btn disabled\\\"\\n    type=\\\"button\\\"\\n    (click)=\\\"saveAndSignPdf()\\\"\\n    [ngClass]=\\\"{ disabled: invalidForm }\\\"\\n    [disabled]=\\\"invalidForm\\\"\\n  >\\n    Salvar e assinar <i class=\\\"fa fa-arrow-right\\\"></i>\\n  </button>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n<app-modal-send-document></app-modal-send-document>\\n<app-modal-select-layout></app-modal-select-layout>\\n\";","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\n\n@Component({\n  selector: 'app-modal-iframe',\n  templateUrl: './modal-iframe.component.html',\n  styleUrls: ['./modal-iframe.component.scss']\n})\nexport class ModalIframeComponent implements OnInit {\n  public onLoad: Subject<string>;\n\n  src: string;\n  height: number;\n  width: number;\n\n  constructor(public modalRef: BsModalRef) {\n    this.onLoad = new Subject();\n  }\n\n  ngOnInit() {}\n\n  onload(iframe: any) {\n    try {\n      const url = iframe.contentWindow.location.href;\n      this.onLoad.next(url);\n    } catch (e) {\n      this.onLoad.next();\n    }\n  }\n}\n","export default \"<div [style.width.px]=\\\"width\\\">\\n  <div class=\\\"modal-header\\\">\\n    <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button>\\n  </div>\\n  <div class=\\\"modal-body\\\">\\n    <iframe\\n      #iframe\\n      title=\\\"Assinatura Digital\\\"\\n      [src]=\\\"src | safe\\\"\\n      [height]=\\\"height\\\"\\n      [width]=\\\"width\\\"\\n      (load)=\\\"onload(iframe)\\\"\\n    ></iframe>\\n  </div>\\n</div>\\n\";","export default \".modal-header {\\n  background-color: #f5f7fa;\\n  padding: 0px;\\n}\\n\\n.modal-body {\\n  padding: 0px;\\n  display: flex;\\n  align-items: center;\\n  flex-direction: column;\\n  justify-content: center;\\n}\\n\\n.modal-content {\\n  align-items: center !important;\\n}\";","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  HostListener,\n  OnDestroy,\n  OnInit,\n  ViewChild\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { CoreService } from '@app/core/services/core.service';\nimport { PrescriptionService } from '@app/modules/document/services/prescription.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\nimport { ManipulatedProfileService } from '@app/modules/personalized-medications/services/manipulated-profile.service';\nimport { ModalSendDocumentComponent } from '@app/shared/components/modal-send-document/modal-send-document.component';\nimport { DateUtils } from '@app/shared/data/DateUtils';\nimport { Comercial, HealthProfessional, Patient } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { ProfessionalType } from '@app/shared/models/professional-type.enum';\nimport { OnlyNumbersPipe } from '@app/shared/pipes';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { ThemeService } from '@app/theme';\nimport { environment } from '@env/environment';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable, ReplaySubject, of } from 'rxjs';\nimport {\n  catchError,\n  debounceTime,\n  distinctUntilChanged,\n  map,\n  startWith,\n  switchMap,\n  take,\n  takeUntil,\n  tap\n} from 'rxjs/operators';\nimport { ModalSelectPetComponent } from '../patients/pages/modal-select-pet/modal-select-pet.component';\nimport { PetPatientService } from '../patients/services/pet-patient.service';\nimport { ModalAddPatientComponent } from './../patients/pages/modal-add-patient/modal-add-patient.component';\nimport { ModalSearchComponent } from './../patients/pages/modal-search/modal-search.component';\nimport { AttestationService } from './pages/attestation/attestation.service';\nimport { ModalIframeComponent } from './pages/modal-iframe/modal-iframe.component';\nimport { ModalListVictaProtocolComponent } from './pages/modal-list-victa-protocol/modal-list-victa-protocol.component';\nimport { ModalSelectLayoutComponent } from './pages/modal-select-layout/modal-select-layout.component';\nimport { ModelAddFavoriteDocumentComponent } from './pages/model-add-favorite-document/model-add-favorite-document.component';\nimport { ModelListFavoriteDocumentComponent } from './pages/model-list-favorite-document/model-list-favorite-document.component';\nimport { OrientationService } from './pages/orientation/orientation.service';\nimport { AttestationModelService } from './services/attestation-model.service';\nimport { DocumentService } from './services/document.service';\nimport { ExamModelService } from './services/exam-model.service';\nimport { ExamService } from './services/exam.service';\nimport { InfusionService } from './services/infusion.service';\nimport { OrientationModelService } from './services/orientation-model.service';\nimport { PrescriptionModelService } from './services/prescription-model.service';\nimport { VictaProtocolService } from './services/victa-protocol.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { Prescription } from '@app/shared/models/prescription';\nimport { CrService } from './services/cr.service';\nimport { Base64Utils } from '@app/shared/utils/base64.utils';\n\ntype ReponsePlusDocuments = {\n  id: number;\n  downloadLink: string;\n};\n\ntype ReponsePlus = {\n  message: string;\n  documents: ReponsePlusDocuments[];\n};\n\n@Component({\n  selector: 'app-document',\n  templateUrl: './document.component.html',\n  styleUrls: ['./document.component.scss']\n})\nexport class DocumentComponent implements OnInit, OnDestroy, AfterViewInit {\n  actualDate = new Date();\n  nzBackfill = false;\n  isPatientNotFound = false;\n  private patientCpf = '';\n  local: Comercial;\n  search = true;\n  loading = false;\n  signed = false;\n\n  prescriber: HealthProfessional;\n  patient: Patient;\n  patients: Patient[];\n\n  documentForm: FormGroup;\n  patientForm: FormGroup;\n  document: any;\n  manipulatedProfile: any;\n  selectedDocumentModel: any;\n  modelId: any;\n\n  adding = false;\n  typesOfDocuments = ['Prescrição', 'Exame', 'Atestado', 'Outros'];\n  typesOfDocumentsOptions = this.typesOfDocuments;\n  documentTypes: any = {\n    prescription: 'Prescrição',\n    exam: 'Exame',\n    attestation: 'Atestado',\n    orientation: 'Outros'\n  };\n  documentType: string;\n  backendVersion$: Observable<string>;\n  isMobile = false;\n\n  @ViewChild('addPatient')\n  addPatient: any;\n\n  @ViewChild(ModalSendDocumentComponent, { static: true })\n  modalSendDocumentComponent: ModalSendDocumentComponent;\n\n  @ViewChild(ModalSelectLayoutComponent, { static: true })\n  modalSelectLayout: ModalSelectLayoutComponent;\n\n  @ViewChild(ModalIframeComponent, { static: true })\n  modalIframe: ModalIframeComponent;\n\n  private destroyed$: ReplaySubject<boolean> = new ReplaySubject<boolean>();\n\n  @HostListener('window:resize', ['$event'])\n  onResize(event) {\n    this.isMobile = this.coreService.isViewPortMobile();\n  }\n\n  constructor(\n    private router: Router,\n    private route: ActivatedRoute,\n    private fb: FormBuilder,\n    private healthProfessionalService: HealthProfessionalService,\n    private patientService: PatientsService,\n    private petService: PetPatientService,\n    private prescriptionService: PrescriptionService,\n    private attestationService: AttestationService,\n    private examService: ExamService,\n    private orientationService: OrientationService,\n    private infusionService: InfusionService,\n    private prescriptionModelService: PrescriptionModelService,\n    private attestationModelService: AttestationModelService,\n    private examModelService: ExamModelService,\n    private orientationModelService: OrientationModelService,\n    private victaProtocolService: VictaProtocolService,\n    private notification: AppToastService,\n    private authService: AuthService,\n    private documentService: DocumentService,\n    private manipulatedProfileService: ManipulatedProfileService,\n    private modalService: BsModalService,\n    private nzModalService: NzModalService,\n    private themeService: ThemeService,\n    private coreService: CoreService,\n    private cdr: ChangeDetectorRef,\n    private crService: CrService\n  ) {\n    this.documentType = this.typesOfDocuments[0];\n\n    this.documentForm = this.fb.group({});\n    this.patientForm = this.fb.group({\n      _id: [null],\n      cpf: [null],\n      name: ['', [Validators.required]]\n    });\n    this.backendVersion$ = this.coreService.getBackendVersion();\n\n    if (this.victaFeature) {\n      this.typesOfDocuments.push('Infusão');\n      this.documentTypes.infusion = 'Infusão';\n      this.documentType = 'Infusão';\n    }\n  }\n  ngAfterViewInit(): void {\n    this.cdr.detectChanges();\n  }\n\n  @nativeAsync\n  async ngOnInit() {\n    this.loading = true;\n    await this.requests(this.user._id);\n\n    const {\n      code,\n      response,\n      documentType,\n      profileId,\n      patientId,\n      petId\n    } = this.route.snapshot.queryParams;\n    if (code && response && (patientId || petId)) {\n      const responsePlus = Base64Utils.decode<ReponsePlus>(response);\n      if (responsePlus.message === 'Signed OK' || responsePlus.message === 'Signed local OK') {\n        this.modalSendDocumentComponent.createTplModal(code, patientId || petId, { isPet: !!petId });\n      } else {\n        this.notification.notify('error', 'Erro ao assinar documento!');\n        console.log(response);\n        this.router.navigate(['/prescription', code, 'edit']);\n      }\n    }\n\n    if (profileId) {\n      await this.getManipulatedProfile(profileId);\n    }\n\n    const id = this.route.snapshot.params.id || (!response && code);\n    if (id) {\n      try {\n        const document = await this.documentService.getDocument(id, documentType);\n        if (document.document === 'prescription') {\n          await this.updateMedicaments(document);\n        }\n        this.fillForm(document);\n      } catch (err) {\n        console.error(err);\n        this.router.navigate(['/prescription/new']);\n      }\n    }\n\n    this.onChange();\n    this.modelId = this.route.snapshot.params.modelId;\n    const type = this.route.snapshot.params.documentType;\n\n    if (this.modelId) {\n      this.adding = true;\n      this.documentType = this.documentTypes[type];\n      this.selectedDocumentModel = await this.getDocumentModel();\n    } else if (this.documentService.patientForm) {\n      this.adding = true;\n      this.patientForm = this.documentService.patientForm;\n      this.documentService.patientForm = null;\n    }\n\n    this.loading = false;\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  get patientRecordFeature(): boolean {\n    return this.user && !!this.user.features.find(f => f.name === 'Prontuário');\n  }\n\n  get victaFeature(): boolean {\n    return this.user && !!this.user.features.find(f => f.name === 'Victa');\n  }\n\n  get frontendVersion(): string {\n    return this.coreService.frontendVersion;\n  }\n\n  get isVeterinarian(): boolean {\n    return this.prescriber && this.prescriber.professionalType === ProfessionalType.VETERINARIAN;\n  }\n\n  get showCpfText() {\n    return this.patient && !this.patient.cpf ? 'Mostrar CPF do Responsável' : 'Mostrar CPF do Paciente';\n  }\n\n  @nativeAsync\n  private async getManipulatedProfile(profileId) {\n    const manipulatedProfile = await this.manipulatedProfileService\n      .getManipulatedProfileById(profileId)\n      .toPromise();\n    this.patientForm.patchValue({ ...manipulatedProfile.patient });\n    this.manipulatedProfile = manipulatedProfile;\n    this.typesOfDocumentsOptions = [this.typesOfDocuments[0]];\n    this.adding = true;\n    this.patientForm.disable();\n  }\n  @nativeAsync\n  private async getDocumentModel() {\n    let documentsModel: any;\n\n    switch (this.documentType) {\n      case this.typesOfDocuments[0]:\n        documentsModel = await this.prescriptionModelService.getById(this.modelId);\n        break;\n      case this.typesOfDocuments[1]:\n        documentsModel = await this.examModelService.getById(this.modelId);\n        break;\n      case this.typesOfDocuments[2]:\n        documentsModel = await this.attestationModelService.getById(this.modelId);\n        break;\n      case this.typesOfDocuments[3]:\n        documentsModel = await this.orientationModelService.getById(this.modelId);\n        break;\n    }\n    return documentsModel;\n  }\n\n  get examList(): void {\n    if (this.selectedDocumentModel) {\n      return this.selectedDocumentModel.examList;\n    }\n    return this.document && this.document.examList;\n  }\n\n  private fillForm(document: any) {\n    this.documentType = document.type;\n    this.local = document.local;\n\n    this.patientForm.patchValue(document.patient || document.pet);\n    this.patient = document.patient || document.pet;\n\n    this.document = document;\n    if (this.route.snapshot.routeConfig.path === ':id/edit') {\n      this.signed = document.status === 'Assinada';\n      if (document.manipulatedprofile) {\n        this.typesOfDocumentsOptions = [this.typesOfDocuments[0]];\n        this.patientForm.disable();\n      }\n    } else {\n      delete document.code;\n      delete document.status;\n    }\n\n    this.toggleAdding();\n  }\n  @nativeAsync\n  private async requests(userId: string) {\n    const patient = JSON.parse(localStorage.getItem('patient'));\n    if (patient) {\n      this.patientForm.patchValue(patient);\n      this.patient = patient;\n      localStorage.removeItem('patient');\n    }\n    await this.getPrescriberData(userId);\n  }\n  @nativeAsync\n  private async getPrescriberData(userId: string) {\n    this.prescriber = await this.healthProfessionalService.getHealthProfessional(userId).toPromise();\n    this.local = this.prescriber && this.prescriber.commercialData[0];\n  }\n\n  showModalSearch(cpf?: string) {\n    const initialState = {\n      user: this.user,\n      prescriber: this.prescriber,\n      addPatient: true,\n      cpf\n    };\n    const modal = this.modalService.show(ModalSearchComponent, {\n      initialState,\n      backdrop: 'static',\n      keyboard: false\n    });\n\n    modal.content.updateListPatientEvent.subscribe(patient => {\n      this.patientForm.patchValue(patient);\n      this.onChangePatient(patient);\n      this.patient = patient;\n    });\n    modal.content.openModalAddPatientEvent.subscribe(consult => this.showModalAddPatient(consult));\n    modal.content.openModalSelectPetEvent.subscribe(consult => this.showModalSelectPet(consult));\n    modal.content.loadingSpinnerEvent.subscribe(loading => (this.loading = loading));\n  }\n\n  private showModalAddPatient(consult) {\n    const initialState = {\n      prescriber: this.prescriber,\n      patient: consult.patient,\n      isResponsible: consult.isResponsible,\n      existingPatient: consult.existingPatient\n    };\n    const modal = this.modalService.show(ModalAddPatientComponent, {\n      class: 'modal-lg',\n      initialState,\n      backdrop: 'static',\n      keyboard: false\n    });\n    modal.content.updateListPatientEvent.subscribe(patient => {\n      this.patientForm.patchValue(patient);\n      this.onChangePatient(patient);\n      this.patient = patient;\n    });\n  }\n\n  private showModalSelectPet(consult) {\n    const initialState = {\n      prescriber: this.prescriber,\n      pets: consult.patient.pets,\n      responsible: consult.patient\n    };\n    const modal = this.modalService.show(ModalSelectPetComponent, {\n      initialState,\n      backdrop: 'static',\n      keyboard: false\n    });\n\n    modal.content.submit.subscribe(patient => {\n      this.patientForm.patchValue(patient);\n      this.onChangePatient(patient);\n      this.patient = patient;\n    });\n  }\n\n  toggleAdding() {\n    if (this.patientForm.get('_id').value === null) {\n      this.notification.notify('warning', 'Aviso', 'Você precisa selecionar um paciente para iniciar');\n    } else {\n      this.adding = !this.adding;\n    }\n  }\n\n  onChangePatient(patient: Patient): void {\n    if (patient._id === undefined && this.onlyNumbers(this.patientCpf)) {\n      this.showModalSearch(this.patientCpf);\n    } else {\n      this.patient = patient;\n      this.patientForm.get('_id').setValue(patient._id);\n      this.adding = true;\n    }\n  }\n\n  handleCancel() {\n    this.patients = [];\n    this.patientForm\n      .get('name')\n      .setValue(this.patientForm.get('name').value.replace(/(Adicionar paciente )/gim, ''));\n  }\n\n  onChange(): void {\n    let inputValue = '';\n\n    this.patientForm\n      .get('name')\n      .valueChanges.pipe(\n        debounceTime(environment.debounceTime),\n        distinctUntilChanged(),\n        tap(value => (inputValue = value)),\n        switchMap(value => this.getPatients(value)),\n        map((res: any) => {\n          if (res) {\n            if (this.isVeterinarian) {\n              const { pets, patients } = res;\n              if (pets) {\n                // get pet by cpf\n                if (pets._id) {\n                  return [pets];\n                }\n\n                // get pets by name\n                if (pets.length > 0) {\n                  return pets;\n                }\n              }\n\n              // no pets but patients (responsible) may have been found\n              return this.handleResponse(inputValue, !!patients);\n            }\n\n            // get patient by cpf\n            if (res._id) {\n              return [res];\n            }\n\n            // get patients by name\n            if (res.length > 0) {\n              return res;\n            }\n\n            // no patients\n            return this.handleResponse(inputValue);\n          } else {\n            this.patientForm.get('_id').setValue(null);\n          }\n        }),\n        takeUntil(this.destroyed$),\n        catchError((err, source) => {\n          let arr = [];\n          if (err.status === 404) {\n            arr = this.handleResponse(inputValue);\n          }\n          return source.pipe(startWith(arr));\n        })\n      )\n      .subscribe(patients => (this.patients = patients));\n  }\n\n  private onlyNumbers(value: String): Boolean {\n    return value.match(/^[0-9]+$/) != null;\n  }\n\n  private getPatients(value: string) {\n    if (!value || value.length < 3) {\n      return of(null);\n    }\n\n    if (!value || value.length < 3) {\n      return of(null);\n    }\n\n    const valueWithoutCharacters = new OnlyNumbersPipe().transform(value);\n    const onlyNumbers = this.onlyNumbers(valueWithoutCharacters);\n\n    const fullCpf = onlyNumbers && valueWithoutCharacters.length === 11;\n\n    if (this.isVeterinarian) {\n      if (fullCpf) {\n        // get pet by cpf\n        return this.petService.getPetsByResponsibleCpf(valueWithoutCharacters).pipe(\n          map(res => ({ pets: res })),\n          switchMap(res => {\n            if (res.pets.length) {\n              return of(res);\n            }\n            // if there are no pets, then try to get some patient by cpf\n            return this.patientService\n              .getPatientByCpf(valueWithoutCharacters)\n              .pipe(map(res1 => ({ patients: res1 })));\n          })\n        );\n      }\n\n      // get pets by name\n      return this.healthProfessionalService.getPets(value).pipe(map(res => ({ pets: res })));\n    }\n\n    if (fullCpf) {\n      return this.patientService.getPatientByCpf(valueWithoutCharacters);\n    }\n\n    return this.healthProfessionalService.getPatientsByUserId(value, this.user._id);\n  }\n\n  private handleResponse(patientInfo: string, responsibleExists = false) {\n    const cpf = new OnlyNumbersPipe().transform(patientInfo);\n    const isOnlyNumbers = this.onlyNumbers(cpf);\n\n    if (!isOnlyNumbers) {\n      if (this.isVeterinarian) {\n        return [\n          {\n            cpf: '-1',\n            fullname:\n              'Você não possui esse paciente em sua lista de pacientes. ' +\n              'Digite o CPF completo para prescrever uma receita e o adicionaremos automaticamente à sua lista.'\n          }\n        ];\n      }\n      return [\n        {\n          cpf: '-1',\n          fullname:\n            'Você não possui esse paciente em sua lista de pacientes. ' +\n            'Digite o CPF completo para prescrever uma receita e o adicionaremos automaticamente à sua lista.'\n        }\n      ];\n    }\n\n    if (isOnlyNumbers && cpf.length === 11) {\n      this.patientCpf = cpf;\n      let fullname = `Paciente com CPF ${patientInfo} não localizado na base. Deseja adicionar paciente?`;\n      if (this.isVeterinarian) {\n        if (responsibleExists) {\n          fullname = `Responsável/Tutor com CPF ${patientInfo} já é cadastrado na base. Deseja adicionar?`;\n        } else {\n          fullname = `Responsável/Tutor com CPF ${patientInfo} não cadastrado na base. Deseja adicionar?`;\n        }\n      }\n\n      return [{ cpf: '-1', fullname }];\n    }\n  }\n\n  setSearch(search: boolean) {\n    this.search = search;\n  }\n  @nativeAsync\n  private async saveDocument() {\n    try {\n      const doc = this.documentForm.getRawValue();\n      const patient = this.patientForm.value;\n      if (this.isVeterinarian) {\n        doc.pet = patient;\n      } else {\n        doc.patient = patient;\n      }\n      doc.local = this.local;\n      doc.code = this.document && this.document.code;\n      let documentSaved: any;\n      switch (this.documentType) {\n        case 'Prescrição':\n          documentSaved = await this.prescriptionService\n            .save({ prescriber: this.user._id, ...doc })\n            .pipe(take(1))\n            .toPromise();\n          documentSaved.type = 'prescription';\n          break;\n        case 'Atestado':\n          documentSaved = await this.attestationService\n            .save({ prescriber: this.user._id, ...doc })\n            .toPromise();\n          documentSaved.type = 'attestation';\n          break;\n        case 'Exame':\n          const message = this.hasDuplicatedMaterials(this.documentForm.value.examList);\n          if (message) {\n            this.notification.notify('warning', 'Aviso', message);\n            this.loading = false;\n            return null;\n          }\n\n          if (!this.documentForm.valid) {\n            this.notification.notify(\n              'warning',\n              'Aviso',\n              'Você adicionou um novo campo mas não o preencheu.'\n            );\n            this.loading = false;\n            return null;\n          }\n\n          documentSaved = await this.examService.save({ prescriber: this.user._id, ...doc }).toPromise();\n          documentSaved.type = 'exam';\n\n          break;\n        case 'Outros':\n          if (!this.documentForm.valid) {\n            this.notification.notify('warning', 'Aviso', 'Orientações não pode ficar em branco');\n            this.loading = false;\n            return null;\n          }\n          documentSaved = await this.orientationService\n            .save({ prescriber: this.user._id, ...doc })\n            .toPromise();\n          documentSaved.type = 'orientation';\n          break;\n        case 'Infusão':\n          documentSaved = await this.infusionService\n            .save({ prescriber: this.prescriber.userId, ...doc })\n            .pipe(take(1))\n            .toPromise();\n          documentSaved.type = 'infusion';\n          break;\n        default:\n          console.warn('Document type unknown: ', this.documentType);\n          this.loading = false;\n          return null;\n      }\n      return documentSaved;\n    } catch (err) {\n      if (err.status === 400) {\n        this.notification.notify(\n          'error',\n          'Erro ao salvar documento',\n          err.error.error && err.error.error.message\n        );\n      } else {\n        this.notification.notify(\n          'error',\n          'Erro',\n          `Erro ao salvar um documento do tipo ${this.documentType}`\n        );\n      }\n      throw err;\n    }\n  }\n\n  private hasDuplicatedMaterials(examList: any[]) {\n    const duplicatedMaterials = this.findDuplicatedMaterials(examList);\n\n    const duplicatedExams = examList\n      .map(element => this.findDuplicatedExams(element.exams))\n      .filter(arr => arr.length);\n\n    if (duplicatedMaterials.length > 0) {\n      return `Prescrição não pode conter materiais repetidos: ${duplicatedMaterials.join(', ')}.`;\n    }\n    if (duplicatedExams.length > 0) {\n      return `Prescrição não pode conter exames repetidos: ${duplicatedExams.join(', ')}.`;\n    }\n    return '';\n  }\n\n  private findDuplicatedMaterials(arr) {\n    return this.findDuplicatedItems(arr, 'material');\n  }\n\n  private findDuplicatedExams(arr) {\n    return this.findDuplicatedItems(arr, 'name');\n  }\n\n  private findDuplicatedItems(arr, field) {\n    const sorted_arr = arr.sort((a, b) => (a[field] > b[field] ? 1 : -1));\n    const results = [];\n    for (let i = 0; i < sorted_arr.length - 1; i++) {\n      if (sorted_arr[i + 1][field] === sorted_arr[i][field]) {\n        results.push(sorted_arr[i][field]);\n      }\n    }\n    return results;\n  }\n  @nativeAsync\n  async saveAndPreviewPdf() {\n    if (this.documentType === this.documentTypes.prescription) {\n      this.selectPrescriptionLayout('preview');\n    } else {\n      try {\n        this.loading = true;\n        const documentSaved = await this.saveDocument();\n        await this.previewPdf(documentSaved);\n      } catch (err) {\n        console.error(err);\n      }\n      this.loading = false;\n    }\n  }\n  @nativeAsync\n  private async previewPdf(documentSaved: any, layout = {}) {\n    try {\n      this.loading = true;\n      layout['theme'] = this.themeService.getActiveTheme().name;\n      await this.documentService.generateAndOpenPdf(documentSaved.code, layout);\n      this.router.navigate(['/prescription', documentSaved.code, 'edit']);\n    } catch (err) {\n      console.error(err);\n    }\n    this.loading = false;\n  }\n  @nativeAsync\n  async saveAndSignPdf() {\n    if (this.documentType === this.documentTypes.prescription) {\n      this.selectPrescriptionLayout('sign');\n    } else {\n      try {\n        this.loading = true;\n        const documentSaved = await this.saveDocument();\n        await this.signPdf(documentSaved.code);\n      } catch (err) {\n        console.error(err);\n      }\n      this.loading = false;\n    }\n  }\n  @nativeAsync\n  private async signPdf(code: string, layout = {}) {\n    layout['theme'] = this.themeService.getActiveTheme().name;\n    const url = await this.documentService.getUrlToSignDocument({\n      code,\n      prescriber: this.prescriber,\n      patientId: this.patientForm.value._id,\n      layout,\n      victaFeature: this.victaFeature\n    });\n    window.location.href = url;\n    // this.showSignatureModal(url);\n  }\n\n  private selectPrescriptionLayout(method: string) {\n    let patientDoesNotHaveAddress = false;\n\n    // TODO: verificar a questão de paciente menor de idade quando fica maior de idade o que ocorre com o responsável\n    if (this.patient && this.patient.responsible) {\n      patientDoesNotHaveAddress = this.responsibleDoesNotHaveAddress();\n    } else {\n      patientDoesNotHaveAddress = this.patientDoesNotHaveAddress();\n    }\n\n    this.modalSelectLayout.createTplModal(patientDoesNotHaveAddress);\n\n    this.modalSelectLayout.selectLayout.pipe(take(1)).subscribe(async data => {\n      this.loading = true;\n      try {\n        const { layout, addressValue } = data;\n        if (layout === 'special' && patientDoesNotHaveAddress) {\n          const updatedPatient = await this.updatePatientAddress(addressValue);\n          if (this.patient.responsible) {\n            this.patient.responsible = updatedPatient;\n          } else {\n            this.patient = updatedPatient;\n          }\n        }\n        delete data.addressValue;\n        await this.savedDocumentAndPreviewPdfOrSignPdf(method, data);\n      } catch (err) {\n        console.error(err);\n        this.loading = false;\n      }\n    });\n  }\n\n  get isUnderAge() {\n    if (this.patient.dateOfBirth) {\n      return DateUtils.isUnderAge(this.patient.dateOfBirth);\n    }\n    return false;\n  }\n\n  private patientDoesNotHaveAddress() {\n    return (\n      !this.patient.address ||\n      (this.patient.address &&\n        !this.patient.address.cep &&\n        !this.patient.address.street &&\n        !this.patient.address.number &&\n        !this.patient.address.neighborhood &&\n        !this.patient.address.city &&\n        !this.patient.address.uf)\n    );\n  }\n\n  private responsibleDoesNotHaveAddress() {\n    return (\n      !this.patient.responsible ||\n      !this.patient.responsible.address ||\n      (this.patient.responsible.address &&\n        !this.patient.responsible.address.cep &&\n        !this.patient.responsible.address.street &&\n        !this.patient.responsible.address.number &&\n        !this.patient.responsible.address.neighborhood &&\n        !this.patient.responsible.address.city &&\n        !this.patient.responsible.address.uf)\n    );\n  }\n\n  updatePatientAddress(address: any): Promise<Patient> {\n    return new Promise(async (resolve, reject) => {\n      try {\n        const isUpdateAddressPatient = !this.patient.responsible;\n        const restData = isUpdateAddressPatient ? this.patient : this.patient.responsible;\n        const dataPatient = { ...restData, address };\n        const patient = await this.patientService.update(restData._id, dataPatient).toPromise();\n        resolve(patient);\n      } catch (error) {\n        this.notification.notify(\n          'error',\n          'Error',\n          'Ocorreu um erro ao tentar atualizar endereço do paciente!'\n        );\n        this.loading = false;\n        reject(error);\n      }\n    });\n  }\n\n  @nativeAsync\n  async savedDocumentAndPreviewPdfOrSignPdf(method: string, data: {}) {\n    const documentSaved = await this.saveDocument();\n    if (method === 'preview') {\n      await this.previewPdf(documentSaved, data);\n    } else {\n      await this.signPdf(documentSaved.code, data);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed$.next(true);\n    this.destroyed$.complete();\n  }\n\n  changeLocal(address) {\n    this.local = address;\n  }\n\n  changeDocumentType(documentType) {\n    this.documentType = documentType;\n  }\n\n  get invalidForm(): boolean {\n    const obj = this.documentForm.value;\n    return (\n      !this.patientForm.value._id ||\n      !this.patientForm.value.name ||\n      !this.documentForm.valid ||\n      (Object.keys(obj).length === 0 && obj.constructor === Object) ||\n      this.signed ||\n      !!this.modelId\n    );\n  }\n\n  private resetForm() {\n    this.patientForm.reset();\n    this.documentForm.reset();\n    this.selectedDocumentModel = null;\n    this.adding = false;\n  }\n\n  @nativeAsync\n  async showVictaProtocols() {\n    try {\n      this.loading = true;\n      const groups = await this.victaProtocolService.getProtocols(this.prescriber.professionalType);\n      this.loading = false;\n\n      const modal = this.modalService.show(ModalListVictaProtocolComponent, {\n        initialState: { groups },\n        backdrop: 'static'\n      });\n\n      modal.content.selectEvent.subscribe(protocol => {\n        this.selectedDocumentModel = protocol;\n        this.adding = true;\n      });\n    } catch (err) {\n      this.loading = false;\n      this.notification.notify('warning', 'Aviso', 'Não foi possível recuperar protocolos');\n    }\n  }\n\n  @nativeAsync\n  async showModelListFavoriteDocument() {\n    try {\n      this.loading = true;\n      const documentsTemplate = await this.getListDocumentsTemplates();\n      this.loading = false;\n\n      if (documentsTemplate.length) {\n        const initialState = {\n          documentType: this.documentType,\n          documentsTemplate\n        };\n        this.showFavoritePrescriptionsModel(initialState);\n      } else {\n        this.notification.notify(\n          'warning',\n          'Aviso',\n          `Você ainda não possui modelos de ${this.documentType} cadastrados. Salve um modelo em Favoritos.`\n        );\n      }\n    } catch (err) {\n      this.loading = false;\n      this.notification.notify('warning', 'Aviso', 'Não foi possível recuperar a lista de modelos');\n    }\n  }\n\n  private showFavoritePrescriptionsModel(initialState: any) {\n    const modal = this.modalService.show(ModelListFavoriteDocumentComponent, {\n      initialState,\n      backdrop: 'static'\n    });\n    modal.content.selectEvent.subscribe(model => {\n      this.selectedDocumentModel = model;\n      this.adding = true;\n    });\n\n    modal.content.editEvent.subscribe(model => {\n      this.documentService.patientForm = this.patientForm;\n      model.document = model.document || 'prescription';\n      this.router.navigate(['/prescription/model', model._id, model.document, 'edit']);\n    });\n\n    modal.content.deleteEvent.subscribe((modelId: string) => {\n      modal.hide();\n      this.nzModalService.confirm({\n        nzTitle: 'Atenção',\n        nzContent: `Tem certeza que deseja excluir este modelo de ${this.documentType} da sua lista?`,\n        nzOnOk: async () => {\n          try {\n            await this.deleteDocumentModel(modelId);\n            this.notification.notify('success', 'Sucesso', 'Modelo excluído com sucesso');\n          } catch (err) {\n            this.notification.notify('warning', 'Aviso', 'Não foi possível excluir este item');\n          }\n        },\n        nzOnCancel: () => this.showFavoritePrescriptionsModel(initialState)\n      });\n    });\n  }\n\n  @nativeAsync\n  private async deleteDocumentModel(modelId) {\n    switch (this.documentType) {\n      case this.typesOfDocuments[0]:\n        await this.prescriptionModelService.deleteById(modelId);\n        break;\n      case this.typesOfDocuments[1]:\n        await this.examModelService.deleteById(modelId);\n        break;\n      case this.typesOfDocuments[2]:\n        await this.attestationModelService.deleteById(modelId);\n        break;\n      case this.typesOfDocuments[3]:\n        await this.orientationModelService.deleteById(modelId);\n        break;\n    }\n  }\n\n  @nativeAsync\n  private async getListDocumentsTemplates() {\n    let documentsTemplate = [];\n    switch (this.documentType) {\n      case this.typesOfDocuments[0]:\n        documentsTemplate = await this.prescriptionModelService.getListByPrescriberId(\n          this.prescriber.userId\n        );\n        break;\n      case this.typesOfDocuments[1]:\n        documentsTemplate = await this.examModelService.getListByPrescriberId(this.prescriber.userId);\n        break;\n      case this.typesOfDocuments[2]:\n        documentsTemplate = await this.attestationModelService.getListByPrescriberId(\n          this.prescriber.userId\n        );\n        break;\n      case this.typesOfDocuments[3]:\n        documentsTemplate = await this.orientationModelService.getListByPrescriberId(\n          this.prescriber.userId\n        );\n        break;\n    }\n\n    return documentsTemplate.filter(documentTemplate => documentTemplate.version !== 'BETA');\n  }\n\n  showModalAddFavoriteDocument() {\n    if (this.documentForm.valid) {\n      this.documentForm.value.prescriber = this.prescriber.userId;\n      const initialState = {\n        documentModel: this.documentForm.value,\n        documentType: this.documentType\n      };\n      this.modalService.show(ModelAddFavoriteDocumentComponent, {\n        class: 'modal-lg',\n        initialState,\n        backdrop: 'static',\n        keyboard: false\n      });\n    } else {\n      const msg = this.getFormError(this.documentType);\n      this.notification.notify('warning', 'Aviso', msg);\n    }\n  }\n\n  @nativeAsync\n  async updateDocumentModel(model: any, modelId: string) {\n    try {\n      let modelSaved = null;\n\n      switch (this.documentType) {\n        case this.typesOfDocuments[3]:\n          modelSaved = await this.orientationModelService.update(model, modelId);\n          break;\n        case this.typesOfDocuments[2]:\n          modelSaved = await this.attestationModelService.update(model, modelId);\n          break;\n        case this.typesOfDocuments[1]:\n          modelSaved = await this.examModelService.update(model, modelId);\n          break;\n\n        default:\n          modelSaved = await this.prescriptionModelService.update(model, modelId);\n      }\n\n      this.selectedDocumentModel = undefined;\n      this.modelId = undefined;\n\n      this.notification.notify('success', 'Sucesso', 'Modelo salvo com sucesso');\n      this.router.navigate(['/prescription/new']);\n    } catch (err) {\n      console.error(err);\n      this.notification.notify('error', 'Aviso', 'Erro ao atualizar modelo');\n    }\n  }\n\n  cancelEditModel() {\n    this.router.navigate(['/prescription/new']);\n  }\n\n  isThemeActiveReceitaDigital() {\n    const active = this.themeService.getActiveTheme();\n    return active.name === 'theme-receita-digital';\n  }\n\n  async updateMedicaments(prescription: Prescription) {\n    for await (const medicament of prescription.medicaments) {\n      if (!!medicament.ean) {\n        try {\n          const medicamentsCR = await this.crService.searchMedicament(medicament.ean).toPromise();\n          if (medicamentsCR.length > 0) {\n            const medicamentCR = medicamentsCR[0];\n            medicament.name = medicamentCR.nome;\n            medicament.prescriptionTypeId = medicamentCR.prescriptionTypeId;\n            medicament.typeCr = medicamentCR.typeCr;\n            medicament.type = 'industrialized';\n            medicament.laboratory = medicamentCR.laboratorio;\n            medicament.description = medicamentCR.apresentacaoCustomizada;\n            medicament.medicamentId = medicamentCR.id;\n            medicament.principle = medicamentCR.principio;\n          }\n        } catch (error) {\n          console.log(error);\n          this.notification.notify('error', 'Erro ao consultar dados do medicamento.');\n        }\n      } else {\n        medicament.type = 'free-text';\n      }\n    }\n  }\n\n  private getFormError(documentType: string): string {\n    switch (documentType) {\n      case 'Prescrição':\n        return 'Selecione e preencha dados do medicamento ou digite um texto livre';\n      case 'Exame':\n        return 'Selecione um material e um exame para cada material';\n      default:\n        return 'Preencha os campos obrigatórios';\n    }\n  }\n\n  clearSelectionPatient() {\n    this.patient = null;\n    this.patientForm.reset();\n  }\n}\n","import { DocumentGuard } from './guards/document.guard';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ConfirmationComponent } from './pages/confirmation/confirmation.component';\nimport { RetentionConfirmationComponent } from './pages/retention-confirmation/retention-confirmation.component';\nimport { ListingComponent } from './pages/listing/listing.component';\nimport { UploadPdfComponent } from './pages/prescription/upload-pdf.component';\nimport { DocumentComponent } from './document.component';\n\nconst routes: Routes = [\n  { path: 'new', component: DocumentComponent, canActivate: [DocumentGuard] },\n  { path: ':id/new', component: DocumentComponent, canActivate: [DocumentGuard] },\n  { path: ':id/edit', component: DocumentComponent, canActivate: [DocumentGuard] },\n  {\n    path: 'model/:modelId/:documentType/edit',\n    component: DocumentComponent,\n    canActivate: [DocumentGuard]\n  },\n  { path: 'confirmation/:param', component: ConfirmationComponent },\n  { path: 'confirmation/successful/:dispensationCode', component: RetentionConfirmationComponent },\n  { path: 'listing-prescriptions/:param', component: ListingComponent },\n  { path: 'upload/:code/:id', component: UploadPdfComponent }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class DocumentRoutingModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Attestation } from '@app/shared/models/attestation';\nimport { Patient } from '@app/shared/models/patient';\nimport { ColorSetting } from '@app/shared/models/color-setting';\n\n@Component({\n  selector: 'app-attestation',\n  templateUrl: './attestation.component.html',\n  styleUrls: ['./attestation.component.scss']\n})\nexport class AttestationComponent implements OnInit {\n  @Input() patient: Patient;\n  @Input() isVeterinarian: boolean;\n  @Input() colorSetting: ColorSetting;\n  @Output() formEmitter: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\n\n  attestationForm: FormGroup;\n\n  constructor(private fb: FormBuilder) {\n    this.attestationForm = this.fb.group({\n      showPatientCpf: [false],\n      showPrescriberCpf: [false],\n      text: this.fb.control('', Validators.required),\n      description: this.fb.control('')\n    });\n  }\n\n  ngOnInit() {\n    this.onChangeValue();\n    this.formEmitter.emit(this.attestationForm);\n  }\n\n  get showCpfText() {\n    return this.patient && !this.patient.cpf ? 'Mostrar CPF do Responsável' : 'Mostrar CPF do Paciente';\n  }\n\n  @Input()\n  set attestation(attestation: Attestation) {\n    if (attestation) {\n      const value = attestation.description.reduce(\n        (accumulator, currentValue) => accumulator + '\\n' + currentValue\n      );\n      this.attestationForm.get('text').setValue(value);\n      this.attestationForm.get('description').setValue(attestation.description);\n    }\n\n    this.onChangeValue();\n  }\n\n  @Input()\n  set attestationModel(attestationModel: any) {\n    if (attestationModel) {\n      this.attestationForm.addControl('title', this.fb.control('', Validators.required));\n\n      const value = attestationModel.description.reduce(\n        (accumulator, currentValue) => accumulator + '\\n' + currentValue\n      );\n      this.attestationForm.get('title').setValue(attestationModel.title);\n      this.attestationForm.get('text').setValue(value);\n      this.attestationForm.get('description').setValue(attestationModel.description);\n    }\n\n    this.onChangeValue();\n  }\n\n  onChangeValue() {\n    this.attestationForm.get('text').valueChanges.subscribe(val => {\n      if (val) {\n        const value = val.split('\\n');\n        this.attestationForm.get('description').setValue(value);\n      }\n    });\n    this.formEmitter.emit(this.attestationForm);\n  }\n}\n","export default \"<div class=\\\"attestation\\\" [formGroup]=\\\"attestationForm\\\">\\n  <nz-form-item *ngIf=\\\"patient\\\">\\n    <label nz-checkbox formControlName=\\\"showPatientCpf\\\">\\n      <span>\\n        {{ showCpfText }}\\n      </span>\\n    </label>\\n\\n    <label nz-checkbox formControlName=\\\"showPrescriberCpf\\\">\\n      <span>\\n        Mostrar CPF do Prescritor\\n      </span>\\n    </label>\\n  </nz-form-item>\\n\\n  <label for=\\\"material\\\" theme>Digite aqui o conteúdo do atestado</label>\\n  <textarea\\n    rows=\\\"6\\\"\\n    nz-input\\n    formControlName=\\\"text\\\"\\n    [ngStyle]=\\\"{\\n      'background-color': colorSetting?.inputBackground,\\n      'border-color': colorSetting?.inputBorder\\n    }\\\"\\n  ></textarea>\\n</div>\\n\";","export default \".attestation {\\n  color: black;\\n}\\n.attestation .font {\\n  font-size: 24px !important;\\n}\\n.attestation .underlined {\\n  text-decoration: underline;\\n}\\n.attestation .info-ipt {\\n  text-align: center;\\n  width: 135px;\\n  border: 0;\\n  border-bottom: solid 2px;\\n  outline: none;\\n}\\n.attestation .info-ipt::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n.attestation .ant-select {\\n  width: 165px;\\n}\\n.attestation textarea {\\n  line-height: 2;\\n}\";","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ExamType, Patient } from '@app/shared/models';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { Exam, ExamItem, ExamList } from '@app/shared/models/exam';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { ExamService } from '../../services/exam.service';\n\n@Component({\n  selector: 'app-exam',\n  templateUrl: './exam.component.html',\n  styleUrls: ['./exam.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class ExamComponent implements OnInit {\n  @Input() colorSetting: ColorSetting;\n  @Input() patient: Patient;\n  @Input() isVeterinarian: boolean;\n  @Output() formEmitter: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\n  position: number;\n  adding: boolean;\n  materialSelected: string;\n  materials: string[];\n  examTypes: ExamType[];\n  hasForm = false;\n  showJustification = false;\n\n  examForm: FormGroup;\n\n  constructor(\n    private fb: FormBuilder,\n    private examService: ExamService,\n    private notification: AppToastService\n  ) {}\n\n  ngOnInit() {\n    this.position = 0;\n    this.buildForm();\n    this.examService.getMaterials().subscribe(materials => {\n      this.materials = materials;\n    });\n  }\n\n  get showCpfText() {\n    return this.patient && !this.patient.cpf ? 'Mostrar CPF do Responsável' : 'Mostrar CPF do Paciente';\n  }\n\n  private buildForm(exam?: Exam) {\n    if (!this.examForm) {\n      this.examForm = this.fb.group({\n        showPatientCpf: [false],\n        showPrescriberCpf: [false],\n        examList: this.fb.array([], Validators.required),\n        justification: this.fb.control([]),\n        text: this.fb.control('')\n      });\n      this.examListForm.push(this.formExamList());\n    }\n\n    if (exam && exam.document === 'exam') {\n      if (exam.title) {\n        this.examForm.addControl('title', this.fb.control('', Validators.required));\n        this.examForm.get('title').setValue(exam.title);\n      }\n\n      this.examListForm.clear();\n      exam.examList.forEach(ex => this.addMaterial(ex));\n      this.examForm.get('justification').setValue(exam.justification);\n      if (exam.justification) {\n        const value = exam.justification.reduce((acc, val) => `${acc}\\n${val}`, '');\n        this.examForm.get('text').setValue(value);\n        this.showJustification = !!value;\n      }\n    }\n    this.formEmitter.emit(this.examForm);\n  }\n\n  @Input()\n  set exam(exam: Exam) {\n    if (exam) {\n      this.buildForm(exam);\n    }\n  }\n\n  @Input()\n  set examModel(examModel: Exam) {\n    if (examModel) {\n      this.buildForm(examModel);\n    }\n  }\n\n  private formExamList(examList: ExamList = null) {\n    const group = this.fb.group({\n      material: this.fb.control('', Validators.required),\n      exams: this.fb.array([])\n    });\n\n    const examsForm = <FormArray>group.get('exams');\n    if (examList) {\n      const materialForm = group.get('material');\n\n      const { material, exams } = examList;\n      materialForm.setValue(material);\n      exams.forEach(exam => examsForm.push(this.formExamItem(exam)));\n    } else {\n      examsForm.push(this.formExamItem());\n    }\n\n    return group;\n  }\n\n  private formExamItem(exam: ExamItem = null) {\n    return this.fb.group({\n      name: this.fb.control(exam ? exam.name : '', Validators.required),\n      tuss: this.fb.control(exam ? exam.tuss : ''),\n      position: this.fb.control(this.position++)\n    });\n  }\n\n  get examListForm(): FormArray {\n    return <FormArray>this.examForm.get('examList');\n  }\n\n  private getExam(examListIndex: number) {\n    return this.examListForm.at(examListIndex);\n  }\n\n  onChangeExamType(examType: string, examListIndex: number) {\n    this.adding = true;\n    const examList: ExamList = this.getExam(examListIndex).value;\n    const filterExists = examList.exams.map(itemExists => itemExists.name);\n    this.examService.getExamTypes(examList.material, examType).subscribe(res => {\n      const resFiltered = res.filter(itemRes => !filterExists.includes(itemRes.exam));\n      this.examTypes = resFiltered;\n      this.adding = false;\n    });\n  }\n\n  onChangeJustification(text: string) {\n    const value = text.split('\\n');\n    this.examForm.get('justification').setValue(value);\n  }\n\n  selectExamType(exam: ExamType, index: number) {\n    this.examListForm.value[index] = exam._id;\n  }\n\n  addNewExam(examListIndex: number): void {\n    const exam: FormArray = <FormArray>this.getExam(examListIndex).get('exams');\n    if (exam.valid) {\n      exam.push(this.formExamItem());\n    } else {\n      this.notification.notify('warning', 'Aviso', 'Você precisa selecionar um exame.');\n    }\n  }\n\n  addMaterial(examList: ExamList = null): void {\n    const list = this.examListForm.value;\n    const filterExists = list.map(itemExists => itemExists.material);\n\n    this.examService.getMaterials().subscribe(materials => {\n      const resFiltered = materials.filter(itemRes => !filterExists.includes(itemRes));\n      this.materials = resFiltered;\n    });\n    if (list.length === 0 || list[list.length - 1].material) {\n      this.examListForm.push(this.formExamList(examList));\n    }\n  }\n\n  addJustification(): void {\n    if (this.examListForm.value.length) {\n      this.showJustification = true;\n    }\n  }\n\n  removeJustification(): void {\n    this.onChangeJustification('');\n    this.showJustification = false;\n  }\n\n  removeMaterialAt(index: number): void {\n    if (this.examListForm.length > 1) {\n      this.examListForm.removeAt(index);\n    } else if (this.examListForm.length === 1) {\n      this.examListForm.at(index).reset();\n    }\n  }\n\n  removeExamAt(examListIndex: number, examIndex: number): void {\n    const exams: FormArray = <FormArray>this.examListForm.at(examListIndex).get('exams');\n    if (exams.length > 1) {\n      exams.removeAt(examIndex);\n    } else if (exams.length === 1) {\n      exams.at(examIndex).reset();\n    }\n  }\n\n  hasMaterial(examListIndex: number) {\n    return !!(<FormArray>this.examListForm.at(examListIndex).value.material);\n  }\n}\n","export default \"<ng-container [formGroup]=\\\"examForm\\\">\\n  <div class=\\\"exam row\\\">\\n    <div class=\\\"col-12\\\" *ngIf=\\\"patient\\\">\\n      <nz-form-item>\\n        <label nz-checkbox formControlName=\\\"showPatientCpf\\\">\\n          <span>\\n            {{ showCpfText }}\\n          </span>\\n        </label>\\n\\n        <label nz-checkbox formControlName=\\\"showPrescriberCpf\\\">\\n          <span>\\n            Mostrar CPF do Prescritor\\n          </span>\\n        </label>\\n      </nz-form-item>\\n    </div>\\n  </div>\\n  <div class=\\\"exam row\\\">\\n    <div\\n      class=\\\"col-md-6 col-12\\\"\\n      *ngFor=\\\"let examList of examListForm['controls']; index as examListIndex\\\"\\n      formArrayName=\\\"examList\\\"\\n    >\\n      <div class=\\\"form-area\\\" formGroupName=\\\"{{ examListIndex }}\\\">\\n        <label for=\\\"material\\\">Material</label>\\n        <div class=\\\"col-md-11 col-12 input-area\\\">\\n          <nz-select\\n            *ngIf=\\\"\\n              colorSetting && (colorSetting.inputBackground || colorSetting.inputBorder);\\n              else selectTheme\\n            \\\"\\n            id=\\\"specialties\\\"\\n            nzDropdownClassName=\\\"account-select\\\"\\n            nzPlaceHolder=\\\"Selecione o material\\\"\\n            formControlName=\\\"material\\\"\\n            nzAllowClear\\n            nzShowSearch\\n            [ngStyle]=\\\"{\\n              'background-color': colorSetting?.inputBackground,\\n              'border-color': colorSetting?.inputBorder,\\n              border: colorSetting?.inputBorder && '1px ' + colorSetting.inputBorder + ' solid',\\n              'border-radius': colorSetting?.inputBorder && '10px'\\n            }\\\"\\n          >\\n            <nz-option *ngFor=\\\"let material of materials\\\" [nzLabel]=\\\"material\\\" [nzValue]=\\\"material\\\">\\n            </nz-option>\\n          </nz-select>\\n          <ng-template #selectTheme>\\n            <nz-select\\n              id=\\\"specialties\\\"\\n              nzDropdownClassName=\\\"account-select\\\"\\n              nzPlaceHolder=\\\"Selecione o material\\\"\\n              formControlName=\\\"material\\\"\\n              nzAllowClear\\n              nzShowSearch\\n            >\\n              <nz-option *ngFor=\\\"let material of materials\\\" [nzLabel]=\\\"material\\\" [nzValue]=\\\"material\\\">\\n              </nz-option>\\n            </nz-select>\\n          </ng-template>\\n\\n          <a class=\\\"remove-icon\\\" (click)=\\\"removeMaterialAt(examListIndex)\\\"\\n            ><i class=\\\"fa fa-trash-solid\\\"></i\\n          ></a>\\n        </div>\\n\\n        <div class=\\\"exam-type-area ml-5\\\" *ngIf=\\\"hasMaterial(examListIndex)\\\" formArrayName=\\\"exams\\\">\\n          <label for=\\\"examName\\\">Exame</label>\\n          <div\\n            class=\\\"exams-area col-md-11 col-12\\\"\\n            *ngFor=\\\"\\n              let exam of examList['controls'].exams['controls'];\\n              index as examIndex;\\n              let last = last\\n            \\\"\\n          >\\n            <div class=\\\"input-area-exam\\\" formGroupName=\\\"{{ examIndex }}\\\">\\n              <input type=\\\"hidden\\\" formControlName=\\\"position\\\" name=\\\"position\\\" value=\\\"{{ examIndex }}\\\" />\\n\\n              <input\\n                id=\\\"examName\\\"\\n                formControlName=\\\"name\\\"\\n                (input)=\\\"onChangeExamType($event.target.value, examListIndex)\\\"\\n                [nzAutocomplete]=\\\"autoName\\\"\\n                nz-input\\n                placeholder=\\\"Tipo de exame\\\"\\n                [ngStyle]=\\\"{\\n                  'background-color': colorSetting?.inputBackground,\\n                  'border-color': colorSetting?.inputBorder\\n                }\\\"\\n              />\\n\\n              <nz-autocomplete #autoName nzBackfill>\\n                <nz-auto-option\\n                  *ngFor=\\\"let option of examTypes\\\"\\n                  [nzLabel]=\\\"option.exam\\\"\\n                  [nzValue]=\\\"option.exam\\\"\\n                  class=\\\"mao\\\"\\n                >\\n                  {{ option.exam }}\\n                </nz-auto-option>\\n              </nz-autocomplete>\\n\\n              <a class=\\\"remove-icon\\\" (click)=\\\"removeExamAt(examListIndex, examIndex)\\\"\\n                ><i class=\\\"fa fa-trash-solid\\\"></i\\n              ></a>\\n\\n              <button\\n                *ngIf=\\\"last; else divVazia\\\"\\n                nz-button\\n                class=\\\"btn btn-icon btn-add-outiline text-capitalize btn-exam\\\"\\n                type=\\\"button\\\"\\n                (click)=\\\"addNewExam(examListIndex)\\\"\\n                [ngStyle]=\\\"{\\n                  'background-color': colorSetting?.secondary,\\n                  'border-color': colorSetting?.secondary\\n                }\\\"\\n              >\\n                <i class=\\\"fas fa-plus\\\"></i>\\n              </button>\\n              <ng-template #divVazia>\\n                <div>&nbsp;</div>\\n              </ng-template>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n    <div class=\\\"col-12\\\">\\n      <div class=\\\"add-button btn-material mb-2\\\">\\n        <button\\n          nz-button\\n          class=\\\"btn btn-add-outiline text-capitalize\\\"\\n          type=\\\"button\\\"\\n          (click)=\\\"addMaterial()\\\"\\n          [ngStyle]=\\\"{\\n            'background-color': colorSetting?.secondary,\\n            'border-color': colorSetting?.secondary\\n          }\\\"\\n        >\\n          <span>Adicionar Material</span>\\n        </button>\\n        <button\\n          *ngIf=\\\"!showJustification\\\"\\n          nz-button\\n          class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n          type=\\\"button\\\"\\n          (click)=\\\"addJustification()\\\"\\n          [ngStyle]=\\\"{\\n            'background-color': colorSetting?.secondary,\\n            'border-color': colorSetting?.secondary\\n          }\\\"\\n        >\\n          <span>Inserir Justificativa</span>\\n        </button>\\n        <button\\n          *ngIf=\\\"showJustification\\\"\\n          nz-button\\n          class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n          type=\\\"button\\\"\\n          (click)=\\\"removeJustification()\\\"\\n          [ngStyle]=\\\"{\\n            'background-color': colorSetting?.secondary,\\n            'border-color': colorSetting?.secondary\\n          }\\\"\\n        >\\n          <span>Remover Justificativa</span>\\n        </button>\\n      </div>\\n      <div *ngIf=\\\"showJustification\\\" class=\\\"mt-2\\\">\\n        <label for=\\\"material\\\">Justificativa:</label>\\n        <textarea\\n          rows=\\\"4\\\"\\n          nz-input\\n          formControlName=\\\"text\\\"\\n          (input)=\\\"onChangeJustification($event.target.value)\\\"\\n          placeholder=\\\"Texto livre\\\"\\n        ></textarea>\\n      </div>\\n    </div>\\n  </div>\\n</ng-container>\\n\";","export default \".exam {\\n  justify-content: center;\\n}\\n.exam ::ng-deep .ng-star-inserted {\\n  margin-bottom: 15px;\\n}\\n.exam .form-area {\\n  margin-bottom: 25px;\\n}\\n.exam .form-area .input-area {\\n  display: flex;\\n  align-items: center;\\n  gap: 8px;\\n}\\n.exam .form-area .input-area .remove-icon:hover {\\n  color: red;\\n}\\n.exam .form-area .exam-type-area {\\n  display: flex;\\n  flex-direction: column;\\n  gap: 8px;\\n  margin-left: 50px;\\n}\\n.exam .form-area .exam-type-area .exams-area {\\n  width: 100%;\\n}\\n.exam .input-area-exam {\\n  display: flex;\\n  align-items: center;\\n  gap: 8px;\\n}\\n.exam .btn {\\n  padding: 0px 20px;\\n}\\n.exam .add-button {\\n  display: flex;\\n  justify-content: center;\\n}\\n.exam textarea {\\n  line-height: 2;\\n}\\n.btn-exam {\\n  padding: 0px 20px;\\n  float: right;\\n}\\n.btn-material {\\n  margin-top: 70px;\\n}\\n.exam .form-area .exam-type-area {\\n  margin-left: 0;\\n}\\n.btn-add-outiline {\\n  display: flex;\\n  padding: 0 0 0 8px;\\n  height: 40px;\\n  align-items: center;\\n  border-radius: 10px;\\n  overflow: hidden;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n  background-color: var(--bg-color-secondary);\\n  color: var(--color-white);\\n}\\n.btn-add-outiline:focus {\\n  background-color: var(--bg-color-secondary);\\n  color: var(--color-white);\\n}\\n.btn-add-outiline:hover {\\n  background-color: var(--bg-color-primary);\\n}\";","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { Infusion } from '@app/shared/models/infusion';\nimport { Protocol } from '@app/shared/models/protocol';\n\n@Component({\n  selector: 'app-infusion-protocol',\n  templateUrl: './infusion-protocol.component.html',\n  styleUrls: ['./infusion-protocol.component.scss']\n})\nexport class InfusionProtocolComponent implements OnInit, OnChanges {\n  @Input() colorSetting: ColorSetting;\n  @Input() protocolSelected: any;\n\n  @Output() formEmitter: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\n\n  form: FormGroup;\n  constructor(private readonly fb: FormBuilder) {\n    this.form = this.fb.group({\n      protocols: this.fb.array([], Validators.required)\n    });\n  }\n\n  ngOnInit() {\n    this.formEmitter.emit(this.form);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['protocolSelected']) {\n      const protocolSelected: Protocol = changes['protocolSelected'].currentValue;\n      if (protocolSelected) {\n        this.addProtocol(protocolSelected);\n      }\n    }\n  }\n\n  @Input()\n  set infusion(infusion: Infusion) {\n    if (infusion) {\n      infusion.protocols.forEach(protocol => this.addProtocol(protocol));\n    }\n  }\n\n  get protocols() {\n    return this.form.controls['protocols'] as FormArray;\n  }\n\n  addProtocol(protocol: Protocol) {\n    const phasesGroups = protocol.phases.map((phase: any) =>\n      this.fb.group({\n        name: [phase.name],\n        dosage: [phase.dosage, Validators.required],\n        observation: [phase.observation]\n      })\n    );\n\n    const protocolGroup = this.fb.group({\n      name: [protocol.name],\n      code: [protocol.code],\n      phases: this.fb.array([...phasesGroups])\n    });\n\n    this.protocols.push(protocolGroup);\n  }\n\n  deleteProtocol(protocolIndex: number) {\n    this.protocols.removeAt(protocolIndex);\n  }\n}\n","export default \"<form [formGroup]=\\\"form\\\">\\n  <ng-container formArrayName=\\\"protocols\\\">\\n    <div\\n      *ngFor=\\\"let protocolFormGroup of protocols.controls; let i = index\\\"\\n      [formGroup]=\\\"protocolFormGroup\\\"\\n      class=\\\"container-protocol\\\"\\n    >\\n      <div class=\\\"protocol-inputs\\\">\\n        <div *ngIf=\\\"protocolFormGroup.value as protocol\\\">\\n          <h4 class=\\\"title\\\">{{ i + 1 }}. {{ protocol.name }}</h4>\\n          <div\\n            *ngFor=\\\"let phaseFormGroup of protocolFormGroup.get('phases')['controls']; let j = index\\\"\\n            [formGroup]=\\\"phaseFormGroup\\\"\\n          >\\n            <div *ngIf=\\\"phaseFormGroup.value as phase\\\">\\n              <div *ngIf=\\\"j\\\" class=\\\"mt-4\\\"></div>\\n              <h6 *ngIf=\\\"phase.name\\\" class=\\\"title\\\">{{ phase.name }}</h6>\\n              <nz-form-item>\\n                <nz-form-control>\\n                  <textarea\\n                    [ngStyle]=\\\"{ color: colorSetting?.primary }\\\"\\n                    [id]=\\\"'dosage_' + j\\\"\\n                    appAutoSize\\n                    appFocus\\n                    nz-input\\n                    [value]=\\\"phase.dosage\\\"\\n                    disabled\\n                    class=\\\"dosage\\\"\\n                  ></textarea>\\n                </nz-form-control>\\n              </nz-form-item>\\n              <nz-form-item>\\n                <label [ngStyle]=\\\"{ color: colorSetting?.primary, 'font-weight': 'bold' }\\\"\\n                  >Observação</label\\n                >\\n                <nz-form-control>\\n                  <textarea\\n                    [ngStyle]=\\\"{ color: colorSetting?.primary, 'border-color': colorSetting?.primary }\\\"\\n                    appFocus\\n                    appAutoSize\\n                    focus=\\\"true\\\"\\n                    placeholder=\\\"Digite uma observação\\\"\\n                    formControlName=\\\"observation\\\"\\n                    nz-input\\n                    class=\\\"medicationNameInput\\\"\\n                  ></textarea>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n      <div class=\\\"protocol-btn-remove\\\">\\n        <span class=\\\"btn-inner--icon p-5\\\" style=\\\"cursor: pointer;\\\" (click)=\\\"deleteProtocol(i)\\\"\\n          ><i class=\\\"fa fa-trash-solid\\\"></i\\n        ></span>\\n      </div>\\n    </div>\\n  </ng-container>\\n</form>\\n\";","export default \".container-protocol {\\n  display: flex;\\n  align-items: center;\\n  padding: 20px;\\n  position: relative;\\n}\\n@media (max-width: 1025px) {\\n  .container-protocol {\\n    padding: 0;\\n  }\\n}\\n.dosage {\\n  height: 100%;\\n  box-shadow: none;\\n}\\n.container-protocol .protocol-inputs {\\n  flex: 1;\\n}\\n.protocol-btn-remove {\\n  max-width: 6.25rem;\\n  width: 100%;\\n}\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Orientation, Patient } from '@app/shared/models';\nimport { ColorSetting } from '@app/shared/models/color-setting';\n\n@Component({\n  selector: 'app-orientation',\n  templateUrl: './orientation.component.html',\n  styleUrls: ['./orientation.component.scss']\n})\nexport class OrientationComponent implements OnInit {\n  @Input() patient: Patient;\n  @Input() orientation: Orientation;\n  @Input() editMode = false;\n  @Input() colorSetting: ColorSetting;\n  @Input() isVeterinarian: boolean;\n  @Output() formEmitter = new EventEmitter<FormGroup>();\n\n  orientations: string;\n  orientationForm: FormGroup;\n\n  constructor(private fb: FormBuilder) {\n    this.orientationForm = this.fb.group({\n      title: ['', Validators.required],\n      text: ['', Validators.required],\n      orientations: [''],\n      showPatientCpf: [false],\n      showPrescriberCpf: [false]\n    });\n  }\n\n  ngOnInit() {\n    if (this.orientation) {\n      this.orientationForm.get('title').setValue(this.orientation.title);\n      const value = this.orientation.orientations.reduce(\n        (accumulator, currentValue) => accumulator + '\\n' + currentValue\n      );\n      this.orientationForm.get('text').setValue(value);\n      this.orientationForm.get('orientations').setValue(this.orientation.orientations);\n    }\n\n    this.orientationForm.get('text').valueChanges.subscribe(val => {\n      if (val) {\n        const value = val.split('\\n');\n        this.orientationForm.get('orientations').setValue(value);\n      }\n    });\n    this.formEmitter.emit(this.orientationForm);\n  }\n\n  @Input()\n  set orientationModel(orientationModel: any) {\n    if (orientationModel) {\n      const value = orientationModel.orientations.reduce((acc, val) => acc + '\\n' + val);\n      this.orientationForm.get('text').setValue(value);\n      this.orientationForm.get('title').setValue(orientationModel.title);\n      this.orientationForm.get('orientations').setValue(orientationModel.orientations);\n    }\n  }\n\n  get showCpfText() {\n    return this.patient && !this.patient.cpf ? 'Mostrar CPF do Responsável' : 'Mostrar CPF do Paciente';\n  }\n}\n","export default \"<div class=\\\"orientation\\\" [formGroup]=\\\"orientationForm\\\">\\n  <nz-form-item *ngIf=\\\"patient\\\">\\n    <label nz-checkbox formControlName=\\\"showPatientCpf\\\">\\n      <span> {{ showCpfText }} </span>\\n    </label>\\n    <label nz-checkbox formControlName=\\\"showPrescriberCpf\\\">\\n      <span> Mostrar CPF do Prescritor </span>\\n    </label>\\n  </nz-form-item>\\n  <label for=\\\"material\\\">Título</label>\\n  <input\\n    id=\\\"title\\\"\\n    class=\\\"input-name\\\"\\n    formControlName=\\\"title\\\"\\n    nz-input\\n    placeholder=\\\"Digite o título do documento\\\"\\n    [ngStyle]=\\\"{\\n      'background-color': colorSetting?.inputBackground,\\n      'border-color': colorSetting?.inputBorder\\n    }\\\"\\n  />\\n  <label for=\\\"material\\\">Escreva o conteúdo do documento:</label>\\n  <textarea\\n    rows=\\\"4\\\"\\n    nz-input\\n    formControlName=\\\"text\\\"\\n    [ngStyle]=\\\"{\\n      'background-color': colorSetting?.inputBackground,\\n      'border-color': colorSetting?.inputBorder\\n    }\\\"\\n  ></textarea>\\n</div>\\n\";","export default \"textarea {\\n  padding: 20px;\\n}\";","import { Component, Input, OnInit } from '@angular/core';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { ThemeService } from '@app/theme';\n\n@Component({\n  selector: 'app-navigation',\n  template: `\n    <nav class=\"navbar navbar-expand-lg navbar-light\" theme>\n      <a class=\"navbar-brand\">\n        <img\n          [src]=\"isThemeActiveReceitaDigital() ? 'assets/img/logo-03.png' : 'assets/img/mrd/logo-03.png'\"\n          [alt]=\"isThemeActiveReceitaDigital() ? 'Logo Receita Digital' : 'Logo MRD'\"\n        />\n      </a>\n      <div class=\"brand-bg bg-primary\" *ngIf=\"brandBackGround\">\n        <h4 class=\"title-semi-bold\">{{ title }}</h4>\n      </div>\n      <div class=\"navbar-text\" *ngIf=\"!brandBackGround\">\n        <h4 class=\"title-semi-bold\">{{ title }}</h4>\n      </div>\n      <div class=\"container-fluid\">\n        <button\n          class=\"navbar-toggler\"\n          type=\"button\"\n          data-toggle=\"collapse\"\n          data-target=\"#navbar-default\"\n          aria-controls=\"navbar-default\"\n          aria-expanded=\"false\"\n          aria-label=\"Toggle navigation\"\n        >\n          <span class=\"navbar-toggler-icon\"></span>\n        </button>\n        <div class=\"collapse navbar-collapse\" id=\"navbar-default\">\n          <div class=\"navbar-header\"></div>\n          <div class=\"navbar-collapse-header\">\n            <div class=\"row\">\n              <div class=\"col-6 collapse-brand\">\n                <a href=\"#\">\n                  <img src=\"assets/img/logo-03.png\" />\n                </a>\n              </div>\n              <div class=\"col-6 collapse-close\">\n                <button\n                  type=\"button\"\n                  class=\"navbar-toggler\"\n                  data-toggle=\"collapse\"\n                  data-target=\"#navbar-default\"\n                  aria-controls=\"navbar-default\"\n                  aria-expanded=\"false\"\n                  aria-label=\"Toggle navigation\"\n                >\n                  <span></span>\n                  <span></span>\n                </button>\n              </div>\n            </div>\n          </div>\n\n          <ul class=\"navbar-nav ml-lg-auto align-items-center\">\n            <ng-container *ngIf=\"isLoggedOut\">\n              <li class=\"nav-item\">\n                <a\n                  class=\"btn btn-md register-btn\"\n                  [ngClass]=\"navbarBackGround === 'bg-primary' ? 'btn-info' : 'btn-primary'\"\n                  routerLink=\"/entry/account-type\"\n                >\n                  Cadastre-se\n                </a>\n              </li>\n              <li class=\"nav-item\">\n                <a\n                  routerLink=\"/login\"\n                  class=\"btn btn-icon btn-circle\"\n                  [ngClass]=\"navbarBackGround === 'bg-primary' ? 'btn-info' : 'btn-alt-black'\"\n                >\n                  <span class=\"btn-inner--icon\"><i class=\"fa fa-user-solid\"></i></span>\n                </a>\n              </li>\n            </ng-container>\n\n            <ng-container *ngIf=\"isLoggedIn\">\n              <li class=\"nav-item\">\n                <button (click)=\"toggle()\" *ngIf=\"false\">Mudar Tema</button>\n              </li>\n              <li class=\"nav-item\">\n                <a href=\"#\" class=\"nav-link\" (click)=\"$event.preventDefault()\">\n                  <div class=\"photo\">\n                    <img\n                      *ngIf=\"user as u\"\n                      [alt]=\"u.name\"\n                      class=\"img-fluid\"\n                      src=\"/assets/img/default-avatar.png\"\n                    />\n                  </div>\n                </a>\n              </li>\n              <li class=\"nav-item\" *ngIf=\"!disableNavigation\">\n                <a\n                  routerLink=\"/entry/login\"\n                  (click)=\"logout()\"\n                  class=\"nav-link nav-link-icon logoutIcon\"\n                >\n                  <i class=\"fa fa-exit\" id=\"logout-confirmation\"></i>\n                </a>\n              </li>\n            </ng-container>\n          </ul>\n        </div>\n      </div>\n    </nav>\n  `,\n  styleUrls: ['./navigation.component.scss']\n})\nexport class NavigationComponent implements OnInit {\n  @Input() title: string;\n  @Input() navbarBackGround = 'bg-green';\n  @Input() brandBackGround = false;\n  @Input() disableNavigation = false;\n\n  constructor(private authService: AuthService, private themeService: ThemeService) {}\n\n  ngOnInit() {}\n\n  get user() {\n    return this.authService.user();\n  }\n\n  logout() {\n    this.authService.logout();\n  }\n\n  get isLoggedIn() {\n    return this.authService.isLoggedIn;\n  }\n\n  get isLoggedOut() {\n    return this.authService.isLoggedOut;\n  }\n\n  isThemeActiveReceitaDigital() {\n    const active = this.themeService.getActiveTheme();\n    return active.name === 'theme-receita-digital';\n  }\n\n  toggle() {\n    if (this.isThemeActiveReceitaDigital()) {\n      this.themeService.setTheme('theme-mrd');\n    } else {\n      this.themeService.setTheme('theme-receita-digital');\n    }\n  }\n}\n","export default \".navbar {\\n  padding-top: 0;\\n  padding-bottom: 0;\\n  padding-left: 0;\\n  height: 80px;\\n}\\n.navbar .btn {\\n  text-transform: uppercase;\\n  font-family: \\\"problack\\\", sans-serif;\\n  color: white;\\n}\\n.navbar .btn.register-btn {\\n  height: 40px;\\n  display: flex;\\n  align-items: center;\\n}\\n.navbar-brand {\\n  height: 100%;\\n  width: 80px;\\n  flex: 0 0 80px;\\n  justify-content: center;\\n  display: flex;\\n  align-items: center;\\n  background-color: white;\\n  margin: 0 60px 0 0;\\n}\\n.brand-bg {\\n  width: 184px;\\n  height: 66px;\\n  align-self: baseline;\\n  padding: 0 10px;\\n}\\n.brand-bg .title-semi-bold {\\n  color: white;\\n  font-size: 20px;\\n  margin-bottom: 0;\\n}\\n.navbar-text {\\n  width: 30%;\\n  padding-bottom: 0;\\n  padding-top: 0;\\n}\\n.navbar-text .title-semi-bold {\\n  margin-bottom: 0;\\n  color: white;\\n  font-size: 25px;\\n}\\n#logout-confirmation {\\n  color: white;\\n}\\n#logout-confirmation:hover {\\n  color: rgba(248, 248, 248, 0.7);\\n}\";","export default \"<div class=\\\"prescription\\\" [formGroup]=\\\"prescriptionForm\\\">\\n  <nz-form-item *ngIf=\\\"patient\\\">\\n    <label nz-checkbox formControlName=\\\"showPatientCpf\\\">\\n      <span>\\n        {{ showCpfText }}\\n      </span>\\n    </label>\\n\\n    <label nz-checkbox formControlName=\\\"showPrescriberCpf\\\">\\n      <span>\\n        Mostrar CPF do Prescritor\\n      </span>\\n    </label>\\n  </nz-form-item>\\n  <ng-container formArrayName=\\\"medicaments\\\">\\n    <ng-container\\n      *ngFor=\\\"let medicamentFormGroup of prescriptionForm.get('medicaments')['controls']; let i = index\\\"\\n      [formGroup]=\\\"medicamentFormGroup\\\"\\n    >\\n      <div class=\\\"medication-container\\\" *ngIf=\\\"medicamentFormGroup.value as medicament\\\">\\n        <div class=\\\"add-prescription d-flex\\\" *ngIf=\\\"medicament.chooseMedicament\\\">\\n          <ng-container>\\n            <textarea\\n              [ngStyle]=\\\"{ color: colorSetting?.primary }\\\"\\n              [nzAutocomplete]=\\\"autoMedication\\\"\\n              appFocus\\n              focus=\\\"true\\\"\\n              placeholder=\\\"Nome do medicamento ou princípio ativo\\\"\\n              class=\\\"medicationNameInput\\\"\\n              formControlName=\\\"medication\\\"\\n              nz-input\\n            ></textarea>\\n            <button\\n              class=\\\"btn btn-add-name\\\"\\n              nz-button\\n              [disabled]=\\\"!medicamentFormGroup.get('medication')?.value\\\"\\n              (click)=\\\"addManual(medicamentFormGroup)\\\"\\n              [ngStyle]=\\\"{\\n                'background-color': colorSetting?.secondary,\\n                'border-color': colorSetting?.secondary\\n              }\\\"\\n            >\\n              <i class=\\\"fas fa-arrow-right\\\"></i>\\n            </button>\\n            <nz-autocomplete #autoMedication class=\\\"medicationAutoComplete\\\" nzBackfill>\\n              <div *ngIf=\\\"search\\\">\\n                <ng-container *ngFor=\\\"let option of medications$ | async\\\">\\n                  <nz-auto-option\\n                    (click)=\\\"selectMedicament(medicamentFormGroup, option)\\\"\\n                    [nzLabel]=\\\"option.nome\\\"\\n                    [nzValue]=\\\"option\\\"\\n                  >\\n                    <span>{{ option?.nome }}</span>\\n                    <span id=\\\"indexPresentation\\\">, &nbsp;{{ option.apresentacaoCustomizada }}</span>\\n                    <span *ngIf=\\\"option?.tipo\\\">, &nbsp;{{ option?.tipo }}</span>\\n                  </nz-auto-option>\\n                </ng-container>\\n                <nz-auto-option\\n                  (click)=\\\"addManual(medicamentFormGroup)\\\"\\n                  *ngIf=\\\"medicament.medication\\\"\\n                  [nzValue]=\\\"medicament.medication\\\"\\n                  class=\\\"text-center\\\"\\n                >\\n                  <p\\n                    class=\\\"text-underline title-semi-bold mb-0 flex-grow-1\\\"\\n                    [ngStyle]=\\\"{ color: colorSetting?.secondary }\\\"\\n                  >\\n                    Adicionar texto livre\\n                  </p>\\n                </nz-auto-option>\\n              </div>\\n            </nz-autocomplete>\\n          </ng-container>\\n        </div>\\n\\n        <div *ngIf=\\\"medicament.addedMedication\\\">\\n          <div *ngIf=\\\"medicament.medicamentId\\\">\\n            <h4 class=\\\"title\\\" *ngIf=\\\"!medicament.chooseMedicament\\\">\\n              {{ i + 1 }}. {{ medicament.name }}\\n            </h4>\\n\\n            <h2 class=\\\"activePrinciples\\\">{{ medicament.principle }} - {{ medicament.description }}</h2>\\n          </div>\\n\\n          <div\\n            *ngIf=\\\"!medicament.medicamentId && !medicament.chooseMedicament\\\"\\n            class=\\\"free-prescription\\\"\\n          >\\n            <h4 class=\\\"title\\\">{{ i + 1 }}. {{ medicament.name }}</h4>\\n          </div>\\n          <h2 class=\\\"activePrinciples\\\" *ngIf=\\\"medicament.principle || medicament.description\\\">\\n            {{ medicament.principle }}\\n            <span *ngIf=\\\"medicament.principle && medicament.description\\\"> - </span\\n            >{{ medicament.description }}\\n          </h2>\\n\\n          <nz-form-item>\\n            <nz-form-label [nzFor]=\\\"'dosage_' + i\\\" class=\\\"sr-only\\\">Posologia</nz-form-label>\\n            <nz-form-control>\\n              <textarea\\n                [focus]=\\\"!adding\\\"\\n                [id]=\\\"'dosage_' + i\\\"\\n                appAutoSize\\n                appFocus\\n                formControlName=\\\"dosage\\\"\\n                nz-input\\n                placeholder=\\\"Escreva aqui a posologia...\\\"\\n                [disabled]=\\\"signed || medicament.disabled\\\"\\n              ></textarea>\\n            </nz-form-control>\\n          </nz-form-item>\\n          <app-auto-width-input-number\\n            [id]=\\\"'quantidade' + i\\\"\\n            formControlName=\\\"prescribedQuantity\\\"\\n            [disabled]=\\\"signed || medicament.disabled\\\"\\n            [colorSetting]=\\\"colorSetting\\\"\\n          >\\n          </app-auto-width-input-number>\\n\\n          <div\\n            class=\\\"buttons-edit-prescription\\\"\\n            *ngIf=\\\"!signed && !medicament.chooseMedicament && !medicament.manipuled\\\"\\n          >\\n            <button\\n              *ngIf=\\\"!medicament.disabled\\\"\\n              (click)=\\\"editMedicament(medicamentFormGroup)\\\"\\n              title=\\\"Alterar medicamento\\\"\\n              class=\\\"btn btn-icon btn-simple\\\"\\n              type=\\\"button\\\"\\n            >\\n              <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-pencil-solid\\\"></i></span>\\n            </button>\\n            <button\\n              (click)=\\\"deletePrescription(i)\\\"\\n              title=\\\"Remover medicamento\\\"\\n              class=\\\"btn btn-icon btn-simple\\\"\\n              type=\\\"button\\\"\\n            >\\n              <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-trash-solid\\\"></i></span>\\n            </button>\\n          </div>\\n        </div>\\n      </div>\\n    </ng-container>\\n  </ng-container>\\n\\n  <div class=\\\"add-prescription\\\" *ngIf=\\\"!signed\\\">\\n    <button\\n      (click)=\\\"addRow()\\\"\\n      *ngIf=\\\"!adding\\\"\\n      class=\\\"btn btn-icon btn-add-outiline text-capitalize\\\"\\n      type=\\\"button\\\"\\n      [ngStyle]=\\\"{\\n        'background-color': colorSetting?.secondary,\\n        'border-color': colorSetting?.secondary\\n      }\\\"\\n    >\\n      <span class=\\\"btn-inner--text\\\">Adicionar Medicamento</span>\\n      <span\\n        class=\\\"btn-inner--icon\\\"\\n        [ngStyle]=\\\"{\\n          'background-color': colorSetting?.primary,\\n          'border-color': colorSetting?.primary\\n        }\\\"\\n        ><i class=\\\"fa fa-plus\\\"></i\\n      ></span>\\n    </button>\\n  </div>\\n</div>\\n\";","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { CrService } from '@app/modules/document/services/cr.service';\nimport { Patient } from '@app/shared/models';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { Observable, ReplaySubject, timer } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, take, takeUntil } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-prescription',\n  templateUrl: './prescription.component.html',\n  styleUrls: ['./prescription.component.scss']\n})\nexport class PrescriptionComponent implements OnInit, OnDestroy {\n  @Input() patient: Patient;\n  @Input() editMode: boolean;\n  @Input() colorSetting: ColorSetting;\n  @Input() isVeterinarian: boolean;\n  @Output() formEmitter: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();\n\n  public adding = true;\n  public search = true;\n  signed = false;\n  public medications$: Observable<any[]>;\n  private destroyed$: ReplaySubject<boolean> = new ReplaySubject<boolean>();\n\n  prescriptionForm = this.fb.group({\n    code: [''],\n    manipulatedprofile: [undefined],\n    showPatientCpf: [false],\n    showPrescriberCpf: [false],\n    medication: [''],\n    medicaments: this.fb.array([], Validators.required),\n    local: [''],\n    version: ['PRODUCTION']\n  });\n\n  constructor(private crService: CrService, private fb: FormBuilder) {\n    this.addRow();\n  }\n\n  ngOnInit() {\n    this.formEmitter.emit(this.prescriptionForm);\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed$.next(true);\n    this.destroyed$.complete();\n  }\n\n  @Input()\n  set prescription(prescription: any) {\n    if (prescription) {\n      this.medicamentsFormCtrl.removeAt(0);\n      this.signed = prescription.status === 'Assinada';\n      this.prescriptionForm.patchValue(prescription);\n      prescription.medicaments.forEach(m => {\n        this.addPrescription({\n          ...m,\n          nome: m.name,\n          id: m.medicamentId,\n          principio: m.principle,\n          laboratorio: m.laboratory,\n          ean: m.ean,\n          apresentacaoCustomizada: m.description,\n          quantity: m.prescribedQuantity,\n          chooseMedicament: false,\n          addedMedication: true,\n          manipuled: m.manipuled,\n          prescriptionTypeId: m.prescriptionTypeId,\n          typeCr: m.type\n        });\n      });\n\n      timer(100)\n        .pipe(take(1))\n        .subscribe(() => (this.adding = false));\n    }\n  }\n\n  @Input()\n  set prescriptionModel(prescriptionModel: any) {\n    if (prescriptionModel) {\n      this.removeEmptyMedicaments(this.medicamentsFormCtrl);\n      prescriptionModel.medicaments.forEach(m => {\n        this.addMedicament({\n          ...m,\n          quantity: m.prescribedQuantity,\n          chooseMedicament: false,\n          addedMedication: true\n        });\n      });\n\n      timer(100)\n        .pipe(take(1))\n        .subscribe(() => (this.adding = false));\n    }\n  }\n\n  private removeEmptyMedicaments(medicamentsFormCtrl: FormArray): void {\n    for (let i = medicamentsFormCtrl.controls.length - 1; i >= 0; i--) {\n      const medicament = medicamentsFormCtrl.controls[i].value;\n      if (!medicament.name) {\n        medicamentsFormCtrl.removeAt(i);\n      }\n    }\n  }\n\n  @Input()\n  set manipulatedProfile(manipulatedProfile: any) {\n    if (manipulatedProfile) {\n      this.prescriptionForm.get('manipulatedprofile').setValue(manipulatedProfile._id);\n      this.medicamentsFormCtrl.removeAt(0);\n      manipulatedProfile.medicaments.forEach(m => {\n        this.addPrescription({\n          ...m,\n          nome: m.name,\n          chooseMedicament: false,\n          addedMedication: true,\n          manipuled: true\n        });\n      });\n      timer(100)\n        .pipe(take(1))\n        .subscribe(() => (this.adding = false));\n    }\n  }\n\n  get showCpfText() {\n    return this.patient && !this.patient.cpf ? 'Mostrar CPF do Responsável' : 'Mostrar CPF do Paciente';\n  }\n\n  formMedicaments({\n    name,\n    medicamentId,\n    principle,\n    laboratory,\n    ean,\n    quantity,\n    description,\n    dosage,\n    medication,\n    chooseMedicament,\n    addedMedication,\n    manipuled,\n    disabled = false,\n    prescriptionTypeId,\n    typeCr\n  }): FormGroup {\n    const formGroup = new FormGroup({\n      name: new FormControl(name),\n      medicamentId: new FormControl(medicamentId),\n      prescribedQuantity: new FormControl(quantity),\n      dosage: new FormControl(dosage, Validators.required),\n      description: new FormControl(description),\n      principle: new FormControl(principle),\n      laboratory: new FormControl(laboratory),\n      ean: new FormControl(ean),\n      medication: new FormControl(medication),\n      quantity: new FormControl(quantity),\n      chooseMedicament: new FormControl(chooseMedicament),\n      addedMedication: new FormControl(addedMedication),\n      manipuled: new FormControl(manipuled),\n      disabled: new FormControl(disabled),\n      prescriptionTypeId: new FormControl(prescriptionTypeId),\n      typeCr: new FormControl(typeCr)\n    });\n    formGroup\n      .get('medication')\n      .valueChanges.pipe(\n        filter(value => value && value.length >= 3 && this.search),\n        debounceTime(300),\n        distinctUntilChanged(),\n        takeUntil(this.destroyed$)\n      )\n      .subscribe(text => {\n        this.medications$ = this.crService.searchMedicament(text);\n      });\n\n    if (disabled) {\n      formGroup.disable();\n    }\n\n    return formGroup;\n  }\n\n  editMedicament(medicament) {\n    medicament.get('chooseMedicament').setValue(true);\n    medicament.get('medication').setValue(medicament.get('name').value);\n    this.search = true;\n  }\n\n  selectMedicament(medicament: FormGroup, selectedMedicament: any) {\n    this.search = false;\n    this.adding = false;\n    medicament.get('name').setValue(selectedMedicament.nome);\n    medicament.get('principle').setValue(selectedMedicament.principio);\n    medicament.get('laboratory').setValue(selectedMedicament.laboratorio);\n    medicament.get('ean').setValue(selectedMedicament.ean);\n    medicament.get('description').setValue(selectedMedicament.apresentacaoCustomizada);\n    medicament.get('prescribedQuantity').setValue(1);\n    medicament.get('medication').setValue(null);\n    medicament.get('chooseMedicament').setValue(false);\n    medicament.get('addedMedication').setValue(true);\n    medicament.get('medicamentId').setValue(selectedMedicament.id);\n    medicament.get('prescriptionTypeId').setValue(selectedMedicament.prescriptionTypeId);\n    medicament.get('typeCr').setValue(selectedMedicament.typeCr);\n    this.medications$ = undefined;\n  }\n\n  get medicamentsFormCtrl(): FormArray {\n    return <FormArray>this.prescriptionForm.get('medicaments');\n  }\n\n  public addRow() {\n    this.addPrescription({\n      nome: '',\n      id: '',\n      principio: '',\n      laboratorio: '',\n      ean: '',\n      apresentacaoCustomizada: '',\n      quantity: 0,\n      medication: null,\n      chooseMedicament: true,\n      addedMedication: false,\n      manipuled: false,\n      prescriptionTypeId: '',\n      typeCr: ''\n    });\n    this.search = true;\n  }\n\n  public toggleAdding() {\n    this.adding = !this.adding;\n  }\n\n  private addPrescription({\n    nome,\n    id,\n    principio,\n    laboratorio,\n    ean,\n    apresentacaoCustomizada,\n    dosage = '',\n    quantity = 1,\n    medication,\n    chooseMedicament,\n    addedMedication,\n    manipuled,\n    disabled = false,\n    prescriptionTypeId,\n    typeCr\n  }): void {\n    this.medicamentsFormCtrl.push(\n      this.formMedicaments({\n        name: nome,\n        medicamentId: id,\n        principle: principio,\n        laboratory: laboratorio,\n        ean: ean,\n        description: apresentacaoCustomizada,\n        dosage,\n        quantity,\n        medication,\n        chooseMedicament,\n        addedMedication,\n        manipuled,\n        disabled,\n        prescriptionTypeId,\n        typeCr\n      })\n    );\n    // this.handleMedicationAutoBlur();\n    this.medications$ = undefined;\n    this.search = true;\n  }\n\n  private addMedicament(medicament: any): void {\n    this.medicamentsFormCtrl.push(this.formMedicaments(medicament));\n  }\n\n  public deletePrescription(index: number): void {\n    this.medicamentsFormCtrl.removeAt(index);\n    if (this.medicamentsFormCtrl.value.length) {\n      this.adding = false;\n    } else {\n      this.addRow();\n    }\n  }\n\n  public setSearch(search) {\n    this.search = search;\n  }\n\n  public addManual(medicamentFormGroup: FormGroup) {\n    const name = medicamentFormGroup.get('medication').value;\n    medicamentFormGroup.get('chooseMedicament').setValue(false);\n    medicamentFormGroup.get('addedMedication').setValue(true);\n    medicamentFormGroup.get('prescribedQuantity').setValue(1);\n    medicamentFormGroup.get('name').setValue(name);\n    medicamentFormGroup.get('medication').setValue(null);\n    medicamentFormGroup.get('description').setValue(undefined);\n    medicamentFormGroup.get('principle').setValue(undefined);\n    medicamentFormGroup.get('ean').setValue(undefined);\n    medicamentFormGroup.get('medicamentId').setValue(undefined);\n    medicamentFormGroup.get('prescriptionTypeId').setValue(null);\n    medicamentFormGroup.get('typeCr').setValue(null);\n    this.search = false;\n    this.adding = false;\n  }\n}\n","export default \".prescription ::ng-deep .ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {\\n  box-shadow: 0 9px 18px rgba(0, 0, 0, 0.18);\\n}\\n.prescription ::ng-deep .ant-drawer.ant-drawer-open .ant-drawer-mask {\\n  opacity: 0.11;\\n}\\n.prescription ::ng-deep .ant-drawer-body {\\n  padding-top: 0;\\n  height: 90vh;\\n  overflow: auto;\\n}\\n.prescription ::ng-deep .ant-drawer-open {\\n  top: 80px;\\n}\\n.prescription ::ng-deep .menu-drawer {\\n  top: 80px;\\n  background-color: #007260;\\n  border: 1px solid #007260;\\n}\\n.prescription ::ng-deep .menu-drawer .ant-drawer-content {\\n  background-color: transparent;\\n}\\n.prescription ::ng-deep .inner-menu {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.prescription ::ng-deep .inner-menu .menu-icon {\\n  align-self: flex-end;\\n  margin: 20px 0;\\n}\\n.prescription ::ng-deep .inner-menu .menu-icon .fa {\\n  font-size: 20px;\\n  color: white;\\n}\\n.prescription ::ng-deep .inner-menu .menu li {\\n  padding: 20px 0;\\n}\\n.prescription ::ng-deep .inner-menu .menu a {\\n  color: white;\\n  font-family: \\\"problack\\\";\\n  font-size: 18px;\\n  text-transform: uppercase;\\n}\\n.prescription ::ng-deep .inner-menu .menu a:focus {\\n  text-decoration: none;\\n}\\n.prescription ::ng-deep .inner-menu .menu a .fa {\\n  margin-right: 10px;\\n}\\n.prescription ::ng-deep .medicationAutoComplete {\\n  margin-top: 17px;\\n}\\n.prescription .toolbar {\\n  display: flex;\\n}\\n.prescription .toolbar .menu-toggler {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 0;\\n  border-radius: 0;\\n  width: 80px;\\n  filter: drop-shadow(0px 3px 6px rgba(0, 0, 0, 0.16));\\n  margin: 0;\\n}\\n.prescription .toolbar .menu-toggler .fa:before {\\n  font-size: 22px;\\n}\\n.prescription .toolbar .menu-toggler,\\n.prescription .toolbar .toolbar-options {\\n  height: 80px;\\n}\\n.prescription .toolbar .toolbar-menu {\\n  flex: 1;\\n}\\n.prescription .toolbar .toolbar-menu .toolbar-options {\\n  background-color: #f5f5f5;\\n  display: flex;\\n  align-items: center;\\n  justify-content: flex-end;\\n  padding-right: 40px;\\n  padding-left: 60px;\\n}\\n.prescription .toolbar .toolbar-menu .toolbar-options .btn {\\n  font-family: \\\"problack\\\", sans-serif;\\n}\\n.prescription .toolbar .toolbar-menu .toolbar-options .btn-green {\\n  background-color: #87ebe1;\\n  border-color: #87ebe1;\\n  color: #1b403a;\\n}\\n.prescription .toolbar .toolbar-menu .toolbar-options .btn-default {\\n  background-color: #afafaf;\\n  border-color: #afafaf;\\n  color: white;\\n}\\n.prescription .toolbar .toolbar-menu .toolbar-tags {\\n  background-color: #ebebeb;\\n  height: 40px;\\n  border-radius: 0 0 10px 10px;\\n}\\n.prescription .add-prescription {\\n  padding: 20px 0;\\n  border-top: 1px solid #f5f5f5;\\n  min-height: 81px;\\n  display: flex;\\n  justify-content: center;\\n}\\n.prescription .add-prescription.adding-bg {\\n  background-color: #f5f5f5;\\n  border-top: 1px solid transparent;\\n}\\n.prescription .add-prescription .btn-add-name {\\n  background-color: var(--bg-color-primary);\\n  border: 1px solid var(--bg-color-primary);\\n  color: var(--color-white);\\n  padding: 0px 10px;\\n  margin: 10px;\\n}\\n.prescription .add-prescription .btn-add {\\n  display: flex;\\n  padding: 0 0 0 1.25rem;\\n  height: 40px;\\n  align-items: center;\\n  border-radius: 10px;\\n  overflow: hidden;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n  background-color: var(--bg-color-secondary);\\n}\\n.prescription .add-prescription .btn-add .btn-inner--icon {\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 40px;\\n  width: 50px;\\n}\\n.prescription .btn-add-name {\\n  padding: 0px 10px;\\n  margin: 10px;\\n}\\n.prescription .medicationNameInput {\\n  background-color: transparent;\\n  border-color: transparent;\\n  height: 100%;\\n  box-shadow: none;\\n}\\n.prescription .free-prescription {\\n  display: flex;\\n}\\n.prescription .free-prescription .break-line {\\n  margin-left: 7px;\\n  white-space: pre-wrap;\\n}\\n.prescription textarea {\\n  resize: none;\\n  background-color: transparent;\\n  border: 0;\\n  border-radius: 0;\\n  box-shadow: none;\\n  padding-left: 12px;\\n  color: #4d4d4d;\\n  font-size: 18px;\\n}\\n.prescription textarea:hover, .prescription textarea:focus {\\n  border-color: transparent;\\n  box-shadow: none;\\n}\\n.btn-add-outiline {\\n  display: flex;\\n  padding: 0 0 0 8px;\\n  height: 40px;\\n  align-items: center;\\n  border-radius: 10px;\\n  overflow: hidden;\\n  border: 0;\\n  font-family: \\\"probold\\\", sans-serif;\\n  background-color: var(--bg-color-secondary);\\n  color: var(--color-white);\\n}\\n.btn-add-outiline .btn-inner--icon {\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 40px;\\n  width: 50px;\\n}\";","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedModule } from '@app/shared';\nimport { ComponentsModule } from '@app/shared/components/components.module';\nimport { NzCardModule } from 'ng-zorro-antd/card';\nimport { NzCarouselModule } from 'ng-zorro-antd/carousel';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\nimport { NzUploadModule } from 'ng-zorro-antd/upload';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { NgxLoadingModule } from 'ngx-loading';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { PatientsModule } from '../patients/patients.module';\nimport { DocumentRoutingModule } from './document-routing.module';\nimport { DocumentComponent } from './document.component';\nimport { DocumentGuard } from './guards/document.guard';\nimport { AttestationComponent } from './pages/attestation/attestation.component';\nimport { ConfirmationComponent } from './pages/confirmation/confirmation.component';\nimport { ExamComponent } from './pages/exam/exam.component';\nimport { InfusionProtocolComponent } from './pages/infusion-protocol/infusion-protocol.component';\nimport { ListingComponent } from './pages/listing/listing.component';\nimport { ModalIframeComponent } from './pages/modal-iframe/modal-iframe.component';\nimport { ModalListVictaProtocolComponent } from './pages/modal-list-victa-protocol/modal-list-victa-protocol.component';\nimport { ModalSelectLayoutComponent } from './pages/modal-select-layout/modal-select-layout.component';\nimport { ModelAddFavoriteDocumentComponent } from './pages/model-add-favorite-document/model-add-favorite-document.component';\nimport { ModelListFavoriteDocumentComponent } from './pages/model-list-favorite-document/model-list-favorite-document.component';\nimport { OrientationComponent } from './pages/orientation/orientation.component';\nimport { NavigationComponent } from './pages/prescription/navigation.component';\nimport { PrescriptionComponent } from './pages/prescription/prescription.component';\nimport { UnsignedPrescriptionModalComponent } from './pages/prescription/unsigned-prescription-modal.component';\nimport { UploadPdfComponent } from './pages/prescription/upload-pdf.component';\nimport { RetentionConfirmationComponent } from './pages/retention-confirmation/retention-confirmation.component';\n\n@NgModule({\n  declarations: [\n    PrescriptionComponent,\n    InfusionProtocolComponent,\n    NavigationComponent,\n    ConfirmationComponent,\n    UnsignedPrescriptionModalComponent,\n    RetentionConfirmationComponent,\n    ListingComponent,\n    UploadPdfComponent,\n    AttestationComponent,\n    ExamComponent,\n    DocumentComponent,\n    ModalIframeComponent,\n    OrientationComponent,\n    ModelAddFavoriteDocumentComponent,\n    ModelListFavoriteDocumentComponent,\n    ModalSelectLayoutComponent,\n    ModalListVictaProtocolComponent\n  ],\n  exports: [\n    PrescriptionComponent,\n    InfusionProtocolComponent,\n    NavigationComponent,\n    ConfirmationComponent,\n    UnsignedPrescriptionModalComponent,\n    RetentionConfirmationComponent,\n    ListingComponent,\n    UploadPdfComponent,\n    AttestationComponent,\n    ExamComponent,\n    DocumentComponent,\n    ModalIframeComponent,\n    OrientationComponent,\n    ModelAddFavoriteDocumentComponent,\n    ModelListFavoriteDocumentComponent,\n    ModalSelectLayoutComponent,\n    ModalListVictaProtocolComponent\n  ],\n  imports: [\n    CommonModule,\n    SharedModule,\n    DocumentRoutingModule,\n    PatientsModule,\n    ComponentsModule,\n    NgxLoadingModule.forRoot({}),\n    NzDropDownModule,\n    NzCardModule,\n    NzCarouselModule,\n    NzIconModule,\n    NgxMaskModule.forRoot(),\n    NzPopoverModule,\n    ModalModule.forRoot(),\n    NzProgressModule,\n    NzUploadModule\n  ],\n  providers: [DocumentGuard]\n})\nexport class DocumentModule {}\n","import { tap } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport { environment } from '@env/environment';\nimport { Injectable } from '@angular/core';\n\nexport const LOG_URL = 'qrcodelogs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LogsService {\n  constructor(private http: HttpClient) {}\n\n  getLogsByFilter(filter: any) {\n    return this.http.get<any>(`${environment.apiRoot}${LOG_URL}`, { params: filter }).pipe(\n      tap(res => {\n        if (res.groupBy) {\n          res.list\n            .sort((a, b) => {\n              if (a._id < b._id) {\n                return -1;\n              }\n              if (a._id > b._id) {\n                return 1;\n              }\n              return 0;\n            })\n            .forEach(item => {\n              item.key = item._id;\n            });\n        }\n      })\n    );\n  }\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'onlyNumbers'\r\n})\r\n@Injectable()\r\nexport class OnlyNumbersPipe implements PipeTransform {\r\n  transform(value = '') {\r\n    return value ? value.toString().replace(/[^\\d]+/g, '') : '';\r\n  }\r\n}\r\n","import { Component } from '@angular/core';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { UserService } from '@app/modules/user/user.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'app-modal-new-portal-digital-signatures',\n  templateUrl: './modal-new-portal-digital-signatures.component.html',\n  styleUrls: ['./modal-new-portal-digital-signatures.component.scss']\n})\nexport class ModalNewPortalDigitalSignaturesComponent {\n  doNotShowAgain = false;\n  constructor(\n    private modalRef: BsModalRef,\n    private appToastService: AppToastService,\n    private userService: UserService,\n    private authService: AuthService\n  ) {}\n\n  get user(): User {\n    return this.authService.user();\n  }\n  @nativeAsync\n  async onClose() {\n    try {\n      await this.userService\n        .checkUi({\n          ...this.user.ui,\n          doNotShowAgainModalNewPortalDigitalSignatures: this.doNotShowAgain\n        })\n        .toPromise();\n\n      this.modalRef.hide();\n    } catch (error) {\n      this.appToastService.notify('error', 'Erro ao marcar não mostrar novamente');\n    }\n  }\n}\n","export default \"<div class=\\\"modal-header\\\">\\n  <h6>ITI lança novo portal para validar assinaturas digitais</h6>\\n</div>\\n\\n<div class=\\\"modal-body\\\">\\n  <p>\\n    A partir de 06/03 todos os documentos digitais serão validados em um único portal:\\n    <span style=\\\"font-weight: bold;\\\">VALIDAR</span>\\n  </p>\\n  <p><a href=\\\"https://validar.iti.gov.br\\\" target=\\\"_blank\\\">https://validar.iti.gov.br/</a></p>\\n  <p>\\n    Todos os documentos emitidos na Receita Digital continuam válidos e são compatíveis com o novo\\n    portal, mesmo que a informação no rodapé da receita ainda tenha o endereço dos portais antigos. Mas\\n    não se preocupe! As receitas que você vê aqui no seu perfil farmácia já foram validadas pela Receita\\n    Digital! Ficou com alguma dúvida? Entre em contato com nosso atendimento em\\n    <a href=\\\"https://receitadigital.com/\\\" target=\\\"_blank\\\">receitadigital.com</a>\\n  </p>\\n  <label nz-checkbox [(ngModel)]=\\\"doNotShowAgain\\\" style=\\\"font-size: 16px; margin-bottom: 8px;\\\"\\n    >Estou ciente, não mostrar novamente.</label\\n  >\\n</div>\\n\\n<div class=\\\"modal-footer\\\">\\n  <button class=\\\"ok-btn\\\" nz-button class=\\\"btn-primary\\\" (click)=\\\"onClose()\\\">\\n    Fechar\\n  </button>\\n</div>\\n\";","export default \".modal-header {\\n  width: 500px;\\n  background-color: #4cbca3;\\n  font-family: \\\"probold\\\";\\n}\\n\\n.modal-body p {\\n  text-align: justify;\\n}\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { UserService } from '@app/modules/user/user.service';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { environment } from '@env/environment';\nimport moment from 'moment';\nimport { of } from 'rxjs';\nimport { catchError, debounceTime, filter, map, switchMap } from 'rxjs/operators';\nimport { DataBigboostConsult } from './../../../../shared/models/paciente';\n\n@Component({\n  selector: 'app-simplified-patient-form',\n  templateUrl: './simplified-patient-form.component.html'\n})\nexport class SimplifiedPatientFormComponent implements OnInit {\n  @Input() patient: DataBigboostConsult;\n  @Input() isRegisteredByPatient = true;\n\n  @Output() submit = new EventEmitter<FormGroup>();\n  @Output() formChange = new EventEmitter<FormGroup>();\n\n  form: FormGroup;\n\n  constructor(\n    private fb: FormBuilder,\n    private notification: AppToastService,\n    private userService: UserService\n  ) {}\n\n  ngOnInit() {\n    this.buildForm();\n    if (this.patient) {\n      this.handleConsultCpf(this.patient);\n    }\n\n    this.formChange.emit(this.form);\n\n    const emailForm = this.form.get('email');\n    emailForm.valueChanges\n      .pipe(\n        map(email => {\n          const value = email && email.toLowerCase();\n          emailForm.setValue(value, { emitEvent: false });\n          return value;\n        }),\n        filter(_ => emailForm.valid && emailForm.value),\n        debounceTime(environment.debounceTime),\n        switchMap(email => this.userService.checkEmailExists(email).pipe(catchError(err => of(err))))\n      )\n      .subscribe(res => {\n        if (res.status === 200) {\n          emailForm.setErrors({ exists: true });\n        } else if (res.status === 404) {\n          emailForm.setErrors(null);\n        } else if (res.status === 400) {\n          emailForm.setErrors({ invalid: true });\n        }\n      });\n\n    this.form.get('emailContact').valueChanges.subscribe(email => {\n      this.form.get('emailContact').setValue(email && email.toLowerCase(), { emitEvent: false });\n    });\n  }\n\n  buildForm() {\n    this.form = this.fb.group({\n      fullname: ['', Validators.required],\n      name: [''],\n      cpf: ['', Validators.required],\n      sex: ['', Validators.required],\n      dateOfBirth: ['', Validators.required],\n      cellphone: [''],\n      telephone: [''],\n      email: ['', Validators.email],\n      emailContact: ['', Validators.email],\n      membership: this.fb.group({\n        mothersName: ['']\n      }),\n      address: this.fb.group({\n        city: [''],\n        complement: [''],\n        number: [''],\n        street: [''],\n        neighborhood: [''],\n        cep: [''],\n        uf: ['']\n      }),\n      pendency: [null]\n    });\n  }\n\n  private handleConsultCpf(consult: DataBigboostConsult) {\n    this.form.get('name').reset();\n    this.form.get('name').enable();\n    this.form.get('cpf').setValue(consult.cpf);\n    if (consult.status === 1) {\n      this.setForm(consult);\n    } else {\n      this.form.get('fullname').enable();\n      this.form.get('pendency').setValue(consult);\n      this.resetForm();\n      if (consult.erro) {\n        this.notification.notify(\n          'warning',\n          'Aviso',\n          'A importação de dados do CPF está com instabilidade, mas você poderá se cadastrar preenchendo os campos manualmente.'\n        );\n      }\n    }\n  }\n\n  private setForm(consult: DataBigboostConsult) {\n    const nascimento = moment(consult.nascimento, 'DD/MM/YYYY');\n    this.form.get('cpf').setValue(consult.cpf);\n    this.form.get('fullname').setValue(consult.nome);\n    this.form.get('name').setValue(consult.nome);\n    this.form.get('dateOfBirth').setValue(nascimento.format('YYYY-MM-DD'));\n\n    this.form.get('cpf').disable();\n    this.form.get('fullname').disable();\n    this.form.get('dateOfBirth').disable();\n  }\n\n  private resetForm() {\n    this.form.get('fullname').reset();\n  }\n}\n","export default \"<form nz-form [formGroup]=\\\"form\\\" theme>\\n  <div class=\\\"row\\\">\\n    <nz-alert\\n      class=\\\"mb-4\\\"\\n      nzType=\\\"warning\\\"\\n      nzMessage=\\\"Para agilizar seu cadastro, buscaremos dados complementares no site da Receita Federal.\\nEste é um procedimento seguro e o sigilo dos seus dados é garantido pela nossa plataforma\\\"\\n    ></nz-alert>\\n  </div>\\n  <app-personal-data-form [form]=\\\"form\\\"></app-personal-data-form>\\n  <app-contacts-data-form [form]=\\\"form\\\"></app-contacts-data-form>\\n  <app-address-data-form [form]=\\\"form.get('address')\\\"></app-address-data-form>\\n</form>\\n\";","export default \"<form nz-form [formGroup]=\\\"form\\\" theme>\\n  <div class=\\\"row\\\">\\n    <nz-alert\\n      class=\\\"mb-4\\\"\\n      nzType=\\\"warning\\\"\\n      nzMessage=\\\"Para agilizar seu cadastro, buscaremos dados complementares no site da Receita Federal.\\n  Este é um procedimento seguro e o sigilo dos seus dados é garantido pela nossa plataforma\\\"\\n    ></nz-alert>\\n  </div>\\n  <app-pet-data-form [form]=\\\"form\\\"></app-pet-data-form>\\n  <app-personal-data-form\\n    [form]=\\\"formResponsible\\\"\\n    [isResponsible]=\\\"true\\\"\\n    [showAlertMsg]=\\\"false\\\"\\n  ></app-personal-data-form>\\n  <app-contacts-data-form [form]=\\\"formResponsible\\\" [showAlertMsg]=\\\"false\\\"></app-contacts-data-form>\\n  <app-address-data-form\\n    [form]=\\\"formResponsible.get('address')\\\"\\n    [showAlertMsg]=\\\"false\\\"\\n  ></app-address-data-form>\\n</form>\\n\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { UserService } from '@app/modules/user/user.service';\nimport { Patient } from '@app/shared/models';\nimport { DataBigboostConsult } from '@app/shared/models/paciente';\nimport { environment } from '@env/environment';\nimport moment from 'moment';\nimport { of } from 'rxjs';\nimport { catchError, debounceTime, filter, map, switchMap } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-simplified-pet-patient-form',\n  templateUrl: './simplified-pet-patient-form.component.html',\n  styleUrls: ['./simplified-pet-patient-form.component.scss']\n})\nexport class SimplifiedPetPatientFormComponent implements OnInit {\n  @Input() responsible: DataBigboostConsult & Patient;\n  @Input() responsibleExists = false;\n  @Output() formChange = new EventEmitter<FormGroup>();\n\n  form: FormGroup;\n\n  constructor(private fb: FormBuilder, private userService: UserService) {\n    this.buildForm();\n  }\n\n  private buildForm() {\n    this.form = this.fb.group({\n      _id: [null],\n      name: ['', Validators.required],\n      species: ['', Validators.required],\n      sex: [''],\n      race: [''],\n      isApproximateAge: [],\n      approximateAgeLabel: [\n        {\n          value: '',\n          disabled: true\n        }\n      ],\n      dateOfBirth: [''],\n      weight: [null],\n      fur: [''],\n      castration: [false, Validators.required],\n      temperament: [''],\n      microchipNumber: [''],\n      responsible: this.fb.group({\n        _id: [null],\n        cpf: ['', [Validators.required, ValidationService.cpfValidator]],\n        fullname: ['', Validators.required],\n        name: ['', Validators.required],\n        sex: ['', Validators.required],\n        dateOfBirth: ['', Validators.required],\n        membership: this.fb.group({\n          mothersName: ['']\n        }),\n        cellphone: [''],\n        telephone: [''],\n        email: ['', Validators.email],\n        emailContact: ['', Validators.email],\n        address: this.fb.group({\n          uf: [''],\n          city: [''],\n          complement: [''],\n          number: [''],\n          street: [''],\n          neighborhood: [''],\n          cep: ['']\n        }),\n        pendency: [null]\n      })\n    });\n  }\n\n  ngOnInit(): void {\n    if (this.responsibleExists) {\n      this.patchResponsibleExists(this.responsible);\n      this.disableFields();\n    } else {\n      this.patchResponsibleNotExists(this.responsible);\n      this.formResponsible.get('cpf').disable();\n    }\n\n    const emailForm = this.form.get('responsible.email');\n    emailForm.valueChanges\n      .pipe(\n        map(email => {\n          const value = email && email.toLowerCase();\n          emailForm.setValue(value, { emitEvent: false });\n          return value;\n        }),\n        filter(\n          _ =>\n            emailForm.valid &&\n            emailForm.value &&\n            (!this.responsibleExists || emailForm.value !== this.responsible.user.email)\n        ),\n        debounceTime(environment.debounceTime),\n        switchMap(email => this.userService.checkEmailExists(email).pipe(catchError(err => of(err))))\n      )\n      .subscribe(res => {\n        if (res.status === 200) {\n          emailForm.setErrors({ exists: true });\n        } else if (res.status === 404) {\n          emailForm.setErrors(null);\n        } else if (res.status === 400) {\n          emailForm.setErrors({ invalid: true });\n        }\n      });\n\n    this.form.get('responsible.emailContact').valueChanges.subscribe(email => {\n      this.form\n        .get('responsible.emailContact')\n        .setValue(email && email.toLowerCase(), { emitEvent: false });\n    });\n\n    this.formChange.emit(this.form);\n  }\n\n  get formResponsible(): FormGroup {\n    return <FormGroup>this.form.get('responsible');\n  }\n\n  private patchResponsibleExists(responsible: Patient) {\n    this.formResponsible.patchValue(responsible);\n    if (responsible.dateOfBirth) {\n      const dateStr = responsible.dateOfBirth.toString().split('T')[0];\n      const dateOfBirth = moment(dateStr).format('YYYY-MM-DD');\n      this.formResponsible.get('dateOfBirth').setValue(dateOfBirth);\n    }\n    if (responsible.user && responsible.user.email) {\n      this.formResponsible.get('email').setValue(responsible.user.email);\n    }\n  }\n\n  private patchResponsibleNotExists(responsible: DataBigboostConsult) {\n    const nascimento = moment(responsible.nascimento, 'DD/MM/YYYY');\n    this.formResponsible.patchValue({\n      cpf: responsible.cpf,\n      fullname: responsible.nome,\n      name: responsible.nome,\n      sex: responsible.genero,\n      dateOfBirth: nascimento.format('YYYY-MM-DD'),\n      membership: {\n        mothersName: responsible.mae\n      }\n    });\n  }\n\n  private disableFields() {\n    this.formResponsible.get('cpf').disable();\n    this.formResponsible.get('fullname').disable();\n    this.formResponsible.get('dateOfBirth').disable();\n  }\n}\n","export default \"\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { UserService } from '@app/modules/user/user.service';\nimport { Patient } from '@app/shared/models';\nimport { DataBigboostConsult } from '@app/shared/models/paciente';\nimport moment from 'moment';\n\n@Component({\n  selector: 'app-simplified-underage-patient-form',\n  templateUrl: './simplified-underage-patient-form.component.html'\n})\nexport class SimplifiedUnderagePatientFormComponent implements OnInit {\n  @Input() patient: DataBigboostConsult | Patient;\n  @Input() isResponsible = false;\n  @Input() existingPatient = false;\n\n  @Output() formChange = new EventEmitter<FormGroup>();\n\n  form: FormGroup;\n  consultResponsible = false;\n\n  constructor(private fb: FormBuilder, private userService: UserService) {}\n\n  ngOnInit() {\n    this.buildForm();\n    if (this.existingPatient && this.isResponsible) {\n      this.patchFormResponsible({\n        patientExists: true,\n        data: this.patient\n      });\n    } else {\n      this.patchValueForm(this.patient);\n      this.disabledFields(this.patient);\n    }\n\n    this.form.get('responsible.emailContact').valueChanges.subscribe(email => {\n      this.form\n        .get('responsible.emailContact')\n        .setValue(email && email.toLowerCase(), { emitEvent: false });\n    });\n\n    this.formChange.emit(this.form);\n  }\n\n  get formResponsible(): FormGroup {\n    return <FormGroup>this.form.get('responsible');\n  }\n\n  buildForm() {\n    this.form = this.fb.group({\n      _id: [null],\n      cpf: ['', [ValidationService.cpfValidator]],\n      fullname: ['', Validators.required],\n      name: [''],\n      sex: ['', Validators.required],\n      dateOfBirth: ['', Validators.required],\n      membership: this.fb.group({\n        mothersName: ['']\n      }),\n      responsible: this.fb.group({\n        _id: [null],\n        cpf: ['', [Validators.required, ValidationService.cpfValidator]],\n        fullname: ['', Validators.required],\n        name: ['', Validators.required],\n        sex: ['', Validators.required],\n        dateOfBirth: ['', Validators.required],\n        membership: this.fb.group({\n          mothersName: ['']\n        }),\n        cellphone: [''],\n        telephone: [''],\n        email: ['', Validators.email],\n        emailContact: ['', Validators.email],\n        address: this.fb.group({\n          uf: [''],\n          city: [''],\n          complement: [''],\n          number: [''],\n          street: [''],\n          neighborhood: [''],\n          cep: ['']\n        }),\n        pendency: [null]\n      })\n    });\n  }\n\n  patchValueForm(patient: DataBigboostConsult) {\n    if (patient.status === 1 || patient.status === 200) {\n      const nascimento = moment(patient.nascimento, 'DD/MM/YYYY');\n\n      const valuesDisableds = {\n        _id: patient.id,\n        cpf: patient.cpf,\n        fullname: patient.nome,\n        name: patient.nome,\n        dateOfBirth: nascimento.format('YYYY-MM-DD')\n      };\n\n      if (this.isResponsible) {\n        this.formResponsible.patchValue(valuesDisableds);\n      } else {\n        this.form.patchValue(valuesDisableds);\n      }\n    }\n  }\n\n  patchFormResponsible({ patientExists, data }) {\n    if (data) {\n      if (patientExists) {\n        this.patchFormResponsiblePatientExists(data);\n      } else {\n        this.patchFormResponsibleNotPatientExists(data);\n      }\n\n      this.consultResponsible = true;\n      this.disabledFieldsForm(patientExists);\n      this.formResponsible.get('cpf').disable();\n    }\n  }\n\n  private patchFormResponsiblePatientExists(data: Patient) {\n    this.formResponsible.patchValue(data);\n    if (data.dateOfBirth) {\n      const dateStr = String(data.dateOfBirth);\n      const dateOfBirth = moment(dateStr.substring(0, 10)).format('YYYY-MM-DD');\n      this.formResponsible.get('dateOfBirth').setValue(dateOfBirth);\n    }\n\n    if (data && data.user && data.user.email) {\n      this.formResponsible.get('email').setValue(data.user.email);\n    }\n  }\n\n  private patchFormResponsibleNotPatientExists(data: DataBigboostConsult) {\n    const nascimento = moment(data.nascimento, 'DD/MM/YYYY');\n    const patientValues = {\n      cpf: data.cpf,\n      fullname: data.nome,\n      name: data.nome,\n      dateOfBirth: nascimento.format('YYYY-MM-DD')\n    };\n    this.formResponsible.patchValue(patientValues);\n  }\n\n  disabledFields(patient: DataBigboostConsult) {\n    if (patient.status === 1 || patient.status === 200) {\n      this.disabledFieldsForm(patient);\n    }\n  }\n\n  disabledFieldsForm(patient: DataBigboostConsult) {\n    if (!this.isResponsible) {\n      this.form.get('cpf').disable();\n      this.form.get('dateOfBirth').disable();\n      if (patient.status === 1) {\n        this.form.get('fullname').disable();\n      }\n    }\n    this.formResponsible.get('fullname').disable();\n    this.formResponsible.get('dateOfBirth').disable();\n  }\n}\n","export default \"<form nz-form [formGroup]=\\\"form\\\" theme>\\n  <div class=\\\"row\\\">\\n    <nz-alert\\n      class=\\\"mb-4\\\"\\n      nzType=\\\"warning\\\"\\n      nzMessage=\\\"Para agilizar seu cadastro, buscaremos dados complementares no site da Receita Federal.\\nEste é um procedimento seguro e o sigilo dos seus dados é garantido pela nossa plataforma\\\"\\n    ></nz-alert>\\n  </div>\\n  <app-underage-data-form\\n    [form]=\\\"form\\\"\\n    [isResponsible]=\\\"isResponsible\\\"\\n    (patchFormEvent)=\\\"patchFormResponsible($event)\\\"\\n    (changeConsultResponsibleEvent)=\\\"consultResponsible = $event\\\"\\n  ></app-underage-data-form>\\n  <app-personal-data-form\\n    *ngIf=\\\"isResponsible || consultResponsible\\\"\\n    [form]=\\\"formResponsible\\\"\\n    [isResponsible]=\\\"isResponsible || consultResponsible\\\"\\n  ></app-personal-data-form>\\n  <app-contacts-data-form\\n    [form]=\\\"formResponsible\\\"\\n    *ngIf=\\\"isResponsible || consultResponsible\\\"\\n  ></app-contacts-data-form>\\n  <app-address-data-form\\n    [form]=\\\"formResponsible.get('address')\\\"\\n    *ngIf=\\\"isResponsible || consultResponsible\\\"\\n  ></app-address-data-form>\\n</form>\\n\";","export default \"<app-alternative-navbar title=\\\"Pacientes\\\" titleIcon=\\\"fa-assignment\\\"></app-alternative-navbar>\\r\\n<app-sidebar-menu></app-sidebar-menu>\\r\\n\\r\\n<section theme>\\r\\n  <header>\\r\\n    <div class=\\\"container-filter\\\">\\r\\n      <form [formGroup]=\\\"searchForm\\\">\\r\\n        <nz-input-group [nzSuffix]=\\\"suffixIcon\\\" [nzPrefix]=\\\"prefixIcon\\\">\\r\\n          <input type=\\\"text\\\" nz-input placeholder=\\\"Pesquisar\\\" formControlName=\\\"query\\\" #inputSearch />\\r\\n        </nz-input-group>\\r\\n        <ng-template #prefixIcon><i nz-icon nzType=\\\"search\\\" nzTheme=\\\"outline\\\"></i></ng-template>\\r\\n        <ng-template #suffixIcon>\\r\\n          <i nz-icon nzType=\\\"close\\\" nzTheme=\\\"outline\\\"></i>\\r\\n        </ng-template>\\r\\n      </form>\\r\\n      <div class=\\\"fast-filter\\\" *ngIf=\\\"!isVeterinarian\\\">\\r\\n        <span>\\r\\n          Filtros Rápidos:\\r\\n        </span>\\r\\n        <button\\r\\n          *ngIf=\\\"pinkOctoberCampaignEnabled\\\"\\r\\n          nz-button\\r\\n          nzType=\\\"default\\\"\\r\\n          nzShape=\\\"round\\\"\\r\\n          [ngClass]=\\\"filtersFast.womenOver40 ? 'active' : ''\\\"\\r\\n          (click)=\\\"toggleFiltersFast('womenOver40')\\\"\\r\\n        >\\r\\n          Mulheres 40+\\r\\n        </button>\\r\\n        <button\\r\\n          nz-button\\r\\n          nzType=\\\"default\\\"\\r\\n          nzShape=\\\"round\\\"\\r\\n          [ngClass]=\\\"filtersFast.minors ? 'active' : ''\\\"\\r\\n          (click)=\\\"toggleFiltersFast('minors')\\\"\\r\\n        >\\r\\n          Menores de idade\\r\\n        </button>\\r\\n\\r\\n        <button\\r\\n          nz-button\\r\\n          nzType=\\\"default\\\"\\r\\n          nzShape=\\\"round\\\"\\r\\n          [ngClass]=\\\"filtersFast.adults ? 'active' : ''\\\"\\r\\n          (click)=\\\"toggleFiltersFast('adults')\\\"\\r\\n        >\\r\\n          Adultos\\r\\n        </button>\\r\\n      </div>\\r\\n    </div>\\r\\n    <div class=\\\"container-new-patient\\\">\\r\\n      <div class=\\\"container-qdt-patient\\\">\\r\\n        <i class=\\\"fa-solid fa-users\\\"></i>\\r\\n        <span>\\r\\n          {{ isVeterinarian ? 'Pets' : 'Pacientes' }}\\r\\n          <span *ngIf=\\\"dataSet.length > 0\\\">({{ totalRecord }})</span>\\r\\n        </span>\\r\\n      </div>\\r\\n      <app-add-button label=\\\"Novo Paciente\\\" (eventOnClick)=\\\"showModalSearch()\\\"></app-add-button>\\r\\n    </div>\\r\\n  </header>\\r\\n  <ng-container>\\r\\n    <ng-container class=\\\"container-table\\\" *ngIf=\\\"!loading; else templateLoading\\\">\\r\\n      <ng-container *ngIf=\\\"dataSet.length > 0; else templateEmpty\\\">\\r\\n        <nz-table\\r\\n          *ngIf=\\\"!isMobile; else templateMobile\\\"\\r\\n          #listingTable\\r\\n          [nzData]=\\\"dataSet\\\"\\r\\n          (nzPageIndexChange)=\\\"pageIndexChanged($event)\\\"\\r\\n          [nzTotal]=\\\"totalRecord\\\"\\r\\n          [nzPageSize]=\\\"pageSize\\\"\\r\\n          [nzPageIndex]=\\\"pageIndex\\\"\\r\\n          nzShowPagination\\r\\n          [nzScroll]=\\\"scrollConfig\\\"\\r\\n          style=\\\"overflow-x: auto;\\\"\\r\\n          nzFrontPagination=\\\"false\\\"\\r\\n        >\\r\\n          <thead>\\r\\n            <tr>\\r\\n              <th nzWidth=\\\"450px\\\"><strong>Nome</strong></th>\\r\\n              <th nzWidth=\\\"320px\\\"><strong>Email</strong></th>\\r\\n              <th nzWidth=\\\"250px\\\"><strong>CPF</strong></th>\\r\\n              <th><strong>Telefone</strong></th>\\r\\n              <th></th>\\r\\n            </tr>\\r\\n          </thead>\\r\\n\\r\\n          <tbody>\\r\\n            <tr *ngFor=\\\"let patient of listingTable.data\\\">\\r\\n              <td>\\r\\n                <div class=\\\"container-patient-name\\\">\\r\\n                  <div>\\r\\n                    <i *ngIf=\\\"patient.responsible\\\" class=\\\"fa-solid fa-hand-holding-heart\\\"></i>\\r\\n                    <i\\r\\n                      *ngIf=\\\"pinkOctoberCampaignEnabled && patient.womenOver40\\\"\\r\\n                      class=\\\"fa-solid fa-ribbon\\\"\\r\\n                      style=\\\"color: #FC5E8B\\\"\\r\\n                    ></i>\\r\\n                  </div>\\r\\n                  <div>\\r\\n                    <span\\r\\n                      class=\\\"patient-name\\\"\\r\\n                      [ngStyle]=\\\"\\r\\n                        pinkOctoberCampaignEnabled && patient.womenOver40 && { color: '#FC5E8B' }\\r\\n                      \\\"\\r\\n                    >\\r\\n                      {{ patient.name }}</span\\r\\n                    >\\r\\n                    <span class=\\\"responsible-name\\\" *ngIf=\\\"patient.responsible\\\"\\r\\n                      ><br />RESPONSÁVEL: {{ patient.responsible.name }}</span\\r\\n                    >\\r\\n                  </div>\\r\\n                </div>\\r\\n              </td>\\r\\n              <td class=\\\"font-size-td\\\">\\r\\n                <span *ngIf=\\\"patient.user as user\\\">\\r\\n                  <span *ngIf=\\\"user.email || user.emailContact\\\"\\r\\n                    ><strong>Email: </strong>{{ user.email || user.emailContact }}</span\\r\\n                  >\\r\\n                  <span *ngIf=\\\"!user.email && !user.emailContact\\\"> - </span>\\r\\n                </span>\\r\\n              </td>\\r\\n              <td class=\\\"font-size-td\\\">{{ patient.cpf | formattedCpf }}</td>\\r\\n              <td class=\\\"font-size-td\\\">\\r\\n                <span *ngIf=\\\"patient?.cellphone || patient?.telephone\\\">{{\\r\\n                  patient.cellphone || patient?.telephone | formattedTel\\r\\n                }}</span>\\r\\n                <span *ngIf=\\\"!patient?.cellphone && !patient?.telephone\\\"> - </span>\\r\\n              </td>\\r\\n              <td class=\\\"font-size-td\\\">\\r\\n                <div class=\\\"actions\\\" style=\\\"display: flex;gap: 12px;align-items: center;\\\">\\r\\n                  <a (click)=\\\"redirectToNewPrescription(patient)\\\" title=\\\"Nova Prescrição\\\">\\r\\n                    <i class=\\\"fa fa-file-medical\\\"></i>\\r\\n                  </a>\\r\\n                  <a\\r\\n                    *ngIf=\\\"patient.responsible\\\"\\r\\n                    (click)=\\\"showModalSwitchResponsible(patient)\\\"\\r\\n                    title=\\\"Alterar Responsável\\\"\\r\\n                  >\\r\\n                    <img\\r\\n                      src=\\\"assets/icons/people-arrows-solid.svg\\\"\\r\\n                      style=\\\"width: 18px;margin-top: -2px;\\\"\\r\\n                    />\\r\\n                  </a>\\r\\n                  <a (click)=\\\"redirectToPatientPrescriptions(patient._id)\\\" title=\\\"Histórico\\\"\\r\\n                    ><i class=\\\"fas fa-history\\\"></i\\r\\n                  ></a>\\r\\n                  <a title=\\\"Informações\\\" (click)=\\\"togglePatientModalDetails($event, patient)\\\">\\r\\n                    <i class=\\\"fa fa-address-card\\\"></i\\r\\n                  ></a>\\r\\n                  <a title=\\\"Desvincular Paciente\\\" (click)=\\\"showModalRemovePatient(patient._id)\\\">\\r\\n                    <i class=\\\"fa fa-trash-solid\\\"></i>\\r\\n                  </a>\\r\\n                </div>\\r\\n              </td>\\r\\n            </tr>\\r\\n          </tbody>\\r\\n        </nz-table>\\r\\n      </ng-container>\\r\\n    </ng-container>\\r\\n  </ng-container>\\r\\n\\r\\n  <ng-template #templateMobile>\\r\\n    <div class=\\\"container-mobile\\\">\\r\\n      <div class=\\\"card p-2 mt-2\\\" *ngFor=\\\"let item of dataSet\\\">\\r\\n        <div class=\\\"content-cart\\\">\\r\\n          <div class=\\\"content-cart-info\\\">\\r\\n            <div class=\\\"content-cart-info-name\\\">\\r\\n              <i *ngIf=\\\"item.responsible\\\" class=\\\"fa-solid fa-hand-holding-heart\\\"></i>\\r\\n              <i\\r\\n                *ngIf=\\\"pinkOctoberCampaignEnabled && item.womenOver40\\\"\\r\\n                class=\\\"fa-solid fa-ribbon\\\"\\r\\n                style=\\\"color: #FC5E8B\\\"\\r\\n              ></i>\\r\\n              <span\\r\\n                class=\\\"patient-name\\\"\\r\\n                [ngStyle]=\\\"pinkOctoberCampaignEnabled && item.womenOver40 && { color: '#FC5E8B' }\\\"\\r\\n              >\\r\\n                {{ item.name }}\\r\\n              </span>\\r\\n            </div>\\r\\n            <div class=\\\"content-cart-info-responsible-name\\\" *ngIf=\\\"item.responsible\\\">\\r\\n              <span><strong>RESPONSÁVEL: </strong> {{ item.responsible.name }}</span>\\r\\n            </div>\\r\\n            <div class=\\\"content-cart-info-email\\\" *ngIf=\\\"item.user as user\\\">\\r\\n              <span *ngIf=\\\"user.email || user.emailContact\\\"\\r\\n                ><strong>Email: </strong>{{ user.email || user.emailContact }}</span\\r\\n              >\\r\\n            </div>\\r\\n\\r\\n            <div class=\\\"content-cart-info-cpf-telefone\\\">\\r\\n              <span><strong>CPF: </strong>{{ item.cpf | formattedCpf }}</span>\\r\\n              <span *ngIf=\\\"item?.cellphone || item?.telephone\\\"\\r\\n                ><strong>Telefone: </strong>{{ item.cellphone || item?.telephone | formattedTel }}</span\\r\\n              >\\r\\n            </div>\\r\\n          </div>\\r\\n          <a nz-dropdown [nzDropdownMenu]=\\\"options\\\" nzTrigger=\\\"click\\\">\\r\\n            <i class=\\\"fa-solid fa-ellipsis-v\\\"></i>\\r\\n          </a>\\r\\n          <nz-dropdown-menu #options=\\\"nzDropdownMenu\\\">\\r\\n            <ul nz-menu class=\\\"dropdown-menu-ul\\\">\\r\\n              <li nz-menu-item (click)=\\\"redirectToNewPrescription(item)\\\">\\r\\n                <i class=\\\"fa fa-file-medical\\\"></i> <span>Novo Documento</span>\\r\\n              </li>\\r\\n              <li nz-menu-item (click)=\\\"redirectToPatientPrescriptions(item._id)\\\">\\r\\n                <i class=\\\"fas fa-history\\\"></i> <span>Historico</span>\\r\\n              </li>\\r\\n              <li nz-menu-item (click)=\\\"togglePatientModalDetails($event, item)\\\">\\r\\n                <i class=\\\"fa fa-address-card\\\"></i> <span>Perfil</span>\\r\\n              </li>\\r\\n              <li nz-menu-item (click)=\\\"showModalRemovePatient(item._id)\\\">\\r\\n                <i class=\\\"fa fa-trash-solid\\\"></i> <span>Remover Paciente</span>\\r\\n              </li>\\r\\n            </ul>\\r\\n          </nz-dropdown-menu>\\r\\n        </div>\\r\\n      </div>\\r\\n\\r\\n      <div style=\\\"margin-top: 16px;display: flex;align-items: center;justify-content: flex-end;\\\">\\r\\n        <nz-pagination\\r\\n          (nzPageIndexChange)=\\\"pageIndexChanged($event)\\\"\\r\\n          [nzTotal]=\\\"totalRecord\\\"\\r\\n          [nzPageSize]=\\\"pageSize\\\"\\r\\n          [nzPageIndex]=\\\"pageIndex\\\"\\r\\n          nzShowPagination\\r\\n        ></nz-pagination>\\r\\n      </div>\\r\\n    </div>\\r\\n  </ng-template>\\r\\n</section>\\r\\n\\r\\n<ng-template #templateLoading>\\r\\n  <div class=\\\"container-center\\\" theme>\\r\\n    <nz-spin nzSimple theme></nz-spin>\\r\\n  </div>\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #templateEmpty>\\r\\n  <div class=\\\"container-center\\\" theme>\\r\\n    <h5>Não possui pacientes cadastrados.</h5>\\r\\n  </div>\\r\\n</ng-template>\\r\\n\\r\\n<app-patient-details #modalPatient></app-patient-details>\\r\\n<ngx-loading [show]=\\\"loadingSpinner\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\r\\n\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { CepService } from '@app/modules/entry/services/cep.service';\nimport { UserService } from '@app/modules/user/user.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { DateUtils } from '@app/shared/data/DateUtils';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { BrazilState, Patient } from '@app/shared/models';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport { environment } from '@env/environment';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { of } from 'rxjs';\nimport { catchError, debounceTime, filter, map, switchMap } from 'rxjs/operators';\n\n@Component({\n  selector: 'app-modal-edit-patient',\n  templateUrl: './modal-edit-patient.component.html',\n  styleUrls: ['./modal-edit-patient.component.scss']\n})\nexport class ModalEditPatientComponent implements OnInit {\n  @Input() patient: Patient;\n  @Input() isVeterinarian: boolean;\n  @Output() submit = new EventEmitter<Patient>();\n\n  states: BrazilState[] = BrazilianStates;\n  loading = false;\n\n  form: FormGroup;\n\n  constructor(\n    private modalRef: BsModalRef,\n    private fb: FormBuilder,\n    private cepService: CepService,\n    private userService: UserService\n  ) {\n    this.form = this.fb.group({\n      _id: [null, Validators.required],\n      name: ['', [Validators.required, ValidationService.nomeValidator]],\n      fullname: ['', [Validators.required, ValidationService.nomeValidator]],\n      cpf: [undefined],\n      sex: ['', Validators.required],\n      dateOfBirth: [null, Validators.required],\n      telephone: [''],\n      cellphone: [''],\n      email: ['', Validators.email],\n      emailContact: ['', Validators.email],\n      membership: this.fb.group({\n        mothersName: ['']\n      }),\n      responsible: [null],\n      address: this.fb.group({\n        uf: [''],\n        city: [''],\n        complement: [''],\n        number: [''],\n        street: [''],\n        neighborhood: [''],\n        cep: ['', [ValidationService.cepValidator]]\n      })\n    });\n  }\n\n  ngOnInit() {\n    this.patchForm();\n    this.disableInputs();\n\n    const emailForm = this.form.get('email');\n    emailForm.valueChanges\n      .pipe(\n        map(email => {\n          const value = email && email.toLowerCase();\n          emailForm.setValue(value, { emitEvent: false });\n          return value;\n        }),\n        filter(_ => emailForm.valid && emailForm.value),\n        debounceTime(environment.debounceTime),\n        switchMap(email =>\n          this.userService\n            .checkEmailExists(email, this.patient.tenantId)\n            .pipe(catchError(err => of(err)))\n        )\n      )\n      .subscribe(res => {\n        if (res.status === 200) {\n          const exists = this.patient.user.email !== res.email;\n          emailForm.setErrors(exists ? { exists } : null);\n        } else if (res.status === 404) {\n          emailForm.setErrors(null);\n        } else if (res.status === 400) {\n          emailForm.setErrors({ invalid: true });\n        }\n      });\n\n    this.form.get('emailContact').valueChanges.subscribe(email => {\n      this.form.get('emailContact').setValue(email && email.toLowerCase(), { emitEvent: false });\n    });\n  }\n\n  private patchForm() {\n    this.form.patchValue(this.patient);\n    if (this.patient.user) {\n      this.form.get('email').setValue(this.patient.user.email);\n      this.form.get('emailContact').setValue(this.patient.user.emailContact);\n    }\n    const date = new Date(this.patient.dateOfBirth);\n    this.form.get('dateOfBirth').setValue(date.toISOString().substring(0, 10));\n\n    if (this.isDependent) {\n      this.form.get('responsible').setValue(this.patient.responsible._id);\n      this.form.removeControl('address');\n      this.form.removeControl('cellphone');\n      this.form.removeControl('telephone');\n    } else {\n      this.form.get('cpf').setValidators([Validators.required, ValidationService.cpfValidator]);\n      if (this.hasAccount) {\n        this.form.get('email').setValidators([Validators.required, Validators.email]);\n      } else {\n        this.form.get('email').setValidators(Validators.email);\n      }\n    }\n  }\n\n  private disableInputs() {\n    if (!DateUtils.isUnderThirteenTearsOfAge(this.form.get('dateOfBirth').value)) {\n      this.form.get('cpf').disable();\n      this.form.get('dateOfBirth').disable();\n\n      if (this.form.get('fullname').value) {\n        this.form.get('fullname').disable();\n      }\n    }\n\n    if (this.hasAccount) {\n      this.form.get('email').disable();\n      this.form.get('sex').disable();\n      this.form.get('membership.mothersName').disable();\n    }\n  }\n\n  get cpfCtrl() {\n    return this.form.get('cpf');\n  }\n\n  get dateCtrl() {\n    return this.form.get('dateOfBirth');\n  }\n\n  get currentDate() {\n    const now = new Date();\n    const dd = String(now.getDate()).padStart(2, '0');\n    const mm = String(now.getMonth() + 1).padStart(2, '0');\n    const yyyy = now.getFullYear();\n    return `${yyyy}-${mm}-${dd}`;\n  }\n\n  get hasAccount() {\n    return this.patient.user && !this.patient.user.activationToken && this.patient.user.email;\n  }\n\n  get isDependent() {\n    return !!this.patient.responsible;\n  }\n\n  checkRepeatName(value: boolean) {\n    if (value) {\n      this.form.get('name').setValue(this.form.get('fullname').value);\n      this.form.get('name').disable();\n    } else {\n      this.form.get('name').enable();\n    }\n  }\n\n  @nativeAsync\n  async onKey(event: any) {\n    if (event.target.value.length === 10) {\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\n      const data = await this.cepService.consult(cep);\n      if (!data.erro) {\n        this.form.controls['address'].patchValue({\n          uf: data.uf,\n          street: data.logradouro,\n          neighborhood: data.bairro,\n          city: data.localidade,\n          number: null,\n          cep: data.cep\n        });\n      }\n    }\n  }\n\n  submitForm() {\n    markFormGroup(this.form);\n    const form = this.form.getRawValue();\n\n    if (this.form.valid) {\n      this.submit.emit(form);\n      this.close();\n    }\n  }\n\n  close() {\n    this.modalRef.hide();\n  }\n}\n","export default \"<div class=\\\"modal-header\\\" theme>\\n  <h4 class=\\\"modal-title pull-left text-white\\\">\\n    {{ isVeterinarian ? 'Editar responsável' : 'Editar paciente' }}\\n  </h4>\\n  <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"close()\\\">\\n    <span aria-hidden=\\\"true\\\">&times;</span>\\n  </button>\\n</div>\\n\\n<div class=\\\"modal-body\\\" theme>\\n  <form nz-form [formGroup]=\\\"form\\\">\\n    <div class=\\\"row justify-content-between\\\">\\n      <div [ngClass]=\\\"isDependent ? 'col-md-12' : 'col-md-6'\\\">\\n        <div class=\\\"row align-items-center\\\">\\n          <div class=\\\"col-md\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"cpf\\\">CPF <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  nz-input\\n                  id=\\\"cpf\\\"\\n                  formControlName=\\\"cpf\\\"\\n                  placeholder=\\\"000.000.000-00\\\"\\n                  mask=\\\"000.000.000-00\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain *ngIf=\\\"cpfCtrl.dirty && cpfCtrl.errors\\\">\\n                  <ng-container *ngIf=\\\"cpfCtrl.hasError('required')\\\">\\n                    Campo obrigatório, por favor digite seu CPF.\\n                  </ng-container>\\n                  <ng-container *ngIf=\\\"!cpfCtrl.hasError('required') && cpfCtrl.hasError('cpf')\\\">\\n                    CPF inválido, por favor digite um CPF válido.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-md\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"dateOfBirth\\\"\\n                >Data de nascimento<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n              >\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  nz-input\\n                  id=\\\"dateOfBirth\\\"\\n                  type=\\\"date\\\"\\n                  formControlName=\\\"dateOfBirth\\\"\\n                  placeholder=\\\"DD/MM/AAAA\\\"\\n                  [max]=\\\"currentDate\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n\\n                <nz-form-explain *ngIf=\\\"dateCtrl.dirty && dateCtrl.errors\\\">\\n                  <ng-container *ngIf=\\\"dateCtrl.hasError('required')\\\">\\n                    Campo obrigatório, por favor digite sua data de nascimento.\\n                  </ng-container>\\n                  <ng-container\\n                    *ngIf=\\\"!dateCtrl.hasError('required') && dateCtrl.hasError('dateOfBirth')\\\"\\n                  >\\n                    Nome inválido.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-md\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"sex\\\">Sexo <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n                  <option value=\\\"M\\\">Masculino</option>\\n                  <option value=\\\"F\\\">Feminino</option>\\n                </select>\\n                <nz-form-explain *ngIf=\\\"form.get('sex').dirty && form.get('sex').errors\\\">\\n                  <ng-container *ngIf=\\\"form.get('sex').hasError('required')\\\">\\n                    Campo obrigatório, por favor selecione o sexo.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-12\\\">\\n            <nz-form-item *ngIf=\\\"form.get('fullname') as fullname\\\">\\n              <nz-form-label nzFor=\\\"fullname\\\"\\n                >Nome completo <span class=\\\"mandatory\\\">*</span></nz-form-label\\n              >\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  formControlName=\\\"fullname\\\"\\n                  id=\\\"fullname\\\"\\n                  nz-input\\n                  placeholder=\\\"ex: João Gilberto\\\"\\n                  [disabled]=\\\"!!fullname.value\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain *ngIf=\\\"fullname.dirty && fullname.errors\\\">\\n                  <ng-container *ngIf=\\\"fullname.hasError('required')\\\">\\n                    Campo obrigatório, por favor digite o seu nome e sobrenome.\\n                  </ng-container>\\n                  <ng-container *ngIf=\\\"!fullname.hasError('required') && fullname.hasError('fullname')\\\">\\n                    Por favor digite o seu nome e sobrenome.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n          <div class=\\\"col-12\\\">\\n            <nz-form-item>\\n              <div class=\\\"row\\\">\\n                <div class=\\\"col-md-6\\\">\\n                  <nz-form-label nzFor=\\\"name\\\"\\n                    >Nome de exibição/social <span class=\\\"mandatory\\\">*</span></nz-form-label\\n                  >\\n                </div>\\n                <div class=\\\"col\\\">\\n                  <label\\n                    #repeatName\\n                    nz-checkbox\\n                    (nzCheckedChange)=\\\"checkRepeatName($event)\\\"\\n                    [nzDisabled]=\\\"!form.get('fullname').value\\\"\\n                    style=\\\"font-size: 13px; margin-right: -11px;\\\"\\n                    >Repetir nome completo</label\\n                  >\\n                </div>\\n              </div>\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  formControlName=\\\"name\\\"\\n                  id=\\\"name\\\"\\n                  nz-input\\n                  placeholder=\\\"ex: João Gilberto\\\"\\n                  maxlength=\\\"128\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\n                  <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\n                    Campo obrigatório, por favor digite um nome de exibição.\\n                  </ng-container>\\n                  <ng-container\\n                    *ngIf=\\\"!form.get('name').hasError('required') && form.get('name').hasError('name')\\\"\\n                  >\\n                    Por favor digite um nome de exibição.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-12\\\" [formGroup]=\\\"form.get('membership')\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"mothersName\\\"\\n                >Nome da mãe<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n              >\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  nz-input\\n                  placeholder=\\\"Digite o nome da mãe\\\"\\n                  formControlName=\\\"mothersName\\\"\\n                  id=\\\"mothersName\\\"\\n                  maxlength=\\\"128\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain\\n                  *ngIf=\\\"\\n                    form.get('membership.mothersName').dirty && form.get('membership.mothersName').errors\\n                  \\\"\\n                >\\n                  <ng-container *ngIf=\\\"form.get('membership.mothersName').hasError('required')\\\">\\n                    Campo obrigatório, por favor digite o nome da mãe.\\n                  </ng-container>\\n                  <ng-container\\n                    *ngIf=\\\"\\n                      !form.get('membership.mothersName').hasError('required') &&\\n                      form.get('membership.mothersName').hasError('membership.mothersName')\\n                    \\\"\\n                  >\\n                    Nome inválido.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"col-md-5\\\" *ngIf=\\\"!isDependent\\\">\\n        <nz-form-item *ngIf=\\\"form.get('cellphone') as cellphone\\\">\\n          <nz-form-label nzFor=\\\"cellphone\\\">Telefone 1</nz-form-label>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              id=\\\"cellphone\\\"\\n              [mask]=\\\"cellphone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n              placeholder=\\\"(21) 92222-2222\\\"\\n              formControlName=\\\"cellphone\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n            <nz-form-explain *ngIf=\\\"cellphone.dirty && cellphone.errors\\\">\\n              <ng-container *ngIf=\\\"cellphone.hasError('required')\\\">\\n                Campo obrigatório, por favor digite seu telefone para contato.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item *ngIf=\\\"form.get('telephone') as telephone\\\">\\n          <nz-form-label nzFor=\\\"telephone\\\">Telefone 2</nz-form-label>\\n          <nz-form-control>\\n            <input\\n              nz-input\\n              id=\\\"telephone\\\"\\n              [mask]=\\\"telephone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n              formControlName=\\\"telephone\\\"\\n              placeholder=\\\"(21) 2222-2222\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n            <nz-form-explain *ngIf=\\\"telephone.dirty && telephone.errors\\\">\\n              <ng-container *ngIf=\\\"telephone.hasError('telephone')\\\">\\n                Telefone inválido, por favor digite um número válido.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item>\\n          <div class=\\\"row\\\">\\n            <div [ngClass]=\\\"hasAccount ? 'col-4' : 'col-5'\\\">\\n              <nz-form-label nzFor=\\\"email\\\"\\n                >E-mail de login <span class=\\\"mandatory\\\" *ngIf=\\\"hasAccount\\\">*</span></nz-form-label\\n              >\\n            </div>\\n            <div class=\\\"col\\\">\\n              <label *ngIf=\\\"hasAccount\\\" class=\\\"has-account\\\"> Paciente com conta ativada</label>\\n            </div>\\n          </div>\\n          <nz-form-control nzHasFeedback *ngIf=\\\"form.get('email') as email\\\">\\n            <input\\n              nz-input\\n              id=\\\"email\\\"\\n              type=\\\"email\\\"\\n              formControlName=\\\"email\\\"\\n              style=\\\"text-transform: lowercase;\\\"\\n              (keydown.space)=\\\"$event.preventDefault()\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n            <nz-form-explain *ngIf=\\\"email.touched && email.errors\\\">\\n              <ng-container *ngIf=\\\"email.hasError('exists'); else required\\\">\\n                E-mail já existe, por favor escolha outro e-mail.\\n              </ng-container>\\n              <ng-template #required>\\n                <ng-container *ngIf=\\\"email.hasError('required') && email.dirty; else invalid\\\">\\n                  <span class=\\\"error\\\">Campo obrigatório, por favor digite seu e-mail.</span>\\n                </ng-container>\\n              </ng-template>\\n              <ng-template #invalid>\\n                <ng-container *ngIf=\\\"email.invalid && email.value.length > 0\\\">\\n                  <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span>\\n                </ng-container>\\n              </ng-template>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"emailContact\\\">E-mail de contato</nz-form-label>\\n          <nz-form-control nzHasFeedback *ngIf=\\\"form.get('emailContact') as email\\\">\\n            <input\\n              nz-input\\n              id=\\\"emailContact\\\"\\n              type=\\\"email\\\"\\n              formControlName=\\\"emailContact\\\"\\n              style=\\\"text-transform: lowercase;\\\"\\n              (keydown.space)=\\\"$event.preventDefault()\\\"\\n              autocomplete=\\\"disabled\\\"\\n            />\\n            <nz-form-explain *ngIf=\\\"email.touched && email.errors\\\">\\n              <ng-container *ngIf=\\\"email.hasError('exists'); else required\\\">\\n                E-mail já existe, por favor escolha outro e-mail.\\n              </ng-container>\\n              <ng-template #required>\\n                <ng-container *ngIf=\\\"email.hasError('required') && email.dirty; else invalid\\\">\\n                  <span class=\\\"error\\\">Campo obrigatório, por favor digite seu e-mail.</span>\\n                </ng-container>\\n              </ng-template>\\n              <ng-template #invalid>\\n                <ng-container *ngIf=\\\"email.invalid && email.value.length > 0\\\">\\n                  <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span>\\n                </ng-container>\\n              </ng-template>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n\\n      <nz-divider nzOrientation=\\\"left\\\" nzText=\\\"Endereço\\\" *ngIf=\\\"!isDependent\\\"></nz-divider>\\n\\n      <div class=\\\"col-md-12\\\" *ngIf=\\\"form.get('address') as address\\\">\\n        <div class=\\\"row\\\" [formGroup]=\\\"address\\\">\\n          <div class=\\\"col-md-3\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"cep\\\">CEP</nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  (keyup)=\\\"onKey($event)\\\"\\n                  mask=\\\"00.000-000\\\"\\n                  formControlName=\\\"cep\\\"\\n                  id=\\\"cep\\\"\\n                  nz-input\\n                  placeholder=\\\"00.000-000\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain *ngIf=\\\"form.get('address.cep').dirty && form.get('address.cep').errors\\\">\\n                  <ng-container *ngIf=\\\"form.get('address.cep').hasError('required')\\\">\\n                    Campo obrigatório, por favor digite seu CEP.\\n                  </ng-container>\\n                  <ng-container\\n                    *ngIf=\\\"\\n                      !form.get('address.cep').hasError('required') &&\\n                      form.get('address.cep').hasError('address.cep')\\n                    \\\"\\n                  >\\n                    CEP inválido, por favor digite um CEP válido.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-md-6\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"logradouro\\\">Logradouro</nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  formControlName=\\\"street\\\"\\n                  id=\\\"street\\\"\\n                  nz-input\\n                  placeholder=\\\"Digite o logradouro\\\"\\n                  maxlength=\\\"128\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain\\n                  *ngIf=\\\"form.get('address.street').dirty && form.get('address.street').errors\\\"\\n                >\\n                  <ng-container *ngIf=\\\"form.get('address.street').hasError('required')\\\">\\n                    Campo obrigatório, por favor digite o logradouro.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-12 col-md-3\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"number\\\">Número</nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  formControlName=\\\"number\\\"\\n                  id=\\\"number\\\"\\n                  nz-input\\n                  placeholder=\\\"Digite o número\\\"\\n                  maxlength=\\\"10\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain\\n                  *ngIf=\\\"form.get('address.number').dirty && form.get('address.number').errors\\\"\\n                >\\n                  <ng-container *ngIf=\\\"form.get('address.number').hasError('required')\\\">\\n                    Campo obrigatório, por favor digite o número.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-12 col-md-3\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"complement\\\">Complemento</nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  formControlName=\\\"complement\\\"\\n                  id=\\\"complement\\\"\\n                  nz-input\\n                  placeholder=\\\"Digite o complemento\\\"\\n                  maxlength=\\\"128\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-12 col-md-3\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"neighborhood\\\">Bairro</nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  formControlName=\\\"neighborhood\\\"\\n                  id=\\\"neighborhood\\\"\\n                  nz-input\\n                  placeholder=\\\"Digite o bairro\\\"\\n                  maxlength=\\\"128\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain\\n                  *ngIf=\\\"\\n                    form.get('address.neighborhood').dirty && form.get('address.neighborhood').errors\\n                  \\\"\\n                >\\n                  <ng-container *ngIf=\\\"form.get('address.neighborhood').hasError('required')\\\">\\n                    Campo obrigatório, por favor digite o bairro.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-12 col-md-4\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"city\\\">Cidade</nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  formControlName=\\\"city\\\"\\n                  id=\\\"city\\\"\\n                  nz-input\\n                  placeholder=\\\"Digite a cidade\\\"\\n                  maxlength=\\\"64\\\"\\n                  autocomplete=\\\"disabled\\\"\\n                />\\n                <nz-form-explain\\n                  *ngIf=\\\"form.get('address.city').dirty && form.get('address.city').errors\\\"\\n                >\\n                  <ng-container *ngIf=\\\"form.get('address.city').hasError('required')\\\">\\n                    Campo obrigatório, por favor digite a cidade.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n\\n          <div class=\\\"col-12 col-md-2\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"uf\\\">UF</nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <nz-select\\n                  formControlName=\\\"uf\\\"\\n                  id=\\\"uf\\\"\\n                  nzAllowClear\\n                  nzShowSearch\\n                  nzPlaceHolder=\\\"Selecione\\\"\\n                >\\n                  <nz-option\\n                    *ngFor=\\\"let state of states\\\"\\n                    [nzLabel]=\\\"state?.sigla\\\"\\n                    [nzValue]=\\\"state?.sigla\\\"\\n                  ></nz-option>\\n                </nz-select>\\n                <nz-form-explain *ngIf=\\\"form.get('address.uf').dirty && form.get('address.uf').errors\\\">\\n                  <ng-container *ngIf=\\\"form.get('address.uf').hasError('required')\\\">\\n                    Campo obrigatório, por favor selecione o UF.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </form>\\n</div>\\n\\n<div class=\\\"modal-footer\\\" theme>\\n  <button class=\\\"ok-btn\\\" nz-button class=\\\"btn-primary\\\" (click)=\\\"close()\\\">\\n    Cancelar\\n  </button>\\n  <button class=\\\"ok-btn\\\" nz-button class=\\\"btn-primary\\\" (click)=\\\"submitForm()\\\">\\n    Salvar <i class=\\\"fa\\\"></i>\\n  </button>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \".modal-body {\\n  padding: 30px;\\n}\\n.modal-body input {\\n  border-radius: 10px;\\n}\\n.modal-body .btn-save {\\n  float: right;\\n  padding-top: 7px;\\n  padding-bottom: 7px;\\n  margin-top: 13px;\\n  margin-bottom: 5px;\\n}\\n.modal-body .mandatory {\\n  color: red;\\n}\\n.modal-body input::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n::ng-deep .ant-select-selection {\\n  height: 100%;\\n}\\n.modal-header {\\n  margin: 0;\\n  font-family: \\\"probold\\\";\\n}\\n.modal-footer {\\n  margin: 0;\\n}\\n.ant-btn {\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n.ant-btn:hover,\\n.ant-btn:focus {\\n  background-color: var(--bg-color-secondary);\\n  border-color: var(--bg-color-secondary);\\n}\\n.has-account {\\n  font-size: 14px;\\n  color: orangered;\\n}\";","import {\r\n  Component,\r\n  EventEmitter,\r\n  HostListener,\r\n  OnInit,\r\n  Output,\r\n  TemplateRef,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { AuthService } from '@app/core/services/auth.service';\r\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\r\nimport { HealthProfessional, Patient } from '@app/shared/models';\r\nimport { User } from '@app/shared/models/decodedLoginToken';\r\nimport { PetPatient } from '@app/shared/models/pet-patient';\r\nimport { ProfessionalType } from '@app/shared/models/professional-type.enum';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { PatientsService } from '../../services/patients.service';\r\nimport { PetPatientService } from '../../services/pet-patient.service';\r\nimport { ModalEditPatientComponent } from '../modal-edit-patient/modal-edit-patient.component';\r\nimport { ModalEditPetComponent } from '../modal-edit-pet/modal-edit-pet.component';\r\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\r\n\r\n@Component({\r\n  selector: 'app-patient-details',\r\n  templateUrl: './patient-details.component.html',\r\n  styleUrls: ['./patient-details.component.scss']\r\n})\r\nexport class PatientDetailsComponent implements OnInit {\r\n  @Output() close = new EventEmitter<boolean>();\r\n  @Output() update = new EventEmitter<Patient | PetPatient>();\r\n\r\n  tplModal: NzModalRef;\r\n\r\n  @ViewChild('tplTitle', { static: true })\r\n  tplTitle: TemplateRef<{}>;\r\n\r\n  @ViewChild('tplContent', { static: true })\r\n  tplContent: TemplateRef<{}>;\r\n\r\n  @ViewChild('tplFooter', { static: true })\r\n  tplFooter: TemplateRef<{}>;\r\n\r\n  patient: Patient;\r\n  pet: PetPatient;\r\n  responsiblePets: PetPatient[] = [];\r\n  prescriber: HealthProfessional;\r\n\r\n  private patientsCache = new Map<string, boolean>();\r\n  private petsCache = new Map<string, boolean>();\r\n  patientRecordStyle = {\r\n    recordsArea: { height: '25vh' },\r\n    input: { height: '95px', 'border-radius': '12px' }\r\n  };\r\n\r\n  loading = false;\r\n\r\n  constructor(\r\n    private modalService: NzModalService,\r\n    private bsModalService: BsModalService,\r\n    private notification: AppToastService,\r\n    private authService: AuthService,\r\n    private patientsService: PatientsService,\r\n    private petPatientService: PetPatientService,\r\n    private healthProfessionalService: HealthProfessionalService\r\n  ) {}\r\n\r\n  ngOnInit() {}\r\n\r\n  get user(): User {\r\n    return this.authService.user();\r\n  }\r\n\r\n  get isVeterinarian(): boolean {\r\n    return this.prescriber.professionalType === ProfessionalType.VETERINARIAN;\r\n  }\r\n\r\n  @nativeAsync\r\n  async createTplModal(patient: any, prescriber: HealthProfessional) {\r\n    if (prescriber.professionalType === ProfessionalType.VETERINARIAN) {\r\n      this.pet = patient;\r\n    } else {\r\n      this.patient = patient;\r\n    }\r\n\r\n    this.prescriber = prescriber;\r\n\r\n    this.tplModal = this.modalService.create({\r\n      nzTitle: this.tplTitle,\r\n      nzContent: this.tplContent,\r\n      nzFooter: null,\r\n      nzClosable: true,\r\n      nzWidth: 828,\r\n      nzMaskClosable: true,\r\n      nzOnCancel: () => (this.patient = null),\r\n      nzWrapClassName: 'vertical-center-modal',\r\n      nzOnOk: () => console.log('Click ok')\r\n    });\r\n\r\n    if (this.isVeterinarian) {\r\n      this.responsiblePets = await this.petPatientService\r\n        .getPetsByResponsibleCpf(this.pet.responsible.cpf)\r\n        .toPromise();\r\n\r\n      if (this.responsiblePets) {\r\n        this.responsiblePets.forEach(({ _id: id }) => {\r\n          this.hasPet(id);\r\n        });\r\n      }\r\n    } else {\r\n      if (this.patient.dependents) {\r\n        this.patient.dependents.forEach(({ _id: id }) => {\r\n          this.hasPatient(id);\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  private hasPatient(id: string) {\r\n    this.healthProfessionalService.getPatientsById(id, this.user._id).subscribe(\r\n      p => this.patientsCache.set(id, true),\r\n      err => {\r\n        if (err.status === 404) {\r\n          this.patientsCache.set(id, false);\r\n        } else {\r\n          console.error(err);\r\n        }\r\n      }\r\n    );\r\n  }\r\n\r\n  private hasPet(id: string) {\r\n    this.healthProfessionalService.getPetsById(id, this.user._id).subscribe(\r\n      p => {\r\n        this.petsCache.set(id, true);\r\n      },\r\n      err => {\r\n        if (err.status === 404) {\r\n          this.petsCache.set(id, false);\r\n        } else {\r\n          console.error(err);\r\n        }\r\n      }\r\n    );\r\n  }\r\n\r\n  get hasPatientRecordFeature() {\r\n    return this.user && this.user.features.find(f => f.name === 'Prontuário');\r\n  }\r\n\r\n  destroyTplModal(): void {\r\n    this.tplModal.destroy();\r\n  }\r\n\r\n  @HostListener('document:keydown.escape', ['$event'])\r\n  onKeydownHandler(event: KeyboardEvent) {\r\n    this.destroyTplModal();\r\n  }\r\n\r\n  get hasAccount() {\r\n    return (\r\n      this.patient && this.patient.user && !this.patient.user.activationToken && this.patient.user.email\r\n    );\r\n  }\r\n\r\n  get popoverContent() {\r\n    return this.hasAccount\r\n      ? 'O(a) paciente já ativou a conta na plataforma! Apenas algumas informações poderão ser alteradas por você. ' +\r\n          'Se precisar de ajuda, entre em contato com nosso atendimento em receitadigital.com'\r\n      : 'Clique no lápis para alterar os dados do paciente. ' +\r\n          'Esta ação só será possível se o paciente ainda não tiver ativado a conta na plataforma.';\r\n  }\r\n\r\n  getAddress() {\r\n    let address = null;\r\n    if (this.patient && this.patient.address) {\r\n      address = this.patient.address;\r\n    } else if (this.patient && this.patient.responsible.address) {\r\n      address = this.patient.responsible.address;\r\n    } else if (this.pet.responsible.address) {\r\n      address = this.pet.responsible.address;\r\n    }\r\n\r\n    if (!address) {\r\n      return '';\r\n    }\r\n    const addr = [address.street, address.number, address.complement, address.neighborhood, address.city]\r\n      .filter(a => a)\r\n      .join(', ');\r\n\r\n    return addr + (address.uf ? (address.city ? '-' : ', ') + address.uf : '');\r\n  }\r\n\r\n  hasAddress() {\r\n    return (\r\n      (this.patient && (this.patient.address || this.patient.responsible.address)) ||\r\n      (this.pet && this.pet.responsible.address)\r\n    );\r\n  }\r\n\r\n  hasDependent(patient: Patient) {\r\n    return this.patientsCache.get(patient._id);\r\n  }\r\n\r\n  hasPetDependent(pet: PetPatient) {\r\n    return this.petsCache.get(pet._id);\r\n  }\r\n\r\n  addPatient(patient: Patient) {\r\n    this.healthProfessionalService.addPatient(this.prescriber._id, patient._id).subscribe(_ => {\r\n      this.hasPatient(patient._id);\r\n      this.update.emit();\r\n    });\r\n  }\r\n\r\n  removePatient(patient: Patient) {\r\n    this.healthProfessionalService.removePatient(this.prescriber._id, patient._id).subscribe(_ => {\r\n      this.hasPatient(patient._id);\r\n      this.update.emit();\r\n    });\r\n  }\r\n\r\n  showEditPet(pet: PetPatient, isResponsible = false) {\r\n    const initialState = { pet, isVeterinarian: this.isVeterinarian };\r\n\r\n    const modal = this.bsModalService.show(ModalEditPetComponent, {\r\n      initialState,\r\n      backdrop: 'static',\r\n      keyboard: false\r\n    });\r\n    modal.content.submit.subscribe(async (p: PetPatient) => {\r\n      this.loading = true;\r\n      const saved = await this.submitPetForm(p);\r\n      this.patient = Object.assign(new Patient(), saved);\r\n      this.loading = false;\r\n    });\r\n  }\r\n\r\n  @nativeAsync\r\n  private async submitPetForm(patient: PetPatient) {\r\n    try {\r\n      const saved = await this.petPatientService.update(patient._id, patient).toPromise();\r\n      this.update.emit(saved);\r\n      this.notification.notify('success', 'Sucesso', 'Paciente salvo com sucesso');\r\n      return saved;\r\n    } catch (err) {\r\n      console.error(err);\r\n      this.notification.notify('error', 'Erro', 'Erro ao salvar paciente');\r\n      return null;\r\n    }\r\n  }\r\n\r\n  showEditPatient(isResponsible = false) {\r\n    let patient = this.patient || this.pet;\r\n    if (isResponsible) {\r\n      if (this.patient) {\r\n        patient = this.patient.responsible;\r\n      } else {\r\n        patient = this.pet.responsible;\r\n      }\r\n    }\r\n\r\n    const initialState = { patient, isVeterinarian: this.isVeterinarian };\r\n\r\n    const classModal = this.isDependent && !isResponsible ? '' : 'modal-lg';\r\n\r\n    const modal = this.bsModalService.show(ModalEditPatientComponent, {\r\n      initialState,\r\n      class: classModal,\r\n      backdrop: 'static',\r\n      keyboard: false\r\n    });\r\n    modal.content.submit.subscribe(async (p: Patient) => {\r\n      this.loading = true;\r\n      const saved = await this.submitForm(p);\r\n      if (isResponsible) {\r\n        if (this.patient) {\r\n          this.patient.responsible = saved;\r\n        } else {\r\n          this.pet.responsible = saved;\r\n        }\r\n      } else {\r\n        this.patient = saved;\r\n      }\r\n      this.loading = false;\r\n    });\r\n  }\r\n\r\n  get isDependent() {\r\n    return Boolean((this.patient && this.patient.responsible) || (this.pet && this.pet.responsible));\r\n  }\r\n\r\n  @nativeAsync\r\n  async addPetPatient(pet: PetPatient) {\r\n    try {\r\n      await this.healthProfessionalService.addPetPatient(pet._id).toPromise();\r\n      this.hasPet(pet._id);\r\n      this.update.emit();\r\n    } catch (err) {\r\n      console.error(err);\r\n    }\r\n  }\r\n\r\n  @nativeAsync\r\n  private async submitForm(patient: Patient) {\r\n    try {\r\n      const saved = await this.patientsService.update(patient._id, patient).toPromise();\r\n      this.update.emit(saved);\r\n      this.notification.notify('success', 'Sucesso', 'Paciente salvo com sucesso');\r\n      return saved;\r\n    } catch (err) {\r\n      console.error(err);\r\n      this.notification.notify('error', 'Erro', 'Erro ao salvar paciente');\r\n      return null;\r\n    }\r\n  }\r\n}\r\n","export default \"<ng-template #tplTitle>\\r\\n  <header class=\\\"modal-header\\\" *ngIf=\\\"patient || pet\\\" theme>\\r\\n    <img *ngIf=\\\"patient?.img\\\" class=\\\"mr-4 img\\\" [src]=\\\"'assets/img/' + patient.img\\\" />\\r\\n    <img\\r\\n      *ngIf=\\\"(!patient?.img && patient?.responsible) || pet?.responsible\\\"\\r\\n      src=\\\"assets/icons/hand-holding-medical.svg\\\"\\r\\n      class=\\\"mr-4 img\\\"\\r\\n    />\\r\\n    <div class=\\\"texto-header\\\">\\r\\n      <h5 class=\\\"mt-0 title\\\" theme>{{ patient?.name || pet?.name }}</h5>\\r\\n      <p class=\\\"document\\\" *ngIf=\\\"patient?.cpf\\\" theme>CPF: {{ patient.cpf | formattedCpf }}</p>\\r\\n      <p class=\\\"document red\\\" *ngIf=\\\"!patient?.cpf\\\">\\r\\n        <span *ngIf=\\\"patient?.responsible\\\">MENOR SEM CPF</span>\\r\\n      </p>\\r\\n      <p *ngIf=\\\"pet\\\">\\r\\n        <span>Responsável: {{ pet.responsible.name }}</span>\\r\\n      </p>\\r\\n    </div>\\r\\n  </header>\\r\\n</ng-template>\\r\\n<ng-template #tplContent>\\r\\n  <div class=\\\"container\\\" *ngIf=\\\"patient || pet\\\">\\r\\n    <h4 class=\\\"title\\\">\\r\\n      DADOS BÁSICOS\\r\\n      <button\\r\\n        (click)=\\\"isVeterinarian ? showEditPet(pet) : showEditPatient()\\\"\\r\\n        title=\\\"Editar\\\"\\r\\n        class=\\\"btn btn-icon\\\"\\r\\n      >\\r\\n        <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-pencil-solid\\\"></i></span>\\r\\n      </button>\\r\\n      <app-popover-button class=\\\"m-0\\\" [content]=\\\"popoverContent\\\"> </app-popover-button>\\r\\n    </h4>\\r\\n    <h4 *ngIf=\\\"hasAccount\\\" class=\\\"has-account\\\">\\r\\n      Paciente com conta ativada\\r\\n    </h4>\\r\\n    <ng-container *ngIf=\\\"isVeterinarian\\\">\\r\\n      <ul class=\\\"list-unstyled\\\">\\r\\n        <li class=\\\"list-item-icon\\\" *ngIf=\\\"pet.species\\\">Espécie: {{ pet.species | titlecase }}</li>\\r\\n        <li class=\\\"list-item-icon\\\" *ngIf=\\\"pet.race\\\">Raça: {{ pet.race | titlecase }}</li>\\r\\n        <li class=\\\"list-item-icon\\\" *ngIf=\\\"pet.sex\\\">Sexo: {{ pet.sex == 'F' ? 'Fêmea' : 'Macho' }}</li>\\r\\n      </ul>\\r\\n    </ng-container>\\r\\n\\r\\n    <ng-container *ngIf=\\\"!isVeterinarian\\\">\\r\\n      <ul class=\\\"list-unstyled\\\">\\r\\n        <li class=\\\"list-item-icon\\\" *ngIf=\\\"patient.cellphone\\\">\\r\\n          <i class=\\\"fa fa-phone-alt-solid\\\"></i> {{ patient.cellphone | formattedCel }}\\r\\n        </li>\\r\\n        <li class=\\\"list-item-icon\\\" title=\\\"E-mail de login\\\" *ngIf=\\\"patient.user?.email\\\">\\r\\n          <i class=\\\"fa fa-envelop-solid\\\"></i> {{ patient.user.email }}\\r\\n        </li>\\r\\n        <li\\r\\n          class=\\\"list-item-icon\\\"\\r\\n          title=\\\"E-mail de contato\\\"\\r\\n          *ngIf=\\\"patient.user?.emailContact && patient.user?.emailContact !== patient.user?.email\\\"\\r\\n        >\\r\\n          <i class=\\\"fa fa-envelop-solid\\\"></i> {{ patient.user.emailContact }}\\r\\n        </li>\\r\\n        <li class=\\\"list-item-icon\\\" *ngIf=\\\"patient.dateOfBirth\\\">\\r\\n          <i class=\\\"fa fa-birthday-cake-solid\\\"></i> {{ patient.dateOfBirth | date: 'dd/MM/yyyy':'GMT' }}\\r\\n        </li>\\r\\n        <li class=\\\"list-item-icon\\\" *ngIf=\\\"hasAddress()\\\">\\r\\n          <i class=\\\"fa fa-map-marker-alt-solid\\\"></i>{{ getAddress(patient.address) }}\\r\\n        </li>\\r\\n        <li class=\\\"list-item-icon\\\" *ngIf=\\\"patient.address?.cep\\\">\\r\\n          <i class=\\\"fa fa-map-marker-alt-solid\\\"></i>CEP: {{ patient.address.cep | mask: '00.000-000' }}\\r\\n        </li>\\r\\n      </ul>\\r\\n    </ng-container>\\r\\n    <div *ngIf=\\\"patient?.responsible || pet?.responsible\\\">\\r\\n      <h4 class=\\\"title\\\">\\r\\n        DADOS DO RESPONSÁVEL\\r\\n        <button (click)=\\\"showEditPatient(true)\\\" title=\\\"Editar\\\" class=\\\"btn btn-icon\\\">\\r\\n          <span class=\\\"btn-inner--icon\\\"><i class=\\\"fa fa-pencil-solid\\\"></i></span>\\r\\n        </button>\\r\\n        <app-popover-button class=\\\"m-0\\\" [content]=\\\"popoverContent\\\"> </app-popover-button>\\r\\n      </h4>\\r\\n      <h4 *ngIf=\\\"hasAccount\\\" class=\\\"has-account\\\">\\r\\n        Paciente com conta ativada\\r\\n      </h4>\\r\\n      <ul class=\\\"list-unstyled\\\">\\r\\n        <li class=\\\"list-item-icon\\\">\\r\\n          <i class=\\\"fa fa-user-solid\\\" *ngIf=\\\"patient?.responsible.name || pet\\\"></i>\\r\\n          {{ patient?.responsible.name || pet?.responsible.name }}\\r\\n        </li>\\r\\n        <li class=\\\"list-item-icon\\\">\\r\\n          <i class=\\\"fa fa-address-card\\\" *ngIf=\\\"patient?.responsible.cpf || pet?.responsible.cpf\\\"></i>\\r\\n          {{ patient?.responsible.cpf || pet?.responsible.cpf | formattedCpf }}\\r\\n        </li>\\r\\n        <li class=\\\"list-item-icon\\\">\\r\\n          <i\\r\\n            class=\\\"fa fa-phone-alt-solid\\\"\\r\\n            *ngIf=\\\"patient?.responsible.cellphone || pet?.responsible.cellphone\\\"\\r\\n          ></i>\\r\\n          {{ patient?.responsible.cellphone || pet?.responsible.cellphone | formattedCel }}\\r\\n        </li>\\r\\n        <li class=\\\"list-item-icon\\\">\\r\\n          <i\\r\\n            class=\\\"fa fa-envelop-solid\\\"\\r\\n            *ngIf=\\\"patient?.responsible.user?.email || pet?.responsible.user?.email\\\"\\r\\n          ></i>\\r\\n          {{ patient?.responsible.user?.email || pet?.responsible.user?.email }}\\r\\n        </li>\\r\\n        <li class=\\\"list-item-icon\\\">\\r\\n          <i\\r\\n            class=\\\"fa fa-birthday-cake-solid\\\"\\r\\n            *ngIf=\\\"patient?.responsible.dateOfBirth || pet?.responsible.dateOfBirth\\\"\\r\\n          ></i>\\r\\n          {{\\r\\n            patient?.responsible.dateOfBirth || pet?.responsible.dateOfBirth | date: 'dd/MM/yyyy':'GMT'\\r\\n          }}\\r\\n        </li>\\r\\n        <li class=\\\"list-item-icon\\\" *ngIf=\\\"getAddress()\\\">\\r\\n          <i class=\\\"fa fa-map-marker-alt-solid\\\"></i> {{ getAddress() }}\\r\\n        </li>\\r\\n      </ul>\\r\\n    </div>\\r\\n    <div *ngIf=\\\"patient?.dependents?.length || responsiblePets?.length\\\">\\r\\n      <h4 class=\\\"title\\\">DEPENDENTES</h4>\\r\\n      <div style=\\\"max-height: 250px; overflow: auto;\\\">\\r\\n        <ul *ngIf=\\\"!isVeterinarian\\\" class=\\\"list-unstyled\\\">\\r\\n          <li *ngFor=\\\"let dependent of patient.dependents\\\" class=\\\"list-item-icon\\\">\\r\\n            {{ dependent.name }}\\r\\n            <button\\r\\n              *ngIf=\\\"!hasDependent(dependent)\\\"\\r\\n              (click)=\\\"addPatient(dependent)\\\"\\r\\n              title=\\\"Vincular paciente\\\"\\r\\n              class=\\\"btn-icon mr-0 p-0\\\"\\r\\n            >\\r\\n              <i class=\\\"fa fa-plus\\\"></i>\\r\\n            </button>\\r\\n            <button\\r\\n              *ngIf=\\\"hasDependent(dependent)\\\"\\r\\n              (click)=\\\"removePatient(dependent)\\\"\\r\\n              title=\\\"Desvincular paciente\\\"\\r\\n              class=\\\"btn-icon mr-0 p-0\\\"\\r\\n            >\\r\\n              <i class=\\\"fa fa-trash-solid\\\"></i>\\r\\n            </button>\\r\\n          </li>\\r\\n        </ul>\\r\\n\\r\\n        <ul *ngIf=\\\"isVeterinarian\\\" class=\\\"list-unstyled\\\">\\r\\n          <li *ngFor=\\\"let pet of responsiblePets\\\" class=\\\"list-item-icon\\\">\\r\\n            {{ pet.name }}\\r\\n            <button\\r\\n              *ngIf=\\\"!hasPetDependent(pet)\\\"\\r\\n              (click)=\\\"addPetPatient(pet)\\\"\\r\\n              title=\\\"Vincular paciente\\\"\\r\\n              class=\\\"btn-icon mr-0 p-0\\\"\\r\\n            >\\r\\n              <i class=\\\"fa fa-plus\\\"></i>\\r\\n            </button>\\r\\n            <button *ngIf=\\\"hasPetDependent(pet)\\\" class=\\\"btn-icon mr-0 p-0\\\" title=\\\"Paciente vinculado\\\">\\r\\n              <i class=\\\"fa-solid fa-check\\\"></i>\\r\\n            </button>\\r\\n          </li>\\r\\n        </ul>\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n  <app-patient-record\\r\\n    *ngIf=\\\"hasPatientRecordFeature\\\"\\r\\n    [patient]=\\\"patient\\\"\\r\\n    [customStyle]=\\\"patientRecordStyle\\\"\\r\\n  ></app-patient-record>\\r\\n</ng-template>\\r\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\r\\n\";","export default \".modal-header {\\n  background-color: var(--bg-modal-header);\\n  color: var(--color-white);\\n  border-bottom: none;\\n  display: flex;\\n  align-items: center;\\n}\\n.modal-header .img {\\n  width: 65px;\\n  height: 65px;\\n}\\n.texto-header {\\n  display: flex;\\n  flex-direction: column;\\n  justify-content: flex-end;\\n  flex: 1;\\n}\\n.texto-header .title {\\n  color: var(--color-white);\\n  font-size: 40px;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n  overflow: hidden;\\n  width: calc(100% - 70px);\\n  line-height: normal;\\n  margin-bottom: -12px;\\n  text-transform: none;\\n}\\n@media (max-width: 575px) {\\n  .texto-header .title {\\n    font-size: 20px;\\n    width: calc(100% - 70px);\\n  }\\n}\\n.texto-header p {\\n  font-size: 22px;\\n}\\n::ng-deep .vertical-center-modal {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n::ng-deep .vertical-center-modal .ant-modal {\\n  top: 0;\\n  font-family: \\\"prolight\\\";\\n  font-size: 18px;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .ant-modal-header {\\n  background-color: transparent;\\n  padding: 0;\\n  width: 100%;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .ant-modal-content,\\n::ng-deep .vertical-center-modal .ant-modal .ant-modal-footer,\\n::ng-deep .vertical-center-modal .ant-modal .ant-modal-header {\\n  border-radius: none;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .media {\\n  align-items: center;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .media img {\\n  width: 60px;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .media .media-header a {\\n  color: #8e8e8e;\\n  font-size: 18px;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .media .media-header a:not(:last-child) {\\n  margin-right: 8px;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .media .document {\\n  font-size: 20px;\\n  color: var(--color-white);\\n  font-family: \\\"proregular\\\";\\n}\\n::ng-deep .vertical-center-modal .ant-modal .media p {\\n  margin-bottom: 0;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .media ul li {\\n  font-family: \\\"prolight\\\";\\n  font-size: 15px;\\n  margin-right: 0;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .media ul li .ant-divider {\\n  background: #838383;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .media ul li .ant-divider-vertical {\\n  margin: 0 20px;\\n  height: 20px;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .media .red {\\n  color: red;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .title {\\n  margin: 0;\\n  font-size: 12px;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .empty-list,\\n::ng-deep .vertical-center-modal .ant-modal .list-item-icon {\\n  font-size: 18px;\\n}\\n::ng-deep .vertical-center-modal .ant-modal .list-item-icon .fa {\\n  margin-right: 15px;\\n}\\n.btn-icon {\\n  padding: 5px;\\n  margin: 0 0 5px 5px;\\n  border: 0;\\n  box-shadow: none;\\n  background-color: transparent;\\n}\\n.has-account {\\n  font-size: 14px;\\n  color: orangered;\\n}\\n::ng-deep .ant-popover-content {\\n  max-width: 50%;\\n}\";","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Patient } from '@app/shared/models';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { PatientsService } from '../../services/patients.service';\nimport { PetPatientService } from '../../services/pet-patient.service';\nimport { PetPatient } from '@app/shared/models/pet-patient';\nimport { BigboostService } from '@app/shared/services/bigboost.service';\nimport { DataBigboostConsult } from '@app/shared/models/paciente';\n\n@Component({\n  selector: 'app-modal-switch-responsible',\n  templateUrl: './modal-switch-responsible.component.html',\n  styleUrls: ['./modal-switch-responsible.component.scss']\n})\nexport class ModalSwitchResponsibleComponent implements OnInit {\n  @Input() patient: Patient | PetPatient;\n  @Input() isVeterinarian = false;\n\n  @Output() sucess = new EventEmitter<Patient>();\n  @Output() newPatientRegister = new EventEmitter<DataBigboostConsult>();\n\n  cpf = new FormControl('');\n  loadindSearch = false;\n  loadindConfirm = false;\n  loadindConfirmRegister = false;\n\n  newResponsible: Patient;\n  newResponsibleNotFound = false;\n\n  constructor(\n    public modalRef: BsModalRef,\n    private notification: AppToastService,\n    private patientService: PatientsService,\n    private petPatientService: PetPatientService,\n    private bigboostService: BigboostService\n  ) {}\n\n  ngOnInit(): void {}\n\n  searchResponsiblePatient() {\n    this.resetLoadings();\n    this.loadindSearch = true;\n    this.newResponsible = null;\n    this.newResponsibleNotFound = null;\n\n    const cpf = this.cpf.value;\n\n    this.patientService\n      .getPatientByCpf(cpf)\n      .subscribe(\n        newReponsible => {\n          if (newReponsible.responsible) {\n            this.notification.notify('warning', 'Outro menor não pode ser resposável por outro.');\n            return;\n          }\n          this.newResponsible = newReponsible;\n          this.cpf.reset();\n        },\n        (httpError: HttpErrorResponse) => {\n          if (httpError.status === 404) {\n            this.newResponsibleNotFound = true;\n          } else {\n            this.notification.notify(\n              'error',\n              'Ocorreu um erro ao buscar os dados do responsável. Favor entrar em contato com administradores!'\n            );\n          }\n        }\n      )\n      .add(() => {\n        this.loadindSearch = false;\n      });\n  }\n\n  confirmSwitchReponsible() {\n    this.resetLoadings();\n    this.loadindConfirm = true;\n    if (this.isVeterinarian) {\n      this.switchReponsiblePet();\n    } else {\n      this.switchReponsiblePatient();\n    }\n  }\n\n  confirmRegisterNewPatient() {\n    this.resetLoadings();\n    const cpf = this.cpf.value;\n    this.loadindConfirmRegister = true;\n    this.bigboostService\n      .consultCpf(cpf, '')\n      .subscribe(\n        (response: DataBigboostConsult) => {\n          this.newPatientRegister.emit(response);\n          this.modalRef.hide();\n        },\n        (error: HttpErrorResponse) => {\n          if (error.status === 401) {\n            this.notification.notify(\n              'warning',\n              'Aviso',\n              'A data de nascimento não pertence a este CPF. Favor digitar novamente.'\n            );\n            return;\n          }\n          if (error.status === 404) {\n            this.notification.notify(\n              'error',\n              'Error ao consultar CPF',\n              'CPF não localizado na Receita Federal. Verifique as informações digitadas e tente novamente. Em caso de dúvidas, entre em contato com nosso atendimento',\n              8000\n            );\n            return;\n          }\n        }\n      )\n      .add(this.resetLoadings);\n  }\n\n  cancel() {\n    this.newResponsible = null;\n    this.modalRef.hide();\n  }\n\n  private switchReponsiblePatient() {\n    this.patientService\n      .switchReponsible(this.patient._id, this.newResponsible.cpf)\n      .subscribe(\n        () => {\n          this.sucess.emit(this.newResponsible);\n          this.modalRef.hide();\n        },\n        () => {\n          this.notification.notify(\n            'error',\n            'Ocorreu um erro ao alterar o responsável do paciente. Favor entrar em contato com administradores!'\n          );\n        }\n      )\n      .add(this.resetLoadings);\n  }\n\n  private switchReponsiblePet() {\n    this.petPatientService\n      .switchReponsible(this.patient._id, this.newResponsible.cpf)\n      .subscribe(\n        () => {\n          this.sucess.emit(this.newResponsible);\n          this.modalRef.hide();\n        },\n        () => {\n          this.notification.notify(\n            'error',\n            'Ocorreu um erro ao alterar o responsável do PET. Favor entrar em contato com administradores!'\n          );\n        }\n      )\n      .add(this.resetLoadings);\n  }\n\n  private resetLoadings() {\n    this.loadindSearch = false;\n    this.loadindConfirm = false;\n    this.loadindConfirmRegister = false;\n  }\n}\n","export default \"<div class=\\\"modal-header\\\" theme>\\n  <h4 class=\\\"modal-title pull-left text-white\\\">\\n    Alterar Responsável\\n  </h4>\\n  <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n    <span aria-hidden=\\\"true\\\">&times;</span>\\n  </button>\\n</div>\\n\\n<p>\\n  Digite abaixo o CPF do Responsável.\\n</p>\\n\\n<div class=\\\"search-body\\\" theme>\\n  <div class=\\\"d-flex flex-column\\\">\\n    <nz-form-item>\\n      <nz-form-control nzHasFeedback>\\n        <input\\n          nz-input\\n          id=\\\"cpf\\\"\\n          [formControl]=\\\"cpf\\\"\\n          placeholder=\\\"000.000.000-00\\\"\\n          mask=\\\"000.000.000-00\\\"\\n          autocomplete=\\\"disabled\\\"\\n        />\\n      </nz-form-control>\\n    </nz-form-item>\\n  </div>\\n  <button\\n    class=\\\"ok-btn btn-salvar btn-color-primary\\\"\\n    nz-button\\n    type=\\\"submit\\\"\\n    theme\\n    *ngIf=\\\"!loadindSearch\\\"\\n    (click)=\\\"searchResponsiblePatient()\\\"\\n  >\\n    Pesquisar <i class=\\\"fa fa-search\\\"></i>\\n  </button>\\n</div>\\n\\n<div *ngIf=\\\"loadindSearch || newResponsible\\\">\\n  <nz-divider></nz-divider>\\n  <nz-spin\\n    style=\\\"display: flex; justify-content: center;\\\"\\n    nzSimple\\n    theme\\n    *ngIf=\\\"loadindSearch\\\"\\n  ></nz-spin>\\n\\n  <ng-container *ngIf=\\\"newResponsible\\\">\\n    <h5>Informações do Novo Responsável</h5>\\n    <div style=\\\"padding: 8px 20px; display: flex; flex-direction: column; gap: 8px;\\\">\\n      <span style=\\\"font-size: 18px;\\\">\\n        <i class=\\\"fa fa-user-solid mr-2\\\"></i>\\n        <strong>Nome: </strong>{{ newResponsible?.name }}\\n      </span>\\n      <span style=\\\"font-size: 18px;\\\">\\n        <i class=\\\"fa fa-address-card mr-2\\\"></i>\\n        <strong>CPF: </strong>{{ newResponsible?.cpf | formattedCpf }}\\n      </span>\\n      <span style=\\\"font-size: 18px;\\\">\\n        <i class=\\\"fa fa-envelop-solid mr-2\\\"></i>\\n        <strong>Data de Nascimento: </strong>{{ newResponsible?.dateOfBirth | date: 'dd/MM/yyyy' }}\\n      </span>\\n      <span style=\\\"font-size: 18px;\\\">\\n        <i class=\\\"fa fa-phone-alt-solid mr-2\\\"></i>\\n        <strong>Telefone: </strong\\n        >{{ newResponsible?.cellphone || newResponsible?.telephone | formattedCel }}\\n      </span>\\n    </div>\\n    <div style=\\\"padding: 16px; display: flex; align-items: center; justify-content: center; gap: 8px;\\\">\\n      <button nz-button type=\\\"button\\\" theme (click)=\\\"cancel()\\\" *ngIf=\\\"!loadindConfirm\\\">\\n        Cancelar\\n      </button>\\n      <button\\n        class=\\\"ok-btn btn-color-primary\\\"\\n        nz-button\\n        type=\\\"submit\\\"\\n        theme\\n        *ngIf=\\\"!loadindConfirm\\\"\\n        (click)=\\\"confirmSwitchReponsible()\\\"\\n      >\\n        Confirmar <i class=\\\"fa fa-check\\\" aria-hidden=\\\"true\\\"></i>\\n      </button>\\n      <nz-spin\\n        style=\\\"display: flex; justify-content: center;\\\"\\n        nzSimple\\n        theme\\n        *ngIf=\\\"loadindConfirm\\\"\\n      ></nz-spin>\\n    </div>\\n  </ng-container>\\n</div>\\n\\n<ng-container *ngIf=\\\"newResponsibleNotFound\\\">\\n  <nz-divider></nz-divider>\\n  <div style=\\\"padding: 8px 20px;\\\">\\n    <span style=\\\"text-align: justify;\\\">\\n      Responsável não encontrado para o cpf informado. Deseja realizar o cadastro?\\n    </span>\\n    <div style=\\\"padding: 16px; display: flex; align-items: center; justify-content: center; gap: 8px;\\\">\\n      <button nz-button type=\\\"button\\\" theme (click)=\\\"cancel()\\\" *ngIf=\\\"!loadindConfirmRegister\\\">\\n        Cancelar\\n      </button>\\n      <button\\n        class=\\\"ok-btn btn-color-primary\\\"\\n        nz-button\\n        type=\\\"submit\\\"\\n        theme\\n        *ngIf=\\\"!loadindConfirmRegister\\\"\\n        (click)=\\\"confirmRegisterNewPatient()\\\"\\n      >\\n        Confirmar <i class=\\\"fa fa-check\\\" aria-hidden=\\\"true\\\"></i>\\n      </button>\\n      <nz-spin\\n        style=\\\"display: flex; justify-content: center;\\\"\\n        nzSimple\\n        theme\\n        *ngIf=\\\"loadindConfirmRegister\\\"\\n      ></nz-spin>\\n    </div>\\n  </div>\\n</ng-container>\\n\";","export default \".modal-header {\\n  width: 381px;\\n  font-family: \\\"probold\\\";\\n}\\n\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n  text-align: center;\\n  margin-bottom: 8px;\\n}\\n\\nh5 {\\n  color: #363636;\\n  font-family: \\\"prolight\\\";\\n  text-align: center;\\n}\\n\\n.search-body {\\n  width: 100% !important;\\n  padding: 0px;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  gap: 16px;\\n}\\n\\n.search-body input {\\n  height: 40px;\\n}\\n\\n.search-body .submit {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  position: relative;\\n  z-index: 1;\\n  right: -118px;\\n  top: -28px;\\n  font-size: 15px;\\n  margin: 0px;\\n  width: 30px;\\n}\\n\\n.search-body .submit i {\\n  cursor: pointer;\\n}\\n\\n.btn-salvar,\\n.btn-salvar:hover {\\n  margin-top: -12px;\\n}\\n\\n.btn-color-primary {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n\\n.ant-divider-horizontal {\\n  margin: 15px 0 !important;\\n}\";","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostListener,\n  OnInit,\n  ViewChild\n} from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { CoreService } from '@app/core/services/core.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { ModalAddPatientComponent } from '@app/modules/patients/pages/modal-add-patient/modal-add-patient.component';\nimport { ModalSearchComponent } from '@app/modules/patients/pages/modal-search/modal-search.component';\nimport { PatientDetailsComponent } from '@app/modules/patients/pages/patient-details/patient-details.component';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { HealthProfessional, Patient } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport moment from 'moment';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { ModalSelectPetComponent } from '../modal-select-pet/modal-select-pet.component';\nimport { ModalSwitchResponsibleComponent } from '../modal-switch-responsible/modal-switch-responsible.component';\nimport { PetPatient } from '@app/shared/models/pet-patient';\nimport { DataBigboostConsult } from '@app/shared/models/paciente';\nimport { PatientsService } from '../../services/patients.service';\nimport { PetPatientService } from '../../services/pet-patient.service';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\n\nconst NUMBER_MONTH_OCTOBER = 10;\n\n@Component({\n  selector: 'app-index',\n  templateUrl: './index.component.html',\n  styleUrls: ['./index.component.scss']\n})\nexport class IndexComponent implements OnInit, AfterViewInit {\n  userId: string;\n  allChecked = false;\n  disabledButton = true;\n  checkedNumber = 0;\n  displayData: Array<{ name: string; age: number; address: string; checked: boolean }> = [];\n  operating = false;\n  dataSet: Patient[] = [];\n  patient: Patient[];\n  prescriber: HealthProfessional;\n  loading: boolean = false;\n  loadingSpinner: boolean = false;\n  searchForm: FormGroup;\n  indeterminate = false;\n  totalRecord = 0;\n  pageSize = 10;\n  skip = 0;\n  query: string = null;\n\n  @ViewChild(PatientDetailsComponent, { static: true })\n  modalPatient: PatientDetailsComponent;\n\n  @ViewChild('inputSearch', { static: true }) inputSearch: ElementRef<HTMLInputElement>;\n\n  scrollConfig = { y: '510px' };\n  pageIndex = 1;\n\n  filtersFast = {\n    womenOver40: false,\n    minors: false,\n    adults: false\n  };\n\n  isMobile = false;\n\n  @HostListener('window:resize', ['$event'])\n  onResize() {\n    this.isMobile = this.coreService.isViewPortMobile();\n  }\n\n  constructor(\n    private router: Router,\n    private healthProfessionalService: HealthProfessionalService,\n    private authService: AuthService,\n    private fb: FormBuilder,\n    private modalService: BsModalService,\n    private nzModalService: NzModalService,\n    public coreService: CoreService,\n    private cdr: ChangeDetectorRef,\n    private patientService: PatientsService,\n    private petPatientService: PetPatientService,\n    private notification: AppToastService\n  ) {\n    this.onResize();\n  }\n\n  @nativeAsync\n  async ngOnInit() {\n    this.initForm();\n    this.userId = this.user._id;\n    await this.getHealthProfessionalData(this.user._id);\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.inputSearch.nativeElement.focus();\n    }, 0);\n    this.cdr.detectChanges();\n  }\n\n  get pinkOctoberCampaignEnabled() {\n    return moment().month() + 1 === NUMBER_MONTH_OCTOBER;\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  get isVeterinarian(): boolean {\n    return this.prescriber && this.prescriber.professionalType === 'veterinarian';\n  }\n\n  @nativeAsync\n  async getHealthProfessionalData(userId: string) {\n    this.loading = true;\n    this.prescriber = await this.healthProfessionalService.getHealthProfessional(userId).toPromise();\n\n    this.getPatients(this.query);\n  }\n\n  requestPatients() {\n    this.loading = true;\n    this.healthProfessionalService\n      .getPatientsByUserIdWithPagination(\n        this.query,\n        this.user._id,\n        this.pageSize,\n        this.skip,\n        this.filtersFast\n      )\n      .subscribe(\n        data => {\n          this.dataSet = data.patients;\n          this.totalRecord = data.totalRecord;\n          this.loading = false;\n        },\n        err => {\n          console.error(err);\n          this.loading = false;\n        }\n      );\n  }\n\n  requestPetPatients() {\n    this.loading = true;\n    this.healthProfessionalService.getPetsWithPagination(this.query, this.pageSize, this.skip).subscribe(\n      data => {\n        this.dataSet = data.pets;\n        this.totalRecord = data.totalRecord;\n        this.loading = false;\n        setTimeout(() => {\n          this.inputSearch.nativeElement.focus();\n        }, 0);\n      },\n      err => {\n        console.error(err);\n        this.loading = false;\n      }\n    );\n  }\n\n  @nativeAsync\n  async showModalRemovePatient(patientId: string) {\n    this.nzModalService.confirm({\n      nzTitle: 'Alerta',\n      nzContent: 'Tem certeza que deseja remover este paciente da sua lista',\n      nzOnOk: async () => {\n        if (this.isVeterinarian) {\n          await this.healthProfessionalService\n            .removePetPatient(this.prescriber._id, patientId)\n            .toPromise();\n        } else {\n          await this.healthProfessionalService.removePatient(this.prescriber._id, patientId).toPromise();\n        }\n        this.getPatients(this.query);\n      }\n    });\n  }\n\n  getPatients(query: string) {\n    this.query = query;\n    this.skip = 1;\n    this.pageIndex = 1;\n\n    this.isVeterinarian ? this.requestPetPatients() : this.requestPatients();\n  }\n\n  getAllPatientsNames(allNames) {\n    let result = '';\n    for (let i = 0; i < allNames.length; i++) {\n      result = this.dataSet[i].name;\n    }\n    return result;\n  }\n\n  private initForm() {\n    this.searchForm = this.fb.group({\n      query: this.fb.control('')\n    });\n\n    this.searchForm\n      .get('query')\n      .valueChanges.pipe(debounceTime(300), distinctUntilChanged())\n      .subscribe(value => this.getPatients(value));\n  }\n\n  clearQuery() {\n    this.searchForm.get('query').setValue('');\n  }\n\n  currentPageDataChange(\n    $event: Array<{ name: string; age: number; address: string; checked: boolean }>\n  ): void {\n    this.displayData = $event;\n  }\n\n  refreshStatus(): void {\n    const allChecked = this.displayData.every(value => value.checked);\n    const allUnChecked = this.displayData.every(value => !value.checked);\n    this.allChecked = allChecked;\n    this.indeterminate = !allChecked && !allUnChecked;\n  }\n\n  checkAll(value: boolean): void {\n    this.displayData.forEach(data => (data.checked = value));\n    this.refreshStatus();\n  }\n\n  togglePatientModalDetails(event: Event, patient: any): void {\n    event.preventDefault();\n    this.modalPatient.createTplModal(patient, this.prescriber);\n    this.modalPatient.update.subscribe(saved =>\n      this.isVeterinarian ? this.requestPetPatients() : this.requestPatients()\n    );\n  }\n\n  redirectToPatientPrescriptions(patientId: string) {\n    this.router.navigate(['historic'], { queryParams: { patientId } });\n  }\n\n  redirectToNewPrescription(patient) {\n    localStorage.setItem('patient', JSON.stringify(patient));\n    const url =\n      this.isVeterinarian || this.authService.hasAccessNewModulePrescription\n        ? '/document/new'\n        : '/prescription/new';\n    this.router.navigate([url]);\n  }\n\n  showModalSearch(cpf?: string) {\n    const initialState = {\n      user: this.user,\n      prescriber: this.prescriber,\n      addPatient: true,\n      cpf\n    };\n    const modal = this.modalService.show(ModalSearchComponent, {\n      initialState,\n      backdrop: 'static',\n      keyboard: false\n    });\n    modal.content.updateListPatientEvent.subscribe(patient => {\n      this.query = null;\n      this.skip = 1;\n      this.requestPatients();\n    });\n    modal.content.openModalAddPatientEvent.subscribe(consult => this.showModalAddPatient(consult));\n    modal.content.openModalSelectPetEvent.subscribe(consult => this.showModalSelectPet(consult));\n    modal.content.loadingSpinnerEvent.subscribe((value: boolean) => (this.loadingSpinner = value));\n\n    if (cpf) {\n      setInterval(() => modal.hide(), 1);\n    }\n  }\n\n  private showModalAddPatient(consult, sucess?: (patient: Patient) => void) {\n    const initialState = {\n      prescriber: this.prescriber,\n      patient: consult.patient,\n      isResponsible: consult.isResponsible,\n      existingPatient: consult.existingPatient\n    };\n    const modal = this.modalService.show(ModalAddPatientComponent, {\n      class: 'modal-lg',\n      initialState,\n      backdrop: 'static',\n      keyboard: false\n    });\n    modal.content.updateListPatientEvent.subscribe((patientSaved: Patient) => {\n      if (!sucess) {\n        this.query = null;\n        this.skip = 1;\n        this.requestPatients();\n      } else {\n        sucess(patientSaved);\n      }\n    });\n  }\n\n  private showModalSelectPet(consult) {\n    const initialState = {\n      prescriber: this.prescriber,\n      pets: consult.patient.pets,\n      responsible: consult.patient\n    };\n    const modal = this.modalService.show(ModalSelectPetComponent, {\n      initialState,\n      backdrop: 'static',\n      keyboard: false\n    });\n\n    modal.content.submit.subscribe(_ => {\n      this.query = null;\n      this.skip = 1;\n      this.requestPetPatients();\n      this.modalService.hide(1);\n    });\n  }\n\n  pageIndexChanged(pageIndex: number): void {\n    this.loading = true;\n    this.skip = pageIndex;\n    this.pageIndex = pageIndex;\n    this.isVeterinarian ? this.requestPetPatients() : this.requestPatients();\n  }\n\n  toggleFiltersFast(keyFilter: string) {\n    Object.entries(this.filtersFast).forEach(([key, value]) => {\n      if (key === keyFilter) {\n        this.filtersFast[keyFilter] = !value;\n      } else {\n        this.filtersFast[key] = false;\n      }\n    });\n    this.requestPatients();\n  }\n\n  showModalSwitchResponsible(patient: Patient | PetPatient) {\n    const initialState = {\n      patient,\n      isVeterinarian: this.isVeterinarian\n    };\n    const modal = this.modalService.show(ModalSwitchResponsibleComponent, {\n      initialState,\n      backdrop: 'static',\n      keyboard: true,\n      class: 'modal-sm'\n    });\n\n    const updateResponsilbePatient = (newReponsible: Patient) => {\n      this.dataSet = this.dataSet.map(item => {\n        if (item._id === patient._id) {\n          return {\n            ...item,\n            responsible: newReponsible\n          };\n        }\n        return item;\n      });\n    };\n\n    modal.content.sucess.subscribe(updateResponsilbePatient);\n\n    modal.content.newPatientRegister.subscribe((consult: DataBigboostConsult) => {\n      const initialState = {\n        patient: consult,\n        isResponsible: false,\n        existingPatient: false\n      };\n      this.showModalAddPatient(initialState, (newPatient: Patient) => {\n        const execute = this.isVeterinarian\n          ? this.petPatientService.switchReponsible(patient._id, newPatient.cpf)\n          : this.patientService.switchReponsible(patient._id, newPatient.cpf);\n\n        execute.subscribe(\n          () => {\n            updateResponsilbePatient(newPatient);\n            this.dataSet.push(newPatient);\n          },\n          () => {\n            this.notification.notify(\n              'error',\n              'Ocorreu um erro ao alterar o responsável do paciente. Favor entrar em contato com administradores!'\n            );\n          }\n        );\n      });\n    });\n  }\n}\n","export default \"::ng-deep .ant-btn:hover,\\n.ant-btn:focus {\\n  color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n}\\n\\n::ng-deep .ant-btn.active,\\n.ant-btn:focus.active {\\n  text-decoration: none;\\n  background: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n  color: #fff;\\n}\\n\\n::ng-deep .cdk-overlay-pane {\\n  margin-top: -35px;\\n  margin-right: 29px;\\n}\\n\\n::ng-deep .ant-spin-dot-item {\\n  background-color: var(--bg-color-primary);\\n}\\n\\nsection {\\n  margin: 0 auto;\\n  width: 100%;\\n  max-width: 80%;\\n}\\n\\n@media (max-width: 768px) {\\n  section {\\n    margin: 0;\\n    max-width: 100%;\\n  }\\n}\\n\\nsection header {\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n  gap: 16px;\\n  padding: 16px 0;\\n}\\n\\n@media (max-width: 768px) {\\n  section header {\\n    flex-direction: column-reverse;\\n    gap: 16px;\\n    padding: 8px 0;\\n  }\\n}\\n\\nsection header .container-filter {\\n  flex: 1 1 auto;\\n}\\n\\nsection header .container-filter ::ng-deep .ant-input {\\n  border: none;\\n  background-color: transparent;\\n  box-shadow: none;\\n  border-radius: 0;\\n  border-bottom: 2px solid #f5f5f5;\\n}\\n\\nsection header .container-filter .ant-input::-moz-placeholder {\\n  font-size: 18px;\\n}\\n\\nsection header .container-filter ::ng-deep .ant-input,\\nsection header .container-filter .ant-input::placeholder {\\n  font-size: 18px;\\n}\\n\\nsection header .container-filter ::ng-deep .ant-input:focus {\\n  border-bottom: 2px solid var(--bg-color-primary);\\n}\\n\\n@media (max-width: 768px) {\\n  section header .container-filter {\\n    width: calc(100vw - 16px);\\n  }\\n}\\n\\nsection header .container-new-patient {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  gap: 16px;\\n}\\n\\n@media (max-width: 768px) {\\n  section header .container-new-patient {\\n    justify-content: space-between;\\n    gap: 16px;\\n    width: 100%;\\n    padding: 0 8px;\\n  }\\n}\\n\\nsection header .container-new-patient .container-qdt-patient {\\n  display: flex;\\n  align-items: center;\\n  gap: 16px;\\n}\\n\\nsection header .container-new-patient .container-qdt-patient i {\\n  font-size: 32px;\\n  padding: 0;\\n  display: flex;\\n}\\n\\nsection header .container-new-patient .container-qdt-patient span {\\n  font-size: 18px;\\n}\\n\\nsection header .fast-filter {\\n  margin-top: 8px;\\n  display: flex;\\n  align-items: center;\\n  gap: 16px;\\n}\\n\\nsection .container-table {\\n  margin: 8px;\\n  min-height: 80px;\\n}\\n\\nsection .container-table .container-patient-name {\\n  display: flex;\\n  align-items: center;\\n  gap: 8px;\\n}\\n\\nsection .container-table .container-patient-name i {\\n  font-size: 20px;\\n}\\n\\nsection .container-table .container-patient-name .patient-name {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 18px;\\n  flex: 1;\\n}\\n\\nsection .container-table .container-patient-name .patient-name .responsible-name {\\n  font-size: 12px;\\n}\\n\\nsection .container-table .actions {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n}\\n\\nsection .container-table .font-size-td {\\n  font-size: 16px;\\n}\\n\\nsection .container-mobile {\\n  padding: 0 8px;\\n  height: 90vh;\\n  max-height: calc(90vh - 240px);\\n  overflow: auto;\\n}\\n\\nsection .container-mobile .content-cart {\\n  display: flex;\\n  gap: 8px;\\n  justify-content: space-between;\\n  align-items: flex-start;\\n}\\n\\nsection .container-mobile .content-cart .content-cart-info {\\n  flex: 1;\\n  display: flex;\\n  flex-direction: column;\\n  gap: 4px;\\n}\\n\\nsection .container-mobile .content-cart .content-cart-info .content-cart-info-name {\\n  display: flex;\\n  align-items: center;\\n  gap: 8px;\\n}\\n\\nsection .container-mobile .content-cart .content-cart-info .content-cart-info-name .patient-name {\\n  font-family: \\\"probold\\\", sans-serif;\\n  font-size: 18px;\\n}\\n\\nsection .container-mobile .content-cart .content-cart-info .content-cart-info-responsible-name {\\n  font-size: 14px;\\n}\\n\\nsection .container-mobile .content-cart .content-cart-info .content-cart-info-cpf-telefone {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n}\\n\\nsection .container-mobile .content-cart .content-cart-info span > strong {\\n  font-weight: 600;\\n}\\n\\nsection .container-mobile .content-cart i {\\n  font-size: 24px;\\n  margin-top: -4px;\\n}\\n\\n.container-center {\\n  height: 120px;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n\\nli {\\n  display: flex;\\n  align-items: center;\\n  gap: 8px;\\n  border-bottom: 1px solid #f5f5f5;\\n  font-size: 14px;\\n  /* Safari */\\n  transition-duration: 0.4s;\\n  text-decoration: none;\\n  overflow: hidden;\\n  cursor: pointer;\\n}\\n\\nli :nth-last-child {\\n  border-bottom: none;\\n}\\n\\nli:after {\\n  content: \\\"\\\";\\n  background: #f5f5f5;\\n  display: block;\\n  position: absolute;\\n  opacity: 0;\\n  transition: all 0.8s;\\n}\\n\\nli:active:after {\\n  padding: 0;\\n  margin: 0;\\n  opacity: 1;\\n  transition: 0s;\\n}\";","export default \"<div class=\\\"float-button\\\">\\n  <button class=\\\"round-btn medical-record-btn\\\" *ngIf=\\\"!visible\\\" (click)=\\\"setVisible()\\\">\\n    <img src=\\\"assets/icons/file-medical-solid.svg\\\" alt=\\\"\\\" />\\n  </button>\\n\\n  <form [formGroup]=\\\"patientRecordForm\\\" *ngIf=\\\"visible\\\" class=\\\"patient-record\\\">\\n    <div class=\\\"icons\\\">\\n      <img\\n        src=\\\"assets/icons/window-minimize-regular.svg\\\"\\n        class=\\\"icon minimize\\\"\\n        title=\\\"Miniminar\\\"\\n        (click)=\\\"setVisible()\\\"\\n      />\\n      <img\\n        *ngIf=\\\"patient\\\"\\n        src=\\\"assets/icons/backspace-solid.svg\\\"\\n        class=\\\"icon\\\"\\n        title=\\\"Buscar outro paciente\\\"\\n        (click)=\\\"resetPatient()\\\"\\n      />\\n    </div>\\n\\n    <div [ngClass]=\\\"{ 'max-lenght max-width': patient, 'min-width min-width padding': !patient }\\\">\\n      <span class=\\\"title\\\" *ngIf=\\\"!patient\\\">PRONTUÁRIO</span>\\n      <nz-input-group [nzSuffix]=\\\"suffixIconSearch\\\" *ngIf=\\\"!patient\\\">\\n        <nz-form-control>\\n          <input\\n            nz-input\\n            [nzAutocomplete]=\\\"autoName\\\"\\n            appPatientSearch\\n            placeholder=\\\"Pesquisar\\\"\\n            class=\\\"search-ipt\\\"\\n            formControlName=\\\"name\\\"\\n          />\\n          <nz-autocomplete #autoName nzBackfill>\\n            <nz-auto-option\\n              (click)=\\\"onChangePatient(option)\\\"\\n              *ngFor=\\\"let option of patients\\\"\\n              [nzLabel]=\\\"option.cpf !== '-1' ? option.name : ''\\\"\\n              [nzValue]=\\\"option.cpf !== '-1' ? option.name : ''\\\"\\n              class=\\\"mao\\\"\\n            >\\n              {{ option?.name }}\\n              {{ option?.cpf !== '-1' ? (option?.cpf | formattedCpf) : '' }}\\n            </nz-auto-option>\\n          </nz-autocomplete>\\n        </nz-form-control>\\n      </nz-input-group>\\n      <ng-template #suffixIconSearch>\\n        <i nz-icon nzType=\\\"search\\\"></i>\\n      </ng-template>\\n      <span *ngIf=\\\"!patient\\\" class=\\\"select-text\\\">Selecione um paciente para começar</span>\\n\\n      <!-- details -->\\n      <div *ngIf=\\\"patient\\\">\\n        <div class=\\\"media padding\\\">\\n          <img\\n            class=\\\"mr-5\\\"\\n            *ngIf=\\\"patient?.img\\\"\\n            [src]=\\\"'assets/img/' + patient?.img\\\"\\n            alt=\\\"Generic placeholder image\\\"\\n          />\\n          <div class=\\\"media-body\\\">\\n            <div class=\\\"media-header d-flex align-items-center\\\">\\n              <h5 class=\\\"mt-0 title\\\">{{ patient?.name }}</h5>\\n            </div>\\n            <p *ngIf=\\\"patient?.cpf\\\" class=\\\"document\\\">CPF: {{ patient?.cpf | formattedCpf }}</p>\\n          </div>\\n        </div>\\n\\n        <app-patient-record [patient]=\\\"patient\\\" [customStyle]=\\\"patientRecordStyle\\\"></app-patient-record>\\n      </div>\\n    </div>\\n  </form>\\n</div>\\n\";","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { Patient } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { environment } from '@env/environment';\nimport { ReplaySubject } from 'rxjs';\nimport {\n  catchError,\n  debounceTime,\n  distinctUntilChanged,\n  map,\n  startWith,\n  switchMap,\n  takeUntil\n} from 'rxjs/operators';\n\n@Component({\n  selector: 'app-float-button',\n  templateUrl: './float-button.component.html',\n  styleUrls: ['./float-button.component.scss']\n})\nexport class FloatButtonComponent implements OnInit {\n  visible = false;\n  patientRecordForm: FormGroup;\n  patient: any;\n  patients: Patient[];\n  patientRecordStyle = {\n    recordsArea: { height: '50vh' }\n  };\n\n  private destroyed$: ReplaySubject<boolean> = new ReplaySubject<boolean>();\n\n  constructor(\n    private fb: FormBuilder,\n    private authService: AuthService,\n    private healthProfessionalService: HealthProfessionalService\n  ) {\n    this.patientRecordForm = this.fb.group({\n      _id: this.fb.control(''),\n      name: this.fb.control('')\n    });\n  }\n\n  ngOnInit() {\n    this.onChange();\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  onChangePatient(patient: Patient): void {\n    this.patient = patient;\n    this.patientRecordForm.get('_id').setValue(patient._id);\n  }\n\n  setVisible() {\n    this.visible = !this.visible;\n  }\n\n  resetPatient() {\n    this.patient = undefined;\n    this.patientRecordForm.get('_id').setValue('');\n    this.patientRecordForm.get('name').setValue('');\n  }\n\n  onChange(): void {\n    let inputValue = '';\n\n    this.patientRecordForm\n      .get('name')\n      .valueChanges.pipe(\n        debounceTime(environment.debounceTime),\n        distinctUntilChanged(),\n        switchMap(value => {\n          inputValue = value;\n          return this.getPatients(value);\n        }),\n        map((res: any) => {\n          if (res) {\n            if (res.length > 0) {\n              return res;\n            }\n          }\n          this.patientRecordForm.get('_id').setValue(null);\n        }),\n        takeUntil(this.destroyed$),\n        catchError((err, source) => {\n          return source.pipe(startWith([]));\n        })\n      )\n      .subscribe(patients => {\n        this.patients = patients;\n      });\n  }\n\n  private getPatients(value: string) {\n    return this.healthProfessionalService.getPatientsByUserId(value, this.user._id);\n  }\n\n  private onlyNumbers(value: String): Boolean {\n    return value.match(/^[0-9]+$/) != null;\n  }\n}\n","export default \".float-button {\\n  float: right;\\n  top: 83px;\\n  right: 0px;\\n  position: absolute;\\n  z-index: 1;\\n  padding: 20px 18px;\\n}\\n.float-button .round-btn {\\n  border-radius: 50px;\\n  width: 50px;\\n  height: 50px;\\n  outline: none;\\n  border: none;\\n}\\n.float-button .round-btn.medical-record-btn {\\n  background: #0b6054;\\n}\\n.float-button .round-btn.medical-record-btn img {\\n  filter: invert(1);\\n  width: 23px;\\n}\\n.padding {\\n  padding: 15px 45px 29px;\\n}\\n.patient-record {\\n  display: flex;\\n  flex-direction: column;\\n  border: solid 1px;\\n  background-color: white;\\n  color: #0b6054;\\n}\\n.patient-record .min-width {\\n  width: 33vw;\\n}\\n.patient-record .max-width {\\n  width: 35vw;\\n}\\n.patient-record .mix-lenght {\\n  height: 20vh;\\n}\\n.patient-record .title {\\n  font-weight: 600;\\n}\\n.patient-record .icons {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  align-self: flex-end;\\n  justify-content: space-evenly;\\n  position: absolute;\\n  width: 100px;\\n}\\n.patient-record .icons .icon {\\n  width: 22px;\\n  cursor: pointer;\\n}\\n.patient-record .minimize {\\n  margin-top: -14px;\\n}\\n.patient-record .select-text {\\n  font-size: 13px;\\n}\\n.patient-record .search-ipt {\\n  margin: 2px 0px 14px;\\n}\\n.patient-record .record {\\n  margin-top: 20px;\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.patient-record .record .date {\\n  font-style: italic;\\n}\\n.media {\\n  background-color: #ebebeb;\\n}\\n.media img {\\n  width: 80px;\\n}\\n.media .media-body {\\n  display: flex;\\n  flex-direction: column;\\n  justify-content: space-evenly;\\n}\\n.media .media-header .title {\\n  color: #4d4d4d;\\n  font-size: 25px;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n  overflow: hidden;\\n  margin-bottom: -12px;\\n  text-transform: none;\\n}\\n@media (max-width: 575px) {\\n  .media .media-header .title {\\n    font-size: 20px;\\n    width: 77%;\\n  }\\n}\\n.media .media-header a {\\n  color: #8e8e8e;\\n  font-size: 18px;\\n}\\n.media .media-header a:not(:last-child) {\\n  margin-right: 8px;\\n}\\n.media .document {\\n  font-size: 18px;\\n  color: #4d4d4d;\\n  font-family: \\\"proregular\\\";\\n}\\n.media p {\\n  margin-bottom: 0;\\n}\\n.media ul li {\\n  font-family: \\\"prolight\\\";\\n  font-size: 15px;\\n  margin-right: 0;\\n}\\n.media ul li .ant-divider {\\n  background: #838383;\\n}\\n.media ul li .ant-divider-vertical {\\n  margin: 0 20px;\\n  height: 20px;\\n}\\n::ng-deep .float-button .ant-input-affix-wrapper .ant-input-suffix {\\n  top: 43%;\\n}\";","export default \"<div class=\\\"col justify-content-between p-2\\\" theme>\\n  <div *ngIf=\\\"loading\\\" class=\\\"d-flex justify-content-center p-2\\\">\\n    <ng-template #indicatorTemplate>\\n      <i nz-icon nzType=\\\"loading\\\" class=\\\"loading-icon\\\"></i>\\n    </ng-template>\\n    <nz-spin nzSimple [nzIndicator]=\\\"indicatorTemplate\\\"></nz-spin>\\n  </div>\\n\\n  <div *ngIf=\\\"patientRecords.length\\\" class=\\\"d-flex\\\" [ngStyle]=\\\"customStyle?.recordsArea\\\">\\n    <div\\n      #scrollMe\\n      [scrollTop]=\\\"scrollMe.scrollHeight\\\"\\n      (scroll)=\\\"onScroll($event)\\\"\\n      class=\\\"col\\\"\\n      style=\\\"overflow: auto;\\\"\\n      [ngClass]=\\\"{ 'opacity-record': loading }\\\"\\n    >\\n      <nz-list>\\n        <nz-list-item *ngFor=\\\"let record of patientRecords.reverse()\\\" class=\\\"d-flex\\\">\\n          <app-record-card\\n            class=\\\"col\\\"\\n            [record]=\\\"record\\\"\\n            [tags]=\\\"tags\\\"\\n            [merging]=\\\"merging\\\"\\n            (recordDeleted)=\\\"refreshList()\\\"\\n            (setLoading)=\\\"setLoading($event)\\\"\\n            (showCheckbox)=\\\"showCheckbox($event)\\\"\\n            (addNewRecordToMerge)=\\\"addNewRecordToMerge($event)\\\"\\n          ></app-record-card>\\n        </nz-list-item>\\n      </nz-list>\\n    </div>\\n  </div>\\n\\n  <hr class=\\\"mt-3\\\" />\\n\\n  <div class=\\\"d-flex mt-1 mb-1\\\" *ngIf=\\\"!merging\\\">\\n    <div class=\\\"col-6\\\">\\n      <nz-select\\n        nzPlaceHolder=\\\"Selecione tag\\\"\\n        nzShowSearch\\n        nzAllowClear\\n        nzSize=\\\"default\\\"\\n        nzDropdownClassName=\\\"select-tag\\\"\\n        [(ngModel)]=\\\"selectedTag\\\"\\n        (ngModelChange)=\\\"onChangeTag($event)\\\"\\n      >\\n        <nz-option nzLabel=\\\"Nenhum\\\"></nz-option>\\n        <nz-option-group *ngFor=\\\"let tag of tagsWithChildren\\\" [nzLabel]=\\\"groupTitle\\\">\\n          <ng-template #groupTitle>\\n            <span>#{{ tag.name }}: {{ tag.description }}</span>\\n          </ng-template>\\n          <nz-option\\n            *ngFor=\\\"let children of tag.children; index as i\\\"\\n            [nzLabel]=\\\"i + 1 + ' - ' + children.description\\\"\\n            [nzValue]=\\\"children\\\"\\n          >\\n          </nz-option>\\n        </nz-option-group>\\n\\n        <nz-option-group>\\n          <nz-option\\n            *ngFor=\\\"let tag of tagsWithoutChildren\\\"\\n            [nzLabel]=\\\"'#' + tag.name + ': ' + tag.description\\\"\\n            [nzValue]=\\\"tag\\\"\\n          ></nz-option>\\n        </nz-option-group>\\n      </nz-select>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"d-flex align-items-center justify-content-center\\\" *ngIf=\\\"!loading && !merging\\\">\\n    <div class=\\\"col\\\">\\n      <textarea\\n        #recordInput\\n        nz-input\\n        rows=\\\"2\\\"\\n        [(ngModel)]=\\\"record\\\"\\n        placeholder=\\\"Escreva aqui...\\\"\\n      ></textarea>\\n    </div>\\n    <div class=\\\"col-2 p-0\\\" *ngIf=\\\"!merging\\\">\\n      <button class=\\\"btn btn-success\\\" (click)=\\\"submitRecord()\\\">\\n        <i class=\\\"fa fa-arrow-right\\\"></i>\\n      </button>\\n    </div>\\n  </div>\\n\\n  <div class=\\\"d-flex col-2 p-0\\\" *ngIf=\\\"merging\\\">\\n    <button\\n      nz-button\\n      type=\\\"button\\\"\\n      nzType=\\\"secondary\\\"\\n      class=\\\"btn-secondary\\\"\\n      (click)=\\\"cancelMergeSelection()\\\"\\n    >\\n      Cancelar <i class=\\\"fas fa-times\\\"></i>\\n    </button>\\n\\n    <button\\n      nz-button\\n      type=\\\"button\\\"\\n      nzType=\\\"primary\\\"\\n      class=\\\"btn-primary ml-2\\\"\\n      (click)=\\\"changeMergeConfirmation()\\\"\\n      [disabled]=\\\"recordsToMerge.length < 2\\\"\\n    >\\n      Unificar <i class=\\\"fas fa-check\\\"></i>\\n    </button>\\n  </div>\\n\\n  <ng-container *ngIf=\\\"mergeConfirmation\\\">\\n    <nz-modal\\n      [(nzVisible)]=\\\"mergeConfirmation\\\"\\n      nzTitle=\\\"Selecione a nova tag principal\\\"\\n      (nzOnCancel)=\\\"cancelMerge()\\\"\\n      (nzOnOk)=\\\"mergeRecords(mainTagId)\\\"\\n      [nzOkDisabled]=\\\"!mainTagId\\\"\\n      nzClassName=\\\"modal-merge\\\"\\n    >\\n      <div *ngIf=\\\"mergingRecords\\\" class=\\\"loading-area modal-loading\\\">\\n        <ng-template #indicatorTemplate>\\n          <i nz-icon nzType=\\\"loading\\\"></i>\\n        </ng-template>\\n        <nz-spin nzSimple [nzIndicator]=\\\"indicatorTemplate\\\"></nz-spin>\\n      </div>\\n\\n      <div [ngClass]=\\\"{ 'opacity-record': mergingRecords }\\\">\\n        <ng-container *ngIf=\\\"distinctTags\\\">\\n          <p>\\n            Escolha a nova tag do registro:\\n          </p>\\n          <nz-radio-group [(ngModel)]=\\\"mainTagId\\\">\\n            <label *ngFor=\\\"let tag of distinctTags\\\" nz-radio [nzValue]=\\\"tag.id\\\"\\n              >#{{ tag.name }}: {{ tag.description }}</label\\n            >\\n          </nz-radio-group>\\n        </ng-container>\\n\\n        <ng-container *ngIf=\\\"!distinctTags\\\">\\n          <p>Deseja confirmar a mesclagem dos registros selecionados?</p>\\n        </ng-container>\\n      </div>\\n    </nz-modal>\\n  </ng-container>\\n</div>\\n\";","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { PatientRecord } from '@app/shared/models/patient-record';\nimport { PatientRecordPage } from '@app/shared/models/patient-record-page';\nimport { PatientRecordRequest } from '@app/shared/models/patient-record-request';\nimport { Tag } from '@app/shared/models/tag';\nimport { environment } from '@env/environment';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PatientRecordService {\n  constructor(private http: HttpClient) {}\n\n  getTags() {\n    return this.http.get<Tag[]>(`${environment.apiRoot}tags`);\n  }\n\n  getRecords(patientId: string, page: number, limit: number) {\n    const params = { patientId, page, limit } as any;\n    return this.http.get<PatientRecordPage>(`${environment.apiRoot}patient-records`, { params });\n  }\n\n  submitRecord(record: PatientRecordRequest) {\n    return this.http.post<PatientRecord>(`${environment.apiRoot}patient-records`, record);\n  }\n\n  updateRecord(record: PatientRecord) {\n    return this.http.patch<PatientRecord>(`${environment.apiRoot}patient-records/${record.id}`, record);\n  }\n\n  deleteRecord(id: string) {\n    return this.http.delete(`${environment.apiRoot}patient-records/${id}`);\n  }\n\n  mergeRecords(records: PatientRecord[], mainTag: string) {\n    return this.http.post<PatientRecord>(`${environment.apiRoot}patient-records/merge`, {\n      records,\n      mainTag\n    });\n  }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { Patient } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { PatientRecord } from '@app/shared/models/patient-record';\nimport { Tag } from '@app/shared/models/tag';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { PatientRecordService } from '../../services/patient-record.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-patient-record',\n  templateUrl: './patient-record.component.html',\n  styleUrls: ['./patient-record.component.scss']\n})\nexport class PatientRecordComponent implements OnInit {\n  @Input() patient: Patient;\n  @Input() customStyle: any;\n\n  visible = false;\n  patientRecords: PatientRecord[] = [];\n  recordsToMerge: PatientRecord[] = [];\n  mainTagId: string;\n  distinctTags: Tag[] = [];\n  mergeConfirmation: boolean;\n\n  tags: Tag[] = [];\n  filteredTags: Tag[] = [];\n  record = '';\n  selectedTag: Tag;\n  merging = false;\n  loading = true;\n  mergingRecords = false;\n  page: number;\n  total: number;\n  limit = 10;\n\n  @ViewChild('recordInput') recordInput: ElementRef;\n\n  constructor(\n    private authService: AuthService,\n    private patientRecordService: PatientRecordService,\n    private notification: AppToastService\n  ) {}\n\n  @nativeAsync\n  async ngOnInit() {\n    if (this.patient) {\n      const [tags] = await Promise.all([\n        this.patientRecordService.getTags().toPromise(),\n        this.requestPatientRecords(1)\n      ]);\n      this.tags = tags;\n    } else {\n      this.tags = await this.patientRecordService.getTags().toPromise();\n    }\n  }\n\n  @nativeAsync\n  private async requestPatientRecords(paginationIndex: number, reset = false) {\n    try {\n      this.loading = true;\n      const { docs, total } = await this.patientRecordService\n        .getRecords(this.patient._id, paginationIndex, this.limit)\n        .toPromise();\n      if (reset) {\n        this.patientRecords = docs;\n      } else {\n        this.patientRecords = this.patientRecords.concat(docs);\n      }\n      this.page = paginationIndex;\n      this.total = total;\n    } catch (err) {\n      console.error(err);\n    }\n\n    this.loading = false;\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  get tagsWithChildren() {\n    return this.tags.filter(t => t.children.length);\n  }\n\n  get tagsWithoutChildren() {\n    return this.tags.filter(t => !t.children.length);\n  }\n\n  @nativeAsync\n  async onScroll(event: any) {\n    if (\n      event.target.offsetHeight + event.target.scrollTop >= event.target.scrollHeight &&\n      this.patientRecords.length < this.total\n    ) {\n      await this.requestPatientRecords(this.page + 1);\n    }\n  }\n\n  @nativeAsync\n  async refreshList() {\n    await this.requestPatientRecords(1, true);\n  }\n\n  editRecord(record: PatientRecord) {\n    this.patientRecordService.updateRecord(record);\n  }\n\n  showCheckbox(show: boolean) {\n    this.merging = show;\n  }\n\n  @nativeAsync\n  async mergeRecords(mainTagId: string) {\n    try {\n      this.mergingRecords = true;\n      const recordCreated = await this.patientRecordService\n        .mergeRecords(this.recordsToMerge, mainTagId)\n        .toPromise();\n      this.mergingRecords = false;\n      this.mergeConfirmation = false;\n      this.showCheckbox(false);\n      this.patientRecords.unshift(recordCreated);\n      await this.refreshList();\n    } catch (err) {\n      this.mergingRecords = false;\n      console.error(err);\n    }\n  }\n\n  addNewRecordToMerge(data) {\n    const { record, event } = data;\n    if (event) {\n      this.recordsToMerge.push(record);\n    } else {\n      const index = this.recordsToMerge.map(r => r.id).indexOf(record.id);\n      this.recordsToMerge = this.recordsToMerge.splice(index, 1);\n    }\n  }\n\n  changeMergeConfirmation() {\n    this.distinctTags = this.recordsToMerge\n      .map(r => r.tag)\n      .filter(t => !!t)\n      .reduce((acc, tag) => {\n        if (!acc.find(t => t.id === tag.id)) {\n          acc.push(tag);\n        }\n        return acc;\n      }, []);\n\n    if (this.distinctTags.length === 1) {\n      this.mergeRecords(this.distinctTags[0].id);\n    } else {\n      this.mergeConfirmation = !this.mergeConfirmation;\n    }\n  }\n\n  cancelMergeSelection() {\n    this.showCheckbox(false);\n  }\n\n  cancelMerge() {\n    this.mergeConfirmation = !this.mergeConfirmation;\n  }\n\n  onChangeTag(tag: Tag) {\n    if (tag.parentId) {\n      this.selectChild(tag.id);\n    }\n  }\n\n  @nativeAsync\n  async submitRecord() {\n    try {\n      const form = {\n        patientId: this.patient._id,\n        content: this.record,\n        tag: this.selectedTag && this.selectedTag.id\n      };\n      this.loading = true;\n      const recordCreated = await this.patientRecordService.submitRecord(form).toPromise();\n      this.patientRecords.unshift(recordCreated);\n    } catch (err) {\n      console.error(err);\n      this.notification.notify('error', 'Erro', 'Não foi possível salvar o registro');\n    }\n    this.reset();\n  }\n\n  extractDataFromRecord() {\n    if (!this.record.includes(':')) {\n      return { undefined, record: this.record };\n    }\n  }\n\n  setSelectedTag(tag: Tag) {\n    this.selectedTag = tag;\n    this.record = `#${tag.name}: `;\n  }\n\n  @nativeAsync\n  async selectChild(tagId: string) {\n    try {\n      const record = {\n        patientId: this.patient._id,\n        content: '',\n        tag: tagId,\n        editable: false\n      };\n      const recordCreated = await this.patientRecordService.submitRecord(record).toPromise();\n      this.patientRecords.unshift(recordCreated);\n    } catch (err) {\n      console.error(err);\n      this.notification.notify('error', 'Erro', 'Não foi possível salvar o registro');\n    }\n    this.reset();\n  }\n\n  private reset() {\n    this.loading = false;\n    this.record = '';\n    this.selectedTag = undefined;\n    this.recordInput.nativeElement.value = '';\n  }\n}\n","export default \".loading-icon {\\n  font-size: 30px;\\n}\\n\\n.opacity-record {\\n  opacity: 0.7;\\n}\\n\\n.show:hover .list-tags {\\n  max-height: inherit;\\n  opacity: 1;\\n}\\n\\nhr {\\n  margin-top: 0;\\n  margin-bottom: 1rem;\\n}\\n\\n::ng-deep .select-tag .ant-select-dropdown-menu-item {\\n  padding: 0 0 0 10px;\\n}\\n\\n::ng-deep .patient-record .ant-list-item {\\n  padding-bottom: 0;\\n}\\n\\n::ng-deep .modal-merge .ant-modal-header {\\n  background-color: #4cbca3;\\n}\\n\\n::ng-deep .modal-merge .ant-modal-title {\\n  color: white;\\n}\\n\\n::ng-deep .modal-merge .ant-btn-default:hover {\\n  color: #0b6054;\\n  border-color: #0b6054;\\n}\\n\\n::ng-deep .modal-merge .ant-btn-default:focus {\\n  color: rgba(0, 0, 0, 0.65);\\n  border-color: #d9d9d9;\\n}\\n\\n::ng-deep .modal-merge .ant-btn-primary {\\n  color: white;\\n  background-color: #0b6054;\\n  border-color: #0b6054;\\n}\\n\\n::ng-deep .modal-merge .ant-btn-primary:hover {\\n  background-color: #0b6054;\\n  border-color: #0b6054;\\n}\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { PatientRecordService } from '@app/modules/patients/services/patient-record.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { PatientRecord } from '@app/shared/models/patient-record';\nimport { Tag } from '@app/shared/models/tag';\n\n@Component({\n  selector: 'app-record-card',\n  templateUrl: './record-card.component.html',\n  styleUrls: ['./record-card.component.scss']\n})\nexport class RecordCardComponent implements OnInit {\n  @Input() record: PatientRecord;\n  @Input() tags: Tag[];\n  @Input() merging: boolean;\n  @Output() recordDeleted: EventEmitter<any> = new EventEmitter<any>();\n  @Output() setLoading: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() showCheckbox: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() addNewRecordToMerge: EventEmitter<any> = new EventEmitter<any>();\n\n  loading: boolean;\n  checked: boolean;\n  recordsToMerging: any[];\n  show: boolean;\n  newTag: any;\n  editing: boolean;\n  showHistory: boolean;\n  editingTag: boolean;\n  updatingTag: boolean;\n  showTagConfirmation: boolean;\n\n  constructor(private patientRecordService: PatientRecordService) {}\n\n  ngOnInit() {}\n\n  showOptions() {\n    this.show = !this.show;\n  }\n\n  editTag() {\n    this.editingTag = true;\n  }\n\n  editRecord() {\n    this.editing = !this.editing;\n    this.show = !this.show;\n  }\n\n  setShowHistory() {\n    this.showHistory = !this.showHistory;\n    this.show = false;\n  }\n\n  mergeRecords() {\n    this.showCheckbox.emit(true);\n    this.showOptions();\n  }\n\n  selectRecordToMerge(event) {\n    this.addNewRecordToMerge.emit({ record: this.record, event });\n  }\n\n  @nativeAsync\n  async updateRecord() {\n    this.loading = true;\n    const recordUpdated = await this.patientRecordService.updateRecord(this.record).toPromise();\n    this.record = recordUpdated;\n    this.editing = false;\n    this.loading = false;\n  }\n\n  @nativeAsync\n  async deleteRecord() {\n    await this.patientRecordService.deleteRecord(this.record.id).toPromise();\n    this.recordDeleted.emit();\n    this.loading = false;\n  }\n\n  getIndex(tagId: string) {\n    const parent = this.record.tag.parent;\n    const children = parent.children;\n    const index = children.findIndex(c => c.id === tagId);\n    return index + 1;\n  }\n\n  changeTagConfirmation(newTag) {\n    this.newTag = newTag;\n    this.showTagConfirmation = true;\n  }\n\n  handleOk(flag) {\n    this.editingTag = false;\n  }\n\n  handleCancel(flag: string) {\n    if (flag === 'editingTag') {\n      this.editingTag = false;\n    } else {\n      this.showTagConfirmation = false;\n    }\n  }\n\n  @nativeAsync\n  async changeTag() {\n    this.record.tag = this.newTag;\n    this.updatingTag = true;\n    const recordUpdated = await this.patientRecordService.updateRecord(this.record).toPromise();\n    this.record = recordUpdated;\n    this.showTagConfirmation = false;\n    this.editingTag = false;\n    this.show = false;\n    this.updatingTag = false;\n  }\n\n  getContent(content) {\n    document.getElementById('content').innerText = content;\n  }\n}\n","export default \"<div class=\\\"record-card\\\">\\n  <div *ngIf=\\\"loading\\\" class=\\\"loading-area\\\">\\n    <ng-template #indicatorTemplate>\\n      <i nz-icon nzType=\\\"loading\\\"></i>\\n    </ng-template>\\n    <nz-spin nzSimple [nzIndicator]=\\\"indicatorTemplate\\\"></nz-spin>\\n  </div>\\n  <div class=\\\"record\\\" [ngClass]=\\\"{ 'opacity-record': loading }\\\">\\n    <div class=\\\"info-area\\\" *ngIf=\\\"!showHistory\\\">\\n      <div class=\\\"infos\\\">\\n        <ng-container *ngIf=\\\"!record.tag && !record.editable\\\">\\n          <!-- titulo para registro de sistema -->\\n          <span class=\\\"gray\\\"><span class=\\\"title\\\">Sistema:</span> {{ record.content }}</span>\\n        </ng-container>\\n\\n        <ng-container *ngIf=\\\"record.tag\\\">\\n          <span class=\\\"title\\\"\\n            >{{ record.tag.parent ? record.tag.parent.description : record.tag.description }}\\n          </span>\\n          <span class=\\\"title\\\"> - </span>\\n          <span class=\\\"date\\\">{{ record.createdAt | date: 'dd/MM/yyyy HH:mm' }}</span>\\n        </ng-container>\\n\\n        <ng-container *ngIf=\\\"!record.tag\\\">\\n          <span class=\\\"title\\\"> - </span>\\n          <span class=\\\"date\\\">{{ record.createdAt | date: 'dd/MM/yyyy HH:mm' }}</span>\\n        </ng-container>\\n      </div>\\n      <i\\n        class=\\\"fas fa-angle-down show-icon\\\"\\n        *ngIf=\\\"!merging && (record.editable || record.historic.length)\\\"\\n        (click)=\\\"showOptions()\\\"\\n      ></i>\\n      <label\\n        nz-checkbox\\n        *ngIf=\\\"merging && record.editable\\\"\\n        [(ngModel)]=\\\"checked\\\"\\n        (ngModelChange)=\\\"selectRecordToMerge($event)\\\"\\n      ></label>\\n    </div>\\n\\n    <span class=\\\"content\\\" *ngIf=\\\"!editing && !showHistory\\\">{{\\n      record.tag && record.tag.parent\\n        ? getIndex(record.tag.id) + ' - ' + record.tag.description\\n        : record.content\\n    }}</span>\\n\\n    <div *ngIf=\\\"editing\\\" class=\\\"edit-area\\\">\\n      <input nz-input type=\\\"text\\\" [(ngModel)]=\\\"record.content\\\" />\\n      <div class=\\\"btns\\\">\\n        <button\\n          type=\\\"button\\\"\\n          class=\\\"btn btn-icon btn-success btn-add text-capitalize btn-save\\\"\\n          (click)=\\\"updateRecord()\\\"\\n        >\\n          <span class=\\\"btn-inner--text\\\">Salvar</span>\\n        </button>\\n\\n        <button\\n          type=\\\"button\\\"\\n          class=\\\"btn btn-icon btn-success btn-add text-capitalize btn-save cancel-btn\\\"\\n          (click)=\\\"editRecord()\\\"\\n        >\\n          <span class=\\\"btn-inner--text\\\">Cancelar</span>\\n        </button>\\n      </div>\\n    </div>\\n\\n    <div *ngIf=\\\"showHistory\\\" class=\\\"history-area\\\">\\n      <i class=\\\"fas fa-times close-icon\\\" (click)=\\\"setShowHistory()\\\"></i>\\n      <ng-container *ngFor=\\\"let historic of record.historic\\\">\\n        <div>\\n          <span> {{ historic.actionType === 'created' ? ' Registro criado em ' : 'Editado em ' }}</span>\\n          <span>{{ historic.date | date: 'dd/MM/yyyy HH:mm' }}</span>\\n        </div>\\n      </ng-container>\\n    </div>\\n\\n    <!-- menu - registro -->\\n    <div class=\\\"menu backgroun-gray\\\" *ngIf=\\\"show\\\">\\n      <i\\n        class=\\\"fas fa-hashtag option\\\"\\n        title=\\\"Editar Tag\\\"\\n        (click)=\\\"editTag()\\\"\\n        *ngIf=\\\"record.editable\\\"\\n      ></i>\\n      <i\\n        class=\\\"fas fa-pen option\\\"\\n        title=\\\"Editar texto do registro\\\"\\n        (click)=\\\"editRecord()\\\"\\n        *ngIf=\\\"record.editable\\\"\\n      ></i>\\n      <i class=\\\"fas fa-trash option\\\" title=\\\"Excluir registro\\\" (click)=\\\"deleteRecord()\\\"></i>\\n      <div (click)=\\\"mergeRecords()\\\" *ngIf=\\\"record.editable\\\">\\n        <i class=\\\"fas fa-chevron-right\\\"></i>\\n        <i class=\\\"fas fa-chevron-left\\\"></i>\\n      </div>\\n      <i\\n        class=\\\"fas fa-history option\\\"\\n        title=\\\"Histórico\\\"\\n        (click)=\\\"setShowHistory()\\\"\\n        *ngIf=\\\"record.historic.length\\\"\\n      ></i>\\n    </div>\\n  </div>\\n\\n  <nz-modal\\n    [(nzVisible)]=\\\"editingTag\\\"\\n    nzTitle=\\\"Editar Tag\\\"\\n    (nzOnCancel)=\\\"handleCancel('editingTag')\\\"\\n    (nzOnOk)=\\\"handleOk('editingTag')\\\"\\n  >\\n    <p>{{ record.tag ? 'Tag atual: ' + record.tag.description : 'Registro sem tag' }}</p>\\n\\n    <p>Escolha a nova tag:</p>\\n    <div class=\\\"pointer\\\" *ngFor=\\\"let tag of tags; let i = index\\\" (click)=\\\"changeTagConfirmation(tag)\\\">\\n      <span *ngIf=\\\"tag.children.length === 0\\\">{{ i + 1 }}. {{ tag.name }}: {{ tag.description }}</span>\\n    </div>\\n  </nz-modal>\\n\\n  <ng-container *ngIf=\\\"showTagConfirmation\\\">\\n    <nz-modal\\n      [(nzVisible)]=\\\"showTagConfirmation\\\"\\n      nzTitle=\\\"Nova tag\\\"\\n      (nzOnCancel)=\\\"handleCancel('showTagConfirmation')\\\"\\n      (nzOnOk)=\\\"changeTag()\\\"\\n    >\\n      <div *ngIf=\\\"updatingTag\\\" class=\\\"loading-area modal-loading\\\">\\n        <ng-template #indicatorTemplate>\\n          <i nz-icon nzType=\\\"loading\\\"></i>\\n        </ng-template>\\n        <nz-spin nzSimple [nzIndicator]=\\\"indicatorTemplate\\\"></nz-spin>\\n      </div>\\n\\n      <div [ngClass]=\\\"{ 'opacity-record': updatingTag }\\\">\\n        <p>\\n          Definir nova tag como: <span class=\\\"bold\\\">{{ newTag.name }} - {{ newTag.description }}</span\\n          >?\\n        </p>\\n      </div>\\n    </nz-modal>\\n  </ng-container>\\n</div>\\n\";","export default \".record-card {\\n  position: relative;\\n  padding-bottom: 8px;\\n  margin: 0;\\n}\\n.record-card .record {\\n  height: 100%;\\n}\\n.record-card .record .edit-area {\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.record-card .record .edit-area input {\\n  width: 55%;\\n}\\n.record-card .record .edit-area .btns .cancel-btn {\\n  background-color: #086053;\\n  border-color: #086053;\\n}\\n.record-card .record .content {\\n  white-space: pre-line;\\n}\\n.record-card .record .history-area {\\n  color: #7a7a7a;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  position: relative;\\n  top: -18px;\\n  font-style: italic;\\n  box-shadow: 0px 3px 7px #0000002e;\\n  background-color: #f8f8f8;\\n  padding: 5px 10px 14px 0px;\\n  border-radius: 10px;\\n}\\n.record-card .record .history-area .close-icon {\\n  align-self: end;\\n}\\n.record-card .record .info-area {\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.record-card .record .info-area .infos {\\n  color: #086053;\\n  font-size: 14px;\\n}\\n.record-card .record .info-area .infos .gray {\\n  color: #6f6f6f;\\n}\\n.record-card .record .info-area .show-icon {\\n  z-index: 1;\\n}\\n.record-card .record .title,\\n.record-card .record .date {\\n  font-size: 14px;\\n}\\n.record-card .record .date {\\n  font-style: italic;\\n}\\n.record-card .menu {\\n  justify-content: space-around;\\n  background-color: #f0f0f0e0;\\n  top: 0;\\n  height: 100%;\\n  width: 100%;\\n  opacity: 0.9;\\n  display: flex;\\n  padding-right: 18px;\\n  align-items: center;\\n  position: absolute;\\n  -webkit-text-stroke-width: medium;\\n  color: #363636;\\n}\\n.record-card .menu .option:hover {\\n  color: #17c6ac;\\n}\\n.record-card .menu i {\\n  color: black;\\n  font-size: 22px;\\n}\\ni,\\n.pointer {\\n  cursor: pointer;\\n}\\n.pointer:hover {\\n  color: #16c6ac;\\n}\\n.loading-area {\\n  width: 100%;\\n  height: 100%;\\n  display: flex;\\n  position: absolute;\\n  justify-content: center;\\n  align-items: center;\\n}\\n.loading-area i {\\n  color: #086053;\\n  font-size: 30px;\\n}\\n.modal-loading {\\n  position: inherit;\\n}\\n.opacity-record {\\n  opacity: 0.4;\\n}\\n.bold {\\n  font-weight: bold;\\n}\\n.fa-chevron-right:before,\\n.fa-chevron-left:before {\\n  margin-right: -0.5em;\\n  font-weight: bold;\\n}\";","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { IndexComponent } from './pages/index/index.component';\r\n\r\nconst routes: Routes = [{ path: '', component: IndexComponent }];\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forChild(routes)],\r\n  exports: [RouterModule]\r\n})\r\nexport class PatientsRoutingModule {}\r\n","import { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { NgModule } from '@angular/core';\r\nimport { SharedModule } from '@app/shared';\r\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\r\nimport { NzListModule } from 'ng-zorro-antd/list';\r\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { NgxLoadingModule } from 'ngx-loading';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { EntryModule } from '../entry/entry.module';\r\nimport { SimplifiedPatientFormComponent } from './components/simplified-patient-form/simplified-patient-form.component';\r\nimport { SimplifiedPetPatientFormComponent } from './components/simplified-pet-patient-form/simplified-pet-patient-form.component';\r\nimport { SimplifiedUnderagePatientFormComponent } from './components/simplified-underage-patient-form/simplified-underage-patient-form.component';\r\nimport { IndexComponent } from './pages/index/index.component';\r\nimport { ModalAddPatientComponent } from './pages/modal-add-patient/modal-add-patient.component';\r\nimport { ModalEditPatientComponent } from './pages/modal-edit-patient/modal-edit-patient.component';\r\nimport { ModalEditPetComponent } from './pages/modal-edit-pet/modal-edit-pet.component';\r\nimport { ModalSearchComponent } from './pages/modal-search/modal-search.component';\r\nimport { ModalSelectPetComponent } from './pages/modal-select-pet/modal-select-pet.component';\r\nimport { PatientDetailsComponent } from './pages/patient-details/patient-details.component';\r\nimport { FloatButtonComponent } from './pages/patient-record/float-button/float-button.component';\r\nimport { PatientRecordComponent } from './pages/patient-record/patient-record.component';\r\nimport { RecordCardComponent } from './pages/patient-record/record-card/record-card.component';\r\nimport { PatientsRoutingModule } from './patients-routing.module';\r\nimport { ModalSwitchResponsibleComponent } from './pages/modal-switch-responsible/modal-switch-responsible.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    SharedModule,\r\n    PatientsRoutingModule,\r\n    NgxLoadingModule.forRoot({}),\r\n    EntryModule,\r\n    ModalModule.forRoot(),\r\n    NzSpinModule,\r\n    NzListModule,\r\n    NgxMaskModule.forRoot(),\r\n    NzCheckboxModule,\r\n    ScrollingModule\r\n  ],\r\n  declarations: [\r\n    IndexComponent,\r\n    PatientDetailsComponent,\r\n    ModalSearchComponent,\r\n    ModalAddPatientComponent,\r\n    PatientRecordComponent,\r\n    ModalEditPatientComponent,\r\n    RecordCardComponent,\r\n    FloatButtonComponent,\r\n    SimplifiedPatientFormComponent,\r\n    SimplifiedUnderagePatientFormComponent,\r\n    SimplifiedPetPatientFormComponent,\r\n    ModalSelectPetComponent,\r\n    ModalEditPetComponent,\r\n    ModalSwitchResponsibleComponent\r\n  ],\r\n  exports: [PatientRecordComponent, FloatButtonComponent]\r\n})\r\nexport class PatientsModule {}\r\n","import { BrazilState } from '@app/shared/models';\r\n\r\nexport const BrazilianStates: BrazilState[] = [\r\n  {\r\n    id: '1',\r\n    sigla: 'AC',\r\n    nome: 'Acre'\r\n  },\r\n  {\r\n    id: '2',\r\n    sigla: 'AL',\r\n    nome: 'Alagoas'\r\n  },\r\n  {\r\n    id: '3',\r\n    sigla: 'AM',\r\n    nome: 'Amazonas'\r\n  },\r\n  {\r\n    id: '4',\r\n    sigla: 'AP',\r\n    nome: 'Amapá'\r\n  },\r\n  {\r\n    id: '5',\r\n    sigla: 'BA',\r\n    nome: 'Bahia'\r\n  },\r\n  {\r\n    id: '6',\r\n    sigla: 'CE',\r\n    nome: 'Ceará'\r\n  },\r\n  {\r\n    id: '7',\r\n    sigla: 'DF',\r\n    nome: 'Distrito Federal'\r\n  },\r\n  {\r\n    id: '8',\r\n    sigla: 'ES',\r\n    nome: 'Espírito Santo'\r\n  },\r\n  {\r\n    id: '9',\r\n    sigla: 'GO',\r\n    nome: 'Goiás'\r\n  },\r\n  {\r\n    id: '10',\r\n    sigla: 'MA',\r\n    nome: 'Maranhão'\r\n  },\r\n  {\r\n    id: '11',\r\n    sigla: 'MG',\r\n    nome: 'Minas Gerais'\r\n  },\r\n  {\r\n    id: '12',\r\n    sigla: 'MS',\r\n    nome: 'Mato Grosso do Sul'\r\n  },\r\n  {\r\n    id: '13',\r\n    sigla: 'MT',\r\n    nome: 'Mato Grosso'\r\n  },\r\n  {\r\n    id: '14',\r\n    sigla: 'PA',\r\n    nome: 'Pará'\r\n  },\r\n  {\r\n    id: '15',\r\n    sigla: 'PB',\r\n    nome: 'Paraíba'\r\n  },\r\n  {\r\n    id: '16',\r\n    sigla: 'PE',\r\n    nome: 'Pernambuco'\r\n  },\r\n  {\r\n    id: '17',\r\n    sigla: 'PI',\r\n    nome: 'Piauí'\r\n  },\r\n  {\r\n    id: '18',\r\n    sigla: 'PR',\r\n    nome: 'Paraná'\r\n  },\r\n  {\r\n    id: '19',\r\n    sigla: 'RJ',\r\n    nome: 'Rio de Janeiro'\r\n  },\r\n  {\r\n    id: '20',\r\n    sigla: 'RN',\r\n    nome: 'Rio Grande do Norte'\r\n  },\r\n  {\r\n    id: '21',\r\n    sigla: 'RO',\r\n    nome: 'Rondônia'\r\n  },\r\n  {\r\n    id: '22',\r\n    sigla: 'RR',\r\n    nome: 'Roraima'\r\n  },\r\n  {\r\n    id: '23',\r\n    sigla: 'RS',\r\n    nome: 'Rio Grande do Sul'\r\n  },\r\n  {\r\n    id: '24',\r\n    sigla: 'SC',\r\n    nome: 'Santa Catarina'\r\n  },\r\n  {\r\n    id: '25',\r\n    sigla: 'SE',\r\n    nome: 'Sergipe'\r\n  },\r\n  {\r\n    id: '26',\r\n    sigla: 'SP',\r\n    nome: 'São Paulo'\r\n  },\r\n  {\r\n    id: '27',\r\n    sigla: 'TO',\r\n    nome: 'Tocantins'\r\n  }\r\n];\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { RetentionService } from '@app/modules/document/services/retention.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\n\n@Component({\n  selector: 'app-modal-cancel-retention',\n  templateUrl: './modal-cancel-retention.component.html',\n  styleUrls: ['./modal-cancel-retention.component.scss']\n})\nexport class ModalCancelRetentionComponent implements OnInit {\n  userId: string;\n  retentionId: string;\n  isRetentionsThirdParties = false;\n  loading = false;\n  @Input() isVisible = true;\n  @Output() updateListPrescriptionEvent = new EventEmitter<any>();\n  reason = '';\n\n  constructor(\n    private nzModalRef: NzModalRef,\n    private notification: AppToastService,\n    private retentionService: RetentionService\n  ) {}\n\n  ngOnInit() {}\n  @nativeAsync\n  async handleOk() {\n    if (this.reason === '') {\n      this.notification.notify('warning', 'Aviso', 'O motivo é obrigatório');\n      return;\n    }\n\n    if (this.reason.length < 10) {\n      this.notification.notify('warning', 'Aviso', 'O motivo não pode ter menos que 10 caracteres');\n      return;\n    }\n    const data = { reason: this.reason, userId: this.userId, retentionId: this.retentionId };\n    this.retentionService.cancel(data, this.isRetentionsThirdParties).subscribe(response => {\n      if (!response.erro) {\n        this.notification.notify('success', 'Sucesso', response.message);\n        this.updateListPrescriptionEvent.emit('');\n        this.nzModalRef.destroy();\n      }\n    });\n  }\n\n  handleCancel(): void {\n    this.nzModalRef.destroy();\n  }\n}\n","export default \"<br />\\n<div>\\n  <nz-form-label nzFor=\\\"telephone\\\">Especifique o motivo do cancelamento</nz-form-label>\\n  <textarea\\n    nz-input\\n    [(ngModel)]=\\\"reason\\\"\\n    placeholder=\\\"digite o motivo do cancelamento\\\"\\n    rows=\\\"4\\\"\\n    cols=\\\"50\\\"\\n  ></textarea>\\n</div>\\n<hr />\\n<div class=\\\"row\\\" theme>\\n  <div class=\\\"col-6\\\">\\n    <ng-template #indicatorTemplate><i nz-icon nzType=\\\"loading\\\"></i></ng-template>\\n    <nz-spin *ngIf=\\\"loading\\\" nzSimple [nzIndicator]=\\\"indicatorTemplate\\\"> </nz-spin>\\n  </div>\\n\\n  <div class=\\\"col-3\\\">\\n    <button\\n      type=\\\"button\\\"\\n      class=\\\"btn btn-icon  btn-secondary btn-add text-capitalize\\\"\\n      (click)=\\\"handleCancel()\\\"\\n    >\\n      <span class=\\\"btn-inner--text\\\">Cancelar</span>\\n    </button>\\n  </div>\\n\\n  <div class=\\\"col-3\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-icon btn-success  text-capitalize\\\" (click)=\\\"handleOk()\\\">\\n      <span class=\\\"btn-inner--text\\\">Salvar</span>\\n    </button>\\n  </div>\\n</div>\\n\";","export default \"\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ColorSetting } from '@app/shared/models/color-setting';\nimport { Protocol, ProtocolGroup } from '@app/shared/models/protocol';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'app-modal-list-victa-protocol',\n  templateUrl: './modal-list-victa-protocol.component.html',\n  styleUrls: ['./modal-list-victa-protocol.component.scss']\n})\nexport class ModalListVictaProtocolComponent implements OnInit {\n  @Input() groups: ProtocolGroup[];\n  @Input() colorSetting: ColorSetting;\n  @Output() selectEvent = new EventEmitter<any>();\n\n  constructor(private modalRef: BsModalRef) {}\n\n  ngOnInit() {\n    if (this.groups.length === 1) {\n      this.activeChange(this.groups[0]);\n    }\n  }\n\n  activeChange(item: any) {\n    item.active = !item.active;\n  }\n\n  selectProtocol(protocol: Protocol) {\n    this.selectEvent.emit({\n      name: `${protocol.code} - ${protocol.name}`,\n      code: protocol.code,\n      phases: protocol.phases.map(phase => {\n        const medicaments = phase.elements\n          .map(e => {\n            const medicament = e.presentation || e.name;\n            return medicament.concat(` - ${e.amount} ${e.measurement}`);\n          })\n          .join('\\n');\n\n        const dosage = [\n          phase.dosage ? `Posologia: ${phase.dosage}` : '',\n          phase.application,\n          phase.preparation,\n          phase.note\n        ]\n          .filter(v => v)\n          .join('\\n');\n\n        return {\n          name: phase.name,\n          dosage: `${medicaments}\\n\\n${dosage}`\n        };\n      })\n    });\n\n    this.close();\n  }\n\n  close() {\n    this.modalRef.hide();\n  }\n}\n","export default \"<div class=\\\"protocols-modal\\\" theme>\\n  <div\\n    class=\\\"modal-header\\\"\\n    [ngStyle]=\\\"{\\n      'background-color': colorSetting?.secondary,\\n      'border-color': colorSetting?.secondary\\n    }\\\"\\n  >\\n    <h4 class=\\\"modal-title pull-left text-white\\\">Sugestão de Protocolos</h4>\\n    <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"close()\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button>\\n  </div>\\n  <div class=\\\"protocols\\\">\\n    <nz-list nzBordered=\\\"false\\\">\\n      <nz-list-item *ngFor=\\\"let group of groups\\\" class=\\\"flex-column pl-2 pr-2\\\">\\n        <div\\n          class=\\\"row group align-items-center\\\"\\n          [ngStyle]=\\\"{\\n            'background-color': colorSetting?.primary,\\n            'border-color': colorSetting?.primary\\n          }\\\"\\n        >\\n          <div class=\\\"col-1 pb-1\\\" (click)=\\\"activeChange(group)\\\">\\n            <i nz-icon nzType=\\\"right\\\" *ngIf=\\\"!group.active\\\" nzTheme=\\\"outline\\\"></i>\\n            <i nz-icon nzType=\\\"down\\\" *ngIf=\\\"group.active\\\" nzTheme=\\\"outline\\\"></i>\\n          </div>\\n\\n          <div class=\\\"col-7\\\">\\n            <h6 class=\\\"m-0\\\">{{ group.name }}</h6>\\n          </div>\\n\\n          <div *ngIf=\\\"group.active\\\" class=\\\"col-12 protocols pl-0 pr-0\\\">\\n            <nz-list nzBordered=\\\"false\\\">\\n              <nz-list-item *ngFor=\\\"let protocol of group.protocols\\\" class=\\\"flex-column pl-0 pr-0\\\">\\n                <div class=\\\"row subgroup align-items-center\\\">\\n                  <div class=\\\"col-1 pb-1\\\" (click)=\\\"activeChange(protocol)\\\">\\n                    <i nz-icon nzType=\\\"right\\\" *ngIf=\\\"!protocol.active\\\" nzTheme=\\\"outline\\\"></i>\\n                    <i nz-icon nzType=\\\"down\\\" *ngIf=\\\"protocol.active\\\" nzTheme=\\\"outline\\\"></i>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <h6 class=\\\"m-0\\\">\\n                      <span *ngIf=\\\"protocol.code\\\">{{ protocol.code }} - </span>{{ protocol.name }}\\n                    </h6>\\n                  </div>\\n\\n                  <div class=\\\"col p-2\\\" style=\\\"text-align: end;\\\">\\n                    <button\\n                      class=\\\"ok-btn btn-select\\\"\\n                      nz-button\\n                      (click)=\\\"selectProtocol(protocol)\\\"\\n                      [ngStyle]=\\\"{\\n                        'background-color': colorSetting?.primary,\\n                        'border-color': colorSetting?.primary\\n                      }\\\"\\n                    >\\n                      Adicionar\\n                    </button>\\n                  </div>\\n                </div>\\n\\n                <div class=\\\"row elements\\\" *ngIf=\\\"protocol.active\\\">\\n                  <div *ngFor=\\\"let phase of protocol.phases\\\" class=\\\"col-12 mt-3\\\">\\n                    <p class=\\\"bold\\\">\\n                      <span *ngIf=\\\"phase.name\\\">{{ phase.name }} - </span>{{ phase.category }}\\n                    </p>\\n                    <div *ngFor=\\\"let element of phase.elements\\\" class=\\\"pl-4 mt-2\\\">\\n                      <p><span class=\\\"bold\\\">Composição: </span>{{ element.name }}</p>\\n                      <p><span class=\\\"bold\\\">Quantidade: </span>{{ element.amount }}</p>\\n                      <p><span class=\\\"bold\\\">Medida: </span>{{ element.measurement }}</p>\\n                    </div>\\n                  </div>\\n                </div>\\n              </nz-list-item>\\n            </nz-list>\\n          </div>\\n        </div>\\n      </nz-list-item>\\n    </nz-list>\\n    <br />\\n  </div>\\n</div>\\n\";","export default \".protocols-modal {\\n  position: absolute;\\n  width: 100%;\\n  left: 0;\\n}\\n.protocols-modal .modal-header {\\n  font-family: \\\"probold\\\";\\n}\\n.protocols-modal .protocols {\\n  background-color: white;\\n  border-color: white;\\n  height: 100%;\\n  max-height: 500px;\\n  overflow: auto;\\n}\\n.protocols-modal .group {\\n  border-bottom: 1px solid #dcdcdc;\\n  background-color: var(--bg-color-primary);\\n  width: 100%;\\n  min-height: 40px;\\n  color: white;\\n}\\n.protocols-modal .group h6 {\\n  color: white;\\n}\\n.protocols-modal .subgroup {\\n  border-bottom: 1px solid #dcdcdc;\\n  background-color: #dcdcdc;\\n  width: 100%;\\n  min-height: 40px;\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.protocols-modal .subgroup h6 {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.protocols-modal .elements {\\n  width: 100%;\\n}\\n.protocols-modal i {\\n  cursor: pointer;\\n}\\n.protocols-modal .bold {\\n  font-weight: bold;\\n}\\n.protocols-modal p {\\n  font-size: 14px;\\n  margin: 0;\\n}\\n.protocols-modal .btn-select {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-primary);\\n  border-color: var(--bg-color-primary);\\n  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08);\\n}\\n.protocols-modal .btn-select::-moz-selection {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-secondary);\\n  border-color: var(--bg-color-secondary);\\n}\\n.protocols-modal .btn-select:hover,\\n.protocols-modal .btn-select:active,\\n.protocols-modal .btn-select::selection {\\n  color: var(--color-white);\\n  background-color: var(--bg-color-secondary);\\n  border-color: var(--bg-color-secondary);\\n}\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n  selector: 'app-form-filter',\n  templateUrl: './form-filter.component.html',\n  styleUrls: ['./form-filter.component.scss']\n})\nexport class FormFilterComponent implements OnInit {\n  @Input() userType: string;\n  @Input() tab: string;\n  @Input() dependents = [];\n  @Output() search = new EventEmitter();\n  @Input() isVet = false;\n\n  title: string;\n  loadingFilter: boolean;\n  filters = {\n    patient: { createdAt: '', code: '', healthProfessional: '', archived: false, dependent: null },\n    healthProfessional: { createdAt: '', code: '', patient: '', responsible: '', archived: false },\n    pharmacy: { createdAt: '', dispensationCode: '', cpfBuyer: '', prescriberRegisterNumber: '' }\n  };\n\n  titles: any = {\n    patient: 'Minhas prescrições',\n    healthProfessional: 'Histórico de Documentos',\n    pharmacy: 'Histórico de Retenções'\n  };\n\n  constructor() {}\n\n  ngOnInit() {}\n\n  get filter() {\n    return this.filters[this.userType];\n  }\n\n  submit() {\n    this.search.emit(this.filter);\n  }\n}\n","export default \"<div class=\\\"form-filter\\\" theme>\\n  <h2 class=\\\"title\\\">\\n    {{ titles[userType] }}\\n  </h2>\\n  <br />\\n  <form nz-form>\\n    <div class=\\\"row\\\" *ngIf=\\\"dependents?.length > 0\\\">\\n      <div class=\\\"col-md-3\\\">\\n        <nz-form-item>\\n          <nz-form-label nzFor=\\\"dependent\\\">Dependente</nz-form-label>\\n          <nz-form-control>\\n            <nz-select\\n              id=\\\"dependent\\\"\\n              nzPlaceHolder=\\\"Selecione\\\"\\n              [(ngModel)]=\\\"filter.dependent\\\"\\n              [ngModelOptions]=\\\"{ standalone: true }\\\"\\n              (ngModelChange)=\\\"submit()\\\"\\n              nzAllowClear\\n            >\\n              <nz-option nzLabel=\\\"Selecione\\\" [nzValue]=\\\"null\\\"></nz-option>\\n              <nz-option\\n                *ngFor=\\\"let dependent of dependents\\\"\\n                [nzLabel]=\\\"dependent.name\\\"\\n                [nzValue]=\\\"dependent._id\\\"\\n              ></nz-option>\\n            </nz-select>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n\\n    <div class=\\\"row align-items-center\\\">\\n      <ng-container *ngIf=\\\"userType === 'pharmacy'\\\">\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"createdAt\\\">Data da Dispensação:</nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"date\\\"\\n                placeholder=\\\"Data da Dispensação\\\"\\n                [(ngModel)]=\\\"filter.createdAt\\\"\\n                name=\\\"createdAt\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"nome\\\">CPF Comprador:</nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"text\\\"\\n                placeholder=\\\"ex: 000.000.000-00\\\"\\n                mask=\\\"000.000.000-00\\\"\\n                [(ngModel)]=\\\"filter.cpfBuyer\\\"\\n                name=\\\"cpfBuyer\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-label nzFor=\\\"nome\\\">Cód. Dispensação:</nz-form-label>\\n          <nz-form-item>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"text\\\"\\n                [(ngModel)]=\\\"filter.dispensationCode\\\"\\n                placeholder=\\\"ex: Kk0rbLca\\\"\\n                name=\\\"dispensationCode\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"nome\\\">Registro:</nz-form-label>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"text\\\"\\n                [(ngModel)]=\\\"filter.prescriberRegisterNumber\\\"\\n                name=\\\"prescriberRegisterNumber\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </ng-container>\\n      <ng-container *ngIf=\\\"userType === 'healthProfessional' || userType === 'patient'\\\">\\n        <div [ngClass]=\\\"isVet ? 'col-md-2' : 'col-md-3'\\\">\\n          <nz-form-item>\\n            <nz-form-label *ngIf=\\\"tab === 'prescription'\\\" nzFor=\\\"createdAt\\\"\\n              >Data da Prescrição:</nz-form-label\\n            >\\n            <nz-form-label *ngIf=\\\"tab === 'attestation'\\\" nzFor=\\\"createdAt\\\"\\n              >Data do Atestado:</nz-form-label\\n            >\\n            <nz-form-label *ngIf=\\\"tab === 'exam'\\\" nzFor=\\\"createdAt\\\">Data do Exame:</nz-form-label>\\n            <nz-form-label *ngIf=\\\"tab === 'orientation'\\\" nzFor=\\\"createdAt\\\"\\n              >Data do Documento:</nz-form-label\\n            >\\n            <nz-form-control nzHasFeedback>\\n              <input nz-input type=\\\"date\\\" [(ngModel)]=\\\"filter.createdAt\\\" name=\\\"createdAt\\\" />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-label nzFor=\\\"prescriptionCode\\\" *ngIf=\\\"tab === 'prescription'\\\"\\n            >Cód. Prescrição:</nz-form-label\\n          >\\n          <nz-form-label nzFor=\\\"prescriptionCode\\\" *ngIf=\\\"tab === 'attestation'\\\"\\n            >Cód. Atestado:</nz-form-label\\n          >\\n          <nz-form-label nzFor=\\\"prescriptionCode\\\" *ngIf=\\\"tab === 'exam'\\\">Cód. Exame:</nz-form-label>\\n          <nz-form-label nzFor=\\\"code\\\" *ngIf=\\\"tab === 'orientation'\\\">Cód. Documento:</nz-form-label>\\n\\n          <nz-form-item>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"text\\\"\\n                [(ngModel)]=\\\"filter.code\\\"\\n                [placeholder]=\\\"isVet ? 'ex: VET.P00.000.000.000' : 'ex: P00.000.000.000.000'\\\"\\n                name=\\\"code\\\"\\n                [mask]=\\\"isVet || userType === 'patient' ? 'SAA.A00.000.000.000' : 'S00.000.000.000.000'\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div [ngClass]=\\\"isVet ? 'col-md-2' : 'col-md-3'\\\" *ngIf=\\\"userType === 'healthProfessional'\\\">\\n          <nz-form-label nzFor=\\\"patient\\\">{{ isVet ? 'Pet' : 'Paciente' }}</nz-form-label>\\n          <nz-form-item>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"text\\\"\\n                [(ngModel)]=\\\"filter.patient\\\"\\n                [placeholder]=\\\"isVet ? 'ex: Rex' : 'ex: Luiz carlos'\\\"\\n                name=\\\"patient\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-md-2\\\" *ngIf=\\\"userType === 'healthProfessional' && isVet\\\">\\n          <nz-form-label nzFor=\\\"patient\\\">Responsável:</nz-form-label>\\n          <nz-form-item>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"text\\\"\\n                [(ngModel)]=\\\"filter.responsible\\\"\\n                placeholder=\\\"ex: Luiz carlos\\\"\\n                name=\\\"patient\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n\\n        <div class=\\\"col-md-3\\\" *ngIf=\\\"userType === 'patient'\\\">\\n          <nz-form-label nzFor=\\\"healthProfessional\\\">Prescritor:</nz-form-label>\\n          <nz-form-item>\\n            <nz-form-control nzHasFeedback>\\n              <input\\n                nz-input\\n                type=\\\"text\\\"\\n                [(ngModel)]=\\\"filter.healthProfessional\\\"\\n                placeholder=\\\"ex: Luiz Carlos\\\"\\n                name=\\\"healthProfessional\\\"\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n      </ng-container>\\n\\n      <div class=\\\"col-auto pt-4\\\" *ngIf=\\\"userType && userType !== 'pharmacy'\\\">\\n        <label nz-checkbox name=\\\"archived\\\" [(ngModel)]=\\\"filter.archived\\\" (ngModelChange)=\\\"submit()\\\"\\n          >Arquivados</label\\n        >\\n      </div>\\n\\n      <div class=\\\"col-auto pt-4\\\">\\n        <nz-form-item>\\n          <nz-form-control>\\n            <button nz-button type=\\\"button\\\" class=\\\"btn-buscar-historico\\\" (click)=\\\"submit()\\\">\\n              <i nz-icon nzType=\\\"search\\\"></i>\\n              Buscar\\n            </button>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n  </form>\\n</div>\\n\";","export default \".form-filter .btn-buscar-historico {\\n  background-color: var(--bg-color-primary);\\n  color: var(--color-white);\\n}\\n.form-filter .btn-buscar-historico:hover {\\n  border-color: var(--bg-color-primary);\\n}\";","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forChild(routes)],\r\n  exports: [RouterModule]\r\n})\r\nexport class HistoricRoutingModule {}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DocumentModule } from '@app/modules/document/document.module';\nimport { SharedModule } from '@app/shared';\nimport { NgxLoadingModule } from 'ngx-loading';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { FormFilterComponent } from './form-filter/form-filter.component';\nimport { HistoricRoutingModule } from './historic-routing.module';\nimport { HistoricComponent } from './historic.component';\nimport { ModalCancelRetentionComponent } from './modal-cancel-retention/modal-cancel-retention.component';\n\n@NgModule({\n  declarations: [HistoricComponent, FormFilterComponent, ModalCancelRetentionComponent],\n  exports: [HistoricComponent, ModalCancelRetentionComponent],\n  imports: [\n    CommonModule,\n    HistoricRoutingModule,\n    SharedModule,\n    NgxLoadingModule.forRoot({}),\n    NgxMaskModule.forRoot(),\n    DocumentModule\n  ]\n})\nexport class HistoricModule {}\n","import { Orientation } from './../../../../shared/models/orientation';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { environment } from '@env/environment';\n\nconst ORIENTATION_URL = 'orientation';\nexport const EXAM_PRESCRIBER = `orientation/prescriber`;\nconst EXAM_PATIENT = `orientation/patient`;\n@Injectable({\n  providedIn: 'root'\n})\nexport class OrientationService {\n  constructor(private http: HttpClient) {}\n\n  public save(orientation: Orientation) {\n    if (orientation.code) {\n      return this.http.put(`${environment.apiRoot}${ORIENTATION_URL}/${orientation.code}`, orientation);\n    }\n    return this.http.post(`${environment.apiRoot}${ORIENTATION_URL}`, orientation);\n  }\n\n  public getOrientationsByPrescriberUserId(prescriberId: string, filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${EXAM_PRESCRIBER}/${prescriberId}`, {\n      params: filter\n    });\n  }\n\n  public getAllPatientExams(patientId: string) {\n    return this.http.get<Orientation[]>(`${environment.apiRoot}${ORIENTATION_URL}`, {\n      params: { patientId }\n    });\n  }\n\n  getOrientationsByPatientId(patientId: string, filter: any): Observable<any> {\n    return this.http.get<any>(`${environment.apiRoot}${EXAM_PATIENT}/${patientId}`, { params: filter });\n  }\n\n  getOrientation(code: string) {\n    return this.http.get(`${environment.apiRoot}${ORIENTATION_URL}/${code}`);\n  }\n\n  getByFilter(filter: any): Promise<Orientation[]> {\n    return this.http\n      .get<Orientation[]>(`${environment.apiRoot}${ORIENTATION_URL}/filter`, {\n        params: filter\n      })\n      .toPromise();\n  }\n\n  delete(orientationId: number): Observable<any> {\n    return this.http.delete(`${environment.apiRoot}${ORIENTATION_URL}/${orientationId}`);\n  }\n}\n","import { environment } from '@env/environment';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ClientAppService {\n  private _apiKey: string;\n\n  constructor(private http: HttpClient) {}\n\n  set apiKey(apiKey: string) {\n    this._apiKey = apiKey;\n  }\n\n  get apiKey() {\n    return this._apiKey;\n  }\n\n  validateToken(token: string, payloadChecksum: string) {\n    const headers = new HttpHeaders().set('x-api-key', this._apiKey);\n    return this.http\n      .post<any>(`${environment.apiV1}/validate-payload`, { token, payloadChecksum }, { headers })\n      .toPromise();\n  }\n}\n","import { Injectable } from '@angular/core';\n\ninterface RequestOptions {\n  method: string;\n  url: string;\n  json?: boolean;\n  headers?: Object;\n  body?: any;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class XmlHttpClient {\n  constructor() {}\n\n  makeRequest(opts: RequestOptions): Promise<any> {\n    return new Promise((resolve, reject) => {\n      const xhr = new XMLHttpRequest();\n      xhr.open(opts.method, opts.url);\n      xhr.onload = function() {\n        if (this.status >= 200 && this.status < 300) {\n          const json = opts.json || true;\n          if (json) {\n            resolve(JSON.parse(xhr.response));\n          } else {\n            resolve(xhr.response);\n          }\n        } else {\n          reject({\n            status: this.status,\n            statusText: xhr.statusText\n          });\n        }\n      };\n      xhr.onerror = function() {\n        reject({\n          status: this.status,\n          statusText: xhr.statusText\n        });\n      };\n      if (opts.headers) {\n        Object.keys(opts.headers).forEach(function(key) {\n          xhr.setRequestHeader(key, opts.headers[key]);\n        });\n      }\n      let body = opts.body;\n      // We'll need to stringify if we've been given an object\n      // If we have a string, this is skipped.\n      if (body && typeof body === 'object') {\n        body = Object.keys(body)\n          .map(key => encodeURIComponent(key) + '=' + encodeURIComponent(body[key]))\n          .join('&');\n      }\n      xhr.send(body);\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { XmlHttpClient } from '@app/core/services/xml-http-client.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CepService {\n  constructor(private request: XmlHttpClient) {}\n\n  consult(cep: string): Promise<any> {\n    return this.request\n      .makeRequest({ method: 'GET', url: `https://viacep.com.br/ws/${cep}/json` })\n      .then();\n  }\n}\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ValidationService } from '@app/core/services/validation.service';\r\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\r\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\r\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\r\nimport { BrazilState } from '@app/shared/models';\r\nimport { User } from '@app/shared/models/decodedLoginToken';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\nimport { BigboostService } from '@app/shared/services/bigboost.service';\r\nimport { markFormGroup } from '@app/utils/markFormGroup';\r\nimport * as moment from 'moment';\r\nimport { NzModalRef } from 'ng-zorro-antd/modal';\r\n\r\n@Component({\r\n  selector: 'app-modal-edit-pharmacy-technician',\r\n  templateUrl: './modal-edit-pharmacy-technician.component.html',\r\n  styleUrls: ['./modal-edit-pharmacy-technician.component.scss']\r\n})\r\nexport class ModalEditPharmacyTechnicianComponent implements OnInit {\r\n  user: User;\r\n  completeUser: any;\r\n  userType: string;\r\n  technicalResponsible: any;\r\n  loading = false;\r\n\r\n  form: FormGroup;\r\n  states: BrazilState[] = BrazilianStates;\r\n  @Output() updateUserEvent = new EventEmitter<User>();\r\n  sexos = [\r\n    { label: 'Masculino', value: 'M' },\r\n    { label: 'Feminino', value: 'F' }\r\n  ];\r\n\r\n  constructor(\r\n    private formp: FormBuilder,\r\n    private pharmacyService: PharmacyService,\r\n    private nzModalRef: NzModalRef,\r\n    private bigboostService: BigboostService,\r\n    private notification: AppToastService\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.buildPharmacyForm();\r\n  }\r\n\r\n  private buildPharmacyForm() {\r\n    this.form = this.formp.group({\r\n      name: this.formp.control(\r\n        this.isEditing ? this.completeUser.technicalResponsible.name : '',\r\n        Validators.required\r\n      ),\r\n      socialName: [this.isEditing ? this.completeUser.technicalResponsible.socialName : ''],\r\n      sex: [this.isEditing ? this.completeUser.technicalResponsible.sex : ''],\r\n      birthDate: [this.isEditing ? this.formatBirthDate : null, Validators.required],\r\n      cpf: this.formp.control(this.isEditing ? this.completeUser.technicalResponsible.cpf : '', [\r\n        Validators.required,\r\n        ValidationService.cpfValidator\r\n      ]),\r\n      crf: this.formp.group({\r\n        number: this.formp.control(\r\n          this.isEditing ? this.completeUser.technicalResponsible.crf.number : '',\r\n          Validators.required\r\n        ),\r\n        uf: this.formp.control(\r\n          this.isEditing ? this.completeUser.technicalResponsible.crf.uf : '',\r\n          Validators.required\r\n        )\r\n      })\r\n    });\r\n    console.log(this.completeUser);\r\n  }\r\n\r\n  get isEditing() {\r\n    return Boolean(this.completeUser && this.completeUser.technicalResponsible);\r\n  }\r\n\r\n  get formatBirthDate() {\r\n    if (this.completeUser.technicalResponsible && this.completeUser.technicalResponsible.birthDate) {\r\n      return moment(this.completeUser.technicalResponsible.birthDate).format('YYYY-MM-DD');\r\n    }\r\n    return null;\r\n  }\r\n\r\n  @nativeAsync\r\n  async consultCpf() {\r\n    this.loading = true;\r\n    try {\r\n      const { cpf, birthdate: date } = this.form.value;\r\n      const dateOfBirth = moment(date, 'DDMMYYYY').format('YYYY-MM-DD');\r\n      const consult = await this.bigboostService.consultCpf(cpf, dateOfBirth).toPromise();\r\n      if (consult.erroCodigo === 102) {\r\n        this.handleErrorMessageStatusCode102();\r\n      } else {\r\n        const { nome: name, genero: sex } = consult;\r\n        this.form.patchValue({\r\n          ...this.form.value,\r\n          name,\r\n          sex\r\n        });\r\n      }\r\n    } catch (error) {\r\n      if (error.status === 401) {\r\n        this.notification.notify(\r\n          'warning',\r\n          'Aviso',\r\n          'Data de nascimento não corresponde ao CPF informado'\r\n        );\r\n      } else {\r\n        this.notification.notify(\r\n          'warning',\r\n          'Aviso',\r\n          'A importação de dados do cpf está com instabilidade'\r\n        );\r\n      }\r\n    } finally {\r\n      this.loading = false;\r\n    }\r\n  }\r\n\r\n  private handleErrorMessageStatusCode102(): void {\r\n    this.notification.notify(\r\n      'warning',\r\n      'Aviso',\r\n      'O CNPJ informado não existe em nossos fornecedores. Por favor, confira o número do CNPJ e tente novamente. Em caso de dúvidas, entre em contato com o nosso suporte'\r\n    );\r\n  }\r\n\r\n  @nativeAsync\r\n  async submitForm() {\r\n    markFormGroup(this.form);\r\n    try {\r\n      if (this.form.valid) {\r\n        this.form.disable();\r\n        this.loading = true;\r\n\r\n        if (this.userType == 'pharmacy') {\r\n          this.completeUser.technicalResponsible = this.form.value;\r\n          this.completeUser = await this.pharmacyService\r\n            .update(this.completeUser._id, this.completeUser)\r\n            .toPromise();\r\n        } else {\r\n          this.completeUser.technicalResponsible = this.form.value.technicalResponsible;\r\n          this.completeUser = await this.pharmacyService\r\n            .update(this.completeUser._id, this.completeUser)\r\n            .toPromise();\r\n        }\r\n        this.form.enable();\r\n        this.updateUserEvent.emit(this.completeUser);\r\n        this.loading = false;\r\n        this.onDestroyModal();\r\n      }\r\n    } catch (error) {\r\n      this.loading = false;\r\n    }\r\n  }\r\n\r\n  onDestroyModal() {\r\n    this.nzModalRef.destroy();\r\n  }\r\n}\r\n","export default \"<header theme>\\r\\n  <span class=\\\"title\\\">\\r\\n    DADOS DO RESPONSÁVEL TÉCNICO\\r\\n  </span>\\r\\n</header>\\r\\n\\r\\n<div class=\\\"container-modal-body\\\">\\r\\n  <form nz-form [formGroup]=\\\"form\\\" (ngSubmit)=\\\"submitForm()\\\">\\r\\n    <div class=\\\"row\\\">\\r\\n      <div [ngClass]=\\\"isEditing ? 'col-md-6' : 'col-md-5'\\\">\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"cpf\\\" theme>CPF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <input\\r\\n              nz-input\\r\\n              id=\\\"cpf\\\"\\r\\n              formControlName=\\\"cpf\\\"\\r\\n              placeholder=\\\"000.000.000-00\\\"\\r\\n              mask=\\\"000.000.000-00\\\"\\r\\n              theme\\r\\n            />\\r\\n            <nz-form-explain *ngIf=\\\"form.get('cpf').dirty && form.get('cpf').errors\\\">\\r\\n              <ng-container *ngIf=\\\"form.get('cpf').hasError('required')\\\">\\r\\n                Campo obrigatório.\\r\\n              </ng-container>\\r\\n              <ng-container\\r\\n                *ngIf=\\\"!form.get('cpf').hasError('required') && form.get('cpf').hasError('cpf')\\\"\\r\\n              >\\r\\n                CPF inválido.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n      <div [ngClass]=\\\"isEditing ? 'col-md-6' : 'col-md-5'\\\">\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"birthDate\\\"\\r\\n            >Data Nascimento <span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n          >\\r\\n          <nz-form-control nzHasFeedback>\\r\\n            <input nz-input type=\\\"date\\\" placeholder=\\\"00/00/0000\\\" formControlName=\\\"birthDate\\\" theme />\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n      <div class=\\\"col-md-2 btn-ok-consult-cpf\\\" *ngIf=\\\"!isEditing\\\">\\r\\n        <button\\r\\n          nz-button\\r\\n          class=\\\"btn-primary\\\"\\r\\n          type=\\\"button\\\"\\r\\n          (click)=\\\"consultCpf(form.get('cpf').value)\\\"\\r\\n          [disabled]=\\\"form.get('cpf').invalid || form.get('birthDate').invalid || loading\\\"\\r\\n        >\\r\\n          <span *ngIf=\\\"!loading\\\">Buscar</span>\\r\\n          <span\\r\\n            class=\\\"spinner-border spinner-border-sm\\\"\\r\\n            role=\\\"status\\\"\\r\\n            aria-hidden=\\\"true\\\"\\r\\n            *ngIf=\\\"loading\\\"\\r\\n          ></span>\\r\\n        </button>\\r\\n      </div>\\r\\n    </div>\\r\\n    <div class=\\\"row\\\">\\r\\n      <div class=\\\"col-md-12\\\">\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"name\\\" theme>Nome<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n          <nz-form-control nzErrorTip=\\\"Campo obrigatório, por favor digite o seu nome.\\\" theme>\\r\\n            <input type=\\\"text\\\" nz-input formControlName=\\\"name\\\" placeholder=\\\"Nome\\\" maxlength=\\\"128\\\" />\\r\\n            <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\r\\n              <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\r\\n                Por favor digite o nome.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n    </div>\\r\\n    <div class=\\\"row\\\">\\r\\n      <div class=\\\"col-md-8\\\">\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"socialName\\\" theme\\r\\n            >Nome para exibição/social<span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n          >\\r\\n          <nz-form-control\\r\\n            nzErrorTip=\\\"Campo obrigatório, por favor digite o seu nome para exibição.\\\"\\r\\n            theme\\r\\n          >\\r\\n            <input\\r\\n              type=\\\"text\\\"\\r\\n              nz-input\\r\\n              formControlName=\\\"socialName\\\"\\r\\n              placeholder=\\\"Nome social\\\"\\r\\n              maxlength=\\\"128\\\"\\r\\n            />\\r\\n            <nz-form-explain *ngIf=\\\"form.get('socialName').dirty && form.get('socialName').errors\\\">\\r\\n              <ng-container *ngIf=\\\"form.get('socialName').hasError('required')\\\">\\r\\n                Por favor digite o nome para exibição.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n      <div class=\\\"col-md-4\\\">\\r\\n        <nz-form-label nzFor=\\\"sexo\\\" theme>Sexo</nz-form-label>\\r\\n        <nz-select\\r\\n          id=\\\"sexo\\\"\\r\\n          formControlName=\\\"sex\\\"\\r\\n          nzPlaceHolder=\\\"Selecione\\\"\\r\\n          nzDropdownClassName=\\\"sexo-select\\\"\\r\\n          theme\\r\\n        >\\r\\n          <nz-option *ngFor=\\\"let sexo of sexos\\\" [nzLabel]=\\\"sexo?.label\\\" [nzValue]=\\\"sexo?.value\\\">\\r\\n          </nz-option>\\r\\n        </nz-select>\\r\\n      </div>\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"row\\\">\\r\\n      <div class=\\\"col-md-6\\\" [formGroup]=\\\"form.get('crf')\\\">\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzHasFeedback nzFor=\\\"crf\\\" theme\\r\\n            >CRF<span class=\\\"mandatory\\\"> *</span></nz-form-label\\r\\n          >\\r\\n          <nz-form-control nzErrorTip=\\\"Campo obrigatório, por favor digite o seu CRF.\\\">\\r\\n            <input type=\\\"text\\\" nz-input formControlName=\\\"number\\\" placeholder=\\\"123456\\\" theme />\\r\\n            <nz-form-explain *ngIf=\\\"form.get('crf.number').dirty && form.get('crf.number').errors\\\">\\r\\n              <ng-container *ngIf=\\\"form.get('crf.number').hasError('required')\\\">\\r\\n                Por favor digite o número do CFR.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n\\r\\n      <div class=\\\"col-md-6\\\" [formGroup]=\\\"form.get('crf')\\\">\\r\\n        <nz-form-item>\\r\\n          <nz-form-label nzFor=\\\"uf\\\" theme>UF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\r\\n          <nz-form-control nzHasFeedback nzErrorTip=\\\"Campo obrigatório, por favor selecione o UF do CRM\\\">\\r\\n            <nz-select\\r\\n              formControlName=\\\"uf\\\"\\r\\n              nzShowSearch\\r\\n              nzAllowClear\\r\\n              nzDropdownClassName=\\\"uf-select\\\"\\r\\n              nzPlaceHolder=\\\"Selecione\\\"\\r\\n              theme\\r\\n            >\\r\\n              <nz-option *ngFor=\\\"let state of states\\\" [nzLabel]=\\\"state?.sigla\\\" [nzValue]=\\\"state?.sigla\\\">\\r\\n              </nz-option>\\r\\n            </nz-select>\\r\\n            <nz-form-explain *ngIf=\\\"form.get('crf.uf').dirty && form.get('crf.uf').errors\\\">\\r\\n              <ng-container *ngIf=\\\"form.get('crf.uf').hasError('required')\\\">\\r\\n                Campo obrigatório, por favor selecione o UF.\\r\\n              </ng-container>\\r\\n            </nz-form-explain>\\r\\n          </nz-form-control>\\r\\n        </nz-form-item>\\r\\n      </div>\\r\\n    </div>\\r\\n  </form>\\r\\n  <div class=\\\"d-flex align-items-center justify-content-end mt-3\\\">\\r\\n    <button\\r\\n      class=\\\"btn btn-icon btn-ok text-capitalize btn-save\\\"\\r\\n      type=\\\"button\\\"\\r\\n      (click)=\\\"submitForm()\\\"\\r\\n      theme\\r\\n      [disabled]=\\\"form.invalid && !loading\\\"\\r\\n    >\\r\\n      <span class=\\\"btn-inner--text\\\">Salvar</span>\\r\\n    </button>\\r\\n  </div>\\r\\n</div>\\r\\n\";","export default \"header {\\n  width: 100%;\\n  padding: 16px 24px;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 4px 4px 0 0;\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  background-color: var(--bg-modal-header);\\n  color: var(--color-white);\\n}\\nheader .title {\\n  margin: 0;\\n  font-weight: 500;\\n  color: var(--color-white);\\n  font-size: 16px;\\n  line-height: 22px;\\n  word-wrap: break-word;\\n}\\n.container-modal-body {\\n  margin-top: 37px;\\n  height: 55vh;\\n  overflow-x: hidden;\\n  overflow-y: auto;\\n}\\n.container-modal-body input {\\n  border-radius: 10px;\\n}\\ni {\\n  font-size: 24px;\\n}\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n.mandatory {\\n  color: red;\\n}\\n.btn {\\n  font-size: 12px;\\n}\\n.btn-ok-consult-cpf {\\n  display: flex;\\n  justify-content: flex-end;\\n  align-items: center;\\n  margin-top: 15px;\\n}\";","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { AuthService } from '@app/core/services/auth.service';\r\nimport { environment } from '@env/environment';\r\nimport { of } from 'rxjs';\r\nimport { AppToastService } from '../services/app-toast.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n  constructor(\r\n    private router: Router,\r\n    private authService: AuthService,\r\n    private notification: AppToastService\r\n  ) {}\r\n\r\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    if (environment.maintenance) {\r\n      this.router.navigate(['/maintenance']);\r\n      return of(false);\r\n    }\r\n    return this.checkLogin(route);\r\n  }\r\n\r\n  checkLogin(route: ActivatedRouteSnapshot): boolean {\r\n    const isExpired = this.authService.isLoggedOut;\r\n    if (isExpired) {\r\n      const token = this.authService.token;\r\n      if (token) {\r\n        this.notification.notify('warning', 'Aviso', 'Acesso expirado. Realize o login novamente');\r\n      }\r\n      this.logout();\r\n    } else {\r\n      const user = this.authService.user();\r\n      if (!user.features) {\r\n        this.authService.refreshToken().subscribe();\r\n      }\r\n    }\r\n    return !isExpired;\r\n  }\r\n\r\n  logout() {\r\n    this.authService.logout();\r\n    this.router.navigate(['entry/login']);\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { Observable, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { ProfessionalType } from '../models/professional-type.enum';\nimport { UserType } from '../models/user-type.enum';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class IsVeterinarianResolver implements Resolve<boolean> {\n  constructor(\n    private authService: AuthService,\n    private healthProfessionalService: HealthProfessionalService\n  ) {}\n\n  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n    if (this.user.userType === UserType.HEALTH_PROFESSIONAL) {\n      return this.healthProfessionalService\n        .getHealthProfessional(this.user._id)\n        .pipe(\n          switchMap(prescriber =>\n            of(prescriber && prescriber.professionalType === ProfessionalType.VETERINARIAN)\n          )\n        );\n    }\n    return of(false);\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n}\n","export default \"<app-alternative-navbar title=\\\"Meus dados\\\" titleIcon=\\\"fa fa-account-box\\\"></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n<ng-container [ngSwitch]=\\\"user?.userType\\\">\\n  <section\\n    class=\\\"section profile section-shaped bg-white page-header\\\"\\n    *ngIf=\\\"user?.userType !== 'pharmacy'\\\"\\n  >\\n    <div class=\\\"container\\\">\\n      <div class=\\\"row d-flex flex-column\\\">\\n        <div class=\\\"col-md-12\\\">\\n          <div class=\\\"media _mb-10\\\" *ngIf=\\\"completeUser\\\">\\n            <ngx-photo-editor\\n              [imageChanedEvent]=\\\"imageChangedEvent\\\"\\n              (imageCropped)=\\\"imageCropped($event)\\\"\\n              [darkTheme]=\\\"false\\\"\\n              [autoCrop]=\\\"true\\\"\\n              [modalCentered]=\\\"true\\\"\\n              [roundCropper]=\\\"true\\\"\\n              [aspectRatio]=\\\"1\\\"\\n              [viewMode]=\\\"2\\\"\\n              [resizeToWidth]=\\\"1000\\\"\\n            ></ngx-photo-editor>\\n\\n            <div>\\n              <label for=\\\"avatar-input\\\" class=\\\"input-label\\\">\\n                <ngx-avatar\\n                  *ngIf=\\\"avatarB64\\\"\\n                  class=\\\"mr-3 avatar\\\"\\n                  [src]=\\\"avatarB64\\\"\\n                  [name]=\\\"completeUser.name\\\"\\n                  size=\\\"100\\\"\\n                  [style.width]=\\\"'100px'\\\"\\n                  [style.height]=\\\"'100px'\\\"\\n                ></ngx-avatar>\\n                <div class=\\\"icon-edit-profile\\\">\\n                  <img src=\\\"assets/icons/pen-solid.svg\\\" class=\\\"svg\\\" />\\n                </div>\\n                <img\\n                  class=\\\"mr-3 avatar\\\"\\n                  src=\\\"assets/img/default-avatar.png\\\"\\n                  alt=\\\"Generic placeholder image\\\"\\n                  *ngIf=\\\"!avatarB64 && completeUser.sex !== 'F'\\\"\\n                />\\n\\n                <img\\n                  class=\\\"mr-3 avatar\\\"\\n                  src=\\\"assets/img/default-avatar.F.png\\\"\\n                  alt=\\\"Generic placeholder image\\\"\\n                  *ngIf=\\\"!avatarB64 && completeUser.sex === 'F'\\\"\\n                />\\n              </label>\\n              <input\\n                type=\\\"file\\\"\\n                id=\\\"avatar-input\\\"\\n                (change)=\\\"fileChangeEvent($event)\\\"\\n                accept=\\\".jpg,.jpeg,.png\\\"\\n              />\\n            </div>\\n\\n            <div class=\\\"media-body pl-2\\\" *ngIf=\\\"completeUser\\\">\\n              <h5 style=\\\"font-size: 32px;\\\" class=\\\"mt-0\\\" *ngSwitchCase=\\\"'healthProfessional'\\\">\\n                Olá, {{ doctorName }}\\n              </h5>\\n              <h5 style=\\\"font-size: 32px;\\\" class=\\\"mt-0\\\" *ngSwitchCase=\\\"'patient'\\\">\\n                Olá, {{ completeUser.name }}\\n              </h5>\\n              <h5 style=\\\"font-size: 32px;\\\" class=\\\"mt-0\\\" *ngSwitchCase=\\\"'pharmacist'\\\">\\n                Olá, {{ completeUser.name }}\\n              </h5>\\n              <h5 style=\\\"font-size: 32px;\\\" class=\\\"mt-0\\\" *ngSwitchCase=\\\"'pharmacy'\\\">\\n                Olá, {{ completeUser.fantasyName }}\\n              </h5>\\n              <p class=\\\"date\\\">{{ today | date: 'fullDate' }} | {{ today | date: 'HH:mm' }}</p>\\n              <p class=\\\"crm\\\" *ngSwitchCase=\\\"'healthProfessional'\\\">\\n                {{ completeUser.regionalCouncilNumber.label }}:\\n                {{ completeUser.regionalCouncilNumber.number }}/{{\\n                  completeUser.regionalCouncilNumber.uf\\n                }}\\n              </p>\\n              <p class=\\\"crm\\\" *ngSwitchCase=\\\"'pharmacist'\\\">\\n                CRF:\\n                {{ completeUser.crf.number }}/{{ completeUser.crf.uf }}\\n              </p>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </section>\\n\\n  <section class=\\\"my-data profile\\\">\\n    <div class=\\\"container data\\\" *ngIf=\\\"completeUser && user\\\">\\n      <div class=\\\"content\\\">\\n        <div class=\\\"title-area\\\">\\n          <p class=\\\"title\\\">DADOS PESSOAIS</p>\\n          <button\\n            *ngIf=\\\"user.userType !== 'pharmacy'\\\"\\n            class=\\\"edit-button\\\"\\n            (click)=\\\"showModalPersonalData()\\\"\\n          >\\n            <img src=\\\"assets/icons/pen-solid.svg\\\" class=\\\"svg\\\" />\\n          </button>\\n          <button\\n            *ngIf=\\\"user.userType === 'pharmacy'\\\"\\n            class=\\\"edit-button\\\"\\n            (click)=\\\"showModalPersonalData()\\\"\\n          >\\n            <img src=\\\"assets/icons/pen-solid.svg\\\" class=\\\"svg\\\" />\\n          </button>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-md\\\">\\n            <span class=\\\"info-area\\\" *ngIf=\\\"completeUser.cellphone\\\">\\n              <img\\n                [src]=\\\"\\n                  completeUser.cellphone.length > 10\\n                    ? 'assets/icons/cellphone-alt-solid.svg'\\n                    : 'assets/icons/phone-alt-solid.svg'\\n                \\\"\\n                class=\\\"svg\\\"\\n              />\\n              <h5>{{ completeUser.cellphone | formattedTel }}</h5>\\n            </span>\\n\\n            <span class=\\\"info-area\\\" *ngIf=\\\"completeUser.telephone\\\">\\n              <img\\n                [src]=\\\"\\n                  completeUser.telephone.length > 10\\n                    ? 'assets/icons/cellphone-alt-solid.svg'\\n                    : 'assets/icons/phone-alt-solid.svg'\\n                \\\"\\n                class=\\\"svg\\\"\\n              />\\n              <h5>{{ completeUser.telephone | formattedCel }}</h5>\\n            </span>\\n\\n            <span class=\\\"info-area\\\">\\n              <img src=\\\"assets/icons/user-alt-solid.svg\\\" class=\\\"svg\\\" title=\\\"E-mail de login\\\" />\\n              <h5>{{ completeUser.user?.email }}</h5>\\n            </span>\\n\\n            <span\\n              class=\\\"info-area\\\"\\n              *ngIf=\\\"\\n                completeUser.user?.emailContact &&\\n                completeUser.user?.emailContact !== completeUser.user?.email\\n              \\\"\\n            >\\n              <img src=\\\"assets/icons/envelope-solid.svg\\\" class=\\\"svg\\\" title=\\\"E-mail de contato\\\" />\\n              <h5>{{ completeUser.user?.emailContact }}</h5>\\n            </span>\\n\\n            <span *ngIf=\\\"user.userType === 'healthProfessional'\\\" class=\\\"info-area\\\">\\n              <img src=\\\"assets/icons/user-md-solid.svg\\\" class=\\\"svg\\\" />\\n              <h5>{{ specialties }}</h5>\\n            </span>\\n          </div>\\n\\n          <div class=\\\"col-md\\\">\\n            <span class=\\\"info-area\\\" *ngIf=\\\"completeUser.dateOfBirth\\\">\\n              <i class=\\\"fa fa-birthday-cake-solid\\\"></i>\\n              <h5>{{ completeUser.dateOfBirth | date: 'dd/MM/yyyy':'GMT' }}</h5>\\n            </span>\\n\\n            <span class=\\\"info-area\\\">\\n              <img src=\\\"assets/icons/id-card-alt-solid.svg\\\" class=\\\"svg\\\" />\\n              <h5 *ngSwitchCase=\\\"'healthProfessional'\\\">\\n                {{ completeUser.regionalCouncilNumber.label }}:\\n                {{ completeUser.regionalCouncilNumber.number }}\\n              </h5>\\n              <h5 *ngSwitchCase=\\\"'patient'\\\">Identidade: {{ completeUser.identity }}</h5>\\n              <h5 *ngSwitchCase=\\\"'pharmacist'\\\">Identidade: {{ completeUser.identity }}</h5>\\n              <h5 *ngSwitchCase=\\\"'pharmacy'\\\">\\n                CNPJ: {{ completeUser.cnpj || completeUser.cnpj_entity | formattedCnpj }}\\n              </h5>\\n            </span>\\n\\n            <span *ngIf=\\\"user.userType === 'patient' && completeUser.sex\\\" class=\\\"info-area\\\">\\n              <i *ngIf=\\\"completeUser.sex === 'F'\\\" class=\\\"fa fa-venus\\\"></i>\\n              <i *ngIf=\\\"completeUser.sex === 'M'\\\" class=\\\"fa fa-mars\\\"></i>\\n              <h5>{{ completeUser.sex === 'F' ? 'Feminino' : 'Masculino' }}</h5>\\n            </span>\\n\\n            <span *ngIf=\\\"completeUser.professionalType === 'veterinarian'\\\" class=\\\"info-area\\\">\\n              <img src=\\\"assets/icons/id-card-alt-solid.svg\\\" class=\\\"svg\\\" />\\n\\n              <h5 *ngIf=\\\"user.userType != 'pharmacy'\\\">\\n                MAPA Sipeagro:\\n                {{\\n                  completeUser.mapaSipeagro\\n                    ? (completeUser.mapaSipeagro | formattedMapaSipeagro)\\n                    : 'Não informado'\\n                }}\\n              </h5>\\n            </span>\\n\\n            <span class=\\\"cpf info-area\\\">\\n              <img src=\\\"assets/icons/address-card-solid.svg\\\" class=\\\"svg\\\" />\\n              <h5 *ngSwitchCase=\\\"'pharmacy'\\\">\\n                CPF (responsável legal): {{ completeUser.cpfResponsible | formattedCpf }}\\n              </h5>\\n              <h5 *ngIf=\\\"user.userType != 'pharmacy'\\\">CPF: {{ completeUser.cpf | formattedCpf }}</h5>\\n            </span>\\n          </div>\\n        </div>\\n        <span class=\\\"info-area\\\">\\n          <label class=\\\"terms-disclaimer\\\">\\n            Acesse aqui os\\n            <a class=\\\"terms\\\" [href]=\\\"redirectUrl()\\\" target=\\\"_blank\\\" theme>\\n              Termos de Uso\\n            </a>\\n            e\\n            <a class=\\\"terms\\\" [href]=\\\"redirectUrl(true)\\\" target=\\\"_blank\\\" theme>\\n              Política de Privacidade\\n            </a>\\n          </label>\\n        </span>\\n      </div>\\n\\n      <div class=\\\"content\\\" *ngIf=\\\"user.userType === 'healthProfessional'\\\">\\n        <hr />\\n        <div class=\\\"title-area\\\">\\n          <p class=\\\"title\\\">DADOS EMPRESARIAIS</p>\\n        </div>\\n        <table>\\n          <ngx-photo-editor\\n            [imageChanedEvent]=\\\"logoChangedEvent\\\"\\n            (imageCropped)=\\\"logoCropped($event)\\\"\\n            [imageUrl]=\\\"imageURL\\\"\\n            [darkTheme]=\\\"false\\\"\\n            [autoCrop]=\\\"false\\\"\\n            [modalCentered]=\\\"false\\\"\\n            [roundCropper]=\\\"false\\\"\\n            [aspectRatio]=\\\"0\\\"\\n            [viewMode]=\\\"1\\\"\\n            [resizeToWidth]=\\\"300\\\"\\n          ></ngx-photo-editor>\\n          <ng-container *ngFor=\\\"let data of completeUser.commercialData; index as i\\\">\\n            <tr>\\n              <th>\\n                <img src=\\\"assets/icons/briefcase-solid.svg\\\" />\\n              </th>\\n              <th>\\n                <h5 class=\\\"m-3\\\">{{ data.name }}</h5>\\n              </th>\\n              <th>\\n                <a *ngIf=\\\"data.logo\\\" (click)=\\\"showLogo(data.logo, data._id)\\\" title=\\\"Visualizar Logo\\\">\\n                  <img src=\\\"assets/icons/image-solid.svg\\\" class=\\\"svg\\\" />\\n                </a>\\n                <button id=\\\"button-edit-business\\\" (click)=\\\"showModalBusinessData(false, data, i)\\\">\\n                  <img src=\\\"assets/icons/pen-solid.svg\\\" class=\\\"svg\\\" />\\n                </button>\\n                <button\\n                  id=\\\"button-remove-business\\\"\\n                  class=\\\"pt-1\\\"\\n                  (click)=\\\"showModalRemoveBusinessData(i)\\\"\\n                  *ngIf=\\\"completeUser.commercialData.length > 1\\\"\\n                >\\n                  <i class=\\\"fa fa-trash-solid\\\"></i>\\n                </button>\\n              </th>\\n            </tr>\\n            <tr>\\n              <th colspan=\\\"4\\\" class=\\\"pb-3\\\">\\n                <label *ngIf=\\\"!data.logo\\\" [for]=\\\"'logo' + i\\\" class=\\\"input-label\\\">Adicionar Logo</label>\\n                <label *ngIf=\\\"data.logo\\\" [for]=\\\"'logo' + i\\\" class=\\\"input-label\\\">Atualizar Logo</label>\\n                <label *ngIf=\\\"data.logo\\\" class=\\\"input-label\\\" (click)=\\\"removeLogo(data._id)\\\"\\n                  >&nbsp;| Excluir Logo</label\\n                >\\n                <app-popover-button\\n                  content=\\\"A imagem do logotipo deve ser um arquivo JPEG de tamanho máximo de 1MB. Dimensão sugerida 300x120 pixels.\\\"\\n                ></app-popover-button>\\n                <input\\n                  [id]=\\\"'logo' + i\\\"\\n                  class=\\\"logo-img\\\"\\n                  type=\\\"file\\\"\\n                  (click)=\\\"$event.target.value = ''\\\"\\n                  (change)=\\\"addLogo($event, data._id)\\\"\\n                  accept=\\\".jpg,.jpeg,.png\\\"\\n                />\\n              </th>\\n            </tr>\\n          </ng-container>\\n        </table>\\n\\n        <div class=\\\"add-data\\\">\\n          <span (click)=\\\"showModalBusinessData(true)\\\">\\n            Adicionar dados empresariais\\n          </span>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"content\\\" *ngIf=\\\"user.userType !== 'healthProfessional'\\\">\\n        <hr />\\n        <div *ngIf=\\\"!completeUser.address\\\" class=\\\"add-data\\\">\\n          <span class=\\\"add-data\\\" (click)=\\\"showModalAddressData()\\\">\\n            Adicionar Endereço\\n          </span>\\n        </div>\\n        <div class=\\\"title-area\\\" *ngIf=\\\"completeUser.address\\\">\\n          <div class=\\\"title-address\\\">\\n            <img src=\\\"assets/icons/house-user-solid.svg\\\" class=\\\"svg\\\" />\\n            <p class=\\\"title\\\">ENDEREÇO</p>\\n          </div>\\n          <button class=\\\"edit-button\\\" (click)=\\\"showModalAddressData()\\\">\\n            <img src=\\\"assets/icons/pen-solid.svg\\\" class=\\\"svg\\\" />\\n          </button>\\n        </div>\\n\\n        <div class=\\\"row address\\\" *ngIf=\\\"completeUser.address\\\">\\n          <div class=\\\"col-md\\\">\\n            <div class=\\\"address-info-area\\\">\\n              <span class=\\\"address-title\\\">CEP: &nbsp;</span>\\n              <h5>{{ completeUser.address.cep | mask: '00.000-000' }}</h5>\\n            </div>\\n\\n            <div class=\\\"address-info-area\\\">\\n              <span class=\\\"address-title\\\">Logradouro: &nbsp;</span>\\n              <h5 class=\\\"info\\\">\\n                {{ completeUser.address.street }}\\n              </h5>\\n            </div>\\n\\n            <div class=\\\"address-info-area\\\">\\n              <span class=\\\"address-title\\\">Número: &nbsp;</span>\\n              <h5 class=\\\"info\\\">\\n                {{ completeUser.address.number }}\\n              </h5>\\n            </div>\\n\\n            <div class=\\\"address-info-area\\\">\\n              <span class=\\\"address-title\\\">Complemento: &nbsp;</span>\\n              <h5 *ngIf=\\\"completeUser.address.complement\\\" class=\\\"info\\\">\\n                {{ completeUser.address.complement }}\\n              </h5>\\n              <h5 *ngIf=\\\"!completeUser.address.complement\\\">-</h5>\\n            </div>\\n          </div>\\n          <div class=\\\"col-md\\\">\\n            <div class=\\\"address-info-area\\\">\\n              <span class=\\\"address-title\\\">Bairro: &nbsp;</span>\\n              <h5 class=\\\"info\\\">\\n                {{ completeUser.address.neighborhood }}\\n              </h5>\\n            </div>\\n\\n            <div class=\\\"address-info-area\\\">\\n              <span class=\\\"address-title\\\">Cidade: &nbsp;</span>\\n              <h5 class=\\\"info\\\">\\n                {{ completeUser.address.city }}\\n              </h5>\\n            </div>\\n\\n            <div class=\\\"address-info-area\\\">\\n              <span class=\\\"address-title\\\">UF: &nbsp;</span>\\n              <h5 class=\\\"info\\\">\\n                {{ completeUser.address.uf }}\\n              </h5>\\n            </div>\\n          </div>\\n        </div>\\n\\n        <div *ngSwitchCase=\\\"'patient'\\\">\\n          <hr />\\n          <div class=\\\"title-area\\\">\\n            <div class=\\\"title-address\\\">\\n              <img src=\\\"assets/icons/hand-holding-medical.svg\\\" class=\\\"svg\\\" />\\n              <p class=\\\"title\\\">DEPENDENTES</p>\\n            </div>\\n          </div>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"mt-4 col-12 col-md-6\\\">\\n              <p class=\\\"title\\\">MENORES</p>\\n              <ng-container *ngIf=\\\"completeUser.dependents.length > 0; else noDependents\\\">\\n                <div *ngFor=\\\"let dependent of completeUser.dependents\\\">\\n                  <span class=\\\"info-area\\\">\\n                    <h5 class=\\\"mr-3\\\">{{ dependent.name }}</h5>\\n                    <button class=\\\"edit-button\\\" (click)=\\\"editDependent(dependent)\\\">\\n                      <img src=\\\"assets/icons/pen-solid.svg\\\" class=\\\"svg\\\" />\\n                    </button>\\n                  </span>\\n                </div>\\n              </ng-container>\\n              <ng-template #noDependents>\\n                <p>Nenhum menor cadastrado</p>\\n              </ng-template>\\n              <hr />\\n              <app-add-button\\n                class=\\\"col-6\\\"\\n                label=\\\"Adicionar Menor\\\"\\n                (click)=\\\"addDependent($event)\\\"\\n              ></app-add-button>\\n            </div>\\n\\n            <div class=\\\"mt-4 col-12 col-md-6\\\">\\n              <p class=\\\"title\\\">PETS</p>\\n              <ng-container *ngIf=\\\"completeUser?.pets?.length > 0; else noPets\\\">\\n                <div *ngFor=\\\"let pet of completeUser.pets\\\">\\n                  <span class=\\\"info-area\\\">\\n                    <h5 class=\\\"mr-3\\\">{{ pet.name }}</h5>\\n                    <button class=\\\"edit-button\\\" (click)=\\\"editPet(pet)\\\">\\n                      <img src=\\\"assets/icons/pen-solid.svg\\\" class=\\\"svg\\\" />\\n                    </button>\\n                  </span>\\n                </div>\\n              </ng-container>\\n              <ng-template #noPets>\\n                <p>Nenhum pet cadastrado</p>\\n              </ng-template>\\n              <hr />\\n              <app-add-button class=\\\"col-6\\\" label=\\\"Adicionar Pet\\\" (click)=\\\"addPet()\\\"></app-add-button>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n\\n      <div class=\\\"content\\\" *ngSwitchCase=\\\"'pharmacy'\\\">\\n        <hr />\\n        <div class=\\\"title-area\\\">\\n          <p class=\\\"title\\\">DADOS DO RESPONSÁVEL TÉCNICO</p>\\n          <button class=\\\"edit-button\\\">\\n            <img src=\\\"assets/icons/pen-solid.svg\\\" class=\\\"svg\\\" (click)=\\\"showModalPharmacyData()\\\" />\\n          </button>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col\\\" *ngIf=\\\"completeUser.technicalResponsible as technicalResponsible\\\">\\n            <span class=\\\"info-area\\\">\\n              <img src=\\\"assets/icons/user-alt-solid.svg\\\" class=\\\"svg\\\" />\\n              <h5>{{ technicalResponsible.name }}</h5>\\n            </span>\\n            <span class=\\\"info-area\\\">\\n              <img src=\\\"assets/icons/address-card-solid.svg\\\" class=\\\"svg\\\" />\\n              <h5>{{ technicalResponsible.cpf | formattedCpf }}</h5>\\n            </span>\\n            <span class=\\\"info-area\\\">\\n              <img src=\\\"assets/icons/id-card-alt-solid.svg\\\" class=\\\"svg\\\" />\\n              <h5>\\n                {{ technicalResponsible.crf.number }} -\\n                {{ technicalResponsible.crf.uf }}\\n              </h5>\\n            </span>\\n          </div>\\n        </div>\\n\\n        <hr />\\n\\n        <div class=\\\"title-area\\\">\\n          <p class=\\\"title\\\">DADOS ESPECÍFICOS</p>\\n          <button class=\\\"edit-button\\\">\\n            <img src=\\\"assets/icons/pen-solid.svg\\\" class=\\\"svg\\\" (click)=\\\"showModalCovid()\\\" />\\n          </button>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col\\\">\\n            <span class=\\\"info-area\\\">\\n              <img src=\\\"assets/icons/Covid-19 arte.png\\\" class=\\\"svg\\\" />\\n              <h5 *ngIf=\\\"completeUser.covid == 1\\\" class=\\\"info\\\">\\n                Sua farmácia realiza Teste COVID-19? Sim, realiza\\n              </h5>\\n              <h5 *ngIf=\\\"completeUser.covid == 2\\\" class=\\\"info\\\">\\n                Sua farmácia realiza Teste COVID-19? Não realiza\\n              </h5>\\n              <h5 *ngIf=\\\"completeUser.covid == 3\\\" class=\\\"info\\\">\\n                Sua farmácia realiza Teste COVID-19? Não realiza, mas gostaria de realizar\\n              </h5>\\n              <h5 *ngIf=\\\"!completeUser.covid\\\" class=\\\"info\\\">\\n                Sua farmácia realiza Teste COVID-19? Sem resposta\\n              </h5>\\n            </span>\\n          </div>\\n        </div>\\n      </div>\\n\\n      <div\\n        class=\\\"content\\\"\\n        *ngIf=\\\"this.cipFeature && (user.userType === 'pharmacy' || user.userType === 'pharmacist')\\\"\\n      >\\n        <hr />\\n\\n        <div class=\\\"title-area\\\">\\n          <p class=\\\"title\\\">TERMO DE CONSENTIMENTO PARA TRATAMENTO DE DADOS (PROJETO PILOTO)</p>\\n          <button class=\\\"edit-button\\\">\\n            <img src=\\\"assets/icons/pen-solid.svg\\\" class=\\\"svg\\\" (click)=\\\"showModalCip()\\\" />\\n          </button>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col\\\">\\n            <p class=\\\"info-area\\\">Aceito? {{ this.cipFeatureAccepted }}</p>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </section>\\n</ng-container>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n<app-modal-cip-acceptance\\n  [isVisible]=\\\"isModalCipVisible\\\"\\n  (isVisibleChange)=\\\"changeCipVisibility($event)\\\"\\n  [code]=\\\"this.cipFeature?.code\\\"\\n></app-modal-cip-acceptance>\\n\\n<nz-modal\\n  [nzVisible]=\\\"isPetDataVisible\\\"\\n  nzTitle=\\\"Dados do Pet\\\"\\n  (nzOnCancel)=\\\"closePetModal()\\\"\\n  [nzFooter]=\\\"modalFooter\\\"\\n>\\n  <ng-container>\\n    <p>Nome: {{ pet?.name | titlecase }}</p>\\n    <p>Espécie: {{ pet?.species | titlecase }}</p>\\n    <p>Raça: {{ pet?.race ? pet.race : 'Não informado' }}</p>\\n    <p>\\n      Data de Nascimento:\\n      {{ pet?.dateOfBirth ? (pet?.dateOfBirth | date: 'dd/MM/yyyy') : 'Não informado' }}\\n    </p>\\n    <p>Peso: {{ pet?.weight ? pet?.weight : 'Não informado' }}</p>\\n    <p>Pelagem: {{ pet?.fur ? pet?.fur : 'Não informado' }}</p>\\n    <p>Catração: {{ pet?.castration ? 'Sim' : 'Não' }}</p>\\n    <p>Temperamento: {{ pet?.temperament ? pet?.temperament : 'Não informado' }}</p>\\n    <p>Nº do microchip: {{ pet?.microchipNumber ? pet?.microchipNumber : 'Não informado' }}</p>\\n  </ng-container>\\n</nz-modal>\\n\\n<ng-template #modalFooter>\\n  <button nz-button type=\\\"button\\\" class=\\\"btn\\\" (click)=\\\"closePetModal()\\\">\\n    <span>Ok</span>\\n  </button>\\n</ng-template>\\n\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormControl, Validators } from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { markFormGroup } from '@app/utils';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'app-modal-dependent-form',\n  templateUrl: './modal-dependent-form.component.html',\n  styleUrls: ['./modal-dependent-form.component.scss']\n})\nexport class ModalDependentFormComponent implements OnInit {\n  @Input() responsible: any;\n  @Input() dependent: any;\n  @Output() submit = new EventEmitter<any>();\n\n  constructor(private fb: FormBuilder, private modalRef: BsModalRef) {}\n\n  loading = false;\n\n  form = this.fb.group({\n    _id: [undefined],\n    name: ['', [Validators.required]],\n    fullname: ['', [Validators.required]],\n    cpf: ['', [Validators.required, ValidationService.cpfValidator]],\n    sex: ['', Validators.required],\n    dateOfBirth: [null, [Validators.required, ModalDependentFormComponent.validateUnderAge]],\n    membership: this.fb.group({\n      mothersName: ['']\n    }),\n    pendency: [null],\n    verifiedCpf: [false]\n  });\n\n  static validateUnderAge(control: FormControl): { [key: string]: boolean } | null {\n    const birthdate = new Date(control.value);\n    const diffDate = Date.now() - birthdate.getTime();\n    const ageDate = new Date(diffDate);\n    const years = Math.abs(ageDate.getUTCFullYear() - 1970);\n    if (years >= 18) {\n      return { isNotMinor: true };\n    }\n\n    return null;\n  }\n\n  ngOnInit() {\n    if (this.dependent) {\n      this.form.patchValue(this.dependent);\n      const date = new Date(this.dependent.dateOfBirth);\n      this.form.get('dateOfBirth').setValue(date.toISOString().substring(0, 10));\n    }\n\n    this.form.get('name').valueChanges.subscribe(name => {\n      this.form.get('fullname').setValue(name);\n    });\n  }\n\n  get currentDate() {\n    const now = new Date();\n    return this.formatDate(now);\n  }\n\n  get minDate() {\n    const now = new Date();\n    now.setFullYear(now.getFullYear() - 18);\n    return this.formatDate(now);\n  }\n\n  private formatDate(now: Date) {\n    const dd = String(now.getDate()).padStart(2, '0');\n    const mm = String(now.getMonth() + 1).padStart(2, '0');\n    const yyyy = now.getFullYear();\n    return `${yyyy}-${mm}-${dd}`;\n  }\n\n  checkCpf(value: boolean) {\n    if (value) {\n      this.form.get('cpf').setValue(null);\n      this.form.get('cpf').disable();\n      this.form.get('cpf').setValidators(ValidationService.cpfValidator);\n    } else {\n      this.form.get('cpf').setValue('');\n      this.form.get('cpf').enable();\n      this.form.get('cpf').setValidators([Validators.required, ValidationService.cpfValidator]);\n    }\n  }\n\n  checkResponsibleName(value: boolean) {\n    if (value) {\n      this.form.get('membership.mothersName').setValue(this.responsible.name);\n      this.form.get('membership.mothersName').disable();\n    } else {\n      this.form.get('membership.mothersName').enable();\n    }\n  }\n\n  submitForm() {\n    markFormGroup(this.form);\n\n    if (this.form.valid) {\n      this.submit.emit(this.form.value);\n    }\n  }\n}\n","export default \"<div class=\\\"modal-body\\\">\\n  <form nz-form [formGroup]=\\\"form\\\">\\n    <div class=\\\"row\\\">\\n      <nz-form-item class=\\\"col-md-7\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-6\\\">\\n            <nz-form-label nzFor=\\\"cpf\\\" theme\\n              >CPF <span class=\\\"mandatory\\\" *ngIf=\\\"!noCpf.nzChecked\\\">*</span></nz-form-label\\n            >\\n          </div>\\n          <div class=\\\"col\\\">\\n            <label #noCpf nz-checkbox (nzCheckedChange)=\\\"checkCpf($event)\\\" style=\\\"font-size: 14px;\\\"\\n              >Sem CPF</label\\n            >\\n          </div>\\n        </div>\\n        <nz-form-control nzHasFeedback>\\n          <nz-input-group>\\n            <input\\n              type=\\\"text\\\"\\n              nz-input\\n              formControlName=\\\"cpf\\\"\\n              placeholder=\\\"000.000.000-00\\\"\\n              mask=\\\"000.000.000-00\\\"\\n              theme\\n            />\\n          </nz-input-group>\\n          <nz-form-explain *ngIf=\\\"form.get('cpf').dirty && form.get('cpf').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('cpf').hasError('required')\\\">\\n              O CPF é obrigatório\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"!form.get('cpf').hasError('required') && form.get('cpf').hasError('cpf')\\\"\\n            >\\n              CPF inválido, por favor digite um CPF válido.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-md-5\\\">\\n        <nz-form-label nzFor=\\\"dateOfBirth\\\" theme\\n          >Data de nascimento <span class=\\\"mandatory\\\">*</span>\\n        </nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <input\\n            nz-input\\n            id=\\\"dateOfBirth\\\"\\n            type=\\\"date\\\"\\n            formControlName=\\\"dateOfBirth\\\"\\n            [max]=\\\"currentDate\\\"\\n            [min]=\\\"minDate\\\"\\n            theme\\n          />\\n          <nz-form-explain *ngIf=\\\"form.get('dateOfBirth').dirty && form.get('dateOfBirth').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('dateOfBirth').hasError('required')\\\">\\n              Campo obrigatório, por favor digite sua data de nascimento.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"\\n                !form.get('dateOfBirth').hasError('required') &&\\n                form.get('dateOfBirth').hasError('isNotMinor')\\n              \\\"\\n            >\\n              Dependente deve ser menor de idade.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"\\n                !form.get('dateOfBirth').hasError('required') &&\\n                !form.get('dateOfBirth').hasError('isNotMinor') &&\\n                form.get('dateOfBirth').errors\\n              \\\"\\n            >\\n              Data de nascimento inválida.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-md-12\\\">\\n        <nz-form-label nzFor=\\\"name\\\" theme>Nome <span class=\\\"mandatory\\\">*</span></nz-form-label>\\n        <nz-form-control>\\n          <nz-input-group>\\n            <input\\n              theme\\n              type=\\\"text\\\"\\n              nz-input\\n              placeholder=\\\"Digite o nome do paciente\\\"\\n              formControlName=\\\"name\\\"\\n              maxlength=\\\"128\\\"\\n            />\\n          </nz-input-group>\\n          <nz-form-explain *ngIf=\\\"form.get('name').dirty && form.get('name').errors\\\">\\n            <ng-container *ngIf=\\\"form.get('name').hasError('required')\\\">\\n              Campo obrigatório, por favor digite o seu nome e sobrenome.\\n            </ng-container>\\n            <ng-container\\n              *ngIf=\\\"!form.get('name').hasError('required') && form.get('name').hasError('nome')\\\"\\n            >\\n              Nome inválido.\\n            </ng-container>\\n          </nz-form-explain>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <nz-form-item class=\\\"col-6\\\">\\n        <nz-form-label nzFor=\\\"sex\\\" theme>Sexo<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n        <nz-form-control nzHasFeedback>\\n          <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\" theme>\\n            <option value=\\\"M\\\">Masculino</option>\\n            <option value=\\\"F\\\">Feminino</option>\\n          </select>\\n        </nz-form-control>\\n      </nz-form-item>\\n\\n      <div\\n        class=\\\"col-12\\\"\\n        [formGroup]=\\\"form.get('membership')\\\"\\n        *ngIf=\\\"form.get('membership.mothersName') as mothersName\\\"\\n      >\\n        <nz-form-item>\\n          <div class=\\\"row\\\">\\n            <div class=\\\"col-6\\\">\\n              <nz-form-label nzFor=\\\"mothersName\\\" theme>Nome da mãe</nz-form-label>\\n            </div>\\n            <div class=\\\"col\\\">\\n              <label\\n                #responsibleName\\n                nz-checkbox\\n                (nzCheckedChange)=\\\"checkResponsibleName($event)\\\"\\n                style=\\\"font-size: 14px;\\\"\\n                >Repetir seu nome</label\\n              >\\n            </div>\\n          </div>\\n          <nz-form-control nzHasFeedback>\\n            <input\\n              nz-input\\n              placeholder=\\\"Digite o nome da mãe\\\"\\n              formControlName=\\\"mothersName\\\"\\n              id=\\\"mothersName\\\"\\n              maxlength=\\\"128\\\"\\n              theme\\n            />\\n            <nz-form-explain *ngIf=\\\"mothersName.dirty && mothersName.errors\\\">\\n              <ng-container *ngIf=\\\"mothersName.hasError('required')\\\">\\n                Campo obrigatório, por favor digite o nome da mãe.\\n              </ng-container>\\n              <ng-container\\n                *ngIf=\\\"\\n                  !mothersName.hasError('required') && mothersName.hasError('membership.mothersName')\\n                \\\"\\n              >\\n                Nome inválido.\\n              </ng-container>\\n            </nz-form-explain>\\n          </nz-form-control>\\n        </nz-form-item>\\n      </div>\\n    </div>\\n  </form>\\n\\n  <div class=\\\"row\\\">\\n    <div class=\\\"col-8\\\">\\n      <ng-template #indicatorTemplate><i nz-icon nzType=\\\"loading\\\"></i></ng-template>\\n      <nz-spin *ngIf=\\\"loading\\\" nzSimple [nzIndicator]=\\\"indicatorTemplate\\\"> </nz-spin>\\n    </div>\\n\\n    <div class=\\\"col-4\\\">\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"btn btn-icon btn-success btn-add text-capitalize btn-save\\\"\\n        (click)=\\\"submitForm()\\\"\\n      >\\n        <span class=\\\"btn-inner--text\\\">Salvar</span>\\n      </button>\\n    </div>\\n  </div>\\n</div>\\n\";","export default \".modal-body {\\n  padding-bottom: 40px;\\n}\\n.modal-body input {\\n  border-radius: 10px;\\n}\\n.modal-body .btn-save {\\n  float: right;\\n  padding-top: 7px;\\n  padding-bottom: 7px;\\n  margin-top: 13px;\\n  margin-bottom: 5px;\\n}\\n.modal-body .doctor-information {\\n  padding-left: 0;\\n}\\n.modal-body i {\\n  font-size: 24px;\\n}\\n.modal-body .mandatory {\\n  color: red;\\n}\\n.modal-body input::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n::ng-deep .ant-select-selection {\\n  height: 100%;\\n}\";","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { NzModalRef } from 'ng-zorro-antd/modal';\n\n@Component({\n  selector: 'app-modal-edit-pharmacy-covid',\n  templateUrl: './modal-edit-pharmacy-covid.component.html',\n  styleUrls: ['./modal-edit-pharmacy-covid.component.scss']\n})\nexport class ModalEditPharmacyCovidComponent implements OnInit {\n  @Input() completeUser: any;\n  @Output() updateUserEvent = new EventEmitter<User>();\n\n  covidForm: FormGroup;\n\n  constructor(\n    private fb: FormBuilder,\n    private pharmacyService: PharmacyService,\n    private nzModalRef: NzModalRef,\n    private notification: AppToastService\n  ) {}\n\n  ngOnInit() {\n    this.covidForm = this.fb.group({\n      covid: [`${this.completeUser.covid}`, Validators.required]\n    });\n  }\n\n  @nativeAsync\n  async save(param) {\n    if (param === '') {\n      this.notification.notify('warning', 'Atenção', 'Valor do teste Covid não informado');\n    } else {\n      try {\n        const pharmacyId = this.completeUser._id;\n        this.completeUser.covid = this.covidForm.get('covid').value;\n        await this.pharmacyService.update(pharmacyId, this.completeUser).toPromise();\n        this.notification.notify('success', 'Sucesso', 'Informação atualizada com sucesso.');\n        this.updateUserEvent.emit(this.completeUser);\n        this.close();\n      } catch (err) {\n        console.error(err);\n        this.notification.notify('error', 'Erro', 'Erro ao atualizar informação');\n      }\n    }\n  }\n\n  close() {\n    this.nzModalRef.close();\n  }\n}\n","export default \"<div theme>\\n  <div class=\\\"modal-header\\\">\\n    <img src=\\\"assets/icons/Covid-19 arte.png\\\" class=\\\"gfg\\\" />\\n    <h4 class=\\\"modal-title pull-left text-white\\\">MOVIMENTO COVID-19 : Teste Rápido</h4>\\n    <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"close()\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button>\\n  </div>\\n  <div class=\\\"container\\\">\\n    <form nz-form class=\\\"row justify-content-center\\\" [formGroup]=\\\"covidForm\\\">\\n      <p>\\n        Com o objetivo de ajudar no combate ao Covid-19, estamos mapeando as farmácias e drogarias que\\n        oferecem o teste rápido em suas lojas.\\n      </p>\\n      <h5>Sua farmácia realiza o Teste COVID-19?</h5>\\n      <div>\\n        <div class=\\\"form-input\\\">\\n          <nz-form-label nzFor=\\\"covid\\\" theme></nz-form-label>\\n          <nz-radio-group id=\\\"covid\\\" formControlName=\\\"covid\\\" theme>\\n            <h4>\\n              <label nz-radio nzValue=\\\"1\\\" (click)=\\\"save(1)\\\">Sim, realizo</label>\\n              <label nz-radio nzValue=\\\"2\\\" (click)=\\\"save(2)\\\">Não realizo</label>\\n              <label nz-radio nzValue=\\\"3\\\" (click)=\\\"save(3)\\\">Não realizo, mas gostaria de ter</label>\\n            </h4>\\n          </nz-radio-group>\\n        </div>\\n      </div>\\n    </form>\\n  </div>\\n</div>\\n\";","export default \"\";","import { Observable, of } from 'rxjs';\r\nimport { ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '@app/core/services/auth.service';\r\nimport { ModalEditPersonalDataComponent } from '@app/modules/dashboard/modal-edit-personal-data/modal-edit-personal-data.component';\r\nimport { HealthProfessionalService } from '@app/modules/health-professional/services/health-professional.service';\r\nimport { ModalEditPetComponent } from '@app/modules/patients/pages/modal-edit-pet/modal-edit-pet.component';\r\nimport { PatientsService } from '@app/modules/patients/services/patients.service';\r\nimport { PetPatientService } from '@app/modules/patients/services/pet-patient.service';\r\nimport { PharmacistService } from '@app/modules/pharmacist/services/pharmacist.service';\r\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\r\nimport { UserService } from '@app/modules/user/user.service';\r\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\r\nimport { BrazilState, HealthProfessional } from '@app/shared/models';\r\nimport { User } from '@app/shared/models/decodedLoginToken';\r\nimport { PetPatient } from '@app/shared/models/pet-patient';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\nimport { NzModalService } from 'ng-zorro-antd/modal';\r\nimport { CroppedEvent } from 'ngx-photo-editor';\r\nimport { ModalDependentFormComponent } from '../modal-dependent-form/modal-dependent-form.component';\r\nimport { ModalEditAddressDataComponent } from '../modal-edit-address-data/modal-edit-address-data.component';\r\nimport { ModalEditPharmacyCovidComponent } from '../modal-edit-pharmacy-covid/modal-edit-pharmacy-covid.component';\r\nimport { ModalEditPharmacyTechnicianComponent } from '../modal-edit-pharmacy-technician/modal-edit-pharmacy-technician.component';\r\nimport { ModalPetFormComponent } from '../modal-pet-form/modal-pet-form.component';\r\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\n\r\n@Component({\r\n  selector: 'app-my-data',\r\n  templateUrl: './my-data.component.html',\r\n  styleUrls: ['./my-data.component.scss', '../../dashboard/pages/index/index.component.scss']\r\n})\r\nexport class MyDataComponent implements OnInit {\r\n  states: BrazilState[] = BrazilianStates;\r\n  completeUser: any;\r\n  imageChangedEvent: any;\r\n  logoChangedEvent: any;\r\n  imageURL: any;\r\n  avatarB64: string;\r\n  loading = true;\r\n  isModalCipVisible = false;\r\n  showModal = '';\r\n  isPetDataVisible = false;\r\n  pet: PetPatient;\r\n\r\n  private commercialId: any;\r\n\r\n  private readonly MAX_FILE_SIZE_BYTES = 5 * 1024 * 1024; // 5 MB\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private authService: AuthService,\r\n    private healthProfessionalService: HealthProfessionalService,\r\n    private modalService: NzModalService,\r\n    private patientService: PatientsService,\r\n    private userService: UserService,\r\n    private pharmacyService: PharmacyService,\r\n    private pharmacistService: PharmacistService,\r\n    private notification: AppToastService,\r\n    private petPatientService: PetPatientService,\r\n    private bsModalService: BsModalService,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    const state = this.router.getCurrentNavigation().extras.state;\r\n    if (state && state.showModalPersonalData) {\r\n      this.showModal = 'showModalPersonalData';\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.getCompleteUser();\r\n\r\n    if (this.showModal) {\r\n      this[this.showModal](true);\r\n    }\r\n  }\r\n\r\n  get user(): User {\r\n    return this.authService.user();\r\n  }\r\n\r\n  private updateUserData(data) {\r\n    this.completeUser = data;\r\n    this.loading = false;\r\n    this.authService.refreshToken().subscribe();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  private getCompleteUser() {\r\n    this.userService.getAvatar().subscribe(avatar => (this.avatarB64 = avatar));\r\n    let execute$ = new Observable();\r\n    switch (this.user.userType) {\r\n      case 'patient':\r\n        execute$ = this.patientService.getPatientByUserId(this.user._id);\r\n        break;\r\n      case 'healthProfessional':\r\n        execute$ = this.healthProfessionalService.getHealthProfessional(this.user._id);\r\n        break;\r\n      case 'pharmacist':\r\n        execute$ = this.pharmacistService.getPharmacistByUserId(this.user._id);\r\n        break;\r\n      default:\r\n        execute$ = this.pharmacyService.getPharmacyByUserId(this.user._id);\r\n    }\r\n\r\n    execute$.subscribe(data => {\r\n      this.updateUserData(data);\r\n    });\r\n  }\r\n\r\n  get today() {\r\n    return new Date();\r\n  }\r\n\r\n  get doctorName() {\r\n    if (this.completeUser) {\r\n      return `Dr${this.completeUser.sex === 'F' ? 'a' : ''}. ${this.completeUser.name}`;\r\n    }\r\n    return '';\r\n  }\r\n\r\n  redirectUrl(privacyPolicy?: boolean) {\r\n    let url;\r\n    if (this.user.userType === 'patient') {\r\n      url = this.router.createUrlTree(['policies', 'termspatient']);\r\n    }\r\n    if (this.completeUser.professionalType === 'doctor') {\r\n      url = this.router.createUrlTree(['policies', 'termsdoctor']);\r\n    }\r\n    if (this.completeUser.professionalType === 'dentist') {\r\n      url = this.router.createUrlTree(['policies', 'termsdentist']);\r\n    }\r\n    if (this.completeUser.professionalType === 'veterinarian') {\r\n      url = this.router.createUrlTree(['policies', 'termsveterinary']);\r\n    }\r\n    if (this.user.userType === 'pharmacy') {\r\n      url = this.router.createUrlTree(['policies', 'termspharmacy']);\r\n    }\r\n    if (privacyPolicy) {\r\n      url = this.router.createUrlTree(['policies', 'privacypolicy']);\r\n    }\r\n    return url;\r\n  }\r\n\r\n  get specialties() {\r\n    return this.completeUser ? this.completeUser.specialties.map(s => s.title).join(', ') : '';\r\n  }\r\n\r\n  get cipFeature() {\r\n    return this.user && this.user.features.find(f => f.name === 'CIP');\r\n  }\r\n\r\n  get cipFeatureAccepted() {\r\n    if (this.cipFeature.accept === 'yes') {\r\n      return 'Sim';\r\n    }\r\n    if (this.cipFeature.accept === 'no') {\r\n      return 'Não';\r\n    }\r\n    return 'Não respondido';\r\n  }\r\n\r\n  changeCipVisibility(visibility: boolean) {\r\n    this.isModalCipVisible = visibility;\r\n  }\r\n\r\n  showModalCip() {\r\n    this.isModalCipVisible = true;\r\n  }\r\n\r\n  showModalPersonalData(touched = false) {\r\n    const modal = this.modalService.create({\r\n      nzContent: ModalEditPersonalDataComponent,\r\n      nzComponentParams: {\r\n        user: this.user,\r\n        completeUser: this.completeUser,\r\n        userTypeLogged: this.user.userType,\r\n        touched\r\n      },\r\n      nzFooter: null,\r\n      nzWidth: 800\r\n    });\r\n    modal.afterOpen.subscribe(() => {\r\n      modal.getContentComponent().updateUserEvent.subscribe(user => this.updateUserData(user));\r\n    });\r\n  }\r\n\r\n  showModalCovid() {\r\n    const modal = this.modalService.create({\r\n      nzContent: ModalEditPharmacyCovidComponent,\r\n      nzComponentParams: { completeUser: this.completeUser },\r\n      nzFooter: null,\r\n      nzClosable: false\r\n    });\r\n    modal.afterOpen.subscribe(() => {\r\n      modal.getContentComponent().updateUserEvent.subscribe(user => this.updateUserData(user));\r\n    });\r\n  }\r\n\r\n  showModalBusinessData(isNew: boolean, data: any, index: number) {\r\n    const modal = this.modalService.create({\r\n      nzContent: ModalEditAddressDataComponent,\r\n      nzComponentParams: {\r\n        isNew,\r\n        commercialDataIndex: index,\r\n        commercialData: data,\r\n        completeUser: Object.assign({}, this.completeUser),\r\n        userType: this.user.userType\r\n      },\r\n      nzWidth: 600,\r\n      nzFooter: null\r\n    });\r\n    modal.afterClose.subscribe((data: HealthProfessional) => {\r\n      if (data) {\r\n        this.updateUserData(data);\r\n      }\r\n    });\r\n  }\r\n\r\n  showModalRemoveBusinessData(index: number) {\r\n    this.modalService.confirm({\r\n      nzTitle: 'Alerta',\r\n      nzContent: 'Tem certeza que deseja remover esses dados',\r\n      nzOnOk: () => {\r\n        this.completeUser.commercialData.splice(index, 1);\r\n\r\n        this.healthProfessionalService\r\n          .update(this.completeUser.userId, this.completeUser)\r\n          .subscribe(user => this.updateUserData(user));\r\n      }\r\n    });\r\n  }\r\n\r\n  showModalAddressData() {\r\n    const modal = this.modalService.create({\r\n      nzContent: ModalEditAddressDataComponent,\r\n      nzComponentParams: { completeUser: this.completeUser, userType: this.user.userType },\r\n      nzFooter: null\r\n    });\r\n    modal.afterOpen.subscribe(() => {\r\n      modal.getContentComponent().updateUserEvent.subscribe(user => this.updateUserData(user));\r\n    });\r\n  }\r\n\r\n  showModalPharmacyData() {\r\n    const modal = this.modalService.create({\r\n      nzContent: ModalEditPharmacyTechnicianComponent,\r\n      nzComponentParams: { completeUser: this.completeUser, userType: this.user.userType },\r\n      nzFooter: null\r\n    });\r\n    modal.afterOpen.subscribe(() => {\r\n      modal.getContentComponent().updateUserEvent.subscribe(user => this.updateUserData(user));\r\n    });\r\n  }\r\n\r\n  addDependent() {\r\n    const modal = this.modalService.create({\r\n      nzTitle: 'ADICIONAR MENOR',\r\n      nzContent: ModalDependentFormComponent,\r\n      nzComponentParams: { responsible: this.completeUser },\r\n      nzFooter: null\r\n    });\r\n\r\n    modal.afterOpen.subscribe(_ => {\r\n      modal.getContentComponent().submit.subscribe(patient => {\r\n        patient.responsible = this.completeUser._id;\r\n        this.patientService.save(patient).subscribe(\r\n          async res => {\r\n            this.completeUser = await this.getCompleteUser();\r\n            modal.close();\r\n            this.notification.notify('success', 'Sucesso', 'Dependente salvo com sucesso!');\r\n          },\r\n          err => {\r\n            console.error(err);\r\n            this.notification.notify('error', 'Aviso', 'Erro ao salvar dependente');\r\n          }\r\n        );\r\n      });\r\n    });\r\n  }\r\n\r\n  addPet() {\r\n    const modal = this.modalService.create({\r\n      nzContent: ModalPetFormComponent,\r\n      nzComponentParams: {},\r\n      nzFooter: null\r\n    });\r\n\r\n    modal.afterOpen.subscribe(_ => {\r\n      modal.getContentComponent().submit.subscribe(patient => {\r\n        patient.responsible = this.completeUser;\r\n\r\n        this.petPatientService.save(patient).subscribe(\r\n          async _ => {\r\n            this.completeUser = await this.getCompleteUser();\r\n            modal.close();\r\n            this.notification.notify('success', 'Sucesso', 'Pet salvo com sucesso!');\r\n          },\r\n          err => {\r\n            console.error(err);\r\n            this.notification.notify('error', 'Aviso', 'Erro ao salvar dependente');\r\n          }\r\n        );\r\n      });\r\n    });\r\n  }\r\n\r\n  editDependent(dependent: any) {\r\n    const modal = this.modalService.create({\r\n      nzTitle: 'EDITAR DEPENDENTE',\r\n      nzContent: ModalDependentFormComponent,\r\n      nzComponentParams: { responsible: this.completeUser, dependent },\r\n      nzFooter: null\r\n    });\r\n\r\n    modal.afterOpen.subscribe(_ => {\r\n      modal.getContentComponent().submit.subscribe(patient => {\r\n        patient.responsible = this.completeUser._id;\r\n        this.patientService.update(patient._id, patient).subscribe(\r\n          async res => {\r\n            this.completeUser = await this.getCompleteUser();\r\n            modal.close();\r\n            this.notification.notify('success', 'Sucesso', 'Dependente salvo com sucesso!');\r\n          },\r\n          err => {\r\n            console.error(err);\r\n            this.notification.notify('error', 'Aviso', 'Erro ao salvar dependente');\r\n          }\r\n        );\r\n      });\r\n    });\r\n  }\r\n\r\n  editPet(pet: PetPatient) {\r\n    const initialState = { pet, isVeterinarian: false };\r\n\r\n    const modal = this.bsModalService.show(ModalEditPetComponent, {\r\n      initialState,\r\n      class: '',\r\n      backdrop: 'static',\r\n      keyboard: false\r\n    });\r\n\r\n    modal.content.submit.subscribe(p => {\r\n      this.petPatientService.update(p._id, p).subscribe(\r\n        () => {\r\n          this.getCompleteUser();\r\n          modal.hide();\r\n          this.notification.notify('success', 'Sucesso', 'Pet salvo com sucesso!');\r\n        },\r\n        err => {\r\n          console.error(err);\r\n          this.notification.notify('error', 'Aviso', 'Erro ao salvar pet');\r\n        }\r\n      );\r\n    });\r\n  }\r\n\r\n  showPetData(pet) {\r\n    this.pet = pet;\r\n    this.isPetDataVisible = true;\r\n  }\r\n\r\n  closePetModal() {\r\n    this.isPetDataVisible = false;\r\n  }\r\n\r\n  fileChangeEvent(event) {\r\n    this.imageChangedEvent = event;\r\n  }\r\n\r\n  @nativeAsync\r\n  async imageCropped(event: CroppedEvent) {\r\n    try {\r\n      this.loading = true;\r\n      await this.userService.updateAvatar(event).toPromise();\r\n      this.avatarB64 = event.base64;\r\n      this.notification.notify('success', 'Sucesso', 'Avatar salvo com sucesso!');\r\n    } catch (err) {\r\n      console.error(err);\r\n      this.notification.notify('error', 'Aviso', 'Erro ao salvar o seu avatar');\r\n    }\r\n    this.loading = false;\r\n  }\r\n\r\n  addLogo(event: Event, commercialId: string) {\r\n    const target = event.target as HTMLInputElement;\r\n    const size = target.files[0].size;\r\n    if (size > this.MAX_FILE_SIZE_BYTES) {\r\n      this.notification.notify(\r\n        'warning',\r\n        'Aviso',\r\n        `O arquivo não pode ser maior que ${this.MAX_FILE_SIZE_BYTES / 1024 / 1024} MB`\r\n      );\r\n    } else {\r\n      this.logoChangedEvent = event;\r\n      this.commercialId = commercialId;\r\n    }\r\n  }\r\n\r\n  @nativeAsync\r\n  async logoCropped(event: CroppedEvent) {\r\n    try {\r\n      this.loading = true;\r\n      this.cdr.detectChanges();\r\n      const { url } = await this.healthProfessionalService.uploadLogo(event, this.commercialId);\r\n      this.completeUser = {\r\n        ...this.completeUser,\r\n        commercialData: this.completeUser.commercialData.map(c => {\r\n          if (c._id === this.commercialId) {\r\n            return {\r\n              ...c,\r\n              logo: url\r\n            };\r\n          }\r\n          return c;\r\n        })\r\n      };\r\n\r\n      this.notification.notify('success', 'Sucesso', 'Logo salvo com sucesso');\r\n      this.cdr.detectChanges();\r\n    } catch (error) {\r\n      console.error(error);\r\n      this.notification.notify('error', 'Aviso', 'Erro ao salvar a logomarca');\r\n    } finally {\r\n      this.loading = false;\r\n    }\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  showLogo(url: string, commercialId: string) {\r\n    this.imageURL = url;\r\n    this.commercialId = commercialId;\r\n  }\r\n\r\n  @nativeAsync\r\n  async removeLogo(commercialId: string) {\r\n    this.modalService.confirm({\r\n      nzTitle: 'Você tem certeza que deseja remover a Logo?',\r\n      nzWidth: 300,\r\n      nzContent: null,\r\n      nzOnOk: async () => {\r\n        try {\r\n          await this.healthProfessionalService.removeLog(commercialId).toPromise();\r\n          this.completeUser.commercialData.forEach(c => {\r\n            if (c._id === commercialId) {\r\n              c.logo = null;\r\n            }\r\n          });\r\n        } catch (error) {\r\n          console.error(error);\r\n        }\r\n        this.loading = false;\r\n      }\r\n    });\r\n  }\r\n}\r\n","export default \":host {\\n  background-color: var(--background-section) !important;\\n}\\n\\n.terms {\\n  text-decoration: underline;\\n  color: var(--color-primary);\\n}\\n\\nsection {\\n  padding-top: 0px;\\n}\\n\\n.page-header {\\n  padding-bottom: 0px;\\n  height: 190px !important;\\n}\\n\\n.title-area {\\n  display: flex;\\n  padding-top: 25px;\\n  justify-content: space-between;\\n}\\n\\n.edit-button {\\n  border: none;\\n  outline: none;\\n  background: none;\\n  width: 10px;\\n  margin-right: 15px;\\n}\\n\\n.my-data {\\n  background-color: var(--background-section);\\n}\\n\\n.my-data .data {\\n  padding-bottom: 50px;\\n  background-color: white;\\n}\\n\\n.my-data .data .content {\\n  padding-left: 60px;\\n}\\n\\n.my-data .data .content p {\\n  color: #4a4545;\\n}\\n\\n.my-data .data .content .svg {\\n  filter: invert(0.3);\\n}\\n\\n.my-data .data .content .row {\\n  width: 700px;\\n}\\n\\n.my-data .data .content h5 {\\n  font-family: \\\"prolight\\\";\\n  font-size: 1.1rem;\\n  margin-bottom: 0px;\\n  color: #4a4545;\\n}\\n\\n.my-data .data .content .info-area {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  padding-bottom: 15px;\\n  min-width: 100px;\\n}\\n\\n.my-data .data .content .info-area img {\\n  margin-right: 25px;\\n}\\n\\n.my-data .data .content .info-area i {\\n  margin-right: 20px;\\n  color: #4a4545;\\n}\\n\\n.my-data .data .content span.cpf {\\n  display: -webkit-box;\\n}\\n\\n.my-data .data .title {\\n  font-size: 11px;\\n}\\n\\n.my-data .data img {\\n  width: 17px;\\n}\\n\\n.my-data hr {\\n  margin-bottom: 0px;\\n}\\n\\n.my-data .title-address {\\n  display: flex;\\n  align-items: center;\\n}\\n\\n.my-data .title-address p {\\n  margin: 0px;\\n}\\n\\n.my-data .title-address .svg {\\n  margin-right: 12px;\\n}\\n\\n.my-data .address {\\n  margin-top: 15px;\\n}\\n\\n.my-data .address .address-info-area {\\n  display: flex;\\n  margin-bottom: 13px;\\n  color: #3c3c3c;\\n}\\n\\n.my-data .address .address-info-area .address-title {\\n  font-weight: bold;\\n  font-size: 1.1rem;\\n}\\n\\n.my-data .address .address-info-area .info {\\n  font-size: 1.1rem;\\n}\\n\\n.my-data #button-edit-business {\\n  border: 0 !important;\\n  background: none !important;\\n  margin-left: 10px;\\n}\\n\\n.my-data #button-remove-business {\\n  border: 0 !important;\\n  background: none !important;\\n  color: #4f4f4f;\\n}\\n\\n.my-data .add-data {\\n  padding-top: 15px;\\n}\\n\\n.my-data .add-data span {\\n  text-decoration: underline;\\n  cursor: pointer;\\n}\\n\\n@media (max-width: 1025px) {\\n  section.profile .content {\\n    padding: 12px !important;\\n  }\\n}\\n\\nsection.profile.n-shaped.bg-white.page-header {\\n  height: auto;\\n}\\n\\nsection.profile.section-shaped.bg-white.page-header {\\n  height: auto !important;\\n}\\n\\n.icon-edit-profile {\\n  position: absolute;\\n  bottom: 0px;\\n  background-color: #17c6ac;\\n  right: 0;\\n  width: 36px;\\n  height: 36px;\\n  border-radius: 50%;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 10px;\\n}\\n\\n.icon-edit-profile img {\\n  width: 100% !important;\\n  height: 100% !important;\\n  fill: #fff !important;\\n}\\n\\n.input-label {\\n  position: relative;\\n  cursor: pointer;\\n}\\n\\n.logo-img {\\n  display: none;\\n}\\n\\n.btn {\\n  color: white;\\n  background-color: #0b6054;\\n  border-color: #0b6054;\\n  display: flex;\\n  align-items: center;\\n}\\n\\n::ng-deep .ant-modal-header {\\n  background-color: #4cbca3;\\n}\\n\\n::ng-deep .ant-modal-header .ant-modal-title {\\n  color: white;\\n  font-weight: 600;\\n}\\n\\n::ng-deep .ant-modal-footer {\\n  display: flex;\\n  justify-content: flex-end;\\n}\";","export default \"<app-alternative-navbar [title]=\\\"navTitle\\\" titleIcon=\\\"fas\\\"></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n\\n<div class=\\\"container mt-4\\\">\\n  <form nz-form [formGroup]=\\\"form\\\">\\n    <div class=\\\"row justify-content-md-center\\\">\\n      <div class=\\\"col-md-5\\\">\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col\\\">\\n            <nz-form-item>\\n              <nz-form-label>Data da Dispensação:<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  nz-input\\n                  type=\\\"date\\\"\\n                  formControlName=\\\"dispensationDate\\\"\\n                  name=\\\"dispensationDate\\\"\\n                  theme\\n                />\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n          <div class=\\\"col-md-6\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"cpfBuyer\\\"\\n                >CPF do comprador<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n              >\\n              <nz-form-control nzHasFeedback>\\n                <input\\n                  nz-input\\n                  id=\\\"cpfBuyer\\\"\\n                  mask=\\\"000.000.000-00\\\"\\n                  formControlName=\\\"cpfBuyer\\\"\\n                  theme\\n                />\\n                <nz-form-explain *ngIf=\\\"form.get('cpfBuyer').dirty && form.get('cpfBuyer').errors\\\">\\n                  <ng-container *ngIf=\\\"form.get('cpfBuyer').hasError('required')\\\">\\n                    Campo obrigatório, por favor digite seu CPF.\\n                  </ng-container>\\n                  <ng-container\\n                    *ngIf=\\\"\\n                      !form.get('cpfBuyer').hasError('required') && form.get('cpfBuyer').hasError('cpf')\\n                    \\\"\\n                  >\\n                    CPF inválido.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\" [formGroup]=\\\"form.get('preWriterRegister')\\\">\\n          <div class=\\\"col-md-6\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"preWriterRegister-numero\\\"\\n                >Registro do prescritor<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n              >\\n              <nz-form-control nzHasFeedback>\\n                <input formControlName=\\\"number\\\" id=\\\"preWriterRegister-numero\\\" nz-input theme />\\n                <nz-form-explain\\n                  *ngIf=\\\"\\n                    form.get('preWriterRegister.number').dirty &&\\n                    form.get('preWriterRegister.number').errors\\n                  \\\"\\n                >\\n                  <ng-container *ngIf=\\\"form.get('preWriterRegister.number').hasError('required')\\\">\\n                    Campo obrigatório, por favor informe o número do prescritor.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n          <div class=\\\"col-md-6\\\">\\n            <nz-form-item>\\n              <nz-form-label nzFor=\\\"preWriterRegister-uf\\\"\\n                >UF<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n              >\\n              <nz-form-control nzHasFeedback>\\n                <nz-select\\n                  formControlName=\\\"uf\\\"\\n                  id=\\\"preWriterRegister-uf\\\"\\n                  nzShowSearch\\n                  nzAllowClear\\n                  nzDropdownClassName=\\\"account-select\\\"\\n                  nzPlaceHolder=\\\"Selecione\\\"\\n                  theme\\n                >\\n                  <nz-option\\n                    *ngFor=\\\"let state of states\\\"\\n                    [nzLabel]=\\\"state?.sigla\\\"\\n                    [nzValue]=\\\"state?.sigla\\\"\\n                  >\\n                  </nz-option>\\n                </nz-select>\\n                <nz-form-explain\\n                  *ngIf=\\\"\\n                    form.get('preWriterRegister.uf').dirty && form.get('preWriterRegister.uf').errors\\n                  \\\"\\n                >\\n                  <ng-container *ngIf=\\\"form.get('preWriterRegister.uf').hasError('required')\\\">\\n                    Campo obrigatório, por favor selecione o UF do prescritor.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-12\\\">\\n            <nz-form-item>\\n              <nz-form-control>\\n                <app-input-file\\n                  accept=\\\".pdf\\\"\\n                  formControlName=\\\"pdf\\\"\\n                  textButton=\\\"Selecione uma receita\\\"\\n                  transformTo=\\\"base64\\\"\\n                  maxSize=\\\"3145728\\\"\\n                  name=\\\"pdf\\\"\\n                  [file]=\\\"file\\\"\\n                  [(filename)]=\\\"filename\\\"\\n                  theme\\n                ></app-input-file>\\n                <nz-form-explain *ngIf=\\\"form.get('pdf').dirty && form.get('pdf').errors\\\">\\n                  <ng-container *ngIf=\\\"form.get('pdf').hasError('required')\\\">\\n                    Arquivo obrigatório, por favor selecione um PDF.\\n                  </ng-container>\\n                </nz-form-explain>\\n              </nz-form-control>\\n            </nz-form-item>\\n          </div>\\n        </div>\\n        <div class=\\\"row\\\">\\n          <div class=\\\"col-12 d-flex justify-content-end\\\">\\n            <button nz-button nzType=\\\"primary\\\" (click)=\\\"save()\\\">Salvar</button>\\n          </div>\\n        </div>\\n      </div>\\n    </div>\\n  </form>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { PrescriptionService } from '@app/modules/document/services/prescription.service';\nimport { RetentionService } from '@app/modules/document/services/retention.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { BrazilState } from '@app/shared/models/brazil-state';\nimport { CpfCnpjApiErrors } from '@app/shared/models/cpf-cnpj-api-errors.enum';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BigboostService } from '@app/shared/services/bigboost.service';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport * as moment from 'moment';\nimport { UploadFile } from 'ng-zorro-antd/upload';\n\n@Component({\n  selector: 'app-recipe',\n  templateUrl: './recipe.component.html',\n  styleUrls: ['./recipe.component.scss']\n})\nexport class RecipeComponent implements OnInit {\n  navTitle: string;\n  loading: boolean;\n  states: BrazilState[] = BrazilianStates;\n  currenteDate: Date = new Date();\n  form: FormGroup;\n\n  constructor(\n    private fb: FormBuilder,\n    private notification: AppToastService,\n    private authService: AuthService,\n    private retentionService: RetentionService,\n    private bigboostService: BigboostService,\n    private prescriptionService: PrescriptionService\n  ) {\n    this.form = this.fb.group({\n      dispensationDate: [moment().format('YYYY-MM-DD'), Validators.required],\n      cpfBuyer: ['', [Validators.required, ValidationService.cpfValidator]],\n      pdf: ['', Validators.required],\n      preWriterRegister: this.fb.group({\n        number: ['', Validators.required],\n        uf: [null, Validators.required]\n      }),\n      pharmacyId: [null]\n    });\n\n    const pdf = this.prescriptionService.pdfBase64;\n    if (pdf) {\n      this.form.get('pdf').setValue(pdf);\n    }\n  }\n\n  @nativeAsync\n  async ngOnInit() {\n    this.navTitle = 'Receita de terceiros';\n\n    const extraData = JSON.parse(localStorage.getItem('extra_data'));\n    if (extraData) {\n      this.form.get('pharmacyId').setValue(extraData.pharmacyId);\n    }\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  get file(): UploadFile {\n    return this.form.get('pdf').value;\n  }\n\n  get filename(): string {\n    return this.prescriptionService.filename;\n  }\n\n  set filename(value: string) {\n    this.prescriptionService.filename = value;\n  }\n  @nativeAsync\n  async save() {\n    markFormGroup(this.form);\n    try {\n      if (this.form.valid) {\n        this.loading = true;\n        const consult = await this.bigboostService.consultCpf(this.form.value.cpfBuyer).toPromise();\n        if (consult.erroCodigo) {\n          this.loading = false;\n          if (!Object.values(CpfCnpjApiErrors).includes(consult.erroCodigo)) {\n            this.notification.notify('warning', 'Aviso', consult.erro);\n          } else {\n            this.notification.notify(\n              'warning',\n              'Aviso',\n              'Estamos com problemas no momento, informe o suporte do sistema e tente novamente dentro de alguns minutos.'\n            );\n          }\n          return;\n        }\n\n        const userId = this.user._id;\n        await this.retentionService.saveRetentionOfThirdParties({\n          userId,\n          ...this.form.value\n        });\n        this.loading = false;\n        this.reset();\n        this.notification.notify('success', 'Dados adicionados com sucesso', null);\n      }\n    } catch (err) {\n      this.loading = false;\n      if (err.status === 422) {\n        this.notification.notify(\n          'warning',\n          'Aviso',\n          'Este arquivo não é um PDF assinado digitalmente. Por favor, selecione um arquivo diferente.'\n        );\n      } else if (err.status === 400) {\n        this.notification.notify(\n          'warning',\n          'Aviso',\n          'Apenas permitido receitas gerados fora da plataforma Receita Digital. Tente realizar a dispensação pelo menu \"Dispensar\"'\n        );\n      }\n    }\n  }\n\n  reset() {\n    this.form.get('cpfBuyer').reset();\n    this.form.get('pdf').reset();\n    this.form.get('preWriterRegister').reset();\n  }\n}\n","export default \".mandatory {\\n  color: red;\\n}\";","import { Router } from '@angular/router';\nimport { environment } from '@env/environment';\nimport { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-system-update',\n  templateUrl: './system-update.component.html',\n  styleUrls: ['./system-update.component.scss']\n})\nexport class SystemUpdateComponent implements OnInit {\n  constructor(private router: Router) {}\n\n  ngOnInit() {\n    if (!environment.maintenance) {\n      this.router.navigate(['/']);\n    }\n  }\n}\n","export default \"<div class=\\\"system-update\\\">\\n  <img src=\\\"assets/img/system-update.png\\\" />\\n</div>\\n\";","export default \".system-update img {\\n  height: 100vh;\\n  float: right;\\n}\";","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class EntryGuard implements CanActivate {\n  constructor(private router: Router, private authService: AuthService) {}\n\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n    const user = this.authService.user();\n    if (user) {\n      window.location.href = '/dashboard';\n      return false;\n    }\n    return true;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PreloadAllModules, Router, RouterModule, Routes } from '@angular/router';\nimport { HistoricComponent } from '@app/modules/historic/historic.component';\nimport { AuthGuard } from '@app/shared/guards/auth.guard';\nimport { IsVeterinarianResolver } from '@app/shared/resolvers/is-veterinarian.resolver';\nimport { environment } from '@env/environment';\nimport { MyDataComponent } from './modules/dashboard/my-data/my-data.component';\nimport { RecipeComponent } from './modules/pharmacy/recipe/recipe.component';\nimport { SystemUpdateComponent } from './modules/system-update/system-update.component';\nimport { AppVersionComponent } from './shared/components/AppVersion/AppVersion.component';\nimport { EntryGuard } from './shared/guards/entry.guard';\n\nconst routes: Routes = [\n  {\n    path: '',\n    pathMatch: 'full',\n    loadChildren: () => import('@app/modules/home/home.module').then(m => m.HomeModule)\n  },\n  {\n    path: 'maintenance',\n    component: SystemUpdateComponent\n  },\n  {\n    path: 'p/:code',\n    loadChildren: () =>\n      import('@app/modules/public-document/public-document.module').then(m => m.PublicDocumentModule)\n  },\n  {\n    path: 'entry',\n    canActivate: [EntryGuard],\n    loadChildren: () => import('@app/modules/entry/entry.module').then(m => m.EntryModule)\n  },\n  {\n    path: 'dashboard',\n    canActivate: [AuthGuard],\n    loadChildren: () => import('@app/modules/dashboard/dashboard.module').then(m => m.DashboardModule)\n  },\n  {\n    path: 'patients',\n    canActivate: [AuthGuard],\n    loadChildren: () => import('@app/modules/patients/patients.module').then(m => m.PatientsModule)\n  },\n  // {\n  //   path: 'personalized-medications',\n  //   canActivate: [AuthGuard],\n  //   loadChildren:\n  //     '@app/modules/personalized-medications/personalized-medications.module#PersonalizedMedicationsModule'\n  // },\n  {\n    path: 'doctor',\n    canActivate: [AuthGuard],\n    loadChildren: () =>\n      import('@app/modules/health-professional/health-professional.module').then(\n        m => m.HealthProfessionalModule\n      )\n  },\n  {\n    path: 'dentist',\n    canActivate: [AuthGuard],\n    loadChildren: () =>\n      import('@app/modules/health-professional/health-professional.module').then(\n        m => m.HealthProfessionalModule\n      )\n  },\n  {\n    path: 'prescriber',\n    canActivate: [AuthGuard],\n    loadChildren: () =>\n      import('@app/modules/health-professional/health-professional.module').then(\n        m => m.HealthProfessionalModule\n      )\n  },\n  {\n    path: 'prescription',\n    canActivate: [AuthGuard],\n    loadChildren: () => import('@app/modules/document/document.module').then(m => m.DocumentModule)\n  },\n  {\n    path: 'document',\n    canActivate: [AuthGuard],\n    loadChildren: () =>\n      import('@app/modules/document-v2/document-v2.module').then(m => m.DocumentV2Module),\n    resolve: {\n      isVeterinarian: IsVeterinarianResolver\n    }\n  },\n  {\n    path: 'recipe',\n    loadChildren: () =>\n      import('@app/modules/external-document/external-document.module').then(\n        m => m.ExternalDocumentModule\n      )\n  },\n  {\n    path: 'recipe-v2',\n    loadChildren: () =>\n      import('@app/modules/external-document-v2/external-document-v2.module').then(\n        m => m.ExternalDocumentV2Module\n      )\n  },\n  {\n    path: 'profile',\n    canActivate: [AuthGuard],\n    component: MyDataComponent\n  },\n  {\n    path: 'admin',\n    canActivate: [AuthGuard],\n    loadChildren: () => import('@app/modules/admin/admin.module').then(m => m.AdminModule)\n  },\n  {\n    path: 'historic',\n    canActivate: [AuthGuard],\n    component: HistoricComponent\n  },\n  {\n    path: 'dispensation',\n    canActivate: [AuthGuard],\n    loadChildren: () =>\n      import('@app/modules/dispensation/dispensation.module').then(m => m.DispensationModule)\n  },\n  {\n    path: 'pharmacy/recipe',\n    canActivate: [AuthGuard],\n    component: RecipeComponent\n  },\n  {\n    path: 'pharmacist',\n    canActivate: [AuthGuard],\n    loadChildren: () => import('@app/modules/pharmacist/pharmacist.module').then(m => m.PharmacistModule)\n  },\n  {\n    path: 'favorites',\n    canActivate: [AuthGuard],\n    loadChildren: () =>\n      import('@app/modules/favorite-models/favorite-models.module').then(m => m.FavoriteModelsModule),\n    resolve: {\n      isVeterinarian: IsVeterinarianResolver\n    }\n  },\n  {\n    path: 'pharmacy/filter',\n    loadChildren: () =>\n      import('@app/modules/public-pharmacy/public-pharmacy.module').then(m => m.PublicPharmacyModule)\n  },\n  {\n    path: 'policies',\n    loadChildren: () => import('@app/modules/policies/redirect.module').then(m => m.RedirectModule)\n  },\n  {\n    path: 'version',\n    component: AppVersionComponent\n  },\n  {\n    path: '**',\n    redirectTo: ''\n  }\n];\n\n@NgModule({\n  imports: [\n    CommonModule,\n    RouterModule.forRoot(routes, {\n      preloadingStrategy: PreloadAllModules\n    })\n  ],\n  exports: [RouterModule]\n})\nexport class AppRoutingModule {\n  constructor(private router: Router) {\n    this.router.config.forEach(route => {\n      if (environment.maintenance && route.path !== 'maintenance') {\n        route.redirectTo = 'maintenance';\n      }\n    });\n  }\n}\n","import {\r\n  HttpErrorResponse,\r\n  HttpEvent,\r\n  HttpHandler,\r\n  HttpInterceptor,\r\n  HttpRequest,\r\n  HttpResponse\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AppToastService } from '@app/shared/services/app-toast.service';\r\nimport { ThemeService } from '@app/theme';\r\nimport { environment } from '@env/environment';\r\nimport { LocalStorage } from '@ngx-pwa/local-storage';\r\nimport { Observable } from 'rxjs';\r\nimport { mergeMap } from 'rxjs/internal/operators/mergeMap';\r\nimport { tap } from 'rxjs/operators';\r\nimport { ClientAppService } from '../../modules/external-document/services/client-app.service';\r\nimport { CoreService } from '../services/core.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpInterceptorService implements HttpInterceptor {\r\n  private readonly host = 'api';\r\n\r\n  constructor(\r\n    private localStorage: LocalStorage,\r\n    private notification: AppToastService,\r\n    private router: Router,\r\n    private clientAppService: ClientAppService,\r\n    private coreService: CoreService\r\n  ) {}\r\n\r\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n    let httpRequest = req.clone({\r\n      url: req.url.includes('http') ? req.url : `${this.host}/${req.url}`\r\n    });\r\n\r\n    let params = httpRequest.params;\r\n    for (const key of httpRequest.params.keys()) {\r\n      if (params.get(key) === undefined) {\r\n        params = params.delete(key);\r\n      }\r\n    }\r\n\r\n    httpRequest = httpRequest.clone({ params });\r\n    httpRequest = httpRequest.clone({\r\n      headers: httpRequest.headers.set('ngsw-bypass', 'true')\r\n    });\r\n\r\n    /**\r\n     * Inclusão do tenantId MRD\r\n     */\r\n    if (this.coreService.isMrd) {\r\n      httpRequest = httpRequest.clone({\r\n        headers: httpRequest.headers.set('x-tenant', 'MRD')\r\n      });\r\n    }\r\n\r\n    if (httpRequest.url.includes('/v1')) {\r\n      httpRequest = httpRequest.clone({\r\n        headers: httpRequest.headers.set('x-api-key', environment.envAdminApiKey)\r\n      });\r\n    }\r\n\r\n    if (httpRequest.url.includes('receitadigital.com/medicament')) {\r\n      httpRequest = httpRequest.clone({\r\n        headers: httpRequest.headers\r\n          .set('Authorization', 'Bearer ')\r\n          .set('x-api-key', environment.envKeyMedicament)\r\n      });\r\n    }\r\n\r\n    if (httpRequest.url.includes('receitadigital.com/speciality')) {\r\n      httpRequest = httpRequest.clone({\r\n        headers: httpRequest.headers\r\n          .set('Authorization', 'Bearer ')\r\n          .set('x-api-key', environment.envKeySpecialty)\r\n      });\r\n    }\r\n\r\n    if (this.router.url.startsWith('/recipe')) {\r\n      const apiKey = this.clientAppService.apiKey;\r\n      if (apiKey) {\r\n        httpRequest = httpRequest.clone({\r\n          headers: httpRequest.headers.set('x-api-key', apiKey)\r\n        });\r\n      }\r\n    }\r\n\r\n    const externalApi = this.isExternalApi(httpRequest.url);\r\n\r\n    return this.localStorage.getItem<string>('id_token').pipe(\r\n      mergeMap((idToken: string) => {\r\n        if (idToken && !externalApi) {\r\n          httpRequest = httpRequest.clone({\r\n            headers: httpRequest.headers.set('Authorization', 'Bearer ' + idToken)\r\n          });\r\n        }\r\n        return next.handle(httpRequest).pipe(\r\n          tap(\r\n            (event: HttpEvent<any>) => {\r\n              // if the event is for http response\r\n              if (event instanceof HttpResponse) {\r\n                // set loading to false\r\n              }\r\n            },\r\n            (err: any) => {\r\n              if (\r\n                err instanceof HttpErrorResponse &&\r\n                !err.url.includes('/v1/') &&\r\n                err.status !== 400 &&\r\n                err.status !== 401 &&\r\n                err.status !== 403 &&\r\n                err.status !== 404 &&\r\n                err.status !== 409 &&\r\n                err.status !== 422\r\n              ) {\r\n                const message = err.status\r\n                  ? (err.error || {}).message || err.message || err.error\r\n                  : 'Serviço indisponível no momento.' +\r\n                    ' Por favor verifique sua conexão ou se o problema persistir tente mais tarde.';\r\n                this.notification.notify('warning', 'Aviso', message);\r\n              }\r\n            }\r\n          )\r\n        );\r\n      })\r\n    );\r\n  }\r\n\r\n  private isExternalApi(url: string) {\r\n    return url.includes(environment.plusGApp) || url.includes('/v1');\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\nimport { first } from 'rxjs/operators';\nimport { AppToastService } from './shared/services/app-toast.service';\nimport { SweetalertService } from './shared/services/sweetalert.service';\nimport { SweetAlertResult } from 'sweetalert2';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AppService {\n  // this will be replaced by actual hash post-build.js\n  private _versaoAtual = '{{VERSAO_ATUAL}}';\n\n  /** 5 MINUSTOS */\n  private readonly _TEMPO_VERICACAO_VERSAO = 30000;\n\n  constructor(\n    private http: HttpClient,\n    private notification: AppToastService,\n    private _sweetalertService: SweetalertService\n  ) {}\n\n  /**\n   * Checks in every set frequency the version of frontend application\n   */\n\n  public iniciaVerificacaoVersao() {\n    const env = environment;\n    if (env && env.local) {\n      return;\n    }\n    this.verificaVersao();\n    setInterval(() => this.verificaVersao(), this._TEMPO_VERICACAO_VERSAO);\n  }\n\n  verificaVersao() {\n    const url = `${window.location.origin}/version.json?t=${new Date().getTime()}`;\n    this.http\n      .get(url)\n      .pipe(first())\n      .subscribe(\n        (response: any) => {\n          if (!response || (response && !response.hash)) {\n            return;\n          }\n          const versao = response.hash;\n          const versaoIsAlteradao: boolean = this.versaoIsAlterada(this._versaoAtual, versao);\n          if (versaoIsAlteradao) {\n            console.warn('NOVA VERSÃO DETECTADA: ', response.hash);\n\n            this._sweetalertService\n              .confirmDialog(\n                'NOVA VERSÃO DETECTADA',\n                `Uma nova versão do sistema foi disponibilizada, a página precisa ser recarregada!`,\n                'warning'\n              )\n              .then(({ isConfirmed }: SweetAlertResult) => {\n                if (isConfirmed) {\n                  location.reload();\n                } else {\n                  this.notification.notify(\n                    'warning',\n                    'Você optou por cancelar a atualização da plataforma.',\n                    'Esta ação poderá acarretar problemas na aplicação. Salve seus documentos e atualize a página clicando na tecla F5 no computador ou deslize o dedo para baixo de estiver navegando em um dispositivo mobile.',\n                    50000\n                  );\n                }\n              });\n          }\n          this._versaoAtual = versao;\n        },\n        err => console.error('não foi possível obter a versão', err)\n      );\n  }\n\n  private versaoIsAlterada(versaoAtual: string, novaVersao: string): boolean {\n    if (!versaoAtual || versaoAtual === '{{VERSAO_ATUAL}}') {\n      return false;\n    }\n    return versaoAtual !== novaVersao;\n  }\n}\n","import { Location } from '@angular/common';\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n  NavigationCancel,\n  NavigationEnd,\n  NavigationError,\n  NavigationStart,\n  Router\n} from '@angular/router';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AppService } from './app.service';\nimport { ThemeService } from './theme';\nimport { AuthService } from './core/services/auth.service';\n\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html',\n  styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit, OnDestroy {\n  route: string;\n  loading = false;\n\n  private destroyed$: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\n\n  constructor(\n    private _location: Location,\n    private router: Router,\n    private themeService: ThemeService,\n    private titleService: Title,\n    private readonly _appService: AppService,\n    private cdf: ChangeDetectorRef,\n    public _authService: AuthService\n  ) {\n    this.router.events.pipe(takeUntil(this.destroyed$)).subscribe(ev => {\n      if (this._location.path() === '') {\n        this.route = 'home';\n      } else {\n        this.route = this._location.path();\n      }\n\n      if (ev instanceof NavigationStart) {\n        this.loading = true;\n        this.cdf.detectChanges();\n      }\n\n      if (\n        ev instanceof NavigationEnd ||\n        ev instanceof NavigationCancel ||\n        ev instanceof NavigationError\n      ) {\n        this.loading = false;\n        this.cdf.detectChanges();\n      }\n    });\n\n    const favicon: HTMLLinkElement = document.querySelector('#favicon');\n    const theme = this.themeService.getActiveTheme();\n    favicon.href = theme.favicon;\n    this.titleService.setTitle(theme.title);\n  }\n  ngOnInit(): void {\n    this._appService.iniciaVerificacaoVersao();\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed$.next(true);\n    this.destroyed$.complete();\n  }\n}\n","export default \"<div class=\\\"page-container\\\" theme>\\n  <div class=\\\"content-wrap\\\">\\n    <app-navbar *ngIf=\\\"route?.includes('home') || route?.includes('update')\\\"></app-navbar>\\n    <main class=\\\"container-fluid\\\" [class.p-0]=\\\"route !== 'home'\\\" [class.pr-0]=\\\"route === 'home'\\\">\\n      <main>\\n        <router-outlet></router-outlet>\\n      </main>\\n    </main>\\n  </div>\\n  <app-footer\\n    *ngIf=\\\"\\n      !route?.includes('entry/register/pharmacy') &&\\n      !route?.includes('entry/register/patient') &&\\n      !route?.includes('entry/register/doctor') &&\\n      !route?.includes('entry/register/dentist') &&\\n      !route?.includes('new-prescription') &&\\n      !route?.includes('prescription/') &&\\n      !route?.includes('recipe/') &&\\n      !route?.includes('recipe-v2') &&\\n      !route?.includes('pharmacist/new') &&\\n      !route?.includes('add-commercial-data') &&\\n      !route?.includes('dispensation') &&\\n      !route?.includes('document') &&\\n      !route?.includes('prescription-new')\\n    \\\"\\n  ></app-footer>\\n</div>\\n<app-usuario-inativo *ngIf=\\\"_authService.isLoggedIn\\\"></app-usuario-inativo>\\n<ngx-loading\\n  *ngIf=\\\"_authService.isLoggedIn\\\"\\n  [show]=\\\"loading\\\"\\n  [config]=\\\"{ backdropBorderRadius: '3px' }\\\"\\n></ngx-loading>\\n\";","export default \":host {\\n  margin: 0;\\n  padding: 0;\\n  height: 100vh;\\n  width: 100vw;\\n  overflow-x: none;\\n  box-sizing: border-box;\\n  flex: 1;\\n}\\n\\n.page-container {\\n  position: relative;\\n  height: 100vh;\\n}\\n\\n.page-container .content-wrap {\\n  overflow-y: auto;\\n  height: calc(100vh - 3.125rem);\\n}\";","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n  selector: 'app-select-prescription',\r\n  templateUrl: './select-prescription.component.html',\r\n  styleUrls: ['./select-prescription.component.scss']\r\n})\r\nexport class SelectPrescriptionComponent implements OnInit {\r\n  constructor(public activeModal: NgbActiveModal) {}\r\n\r\n  ngOnInit() {}\r\n\r\n  closeModal() {\r\n    this.activeModal.close('Modal Fechado');\r\n  }\r\n}\r\n","export default \"<div class=\\\"modal-header\\\">\\r\\n  <h4 class=\\\"modal-title\\\">Modal Title</h4>\\r\\n  <button type=\\\"button\\\" class=\\\"close\\\" aria-label=\\\"Close\\\" (click)=\\\"activeModal.dismiss('Cross click')\\\">\\r\\n  </button>\\r\\n</div>\\r\\n<div class=\\\"modal-body\\\">\\r\\n  <p>My modal content</p>\\r\\n</div>\\r\\n<div class=\\\"modal-footer\\\">\\r\\n  <button (click)=\\\"activeModal.dismiss('Close clicked')\\\">\\r\\n    Close Clicked\\r\\n  </button>\\r\\n</div>\";","export default \"\";","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-user',\r\n  templateUrl: './user.component.html',\r\n  styleUrls: ['./user.component.scss']\r\n})\r\nexport class UserComponent implements OnInit {\r\n  constructor() {}\r\n\r\n  ngOnInit() {}\r\n}\r\n","export default \"<p>\\r\\n  user works!\\r\\n</p>\\r\\n\";","export default \"\";","import { registerLocaleData } from '@angular/common';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport localePt from '@angular/common/locales/pt';\nimport { LOCALE_ID, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { AppRoutingModule } from '@app/app-routing.module';\nimport { CoreModule } from '@app/core';\nimport { HttpInterceptorService } from '@app/core/interceptors/http-interceptor.service';\nimport { SystemUpdateComponent } from '@app/modules/system-update/system-update.component';\nimport { SharedModule } from '@app/shared';\nimport { JwtModule } from '@auth0/angular-jwt';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { NZ_I18N, NgZorroAntdModule, en_US } from 'ng-zorro-antd';\nimport { AvatarModule } from 'ngx-avatar';\nimport { BsModalRef, ModalModule } from 'ngx-bootstrap/modal';\nimport { NgxLoadingModule } from 'ngx-loading';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { NgxPhotoEditorModule } from 'ngx-photo-editor';\nimport { AppComponent } from './app.component';\nimport { DashboardModule } from './modules/dashboard/dashboard.module';\nimport { ModalDependentFormComponent } from './modules/dashboard/modal-dependent-form/modal-dependent-form.component';\nimport { ModalEditAddressDataComponent } from './modules/dashboard/modal-edit-address-data/modal-edit-address-data.component';\nimport { ModalEditPersonalDataComponent } from './modules/dashboard/modal-edit-personal-data/modal-edit-personal-data.component';\nimport { ModalEditPharmacyCovidComponent } from './modules/dashboard/modal-edit-pharmacy-covid/modal-edit-pharmacy-covid.component';\nimport { MyDataComponent } from './modules/dashboard/my-data/my-data.component';\nimport { DispensationModule } from './modules/dispensation/dispensation.module';\nimport { ModalAlertComponent } from './modules/dispensation/modal-alert/modal-alert.component';\nimport { ModalDispentionComponent } from './modules/dispensation/modal-dispention/modal-dispention.component';\nimport { EntryModule } from './modules/entry/entry.module';\nimport { HistoricModule } from './modules/historic/historic.module';\nimport { SelectPrescriptionComponent } from './modules/model/select-prescription/select-prescription.component';\nimport { RecipeComponent } from './modules/pharmacy/recipe/recipe.component';\nimport { UserComponent } from './modules/user/user.component';\n\nregisterLocaleData(localePt, 'pt-BR');\n\nexport function tokenGetter() {\n  return localStorage.getItem('token');\n}\n\n@NgModule({\n  declarations: [\n    AppComponent,\n    ModalAlertComponent,\n    ModalDependentFormComponent,\n    ModalDispentionComponent,\n    ModalEditAddressDataComponent,\n    ModalEditPersonalDataComponent,\n    ModalEditPharmacyCovidComponent,\n    MyDataComponent,\n    RecipeComponent,\n    SelectPrescriptionComponent,\n    SystemUpdateComponent,\n    UserComponent\n  ],\n  imports: [\n    AppRoutingModule,\n    AvatarModule,\n    BrowserAnimationsModule,\n    BrowserModule,\n    CoreModule,\n    SharedModule,\n    DashboardModule,\n    DispensationModule,\n    EntryModule,\n    FormsModule,\n    HistoricModule,\n    HttpClientModule,\n    JwtModule.forRoot({ config: { tokenGetter } }),\n    ModalModule.forRoot(),\n    NgxLoadingModule.forRoot({}),\n    NgxMaskModule.forRoot(),\n    NgxPhotoEditorModule,\n    NgZorroAntdModule\n  ],\n  providers: [\n    BsModalRef,\n    NgbActiveModal,\n    {\n      provide: HTTP_INTERCEPTORS,\n      useClass: HttpInterceptorService,\n      multi: true\n    },\n    {\n      provide: LOCALE_ID,\n      useValue: 'pt-BR'\n    },\n    { provide: NZ_I18N, useValue: en_US }\n  ],\n  bootstrap: [AppComponent]\n})\nexport class AppModule {}\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n  enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic()\r\n  .bootstrapModule(AppModule)\r\n  .catch(err => console.error(err));\r\n"]}