{"version":3,"sources":["src/app/shared/components/file-viewer/file-viewer.component.html","src/app/shared/components/file-viewer/file-viewer.component.ts","src/app/shared/components/dialogs/map-dialog/map-dialog.component.ts","src/app/shared/components/dialogs/map-dialog/map-dialog.component.html","src/app/modules/widget/pages/search/search.component.ts","src/app/modules/widget/pages/search/search.component.html","src/app/modules/widget/widget-routing.module.ts","src/app/modules/widget/widget.module.ts","src/app/shared/components/not-found/not-found.component.ts","src/app/shared/components/not-found/not-found.component.html","src/app/shared/models/people/profile-filter-search-result.model.ts","src/app/shared/models/workflow/states/online-appointment-cliniweb-state.model.ts","src/app/shared/components/form/form.component.ts","src/app/shared/components/form/form.component.html","src/app/core/services/requests-to-verify.service.ts","src/app/shared/components/search/search-doctors.component.html","src/app/shared/components/search/search-doctors.component.ts","src/app/shared/components/user-payments/user-payments-list/user-payments-list.component.ts","src/app/shared/components/user-payments/user-payments-list/user-payments-list.component.html","src/app/shared/directives/disable-auto-focus-if-mobile.directive.ts","src/app/shared/components/datepicker-flat-field/datepicker-flat-field.component.html","src/app/shared/components/datepicker-flat-field/datepicker-flat-field.component.ts","src/app/shared/validators/max-min-date.validator.ts","src/app/core/services/document.service.ts","src/app/shared/enums/legal-agreements-type.enum.ts","src/app/shared/enums/system-areas.enum.ts","src/app/shared/decorators/workflow-lookup.decorator.ts","src/app/shared/pipes/i18n-text.pipe.ts","src/app/shared/pipes/safe-url.pipe.ts","src/app/shared/models/workflow/models/patient-form-appointment-data.model.ts","src/app/shared/components/dialogs/cancel-virtual-attention/cancel-virtual-attention-dialog.component.ts","src/app/shared/components/dialogs/cancel-virtual-attention/cancel-virtual-attention-dialog.component.html","src/app/shared/components/spinner/spinner.component.ts","src/app/shared/components/spinner/spinner.component.html","src/app/shared/models/people/user-person.model.ts","src/app/core/services/workflow.service.ts","src/app/shared/enums/medical-request-type.enum.ts","src/app/shared/material.module.ts","src/app/shared/enums/direction.enum.ts","src/app/core/services/directory.service.ts","src/app/shared/models/systems/portal-phr.model.ts","src/app/core/services/auth.service.ts","src/app/shared/components/dialogs/route-dialog/route-dialog.component.ts","src/app/shared/components/dialogs/route-dialog/route-dialog.component.html","src/app/shared/components/chat/chat.component.ts","src/app/shared/components/chat/chat.component.html","src/app/modules/login/login.service.ts","src/environments/environment.ts","src/app/shared/models/systems/territorial-division.model.ts","src/app/shared/components/email-callback/email-callback.component.ts","src/app/shared/components/email-callback/email-callback.component.html","src/app/shared/enums/component-name.enum.ts","src/themes lazy ^\\.\\/.*\\/theme\\.js$ namespace object","src/app/shared/pipes/age-from-birthday.pipe.ts","src/app/shared/models/token.model.ts","src/app/core/services/payment-service.ts","src/app/shared/validators/custom-email.validator.ts","src/app/shared/directives/dynamic-host.directive.ts","src/app/shared/enums/signup-workflow-verification.enum.ts","src/app/shared/components/appointment-info-checkout/appointment-info-checkout.component.ts","src/app/shared/components/appointment-info-checkout/appointment-info-checkout.component.html","src/app/shared/models/workflow/models/appointment-summary-data.model.ts","src/app/shared/components/company-logo/company-logo.component.ts","src/app/shared/components/company-logo/company-logo.component.html","src/app/shared/components/learn-more/learn-more.component.ts","src/app/shared/components/learn-more/learn-more.component.html","src/app/shared/models/people/person.model.ts","src/app/shared/enums/container-type.enum.ts","src/app/shared/components/dependent/view-dependent/view-dependent.component.ts","src/app/shared/components/dependent/view-dependent/view-dependent.component.html","src/app/shared/pipes/safe-html.pipe.ts","src/app/shared/directives/touch-move-listener.directive.ts","src/app/shared/models/workflow/models/patient-verification-data.model.ts","src/app/core/services/territorial-divisions.service.ts","src/app/core/services/prints.service.ts","src/app/shared/components/medical-order/summary-medical-order/summary-order-sign/summary-order-sign.component.html","src/app/shared/components/medical-order/summary-medical-order/summary-order-sign/summary-order-sign.component.ts","src/app/shared/components/medical-order/summary-medical-order/summary-order-concept-value/summary-order-concept-value.component.html","src/app/shared/components/medical-order/summary-medical-order/summary-order-concept-value/summary-order-concept-value.component.ts","src/app/core/services/navigation.service.ts","src/app/shared/components/medical-order/summary-medical-order/summary-order-download-button/summary-order-download-button.component.html","src/app/shared/components/medical-order/summary-medical-order/summary-order-download-button/summary-order-download-button.component.ts","src/app/shared/components/medical-order/summary-medical-order/summary-order-footer/summary-order-footer.component.html","src/app/shared/components/medical-order/summary-medical-order/summary-order-footer/summary-order-footer.component.ts","src/app/shared/components/medical-order/summary-medical-order/summary-medical-order.component.html","src/app/shared/components/medical-order/summary-medical-order/summary-medical-order.component.ts","src/app/core/services/signalR/chat-signalr.service.ts","src/app/shared/models/login-response.model.ts","src/app/core/services/message-bus.service.ts","src/app/shared/decorators/debounce.decorator.ts","src/app/shared/animations.ts","src/app/shared/enums/state-type.enum.ts","src/app/shared/components/menu/profile/profile-menu.component.ts","src/app/shared/components/menu/profile/profile-menu.component.html","src/app/shared/components/country-form/country-form.component.ts","src/app/shared/components/country-form/country-form.component.html","src/app/core/services/utils.service.ts","src/app/shared/models/process/workflow-initial-data.model.ts","src/app/shared/components/dialogs/cancel-appointment/cancel-appointment-dialog.component.html","src/app/shared/components/dialogs/cancel-appointment/cancel-appointment-dialog.component.ts","src/app/shared/components/appointments/future-appointments/future-appointments.component.html","src/app/shared/components/appointments/future-appointments/future-appointments.component.ts","src/app/shared/components/timeline-list/timeline-list.component.html","src/app/shared/components/timeline-list/timeline-list.component.ts","src/app/shared/components/appointments/past-appointments/past-appointments.component.html","src/app/shared/components/appointments/past-appointments/past-appointments.component.ts","src/app/shared/components/appointments/cancelled-appointments/cancelled-appointments.component.html","src/app/shared/components/appointments/cancelled-appointments/cancelled-appointments.component.ts","src/app/shared/components/appointments/appointment-tabs/appointment-tabs.component.html","src/app/shared/components/appointments/appointment-tabs/appointment-tabs.component.ts","src/app/shared/components/dialogs/menu-mobile/menu-mobile.component.ts","src/app/shared/components/dialogs/menu-mobile/menu-mobile.component.html","src/app/shared/components/dialogs/profile-menu-dialog/profile-menu-dialog.component.ts","src/app/shared/components/dialogs/profile-menu-dialog/profile-menu-dialog.component.html","src/app/shared/components/menu/logged-in-menu-button/logged-in-menu-button.component.ts","src/app/shared/components/menu/logged-in-menu-button/logged-in-menu-button.component.html","src/app/shared/components/menu/anonymous-language-menu/anonymous-language-menu.component.html","src/app/shared/components/menu/anonymous-language-menu/anonymous-language-menu.component.ts","src/app/shared/components/menu/anonymous-login-signup-menu/anonymous-login-signup-menu.component.ts","src/app/shared/components/menu/anonymous-login-signup-menu/anonymous-login-signup-menu.component.html","src/app/shared/components/menu/anonymous-menu/anonymous-menu.component.html","src/app/shared/components/menu/anonymous-menu/anonymous-menu.component.ts","src/app/shared/components/headers/header/header.component.html","src/app/shared/components/headers/header/header.component.ts","src/app/shared/components/menu/policy/policy-menu-content.component.html","src/app/shared/components/menu/policy/policy-menu-content.component.ts","src/app/shared/components/menu/policy/policy-menu.component.html","src/app/shared/components/menu/policy/policy-menu.component.ts","src/app/shared/components/headers/header-sura/header-sura.component.html","src/app/shared/components/headers/header-sura/header-sura.component.ts","src/app/shared/components/linkboxs/virtual-consultation-linkbox/virtual-consultation-linkbox.component.ts","src/app/shared/components/linkboxs/virtual-consultation-linkbox/virtual-consultation-linkbox.component.html","src/app/shared/components/linkboxs/medical-appointments-linkbox/medical-appointments-linkbox.component.ts","src/app/shared/components/linkboxs/medical-appointments-linkbox/medical-appointments-linkbox.component.html","src/app/shared/components/linkboxs/results-linkbox/results-linkbox.component.ts","src/app/shared/components/linkboxs/results-linkbox/results-linkbox.component.html","src/app/shared/components/linkboxs/historia-clinica-linkbox/historia-clinica-linkbox.component.ts","src/app/shared/components/linkboxs/historia-clinica-linkbox/historia-clinica-linkbox.component.html","src/app/shared/components/unread-clinical-exam/unread-clinical-exam.component.ts","src/app/shared/components/unread-clinical-exam/unread-clinical-exam.component.html","src/app/shared/models/cdr/clinic-concept.model.ts","src/app/core/services/clinical-concept.service.ts","src/app/shared/components/select-symptoms/select-symptoms.component.html","src/app/shared/components/select-symptoms/select-symptoms.component.ts","src/app/shared/pipes/order-by.pipe.ts","src/app/shared/components/menu-link/menu-link.component.html","src/app/shared/components/menu-link/menu-link.component.ts","src/app/shared/components/menu/menu.component.html","src/app/shared/components/menu/menu.component.ts","src/app/shared/components/my-health/my-health.component.html","src/app/shared/components/my-health/my-health.component.ts","src/app/shared/components/menu/cliniweb-menu/cliniweb-menu.component.html","src/app/shared/components/menu/cliniweb-menu/cliniweb-menu.component.ts","src/app/shared/components/dialogs/chat-history-dialog/chat-history-dialog.component.html","src/app/shared/components/dialogs/chat-history-dialog/chat-history-dialog.component.ts","src/app/shared/components/virtual-consultation/past-virtual-consultation/past-virtual-consultation.component.html","src/app/shared/components/virtual-consultation/past-virtual-consultation/past-virtual-consultation.component.ts","src/app/shared/components/virtual-consultation/virtual-consultation-tabs/virtual-consultation-tabs.component.html","src/app/shared/components/virtual-consultation/virtual-consultation-tabs/virtual-consultation-tabs.component.ts","src/app/shared/models/people/clinic-history-configuration.model.ts","src/app/shared/components/clinic-history/clinic-history-tabs/clinic-history-tabs.component.html","src/app/shared/components/clinic-history/clinic-history-tabs/clinic-history-tabs.component.ts","src/app/shared/enums/group-concept.enum.ts","src/app/shared/components/clinic-history/attention-history/attention-history.component.html","src/app/shared/components/clinic-history/attention-history/attention-history.component.ts","src/app/shared/components/clinic-history/medicines/medicines.component.html","src/app/shared/components/clinic-history/medicines/medicines.component.ts","src/app/shared/components/clinic-history/medical-history/medical-history.component.html","src/app/shared/components/clinic-history/medical-history/medical-history.component.ts","src/app/shared/components/autocomplete-multiple-selection/autocomplete-multiple-selection.component.html","src/app/shared/components/autocomplete-multiple-selection/autocomplete-multiple-selection.component.ts","src/app/shared/components/clinic-history/share-dialog/share-dialog.component.html","src/app/shared/components/clinic-history/share-dialog/share-dialog.component.ts","src/app/shared/components/clinic-history/clinic-history-share/clinic-history-share.component.ts","src/app/shared/components/clinic-history/clinic-history-share/clinic-history-share.component.html","src/app/shared/components/clinic-history/studies-laboratories/studies-laboratories.component.html","src/app/shared/components/clinic-history/studies-laboratories/studies-laboratories.component.ts","src/app/shared/components/headers/header-mapfre-panama/header-mapfre-panama.component.ts","src/app/shared/components/headers/header-mapfre-panama/header-mapfre-panama.component.html","src/app/shared/enums/class-concept.enum.ts","src/app/shared/models/search-results/search-parameters.model.ts","src/app/shared/components/search-results/search-providers/search-providers.component.html","src/app/shared/components/search-results/search-providers/search-providers.component.ts","src/app/shared/components/search-results/search-result-title/search-result-title.component.ts","src/app/shared/components/search-results/search-result-title/search-result-title.component.html","src/app/shared/components/search-results/provider-filters/provider-filters-dialog/provider-filters-dialog.component.ts","src/app/shared/components/search-results/provider-filters/provider-filters-dialog/provider-filters-dialog.component.html","src/app/shared/components/search-results/provider-filters/provider-filters-content/provider-filters-content.component.html","src/app/shared/components/search-results/provider-filters/provider-filters-content/provider-filters-content.component.ts","src/app/shared/components/search-results/provider-card/provider-card.component.html","src/app/shared/components/search-results/provider-card/provider-card.component.ts","src/app/shared/components/search-results/search-results/search-results.component.html","src/app/shared/components/search-results/search-results/search-results.component.ts","src/app/shared/components/menu/unlicensed-menu/unlicensed-menu.component.html","src/app/shared/components/menu/unlicensed-menu/unlicensed-menu.component.ts","src/app/shared/components/headers/header-town-center/header-town-center.component.html","src/app/shared/components/headers/header-town-center/header-town-center.component.ts","src/app/shared/components/headers/header-hospital-paitilla/header-hospital-paitilla.component.html","src/app/shared/components/headers/header-hospital-paitilla/header-hospital-paitilla.component.ts","src/app/shared/components/headers/header-chsf-phr/header-chsf-phr.component.html","src/app/shared/components/headers/header-chsf-phr/header-chsf-phr.component.ts","src/app/shared/components/headers/header-chpanamericano-phr/header-chpanamericano-phr.component.html","src/app/shared/components/headers/header-chpanamericano-phr/header-chpanamericano-phr.component.ts","src/app/shared/components/headers/header-hsantafe-phr/header-hsantafe-phr.component.html","src/app/shared/components/headers/header-hsantafe-phr/header-hsantafe-phr.component.ts","src/app/shared/components/headers/header-pacifica-salud-phr/header-pacifica-salud-phr.component.html","src/app/shared/components/headers/header-pacifica-salud-phr/header-pacifica-salud-phr.component.ts","src/app/shared/models/systems/workflow.model.ts","src/app/shared/components/workflows/workflow-progress-bar/workflow-progress-bar.component.html","src/app/shared/components/workflows/workflow-progress-bar/workflow-progress-bar.component.ts","src/app/shared/enums/workflow-step-name.enum.ts","src/app/shared/models/workflow/steps/base-step.model.ts","src/app/shared/models/workflow/models/authentication-data.model.ts","src/app/shared/models/workflow/steps/authentication-step.model.ts","src/app/shared/models/workflow/steps/select-country-step.model.ts","src/app/shared/models/workflow/models/select-patient-data.model.ts","src/app/shared/models/workflow/steps/select-patient-appointment-checkout-step.model.ts","src/app/shared/models/workflow/steps/patient-form-appointment-checkout-step.model.ts","src/app/shared/models/workflow/models/select-patient-relationship-data.model.ts","src/app/shared/models/workflow/steps/select-patient-relationship-appointment-checkout-step.model.ts","src/app/shared/models/workflow/models/patient-contact-form-data.model.ts","src/app/shared/models/workflow/steps/patient-contact-form-appointment-checkout-step.model.ts","src/app/shared/models/workflow/steps/summary-appointment-checkout-step.model.ts","src/app/shared/components/payment-amount/payment-amount.component.html","src/app/shared/components/payment-amount/payment-amount.component.ts","src/app/shared/models/workflow/steps/payment/payment-amount-step.model.ts","src/app/shared/pipes/intl-tel-input-placeholder.pipe.ts","src/app/shared/components/payment/payment.component.html","src/app/shared/components/payment/payment.component.ts","src/app/shared/models/workflow/steps/payment/payment-form-step.model.ts","src/app/shared/models/workflow/steps/patient-verification-step.model.ts","src/app/shared/models/workflow/steps/medical-orders/summary-medical-order-step.model.ts","src/app/shared/models/workflow/models/select-patient-relationship.model.ts","src/app/shared/models/workflow/steps/select-patient-relationship-step.model.ts","src/app/shared/models/workflow/models/create-patient-relationship-data.model.ts","src/app/shared/models/workflow/steps/create-patient-relationship-step.model.ts","src/app/core/services/workflow-step.service.ts","src/app/shared/components/workflows/base-workflow/base-workflow.component.ts","src/app/shared/components/logout-bar/logout-bar.component.html","src/app/shared/components/logout-bar/logout-bar.component.ts","src/app/shared/components/workflows/online-appointment-cliniweb/online-appointment-cliniweb.component.html","src/app/shared/components/workflows/online-appointment-cliniweb/online-appointment-cliniweb.component.ts","src/app/shared/components/dialogs/loading-dialog/loading-dialog.component.html","src/app/shared/components/dialogs/loading-dialog/loading-dialog.component.ts","src/app/shared/components/workflows/online-payment/online-payment-workflow.component.html","src/app/shared/components/workflows/online-payment/online-payment-workflow.component.ts","src/app/shared/components/cola-goblo-dialogo/cola-goblo-dialogo.component.ts","src/app/shared/components/cola-goblo-dialogo/cola-goblo-dialogo.component.html","src/app/shared/components/authentication/authentication.component.html","src/app/shared/components/authentication/authentication.component.ts","src/app/shared/components/dialogs/appointment-info-dialog/appointment-info-dialog.component.ts","src/app/shared/components/dialogs/appointment-info-dialog/appointment-info-dialog.component.html","src/app/shared/components/select-patient-appointment-checkout/select-patient-appointment-checkout.component.html","src/app/shared/components/select-patient-appointment-checkout/select-patient-appointment-checkout.component.ts","src/app/shared/validators/person-name.validator.ts","src/app/shared/validators/gender.validator.ts","src/app/shared/components/patient-form-appointment-checkout/patient-form-appointment-checkout.component.html","src/app/shared/components/patient-form-appointment-checkout/patient-form-appointment-checkout.component.ts","src/app/shared/components/select-patient-relationship-appointment-checkout/select-patient-relationship-appointment-checkout.component.html","src/app/shared/components/select-patient-relationship-appointment-checkout/select-patient-relationship-appointment-checkout.component.ts","src/app/core/services/keyboard.service.ts","src/app/shared/components/patient-contact-form-appointment-checkout/patient-contact-form-appointment-checkout.component.html","src/app/shared/components/patient-contact-form-appointment-checkout/patient-contact-form-appointment-checkout.component.ts","src/app/shared/components/headers/route-dialog-headers/public-profile-header/public-profile-header.component.html","src/app/shared/components/headers/route-dialog-headers/public-profile-header/public-profile-header.component.ts","src/app/shared/components/headers/route-dialog-headers/default-header/default-header.component.ts","src/app/shared/components/headers/route-dialog-headers/default-header/default-header.component.html","src/app/shared/components/headers/route-dialog-headers/default-back-header/default-back-header.component.ts","src/app/shared/components/headers/route-dialog-headers/default-back-header/default-back-header.component.html","src/app/shared/components/headers/route-dialog-headers/default-back-with-link-header/default-back-with-link-header.component.ts","src/app/shared/components/headers/route-dialog-headers/default-back-with-link-header/default-back-with-link-header.component.html","src/app/shared/components/linkboxs/cliniweb-medical-appointments-linkbox/cliniweb-medical-appointments-linkbox.component.ts","src/app/shared/components/linkboxs/cliniweb-medical-appointments-linkbox/cliniweb-medical-appointments-linkbox.component.html","src/app/core/services/search-providers.service.ts","src/app/shared/components/linkboxs/cliniweb-book-appointment-linkbox/cliniweb-book-appointment-linkbox.component.ts","src/app/shared/components/linkboxs/cliniweb-book-appointment-linkbox/cliniweb-book-appointment-linkbox.component.html","src/app/shared/components/latest-doctors/latest-doctors.component.html","src/app/shared/components/latest-doctors/latest-doctors.component.ts","src/app/shared/components/most-common-specialties/most-common-specialties.component.ts","src/app/shared/components/most-common-specialties/most-common-specialties.component.html","src/app/shared/components/health-allies/health-allies.component.html","src/app/shared/components/health-allies/health-allies.component.ts","src/app/shared/components/preventive-control-tips/preventive-control-tips.component.ts","src/app/shared/components/preventive-control-tips/preventive-control-tips.component.html","src/app/shared/components/home-layouts/cliniweb-home-layout/cliniweb-home-layout.component.html","src/app/shared/components/home-layouts/cliniweb-home-layout/cliniweb-home-layout.component.ts","src/app/shared/components/cliniweb-appointments/cliniweb-future-appointments/cliniweb-future-appointments.component.html","src/app/shared/components/cliniweb-appointments/cliniweb-future-appointments/cliniweb-future-appointments.component.ts","src/app/shared/components/cliniweb-appointments/cliniweb-past-appointments/cliniweb-past-appointments.component.html","src/app/shared/components/cliniweb-appointments/cliniweb-past-appointments/cliniweb-past-appointments.component.ts","src/app/shared/components/cliniweb-appointments/cliniweb-appointment-tabs/cliniweb-appointment-tabs.component.html","src/app/shared/components/cliniweb-appointments/cliniweb-appointment-tabs/cliniweb-appointment-tabs.component.ts","src/app/shared/models/search-results/search-providers-configuration.model.ts","src/app/shared/components/search-results/search-providers-v2/search-providers-v2.component.html","src/app/shared/components/search-results/search-providers-v2/search-providers-v2.component.ts","src/app/shared/components/headers/route-dialog-headers/default-logo-header/default-logo-header.component.ts","src/app/shared/components/headers/route-dialog-headers/default-logo-header/default-logo-header.component.html","src/app/shared/components/dropdown/dropdown-trigger-for.directive.ts","src/app/shared/components/dropdown/dropdown.component.html","src/app/shared/components/dropdown/dropdown.component.ts","src/app/shared/components/check-autocomplete/check-autocomplete.component.html","src/app/shared/components/check-autocomplete/check-autocomplete.component.ts","src/app/shared/components/search-results/provider-filters/provider-filters-body/provider-filters-body.component.html","src/app/shared/components/search-results/provider-filters/provider-filters-body/provider-filters-body.component.ts","src/app/shared/components/headers/public-profile-header/public-profile-header.component.html","src/app/shared/components/headers/public-profile-header/public-profile-header.component.ts","src/app/shared/components/country-form-checkout/country-form-checkout.component.ts","src/app/shared/components/country-form-checkout/country-form-checkout.component.html","src/app/shared/models/systems/resquest-to-verify-update.model.ts","src/app/shared/components/workflows/medical-order-workflow/medical-order-workflow.component.html","src/app/shared/components/workflows/medical-order-workflow/medical-order-workflow.component.ts","src/app/shared/components/medical-order/patient-verification/patient-verification.component.html","src/app/shared/components/medical-order/patient-verification/patient-verification.component.ts","src/app/shared/components/my-medical-orders/my-medical-orders-empty-state/my-medical-orders-empty-state.component.ts","src/app/shared/components/my-medical-orders/my-medical-orders-empty-state/my-medical-orders-empty-state.component.html","src/app/shared/components/my-medical-orders/my-medical-orders.component.html","src/app/shared/components/my-medical-orders/my-medical-orders.component.ts","src/app/shared/models/clinic-history/growth-measurement-type.model.ts","src/app/core/services/growth-measurements.service.ts","src/app/shared/enums/person-gender.enum.ts","src/app/shared/components/growth-charts/growth-charts-tab-data-type/growth-charts-tab-data-type.component.ts","src/app/shared/components/growth-charts/growth-charts-tab-data-type/growth-charts-tab-data-type.component.html","src/app/shared/components/growth-charts/growth-charts-tab/growth-charts-tab.component.html","src/app/shared/components/growth-charts/growth-charts-tab/growth-charts-tab.component.ts","src/app/shared/components/growth-charts/growth-charts.component.html","src/app/shared/components/growth-charts/growth-charts.component.ts","src/app/shared/components/workflows/growth-curves-workflow/growth-curves-workflow.component.html","src/app/shared/components/workflows/growth-curves-workflow/growth-curves-workflow.component.ts","src/app/shared/components/select-patient-relationship/select-patient-relationship.component.html","src/app/shared/components/select-patient-relationship/select-patient-relationship.component.ts","src/app/shared/components/create-patient-relationship/create-patient-relationship.component.html","src/app/shared/components/create-patient-relationship/create-patient-relationship.component.ts","src/app/shared/components/search-results/provider-card/provider-card-contacts/provider-card-contacts.component.html","src/app/shared/components/search-results/provider-card/provider-card-contacts/provider-card-contacts.component.ts","src/app/shared/components/search-results/provider-card/provider-card-location/provider-card-location.component.html","src/app/shared/components/search-results/provider-card/provider-card-location/provider-card-location.component.ts","src/app/shared/components/search-results/provider-card/provider-card-profile/provider-card-profile.component.html","src/app/shared/components/search-results/provider-card/provider-card-profile/provider-card-profile.component.ts","src/app/shared/shared.module.ts","src/app/shared/pipes/custom-currency.pipe.ts","src/app/core/services/http-base-service.ts","src/app/shared/components/dialogs/file-viewer-dialog/file-viewer-dialog.component.ts","src/app/shared/components/dialogs/file-viewer-dialog/file-viewer-dialog.component.html","src/app/shared/components/dialogs/bottom-sheet-menu/bottom-sheet-menu.component.ts","src/app/shared/components/dialogs/bottom-sheet-menu/bottom-sheet-menu.component.html","src/app/modules/home/pages/home/home.component.ts","src/app/modules/home/pages/home/home.component.html","src/app/core/services/iframe-message.service.ts","src/app/shared/models/process/base-request.model.ts","node_modules/moment/locale sync ^\\.\\/.*$","src/app/core/services/chat-service.ts","src/app/shared/pipes/highlight.pipe.ts","src/app/shared/components/dialogs/legal-agreements-dialog/legal-agreements-dialog.component.ts","src/app/shared/components/dialogs/legal-agreements-dialog/legal-agreements-dialog.component.html","src/app/shared/models/systems/directory.model.ts","src/app/shared/models/workflow/models/online-payment.model.ts","src/app/shared/models/dialog-data.model.ts","src/app/shared/models/process/online-appointment-request.model.ts","src/app/core/services/doctors.service.ts","src/app/shared/components/dialogs/confirm-dialog/confirm-dialog.component.ts","src/app/shared/components/dialogs/confirm-dialog/confirm-dialog.component.html","src/app/core/services/google-analytics.service.ts","src/app/shared/models/people/form-control.model.ts","src/app/core/services/virtual-attention.service.ts","src/app/core/services/public-profile.service.ts","src/app/shared/models/people/public-profile.model.ts","src/app/shared/components/error-banner/login-singup-error-banner/login-singup-error-banner.component.html","src/app/shared/components/error-banner/login-singup-error-banner/login-singup-error-banner.component.ts","src/app/shared/models/clinic-history/attention-history.model.ts","src/app/core/services/clinic-history.service.ts","src/app/shared/models/people/chat-conversation.model.ts","src/app/shared/models/people/doctor-message.model.ts","src/app/shared/components/dialogs/doctor-message-dialog/doctor-message-dialog.component.html","src/app/shared/components/dialogs/doctor-message-dialog/doctor-message-dialog.component.ts","src/app/shared/models/process/online-payment-request.model.ts","src/app/shared/enums/notification-type.enum.ts","src/app/shared/helpers/common-types-helper.ts","src/themes/theme.ts","src/app/core/services/app-storage.service.ts","src/app/shared/components/states-request-verify/states-request-verify.component.ts","src/app/shared/components/states-request-verify/states-request-verify.component.html","src/app/core/services/user.service.ts","src/app/core/guards/login.guard.ts","src/app/modules/login/pages/auth-callback-popup/auth-callback-popup.component.ts","src/app/modules/login/pages/auth-callback-popup/auth-callback-popup.component.html","src/app/modules/login/pages/auth-callback/auth-callback.component.html","src/app/modules/login/pages/auth-callback/auth-callback.component.ts","src/app/modules/login/pages/login/login.component.ts","src/app/modules/login/pages/login/login.component.html","src/app/shared/models/people/reset-password.model.ts","src/app/modules/login/pages/forgot-password/forgot-password.component.html","src/app/modules/login/pages/forgot-password/forgot-password.component.ts","src/app/shared/models/people/update-password-request.model.ts","src/app/modules/login/pages/reset-password/reset-password.component.html","src/app/modules/login/pages/reset-password/reset-password.component.ts","src/app/modules/login/components/login-header/login-header.component.html","src/app/modules/login/components/login-header/login-header.component.ts","src/app/modules/login/components/login-form/login-form.component.html","src/app/modules/login/components/login-form/login-form.component.ts","src/app/modules/login/components/login-form-google/login-form-google.component.html","src/app/modules/login/components/login-form-google/login-form-google.component.ts","src/app/modules/login/components/login-form-cliniweb/login-form-cliniweb.component.html","src/app/modules/login/components/login-form-cliniweb/login-form-cliniweb.component.ts","src/app/modules/login/components/login-form-manager/login-form-manager.component.html","src/app/modules/login/components/login-form-manager/login-form-manager.component.ts","src/app/modules/login/login-routing.module.ts","src/app/modules/login/login.module.ts","src/app/shared/models/people/dependent.model.ts","src/app/core/services/teleconsulta.service.ts","src/app/shared/components/summary-appointment-checkout/summary-appointment-checkout.component.html","src/app/shared/components/summary-appointment-checkout/summary-appointment-checkout.component.ts","src/app/modules/privacy-policies/pages/privacy-policies/privacy-policies.component.html","src/app/modules/privacy-policies/pages/privacy-policies/privacy-policies.component.ts","src/app/modules/privacy-policies/components/privacy-policies-sura/privacy-policies-sura.component.ts","src/app/modules/privacy-policies/components/privacy-policies-sura/privacy-policies-sura.component.html","src/app/modules/privacy-policies/privacy-policies-routing.module.ts","src/app/modules/privacy-policies/privacy-policies.module.ts","src/app/shared/models/workflow/states/online-payment-workflow-state.model.ts","src/app/core/services/appointment.service.ts","src/app/shared/directives/mat-select-custom.directive.ts","src/app/modules/home/pages/empty-home/empty-home.component.ts","src/app/modules/home/home-routing.module.ts","src/app/modules/home/home.module.ts","src/app/core/guards/menu.guard.ts","src/app/shared/components/cliniweb-directory-link/cliniweb-directory-link.component.ts","src/app/shared/components/cliniweb-directory-link/cliniweb-directory-link.component.html","src/app/shared/models/people/form.model.ts","src/app/shared/models/workflow/states/medical-order-workflow-state.model.ts","src/app/shared/models/people/profile-detail.model.ts","src/app/core/services/medical-order.service.ts","src/app/shared/components/avatar-initials/avatar-initials.component.html","src/app/shared/components/avatar-initials/avatar-initials.component.ts","src/app/shared/components/public-profile-avatar/public-profile-avatar.component.html","src/app/shared/components/public-profile-avatar/public-profile-avatar.component.ts","src/app/shared/models/workflow/models/appointment-checkout.model.ts","src/app/core/services/log.service.ts","src/app/shared/components/user/edit-user/edit-user.component.ts","src/app/shared/components/user/edit-user/edit-user.component.html","src/app/shared/decorators/component-lookup.decorator.ts","src/app/core/core.module.ts","src/app/shared/models/workflow/states/base-workflow-state.model.ts","src/app/shared/models/workflow/models/appointment-info-data.model.ts","src/app/shared/models/people/profile-search-results.model.ts","src/app/shared/enums/online-appointment-status.enum.ts","src/app/core/services/auth-oidc.service.ts","src/app/shared/components/avatar-upload/avatar-upload.component.ts","src/app/shared/components/avatar-upload/avatar-upload.component.html","src/app/shared/components/user/view-user/view-user.component.ts","src/app/shared/components/user/view-user/view-user.component.html","src/app/shared/directives/capitalize.directive.ts","src/app/core/services/signalR/signalr.service.ts","src/app/shared/models/systems/company.model.ts","src/app/shared/enums/authentication-service-provider.ts","src/app/shared/components/dialogs/learn-more-dialog/learn-more-dialog.component.ts","src/app/shared/components/dialogs/learn-more-dialog/learn-more-dialog.component.html","src/app/core/services/portal-phr.service.ts","src/app/core/services/license.service.ts","src/app/core/services/base.service.ts","src/app/shared/components/cliniweb-appointments/cliniweb-appointment/cliniweb-appointment.component.html","src/app/shared/components/cliniweb-appointments/cliniweb-appointment/cliniweb-appointment.component.ts","src/app/core/services/layout.service.ts","src/app/shared/models/workflow/states/growth-curves-workflow-state.model.ts","src/app/shared/components/dynamic/dynamic.component.ts","src/app/shared/components/dynamic/dynamic.component.html","src/app/shared/components/dependent/edit-dependent/edit-dependent.component.ts","src/app/shared/components/dependent/edit-dependent/edit-dependent.component.html","src/app/modules/support/pages/support-contact/support-contact.component.html","src/app/modules/support/support-routing.module.ts","src/app/modules/support/pages/support-contact/support-contact.component.ts","src/app/modules/support/support.module.ts","src/app/shared/models/cdr/doctor-search-result.model.ts","src/app/shared/directives/center-input.directive.ts","src/app/core/services/patient.service.ts","src/themes/cliniweb/cliniweb.ts","src/app/shared/components/user-payments/user-payment/user-payment.component.ts","src/app/shared/components/user-payments/user-payment/user-payment.component.html","src/app/shared/components/legal-agreements/legal-agreements.component.ts","src/app/shared/components/legal-agreements/legal-agreements.component.html","src/app/core/guards/auth-private-routes.guard.ts","src/app/core/services/route-loader.service.ts","src/app/core/guards/auth.guard.ts","src/app/shared/components/location-language/location-language.component.html","src/app/shared/components/location-language/location-language.component.ts","src/app/core/guards/show-non-prod.guard.ts","src/app/app-routing.module.ts","src/app/shared/components/dialogs/empty-dialog.component.ts","src/app/shared/components/custom-snack-bar/custom-snack-bar.component.ts","src/app/shared/components/custom-snack-bar/custom-snack-bar.component.html","src/app/core/services/signalR/appointments-signalr.service.ts","src/app/shared/components/dialogs/next-appointment-dialog/next-appointment-dialog.component.ts","src/app/shared/components/dialogs/next-appointment-dialog/next-appointment-dialog.component.html","src/app/shared/components/dialogs/select-country-dialog/select-country-dialog.component.ts","src/app/shared/components/dialogs/select-country-dialog/select-country-dialog.component.html","src/app/shared/components/dialogs/error-dialog/error-dialog.component.ts","src/app/shared/components/dialogs/error-dialog/error-dialog.component.html","src/app/core/services/theme-loader.service.ts","src/app/app.component.html","src/app/app.component.ts","src/app/core/interceptors/error.interceptor.ts","src/app/core/l10n-config.ts","src/app/core/helpers/app.initializer.ts","src/app/core/services/loading.service.ts","src/app/core/interceptors/loading.interceptor.ts","src/themes/sura/sura.ts","src/app/core/services/mat-paginator-i18n.service.ts","src/themes/mapfre-panama/mapfre-panama.ts","src/themes/mapfre-guatemala/mapfre-guatemala.ts","src/themes/mapfre-panama-asistencia/mapfre-panama-asistencia.ts","src/themes/town-center/town-center.ts","src/themes/hospital-paitilla/hospital-paitilla.ts","src/app/core/interceptors/oidc-workflow.interceptor.ts","src/themes/pacifica-salud-phr/pacifica-salud-phr.ts","src/themes/hsantafe-phr/hsantafe-phr.ts","src/app/core/handlers/global-error.handler.ts","src/themes/chpanamericano-phr/chpanamericano-phr.ts","src/themes/chsf-phr/chsf-phr.ts","src/app/app.module.ts","src/main.ts","src/app/core/services/route-dialog.service.ts","$_lazy_route_resource lazy namespace object"],"names":["FileViewerComponent","constructor","documentService","locale","onClose","selectedFileIndex","loadingFileUrl","selectedImgZooms","googleFileViewerBaseUrl","dragPosition","x","y","ngOnInit","this","googleFileViewerUrl","viewerDto","useExternalDocumentProvider","documentProvider","files","i","length","fileId","selectedFileId","selectedFile","onSelectedFileChange","onCloseClick","emit","openOnNewTab","getFileUrl","subscribe","url","window","open","focus","isNextVisible","next","isPreviousVisible","previous","clearViewCustomizations","selectedImageEl","nativeElement","style","transform","showZoomIn","showZoomOut","zoomIn","resizeSelectedImg","zoomOut","onFileClick","file","scale","height","width","resetZoom","selectedFileHasPreview","fileExtension","useGoogleViewer","selectedFileUrl","useExtensionImage","useLoading","fileUrl","imageUrl","hasExtensionImage","indexOf","document","location","protocol","host","replace","amazonBucketName","getFileDocumentUrl","pipe","getSelectedFileViewerUrl","encodeURIComponent","getDocument","doc","getDocumentUrl","FileViewerDto","FileViewerItemDto","MapDialogComponent","data","mdDialogRef","breakpointObserver","showWazeButton","lat","lng","zoom","title","description","coordinates","message","split","Number","ngAfterViewInit","console","log","isMatched","divTitle","clientWidth","medicionTitulo","display","span","createElement","visibility","whiteSpace","textContent","body","appendChild","offsetWidth","removeChild","animationOut","getElementsByClassName","classList","remove","animationIn","add","setTimeout","close","buildWazeLink","SearchComponent","route","messageBusService","idAreaSistema","BUSCADOR_WIDGET_PERFILES_PUBLICOS","hideHeader","snapshot","params","widgetRoutes","path","component","showHeader","WidgetRoutingModule","forChild","WidgetModule","NotFoundComponent","router","ngOnDestroy","goHome","navigate","ProfileFilterSearchResultConcept","cc","ProfileFilterSearchResultGroup","OnlineAppointmentCliniwebState","obj","super","onlineAppointmentRequest","idVerificacion","request","getPosition","workflowPosition","setPosition","position","getIdVerificacion","getIdTipoSolicitud","getDoctorAvatarUrl","urlAvatarResponsableServicioDestino","setPublicProfile","profile","perfilPublico","getPublicProfile","setUserData","userPerson","emailPersonaEmisora","emailParticular","usuarioSolicitante","id","username","sexo","fechaNacimiento","urlAvatar","ubicacionLogo","nombre","apellido","idEstadoValidacionIdentidadPersona","idPaisResidencia","numeroTelCelular","numeroCelularContacto","getUserId","setEmmiterPersonId","personId","idPersonaEmisora","getAppointmentInfo","appointmentInfo","appointmentType","teleconsulta","VIRTUAL","FACE_TO_FACE","appointmentDate","fechaInicio","toDate","doctorName","nombreResponsableServicioDestino","doctorSpecialty","especialidadResponsableServicioDestino","doctorAvatarUrl","attentionPlaceName","nombreLocalidad","attentionPlaceAddress","direccionLocalidad","attentionPlaceLatLng","coordenadasLocalidad","medicalConsultationType","nombreProcedimiento","idEstado","nombreEstado","pacienteSolicitante","patientName","patientGender","relacionEmisorPaciente","patientRelationshipType","etapasSolicitud","idEtapaSolicitud","idResponsableServicio","idEmpresa","getRelationship","USUARIO","setRelationship","relationshipType","DESCONOCIDO","setPatientId","patientId","setDependentsFlow","flujoDependientes","getUsername","getRequestingUser","getRequestingPatient","isDependentsFlow","setPatientDataInitiallyIncomplete","incomplete","patientDataInitiallyIncomplete","getPatientDataInitiallyIncomplete","setPatient","patient","firstname","lastname","email","birthDate","gender","numeroCelularParticular","cellPhone","identityPersonValidationStateId","getPatientFormData","patientForm","relationship","isUserPatient","dateHasValue","birthdate","NombreApellidoSexoFechaNacimientoValidados","setPatientFormData","denominacion","getPatientRelationship","setPatientRelationship","getPatientName","getUserPhone","setUserPhone","userPhone","getPatientPhone","setPatientPhone","patientPhone","getPatientEmail","setPatientEmail","patientEmail","getContactType","tipoContacto","setContactType","contactType","getAppointmentSummary","summary","specialty","locationLat","locationLng","telefonoLocalidad","phoneNumber","getCountryId","setCountry","country","idPais","FormComponent","baseService","layoutService","activatedRoute","appStorageService","changeDetector","ngUnsubscribe","tipoComponente","loadingForm","waitForComponentsToFinish","componentsFinishLoading","componentsConfirmedFinishLoading","form","controles","hideComponentSource$","changeVisibilityComponent","value","_idAreaSistema","loadForm","loadFromIdAreaCliente","onComponentFinishLoading","onFormConfiguration","formConfiguration","config","onControlComponentClassname","controlComponent","find","control","componentes","filter","c","conponentName","className","classname","getToken","nombreComponenteAnonimo","anonymousComponentName","getDataByMenu","complete","ngAfterContentChecked","detectChanges","getForm","map","parseFormData","sendFloatingComponents","valor","configuracion","JSON","parse","waitForComponents","sendFormFinishLoadingMessage","error","components","forEach","concat","cp","contenedor","componentsData","getComponentData","idFormulario","isFormVisible","isAnonymousComponentVisible","undefined","links","getItemSession","MENU","completePath","goToRoute","identificadorUrl","subMenu","link","findLink","l","arg0","arg1","resultado","item","getFlexStyle","numeroControlesPorFila","leakedComponents","componentData","nombreComponente","idControlPadre","idControl","nombreFormulario","formConfigurationData","configurationData","visible","formFinishLoading","RequestsToVerifyService","http","baseUrl","confirmation","post","validate","getSummaryData","getCompanyId","get","update","model","put","$event","stopPropagation","SearchDoctorsComponent","doctorService","territorialDivisionsService","translation","utilsService","publicProfileService","searchValue","locationGroups","companyName","onlyDoctorsProvider","disabledSearch","profileSearchTypes","Doctor","headquartersCompIds","useSearchEvents","profileType","parseControlData","cityControl","searchText","searchDoctorsForm","city","companyId","getCliniwebDirectoryCompanyName","dir","getDirectory","idEmpresasSedes","parseInt","resultWrapper","DoctorSearchResultUIWrapper","onChange","placeholderTexts","translate","isMobile","cityText","stateText","countryText","configuracionBusquedaLocalidad","locationConfiguration","parseObject","loadAllCities","valueChanges","v","filtered","_filterCities","filteredLocationsGroups","goupCities","localidadesPorDefecto","setDirectorySearchProfileTypes","initializeFromQs","outerWidth","queryParams","qsParams","t","disableSearch","controls","setValue","tp","ds","nav","clinicalConcept","claseId","idTc","idC","fireSearchEvent","directory","filtros","filtersObj","provider","providers","p","type","searchProviderTypes","onOptionSelected","event","selectedCity","option","navigateToSearchResult","onSearchClick","autoCompleteDisplayWith","onAutocompleteOpened","onAutocompleteClosed","clearSelectedName","clear","clearSelectedLocation","trigger","openPanel","filterValue","toLowerCase","result","index","group","locations","values","push","TerritorialDivisionGroup","key","getLocationDisplayNameFromLevel","levels","niveles","getByLevels","language","idP","handleServiceError","groups","nivel","keys","Object","level","clickout","elResults","elSearchBox","contains","target","hide","onSearchInputClick","container","el","scrollToElementWithAnimation","show","onSearch","search","searchTimeout","clearTimeout","doSearch","trim","isAutoCompleteEnabled","searchDoctors","results","addItem","wrappersTrackBy","classId","resultsTrackBy","territorialDivisionsTrackBy","setSelectedClinicalConcept","time","SearchResultsQsParameters","idDt","identificador","rUrl","conceptNav","doctorSearch","conceptId","conceptClaseId","territorialDivisionIdentification","profileSearch","onDoctorClick","getPublicProfileUrl","getPlaceholderText","getDisplayColumns","areDoctorsResults","CentroDeImagenes","parentData","showOnlyDoctors","ex","hidden","searchDone","isEmpty","isHidden","relatedComp","empresasRelacionadas","containsAnyNumber","wrapper","w","DoctorSearchResultUIWrapperGroup","clase","getClassItems","g","isClassGroup","getDirectoryItems","isDirectoryGroup","getDoctorItems","isDoctorGroup","arrayNumber","valueArray","elem","displayName","UserPaymentsListComponent","paymentsService","dialogRef","routeDialogService","currencyPipe","loading","getUserPayments","payments","onNavigateBack","m","closeRouteDialog","paymentTrackBy","idPagoElectronico","onPaymentClick","payment","idTransaccionFacturaProveedor","formatPaymentAmount","amount","toFixed","onNewPaymentClick","dialogData","confirmText","showHeaderIcon","showCancelButton","cancelText","panelClass","afterClosed","accepted","closeDialogsAndNavigate","DisableAutoFocusIfMobileDirective","elementRef","isManualFocus","Handset","Tablet","setElementRef","setTabIndex","thisElementRef","tabIndex","onFocus","_","DatepickerFlatFieldComponent","fb","errorMessage","label","maxDate","Date","days","Array","from","formulario","day","required","month","year","months","years","getFullYear","onTouched","Subject","moment","mapMonth","takeUntil","onSelectChanges","bind","errors","isTouched","touched","thisControl","markAllAsTouched","setErrors","monthName","format","charAt","toUpperCase","slice","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","disable","enable","writeValue","dateResult","updateForm","args","isChanged","getDate","getMonth","setErrorsToThisControl","changesThisControl","isFinite","valid","markAsTouched","emitEvent","date","onlySelf","val","minDate","fecha1","startOf","fecha2","isAfter","isBefore","provide","useExisting","multi","useValue","overlayPanelClass","DocumentService","documentId","getDocumens","documentIds","LegalAgreementType","SystemAreas","WorkflowLookupRegistry","Map","WorkflowLookup","cls","set","I18nTextPipe","getTextByLanguage","SafeUrlPipe","sanitizer","bypassSecurityTrustResourceUrl","PatientFormAppointmentDataModel","CancelVirtualAttentionDialogComponent","virtualAttentionService","dialog","completed","selectionControl","virtualAttention","options","CancelOption","cancel","isSaveEnabled","reason","getSelectedReason","showTextarea","o","reasonId","reasonText","text","confirm","cancelVirtualAttention","codigoSolicitudPorVerificar","r","success","chatCancelled","showErrorDialog","previousState","headerIconClass","reload","SpinnerComponent","spinnerText","UserPerson","UpdateUser","WorkflowService","encryptSessionData","encryptLocalStorage","idTipoFlujoTrabajo","setWorkflowTypeActive","setItemSession","WORKFLOW_TYPE","getWorkflowTypeActive","getWorkflowDataState","workflowType","workflowState","ONLINE_APPOINTMENT_CLINIWEB_STATE","ONLINE_PAYMENT_WORKFLOW_STATE","MEDICAL_ORDER_WORKFLOW_STATE","GROWTH_CURVES_WORKFLOW_STATE","setWorkflowDataState","workflowDataState","removeWorkflowData","removeSessionItem","getTokenStateFromWorkflow","tokenState","appointmentState","publicProfileIdentifier","locationId","idLocalidad","targetDate","getTime","paymentState","initPaymentWorkflow","publicProfile","dto","nombreResponsableServicio","nombrePersona","urlAvatarResponsableServicio","ubicacionFoto","nickname","especialidadResponsableServicio","especialidad","nombreEmpresa","emailResponsableServicio","emailRemitenteNotificacion","idEmpresaResponsableServicio","ONLINE_PAYMENT_WORKFLOW_BOOTSTRAP_STATE","initAppointmentWorkflow","dateTimestamp","endDate","fechaFin","localidad","direccion1","coordenadas","tel","tel2","ONLINE_APPOINTMENT_CLINIWEB_BOOTSTRAP_STATE","MEDICAL_REQUEST_TYPE","MEDICAL_REQUEST_STATE","CONCEPTOS_ID","TIPO_CONCEPTOS_ID","MY_MEDICAL_ORDERS_TITLE","LABORATORY_ORDER","MEDICAL_PRESCRIPTION","RADIOLOGY_ORDER","MY_MEDICAL_ORDERS_CARD_TEXT","MY_MEDICAL_ORDERS_BUTTON_TEXT","TITLE_MAPPING","MEDICAL_ORDER","MY_MEDICAL_ORDER_EMPTY_STATE_TITLE","MY_MEDICAL_ORDER_EMPTY_STATE_TEXT","MY_MEDICAL_ORDER_DETAIL_COUNT_TEXT","MY_MEDICAL_ORDER_PRINT_SYSTEM_AREA","IMPRESION_ORDEN_LABORATORIO","IMPRESION_PRESCRIPCION_MEDICA","IMPRESION_ORDEN_IMAGENOLOGIA","MaterialModule","Direction","DirectoryService","getByType","getByUrl","serverUrl","getSearchTitle","publicProfileType","conceptTypeId","contryCityIdentifier","filters","PublicProfileVersion","PHRVersion","httpOptions","headers","AuthService","userService","territorialDivisionService","login","password","getDirectoryDomain","domain","toString","token","setToken","USER","response","err","getTransferToken","getTokenByTransferToken","transferToken","loginByTransferToken","tokenString","setSerializedToken","getUserPersonLoggedIn","user","loginCompleted","isLoggedInFull","getAuthenticationToken","isLoggedIn","isTokenExpired","getSerializedToken","redirectToLogin","getValidAuthenticationToken","logout","clearLogout","getCountryByIp","msg","territorialDivision","sendTerritorialDivisionCountry","isPathEnabled","menuLinks","_path","_linkSelected","getLinkSelected","accesoPublico","hasPermissions","getMenuLinks","_pathEnabled","returnUrl","parent","postMessage","eventName","linkSelected","getBasePath","subLinkSelected","sublink","RouteDialogComponent","headerModel","RouteDialogHeaderModel","scrollTop","closeFn","dialogModel","navigateByUrl","state","onCloseRouteDialog","events","preventDialogClose","onScroll","offset","elOffsetTop","offsetTop","Math","abs","direction","Down","Up","pageScroll","RouteDialogModel","disableClose","AppointmentRouteDialogModel","RouteDialogType","APPOINTMENT","PaymentRouteDialogModel","PAYMENT","headerName","PublicProfileRouteDialogModel","PUBLIC_PROFILE","ConfigurationPageDialogModel","CONFIGURATION_PAGE","AppointmentSummaryRouteDialogModel","APPOINTMENT_SUMMARY","MyOrderSummaryRouteDialogModel","MY_ORDER_SUMMARY","AppointmentCancelationRouteDialogModel","CANCEL_APPOINTMENT","backgroundClassName","LegalAgreementsRouteDialogModel","LEGALAGREEMENTS","ChangePasswordRouteDialogModel","CHANGE_PASSWORD","ChatComponent","signalRService","chatService","toastr","messagesPageSize","chatInitialized","userActiveIntervalId","agentActiveIntervalId","lastAgentActiveDate","isAgentActive","virtualConsultationCompanyId","idEmpresaDestinoConsultaVirtual","onLoadChat","etapaSolicitudId","hasAgentMessages","chatWrapper","chatLoaded","loadChat","onOpenChat","onChatCancelled","minimize","sendCancellationMessage","removeActiveFromCache","clearUserActiveInterval","clearAgentActiveInterval","onLogout","hour","min","and","initialized","logged","loggedUser","getActiveWithCache","va","ChatWrapper","fechaUnixUltimaVezActivoResponsableServicio","updateAgentActive","loadChatMessages","idSolicitud","initSignalR","initUserActiveInterval","initAgentActiveInterval","upDirection","getChatMessages","messages","addMessages","sendMessage","currentMessage","chatMessage","buildChatMessage","scrollBottom","idChat","cancelationReason","mensaje","lenguaje","razonCancelacion","idEmpresaTemplate","idPacienteEmpresaOrigen","tipo","PersonMessaje","idEmisor","nombreEmisor","urlImagenEmisor","fechaEnviado","fechaCreacion","onChatBtnClick","toggleMinimize","minimized","_this","scrollBottomWithAnimation","onMinimizeClick","onScrollUp","onCancelVirtualAttention","autoFocus","onConnectionLost","connectionLost","warning","disableTimeOut","toastClass","positionClass","onConnectionStablished","joinGroup","init","subscribeToSignalREvents","onNewMessageReceived","IdEtapaSolicitud","Tipo","IdEmisor","parseObjectDeep","onVirtualAttentionChanged","IdEstado","IdResponsableServicio","NombreResponsableServicio","fechaUltimaActualizacionEstado","FechaUltimaActualizacionEstado","FechaFin","vAttention","finishChat","virtualRequestFinished","onUserActive","userActive","UserId","LastActiveUnixDate","setInterval","compId","postUserActive","now","clearInterval","getChatDate","getBasicDateFormat","getSymptoms","symptoms","sintomasPaciente","last","pop","join","unreadMessagesCount","isVirtualAttentionFinished","avoidUnreadCountUpdate","reverse","unshift","ChatMessageWrapper","getDoctorName","getChatTime","startTime","timeDiffInMin","floor","isUserBlockMessage","currentMessageIndex","current","showDateStamp","isUserMessage","isAgentBlockMessage","isAgentMessage","showMessageTime","isWaitingForAttention","isWaitingForTriage","requestIsFinished","getFirstMessage","LoginService","authService","environment","version","production","apiUrl","cloudHubUrl","cliniwebUrl","logLevel","searchProfilesPageSize","googleApiKey","cKey","useElasticsearchForProfiles","googleCaptchaSiteKey","portalUrl","idEmpresaCliniwebPHR","nombreEmpresaCliniwebPHR","cliniwebPhrUrl","TerritorialDivision","CountryModel","EmailCallbackComponent","forwardingCount","emailSent","resendRequest","forwardingLimit","resend$","openSnackBar","enterDataAgain","enterDataAgainFn","snackBarMessage","ERROR","EmailCallbackComponentData","ComponentName","webpackAsyncContext","req","__webpack_require__","Promise","resolve","then","e","Error","code","ids","module","exports","AgeFromBirthdayPipe","ahora","minute","second","millisecond","nacimiento","edad","diff","Token","TokenState","flowType","OAuthFlowType","None","sourceType","OAuthSourceType","PaymentService","getOnlinePaymentRequest","createOnlinePaymentRequest","onlinePaymentRequest","updateOnlinePaymentRequest","confirmOnlinePaymentRequest","getUserPayment","transaccionId","getUserPaymentPdf","responseType","CustomEmailValidator","match","DynamicHostDirective","viewContainerRef","SignupWorkflowVerificationType","AppointmentInfoCheckoutComponent","showRelative","enablePublicProfileLinks","initialLoading","attentionPlaceLabel","isVirtualAppointment","dateLanguage","ngOnChanges","changes","avatarModel","avatarUrl","fullName","sex","tipoPerfil","isDesktop","innerWidth","setAttentionPlaceLabel","getAppointmentTypeText","getAppointmentTypeClasname","showRelationship","getRelationshipText","openMap","showCloseTextButton","goToPublicProfile","isOpen","closeDialog","routeDialogModel","openDialog","onResize","AppointmentSummaryDataModel","locationZoom","CompanyLogoComponent","cd","isCliniwebPhr","companyLogos","showCompanyImage","isCliniwebCompany","isLicensed","isLicensedCompany","getDirectoryTitle","companyLogo","getCompanyLogoValueByPartialKey","getDirectoryClass","partialKey","includes","LearnMoreComponent","Person","ContainerType","ViewDependentComponent","saving","translations","other","son","daughter","father","mother","man","women","avatarUploadOptions","requiredFileType","selectFileLabel","changeFileLabel","showFileOnceUpload","dependentIdQs","paramMap","dependentId","changePictureLabel","deleteFileLabel","getUserDependents","d","dependent","setUpDependentExtraData","refreshProfileMenu","relationshipName","getDependentRelationshipName","feNacimiento","toLocaleLowerCase","sexName","sexIconClass","onEditDependentClick","onDeleteClick","deleteDependent","showDeleteSuccessToast","SUCCESS","duration","onAvatarUploaded","webUrl","ViewDependentModelDto","SafeHtmlPipe","html","bypassSecurityTrustHtml","TouchMoveListenerDirective","onTouchMove","activeElement","blur","PatientVerificationDataModel","TerritorialDivisionsService","httpClient","countryId","getBySwiftCode","swift","getByIp","ip","getByCountryId","getIp","countryObject","getItem","COUNTRY","getLanguage","setItem","setCountryApp","getCountryApp","countryApp","getAvailableCountries","countries","panama","nombreI18n","texto","nombreCanonico","paisISO","ecuador","costaRica","honduras","republicaDominicana","otros","ipObject","PrintsService","getPdf","FormatoHojaReporte","SummaryOrderSignComponent","esProfesionalVerificado","_signPdf","signPdf","currentValue","getLicense","procesarIdoneidad","informacionResponsableServicio","licencia","licenciasProfesional","idIdentificacionPersona","idIdentificacionIdoneidadProfesionalDefault","json","jsonIdentificacion","Nombre","nombreEspecialidad","Especialidad","registro","Registro","Codigo","Folio","profesionalVerificado","sign","documentosFirma","idDocumento","idDocumentoImagenFirma","direccionUbicacionWeb","nombreBucketAmazonS3","direccionUbicacionFisica","imgError","preventDefault","imgLoad","SummaryOrderConceptValueComponent","posologia","valorConcepto","jsonHistoriaClinicaActual","jsonOrdenMedicaDetalle","procesarJson","Comentarios","observaciones","NavigationService","history","urlAfterRedirects","back","getNavigator","navigator","canShare","share","reject","isNavigatorAvailable","SummaryOrderDownloadButtonComponent","navigationService","flexGrow","maxWidth","buttonText","onClick","compartirArchivo","fallbackDownload","catch","blobUrl","URL","createObjectURL","a","href","download","name","click","SummaryOrderFooterComponent","idPaciente","inWorflow","buttonSecondaryText","buttonPrimaryText","observe","mobileNext","nombreTipoSolicitud","matches","verOrdenes","getUserIdLoggedIn","userId","idTipoSolicitud","closeWorkFlowRequest","irInicio","SummaryMedicalOrderComponent","medicalOrderSevice","requestsToVerifyService","medicalOrderService","printsService","patientService","atenciones","nombreConcepto","items","diagnosticos","diagnosticosLabel","isAndroid","solicitud","historialAtencion","ubicacionFotoLogoTitulo","empresaPortal","numeroTelParticular","direccionLaboral","dateString","requestType","requestTypeName","requestNumber","showHtmlComment","htmlComment","onNavigateBackNext","confirmModel","processAttentionsHistory","getById","mapMedicalOrderIntoHistory","showNumbers","dialogId","order","detalles","mapMedicalOrderDetails","contactoClinico","idPacientePhr","fecha","idEmpresaPortal","idResponsableDoctor","idEmpresaCorporativa","idEmpresaPhr","numeroSolicitud","cantidad","Cantidad","initializeHistory","setRequestTypeAndFilters","processComments","getDiagnosis","loadDoctorAndpatientData","setTitle","setDate","filterAtenciones","mapAtenciones","atencion","setItems","comentarios","idConcepto","COMENTARIO","isSerializedHtml","contactoClinico$","getPartial","of","publicProfile$","getPublicProfileByIds","forkJoin","getPublicProfileByIdNext","getFile","sendComponentFinishLoadingMessage","primeraAtencion","valorLocalizacion","idAreaSistemaImpresion","idPersona","idResponsableImpresion","urlLogoEmpresa","htmlReporte","formatoHoja","CARTA","idContactoClinico","idHistoriaClinicaActualQR","idHistoriaClinicaActualInicial","idEmpresaDestino","fechaOrdenMedica","comentario","summaryOrderSignComponent","licenciaProfesionalInfo","urlFirma","numeroOrden","buildRequestNumber","categorias","obtenerCategoriasPorTiposolicitud","buildFile","byteCharacters","atob","pdfBase64","byteNumbers","charCodeAt","byteArray","Uint8Array","blob","Blob","File","fileName","conceptos","mapearConceptos","concepto","currentRequestTypeName","configData","idConceptoObjeto","idTipoConcepto","DIAGNOSTICO","diagnosis","valorCodigoTerminoReferenciaConceptoClinico","truncate","lastItem","maxLength","substring","componentFinishLoading","SUMMARY_MEDICAL_ORDER","ChatSignalRService","newChatMessageSubject","virtualAttentionChangedSubject","userActiveSubject","hubName","registerOnServerEvents","proxy","on","asObservable","groupId","action","eventUnixDate","invoke","stringify","LoginResponse","MessageBusService","profileSearchSubject","profileSearchFilterSubject","sendUserIdSubject","authIframeSubject","pastVirtualRequestsSubject","virtualRequestFinishedSubject","appointmentCancelledSubject","loadChatSubject","openChatSubject","componentFinishLoadingSubject","formConfigurationSubject","chatCancelledSubject","chatLoadedSubject","loginCompletedSubject","logoutSubject","sessionExpiredSubject","serviceErrorSubject","sendClinicHistorySubject","providerSearchSubject","pageSrollSubject","scrollTopBodySubject","closeCheckAutocompleteSubject","localeChangeSubject","formFinishLoadingSubject","sendPublicProfileSubject","sendWorkflowDataSubject","sendFlowStepCompletedSubject","componentDataSetSubject","workflowStateUpdateSubject","openSnackBarSubject","hideHeaderSubject","showHeaderSubject","navigationBackSubject","closeRouteDialogSubject","appointmentChangeReceivedSubject","closeWorkFlowRequestSubject","hideAnonymousMenuSubject","showAnonymousMenuSubject","closeSearchProviderDialogSubject","showSignupLoginHeaderMenuSubject","showWelcomeImageSubject","sendFloatingComponentsSubject","refreshProfileMenuSubject","clearProviderFiltersSubject","openProviderFiltersSubject","providerFiltersCountSubject","controlComponentClassnameSubject","openRouteDialogSubject","allRouteDialogClosedSubject","publicProfilePageSubject","dialogOpenSubject","dialogCloseSubject","territorialDivisionCountrySubject","publicProfileHeaderVisibilityChangeSubject","publicProfileActionSubject","reloadFormComponentSubject","toggleBottomSheetSubject","onProfileSearch","profileSearchFilter","onProfileSearchFilter","sendUserId","onSendUserId","authIframe","onAuthIframe","appointmentCancelled","onAppointmentCancelled","openChat","onChatLoaded","setFormConfiguration","onLoginCompleted","sessionExpired","onSessionExpired","serviceError","onServiceError","sendClinicHistory","onSendClinicHistory","providerSearch","onProviderSearch","goToPastVirtualRequests","onGoToPastVirtualRequests","onOnVirtualRequestFinished","appointmentChangeReceived","appointmentsByPatient","onAppointmentChangeReceived","onPageScroll","scrollTopBody","onScrollTopBody","closeCheckAutocomplete","originComponentId","onCloseCheckAutocomplete","localeChange","onLocaleChange","onFormFinishLoading","sendPublicProfile","onSendPublicProfile","sendWorkflowData","onSendWorkflowData","sendFlowStepCompleted","onSendFlowStepCompleted","onComponentDataSetMessage","onSendComponentDataSetMessage","onWorkflowStateUpdateMessage","onSendWorkflowStateUpdateMessage","onOpenSnackBar","onHideHeader","onShowHeader","navigateBack","closeSearchProviderDialog","onCloseSearchProviderDialog","onSendFloatingComponents","clearProviderFilters","onClearProviderFilters","openProviderFilters","onOpenProviderFilters","providerFiltersCount","count","onProviderFiltersCount","ruta","onCloseWorkFlowRequest","hideAnonymousMenu","onHideAnonymousMenu","showAnonymousMenu","onShowAnonymousMenu","controlComponentClassname","showSignupLoginHeaderMenu","arg","onShowSignupLoginHeaderMenu","showWelcomeImage","onShowWelcomeImage","onRefreshProfileMenu","openRouteDialog","onOpenRouteDialog","allRouteDialogClosed","onAllRouteDialogClosed","publicProfilePage","onPublicProfilePage","dialogOpen","onDialogOpen","dialogClose","onDialogClose","onSendTerritorialDivisionCountry","sendPublicProfileHeaderVisibilityChange","onPublicProfileHeaderVisibilityChange","sendPublicProfileAction","onPublicProfileAction","sendReloadFormComponent","onReloadFormComponent","sendToggleBottomSheetSubject","onToggleBottomSheetSubject","ClinicHistoryMessage","clinicHistory","ProfileSearchMessage","ProfileSearchFilterMessage","AppointmentCancelledMessage","LoadChatMessage","OpenChatMessage","ChatCancelledMessage","ChatLoadedMessage","hasAgentMessage","FormConfigurationMessage","ComponentFinishLoadingMessage","SessionExpiredMessage","LogoutMessage","LoginCompletedMessage","ServiceErrorMessage","displayMessage","ProviderSearchMessage","PageScrollMessage","containerTopPosition","routeDialogScroll","LocaleChangeMessage","PublicProfileMessage","FlowStepCompletedMessage","WorkflowStateUpdateMessage","ComponentDataSetMessage","OpenSnackBarMessage","NavigationBackMessage","CloseRouteDialogMessage","FloatingComponentsMessage","SnackBarType","ControlComponentClassnameMessage","DialogOpenMessage","dialogName","DialogName","TerritorialDivionCountryMessage","PublicProfileHeaderVisibilityChangeMessage","headerVisible","publicProfileAvatarComponentModel","fromRouteDialog","PublicProfileActionMessage","paymentClick","appointmentClick","Debounce","delay","propertyKey","descriptor","timeout","original","apply","fadeAnimation","top","right","optional","left","backgroundColor","inOutAnimation","StateType","ProfileMenuComponent","loadData","setLoggedInUser","dependents","sort","d1","d2","loggedInUser","loggedInUserInitials","getPersonInitials","getPersonDefaultAvatarUrl","onEditUserClick","onAddDependentClick","onPaymentsClick","onLocaleEditClick","onChangePasswordClick","closeSession","SIGNUP_WORKFLOW_VERIFICATION_TYPE","removeFloatingComponentToHeader","homeUrl","dummyComponentData","HEADER","CountryFormComponent","formBuilder","availableCountries","submitted","countrySelected","errorObs","countryIdSelected","countryForm","onSubmit","invalid","UtilsService","scrollTo","containerEl","scrollToWithAnimation","$","animate","element","elOffset","containerOffset","containerScrollTop","scrollHeight","groupBy","list","keyGetter","collection","containsValue","arrayString","separator","containsAnyValue","getPersonInitialsString","personName","arrayText","lastnamePosition","getHashCodeByString","hash","getPersonInitialsColor","initials","colors","color","age","getPersonAge","ageRange","getAgeRange","getPhotoByAgeRangeAndSex","range","getPhotoBySex","WorkflowInitialData","CancelAppointmentDialogComponent","appointmentService","solicitudPaciente","cancelAppointment","FutureAppointmentsComponent","pageSize","resultsCount","skeletonItems","getAppointments","inProgressState","getFutureAppointments","appointments","setPageResults","hideComponent","onPageChange","startIndex","pageIndex","endIndex","pageAppointments","appointmentTrackBy","getLocationDescription","desc","getAvatarUrl","getAppointmentDateStr","isAppointmentExpired","fechaRequerido","getAppointmentRemainingTime","timeDiff","diffStr","ceil","isTeleconsultation","toLocaleUpperCase","buildTeleconsultationLink","teleconsultaId","getCliniwebDirectoryCompanyId","getCliniwebDirectory","openCancelAppointmentDialog","onReprogramAppointment","identificadorPerfilPublico","rs","repeat","TimelineListComponent","_itemType","TimelineWrapperItemType","_items","onItemsChange","addComponentInitClass","removeComponentInitClass","newItems","populateItems","addToGroup","getGroup","getGroupKey","addNewGroup","groupKey","TimelineWrapperGroup","getDateAsStr","collapsed","TimelineWrapperSkeletonItem","PastAppointmentsComponent","completedStateName","notCompletedStateName","cancelledStateName","getPastAppointments","citasPasadas","getStateName","getStateClass","isIncomplete","navigateToPublicProfile","navigateToAppointmentPage","getItemType","CANCELLED","CHECKED","showTime","showDate","CancelledAppointmentsComponent","displayedColumns","canceledStateName","missedStateName","getIncompletedAppointments","appointmentsArray","paginator","OnPageChange","appointmentsPage","AppointmentsTabsComponent","MenuMobileComponent","menuComponentName","postNavigateSource$","getMenuComponentName","ProfileMenuDialogComponent","pushState","onEsc","LoggedInMenuButtonComponent","setProfilePhoto","onMenuClick","UserProfileMenu","AnonymousLanguageMenuComponent","l10nConfig","schema","setLocale","AnonymousLoginSignupMenuComponent","onCliniwebForDoctorsClick","onCliniwebForPatientsClick","onLoginClick","pathname","SIMPLE","onSignupClick","goToPortal","goToPortalPublicProfilePage","onViewAppointmentsClick","AnonymousMenuComponent","onLoggedInUser","showLoggedInMenu","loadProfile","concatMap","versionPhr","V1","HeaderComponent","routeDialogOpened","isPublicProfilePage","isSearchProfilePage","floatingComponents","anyOpen","publicProfileMenuModel","HeaderComponentPublicProfileMenuModel","useAvatarPadding","openMenuMobile","onLogoClick","gotoPayment","onAppointmentBtnClick","PolicyMenuContentComponent","googleAnalyticsService","policies","tipoIdentificacionPoliza","getPolicies","getUserIdentificationNumber","cedula","policyTrackBy","numeroPoliza","goToPolicy","policyNumber","sendEventGoToInsuranceCard","urlCorporativo","PolicyMenuComponent","getUserName","HeaderSuraComponent","showHeaderSmall","lastHeaderChangeTime","userLoggedIn","scrollingBodySource$","showSmall","urlCompany","getUrlCompany","goToHome","VirtualConsultationLinkboxComponent","getRouteLinkByArea","MedicalAppointmentsLinkboxComponent","ResultsLinkboxComponent","HistoriaClinicaLinkboxComponent","UnreadClinicalExamComponent","ClinicConcept","idTerminoReferencia","valorTerminoReferencia","idFuenteReferencia","nombreClase","valorRutaNavegacion","idReferenciaConcepto","nombreTipoConcepto","nombreFuenteReferencia","ClinicalConceptService","logService","logVerbose","getFrequentSymptoms","getInsuraceConcepts","SelectSymptomsComponent","clinicalConceptService","selectable","removable","addOnBlur","separatorKeysCodes","symptomCtrl","frequentSymptoms","selectedFrequentSymptoms","existsResults","dropdownAbovePosition","autoCompleteOpen","loaded","virtualAttentionFinished","filteredSymptoms$","debounceTime","switchMap","filteredSymptoms","s","checkActiveVirtualAttention","configureForm","goToPastVirtualAttentions","getActive","showItems","formId","showFormTitle","showFormSubtitle","showControlTitle","addSymptom","input","currentSymptom","newSymptom","addSymptomClick","symptomInput","removeSymptom","symptom","splice","selected","symptomName","autocompleteOpened","matAutocomplete","panel","parentPanelContainer","parentNode","autocompleteClosed","isSelectedFrequentSymptom","frequentSymptom","toggleFrequentSymptom","onClickStartConsultation","openEmptySymptomsDialog","openPoliciesDialog","acceptedPolicies","startClinicalContact","colorConfirmButton","allSelectedSymptoms","sy","idAreaSistemaDestinoConsultaVirtual","startVirtualAttention","sendEventInitVirtualConsultation","OrderByPipe","array","field","isArray","b","MenuLinkComponent","mediaObserver","ID_AREA_SISTEMA_MIS_CITAS","ID_AREA_SISTEMA_MI_SALUD","expanded","hasOptions","showNotification","notificationValue","isMobile$","some","change","mqAlias","onToggleBottomSheetSubjectNext","menuItem","querySelector","getAppointmentsWithCache","cantidadCitasFuturas","appointment","onLinkSelected","isMiSalud","linkUrl","startsWith","postNavigate","isLinkActive","substr","isSublinkActive","getTooltip","tooltip","getIconName","iconName","nombreIcono","MenuComponent","menuLanguage","MENU_LANGUAGE","populateLinks","onError","urlBack","getBackUrlCompany","user$","hideUrlBack","onBackClick","MyHealthComponent","platform","selectedTabIndex","MI_SALUD","onAddFamily","setTabSelected","relativeTo","queryParamsHandling","_getUserLoggedIn$","_getUserDependents$","_queryParams$","queryParamMap","zip","loadUserData","loadDepedentsData","configTabIndexByParam","indexDependent","findIndex","CliniwebMenuComponent","mediaMatcher","cargando","ID_AREA_SISTEMAS_MI_SALUD","profileMenuOpen","miSaludMenuOpen","resto","profileFloatingMenuTrigger","menuOpened","overflowBodyDisabled","menuClosed","overflowBodyEnabled","openProfile","matchMedia","openMenu","closeProfileMenu","closeMenu","ChatHistoryDialogComponent","ChatHistoryWrapper","chatDate","timeElapsed","includeYear","PastVirtualConsultationComponent","getPastAttentions","consultations","consultation","urlAvatarPaciente","openChatHistory","navigateToVirtualConsultationPage","VirtualConsultationTabsComponent","TabClinicHistoryConfiguration","titulo","componentesArray","ClinicHistoryTabsComponent","clinicHistoryService","getClinicHistory","sendEventOpenClinicHistory","onSelectTab","tabs","GroupConcept","AttentionHistoryComponent","timelineAttentions","createTimelineAttentions","dtos","conclusionGroup","PLAN","PRESCRIPCION_MEDICA","LABORATORIOS","historialAtenciones","attention","AttentionHistoryViewDTO","fechaContacto","avatarResponsableServicio","avatarInitialsObject","getAvatarInitialObject","iniciales","colorIniciales","claveSubtitulo","conclusionItems","getClinicHistoryItemsByGroup","basicItems","getClinicHistoryItemsByExcludedGroup","conceptosConclusiones","AttentionHistoryItemViewDTO","conceptosBasicos","existenConclusiones","getClassPreviewFile","concept","extensionDocumento","getPreviewFileUrl","ubicacionWebDocumento","getConsultationDocumentAsViewerItems","documentos","fileDto","nombreBucketAmazon","createdAt","fechaRegistro","nombreDocumento","descripcion","DOT","onClickLinkViewMore","viewMore","tieneConceptosBasicos","tieneDocumentos","MedicinesComponent","attentions","createViewDto","getAttentionsByGroup","MedicinesViewDTO","asunto","responsable","conceptosMedicamentos","MedicinesItemViewDTO","tieneConceptos","MedicalHistoryComponent","antecedentes","icono","getIconNameByGroup","agrupadores","groupArray","iconname","ALERGIAS","VACUNAS","ENFERMEDADES","ENFERMEDADES_FAMILIARES","CIRUGIAS","HABITOS","AutocompleteMultipleSelectionComponent","searchInputCtrl","onFilter","onSelectionChanged","_selectedOptions","selectedOptions","removeOption","ShareDialogComponent","allAreasSelected","currentView","HcShareView","FilterItems","viewEnum","capitalize","str","arr","shareDialogData","areas","check","SelectItems","AttentionFilters","loadDoctordata","contact","hasOwnProperty","DoctorData","initDoctorData","optionHasFilters","onFilterClick","confirmFilters","shareButtonEnabled","someAreaSelected","filterDoctors","getDoctorDisplayName","doctor","onDoctorSelectionChanged","selectedDoctors","setSelectedDoctors","getSummary","startDate","selectedDocs","getSelectedDoctors","selectedSections","Secciones","areEmpty","FechaIncio","IdsResponsablesServicios","IdPaciente","getClinicHistoryPdf","sendEventDownloadClinicHistory","downloadURL","getDownloadFileName","getIdentifier","getDisplayName","doctors","filteredDoctors","addAllDoctorsSelection","removeAllDoctorsSelection","selectedIds","ClinicHistoryShareComponent","onClickShareButton","StudiesLaboratoriesComponent","StudiesLaboratoriesViewDTO","conceptosLaboratorios","StudiesLaboratoriesItemViewDTO","HeaderMapfrePanamaComponent","routeClassName","initRouteClassName","ClassConcept","SearchQsParametersModel","SearchQsParamMapModel","SearchProvidersComponent","autocompleteOpen","loadingSearchProvider","searchProviderCtrl","locationAutocompleteOpen","loadingSearchLocation","searchLocationCtrl","locationLevels","removingSelection","initFromParams","configSearchProviders","configSearchLocations","cityDefaultText","stateDefaultText","sendControlComponentClassname","_paramMap$","_paramMap","param1","param2","param3","param4","param5","_qsParams","populateDropdownByParams","getPlaceholderProvider","placeholderProvider","getPlaceholderLocation","placeholderLocation","SearchProvidersComponentConfiguration","_locationObjectSelected","LocationSearchResultItem","providerSelected","locationDefault","conceptIds","conceptSelected","seccion3","locationObjectSelected","filteredResults$","tap","startWith","filterProviders","highlightValue","filteredResultsCount","groupProviderResults","hideLocationAutocomplete","filteredLocationResults$","comboLocation","filterDefaultLocations","filteredLocationResultsCount","filterLocations","optionsGrouped","getLocationSearchGroupByDefault","og","profilesDefault","getProfilesDefault","_profileSearchTypes","profileTypes","pt","getLocationsByLevels","removeSearchProviderSelected","reset","searchInput","autocompleteProviderTrigger","_onChange","updatePosition","removeSearchLocationSelected","searchLocationInput","autocompleteLocationTrigger","_resultGroup","sd","resultGroupItem","DoctorSearchResultGroup","getOptgroupLabelProvider","optgroupFocusAreaText","profileSelected","removeClassnameSearchOpenedToBody","_optionSelected","_clase","openPublicProfile","isExtremeMobile","locationSelected","closeAutocompleteLocationpanel","autoCompleteProviderDisplayWith","autoCompleteLocationDisplayWith","onKeydownInputSearch","onKeydownInputLocationSearch","addClassnameSearchOpenedToBody","onFocusInputSearch","onFocusInputLocationSearch","matAutocompleteLocation","onBlurInputSearch","onBlurInputLocationSearch","showingCancelSearchProvider","onCancelSearchProvider","closePanel","disabled","showingCancelSearchLocation","onCancelSearchLocation","autocompleteProfileOpened","autocompleteLocationOpened","autocompleteLocationClosed","showIconDropdownOption","ESPECIALIDAD","AREAS_DE_ENFOQUE","PROCEDIMIENTO","getIconClassNameDropdownOption","iconClassName","showAvatarDropdownOption","showDescriptionDropdownOption","isDoctor","tipoPerfilPublico","getProfileTypeIconClassName","Farmacia","Clinica","Fisioterapia","Laboratorio","ServiciosOdontologicos","Opticas","onClickSearchButton","doctorSearchResult","urlImagen","_searchText","_providerSearchMessage","seccion1","LocationSearchResultGroup","getLocationDisplayNameFromLevelDefault","td","seccion2","getAvatarModel","showCloseIcon","SearchResultTitleComponent","texto1","texto2","textoPrep","texto3","aseguradora","lugar","perfilBusqueda","preposicion","texto1Tamanios","texto2Tamanios","texto3Tamanios","windowResize","windowResizeEvent","truncar","arg2","listKeys","ellipsis","ProviderFiltersDialogComponent","clearFilters","ProviderFiltersDialogComponentData","ProviderFiltersContentComponent","onChanges","publicProfileTypes","isDialogOpened","selectedConcepts","getDirectoryFilters","onChangesInputs","filterModel","preloadSelectedFilters","dataDialog","providerSearchMessage","getSelectedFilters","getSelectedConceptsObject","removeFilter","loadFromModel","f","loadFiltersArray$","isDropdown","loadFilters","active","clinicConceptId","prefilters","conceptType","filtersString","getFiltersIds","accountName","accountId","locationCompanyIds","getCliniwebDirectoryLocationCompanyIds","getLocationFromIdentifier","getCompanyName","parts","getPublicProfileFilters","clinicConceptType","resultItem","loadOption","catchError","filterByParams","filterSelected","getSelectedConcepts","filterIds","insuranceFilter","Aseguradora","controlId","favoriteFilter","RedFavorita","favoriteFilterId","idClaseConceptoClinico","idConceptoClinico","selectedList","getSelectedConceptIds","concepts","sc","optionsSubj","filterOptions","n_cc","singleSelection","num","getDisplayTitleName","getSelectedOptionDisplayName","displayValue","nombreClaseConceptoClinico","showInputSearch","mostrarInputSearch","hideOnDesktop","ocultarEnDesktop","seleccionSimple","grupos","viewConfig","configuracionVista","isFavoriteFilter","needToLoadOptions","needToFireSearchOnClick","selectedConcept","op","pf","getIconClass","iconClass","RedesSura","AreaEnfoque","Diagnostico","Procedimiento","Teleconsulta","SedeSura","Abierto24Hrs","Delivery","TipoCentroImagenes","Urgencias","Hospitalizacion","Cirugia","LugarAtencion","AgendamientoEnLinea","getOptionsObserver","selectOption","ProviderCardComponent","profileService","socialNetworksList","socialNetworksLoaded","socialNetworksLoading","goToProfile","rutaNavegacion","locationTrackBy","getLocationTabTitle","textTitle","isDoctorProfile","isClinicProfile","getWebsiteUrl","sitioWeb","loadSocialNetworks","getProfileDetails","SocialNetworks","sn","SocialNetworkDto","networkType","idObjetoDetalle","objetoDetalle","getSocialNetworkIconClassName","getOptionTextSocialNetwork","setLocationSelected","tabEvent","SearchResultsComponent","directoryService","anchoPerfilBusqueda","showFullDescription","profileTypesArray","pageNumber","disableScroll","seed","loadingInitialResults","showDivider","loadingResults","resetSearch","updateRoute","searchProviders","addClassToBody","getSearchSeed","setSearchCountryByCountryApp","initRouteConfig","setSearchCountry","getElementsByTagName","isHeaderVisible","removeClassToBody","fireSearchByParams","_id","conceptNavArray","tdArray","qs","go","getTitleText","doSearchProfilesSubscribe","unsubscribe","doSearchProfiles","providersResult","onScrollDown","loadMoreProfiles","handleScroll","windowHeight","innerHeight","documentHeight","documentElement","scrollY","pageYOffset","cantidadTotalResulados","perfiles","localidades","showResults","showEmptyState","providerTrackBy","ClinicasDeAtencionPrimaria","Todos","getLocationsByProvider","onShowFullDescription","searchCountry","searchResultTitleComponent","getAllProfileTypes","isNaN","tipos","subtitle","subtitulo","fullDescription","descripcionDetallada","getFiltersString","_results$","searchProfileByConcept","searchProfileByText","countryIdentification","UnlicensedMenuComponent","showLogout","withLatestFrom","onCliniwebLogoutClick","HeaderTownCenterComponent","hasLicenses","HeaderHospitalPaitillaComponent","navigateToCompany","gotoBack","HeaderChsfPhrComponent","HeaderChpanamericanoPhrComponent","HeaderHsantafePhrComponent","HeaderPacificaSaludPhrComponent","WorkflowItemData","endWorkflow","WorkflowProgressBarComponent","WorkflowProgressBarComponentData","percentComplete","WorkflowStepName","BaseStep","attached","onBeforeFormLoad","buildComponentConfigurationData","attachToComponentEvents","messageForThisStep","handleComponentSetDataMessage","sendFlowStepCompletedMessage","stateData","AuthenticationDataModel","AuthenticationStep","workflowService","showProgressBar","showButtonClose","withoutFooter","setState","isCompleted","completeUserDateState","showStepInActionBack","showStep","componentName","AUTHENTICATION","getAuthenticationDataModel","dataModel","idUsuario","stepItemData","SelectCountryStep","SELECT_COUNTRY","getCountryDataModel","getUserCountry","condition","SelectPatientDataModel","PersonDataModel","SelectPatientAppointmentCheckoutStep","showButtonBack","relationshipSelected","SELECT_PATIENT","_dataModel","patientSelected","getSelectPatientDataModel","requestingUser","avatar","requestingPatient","PatientFormAppointmentCheckoutStep","patientFormDataCompleted","PATIENT_FORM_APPOINTMENT","patientData","containsGender","stringHasValue","isBirthdateValid","SelectPatientRelationshipDataModel","patientRelationship","SelectPatientRelationshipAppointmentCheckoutStep","SELECT_PATIENT_RELATIONSHIP_APPOINTMENT","getSelectPatientRelationshipDataModel","PatientContactFormDataModel","PatientContactFormAppointmentCheckoutStep","PATIENT_CONTACT_FORM","updateUserPhoneNumberLoggedIn","getPatientContactFormDataModel","updateUserLoggedIn","SummaryAppointmentCheckoutStep","SUMMARY_APPOINTMENT","PaymentAmountComponent","PaymentAmountComponentDataModel","invalidInput","countDecimals","number","loadDataModel","amountInputEl","onAmountInputClick","selectionStart","selectionEnd","onAmountInputKeyup","keyCode","newChar","test","parseFloat","multiplier","pow","round","paymentAmount","validateInputNumber","onNextClick","PAYMENT_AMOUNT","targetUserName","targetUserAvatarUrl","userName","PaymentAmountStep","setAmount","getPaymentAmountComponentData","getTargetUsername","getTargetUrlAvatar","getTargetSpecialty","getAmount","IntlTelInputPlaceholderPipe","placeHolder","dialCode","PaymentComponent","creditCardLastFourDigits","creditCardType","creditCardTypeSubscribe","cvcFocus","formSubmitted","creditCardNumberFocus","paymentForm","creditCardControl","validateCCNumber","expirationDateControl","validateExpDate","cvcControl","minLength","fullNameControl","phoneNumberControl","creditCardNumberEl","profileName","profileSpecialty","especialidades","creditCardNumber","cardExp","creditCardExpMonth","creditCardExpYear","setControlValue","ControlNames","CardNumber","CardExpirationDate","CardCvc","creditCardCvc","creditCardFullName","FullName","PhoneNumber","getControl","controlName","isControlInvalid","controlHasError","errorName","hasError","getControlValue","onCreditCardNumberFocus","resolvedScheme$","onCreditCardNumberBlur","onCreditCardNumberKeyup","isCursorAtEnd","creditCardExpirationEl","isCreditCardExpirationValid","forceValidation","dateStr","expParts","expYear","expDate","onCreditCardExpirationKeyup","expValue","creditCardCvcEl","onCvcFocus","onCvcBlur","onCreditCardSecretKeyup","onMobileLastFourDigitsClick","onPayClick","creditCardExpiration","expirationParts","PaymentComponentData","PAYMENT_FORM","openDialogLegalAgreements","PaymentFormStep","setCreditCardType","setCreditCardNumber","setCreditCardExpirationMonth","setCreditCardExpirationYear","setCreditCardCvc","setCreditCardFullName","setPhoneNumber","getPaymenComponentData","getCreditCardNumber","getCreditCardExpirationMonth","getCreditCardExpirationYear","getCreditCardFullName","getPhoneNumber","isNullOrEmpty","getCreditCardCvc","PatientVerificationStep","PATIENT_VERIFICATION","emailPaciente","setPatientValid","isValid","getDataModel","nombrePaciente","getUserPhrId","getPatientId","containsRelations","getPatientValid","relations","getRelations","setRelations","SummaryMedicalOrderStep","SelectPatientRelationshipModel","patientIdRelationship","SelectPatientRelationshipStep","containsDependents","SELECT_PATIENT_RELATIONSHIP","setPatientIdRelationship","getSelectPatientRelationshipModel","getDependents","setDependents","getPatientIdRelationship","CreatePatientRelationshipDataModel","CreatePatientRelationshipStep","OTRO","isUser","patientRelationshipSelected","CREATE_PATIENT_RELATIONSHIP","getCreatePatientRelationshipModel","WorkflowStepService","authenticationStep","selectCountryStep","selectPatientAppointmentCheckoutStep","patientFormAppointmentCheckoutStep","selectPatientRelationshipAppointmentCheckoutStep","patientContactFormAppointmentCheckoutStep","summaryAppointmentCheckoutStep","paymentAmountStep","paymentFormStep","patientVerificationStep","summaryMedicalOrderStep","selectPatientRelationshipStep","createPatientRelationshipStep","createSteps","steps","nombreClaseItem","SELECT_PATIENT_APPOINTMENT_CHECKOUT","PATIENT_FORM_APPOINTMENT_CHECKOUT","SELECT_PATIENT_RELATIONSHIP_APPOINTMENT_CHECKOUT","PATIENT_CONTACT_FORM_APPOINTMENT_CHECKOUT","SUMMARY_APPOINTMENT_CHECKOUT","BaseWorkflowComponent","workflowStepService","stepIndex","progressBarModel","backToFlowStep","validationStepCompletedDisabled","flowStepCompleted","closeWorkflow","loadStep","closeWorkflowIfQueryParamExists","urlWithoutQueryParams","replaceState","nicknameResponsableServicioDestino","currentStep","_loadStep","buildProgressBarModel","configFooter","onBackFlowStep","doFlowStepCompleted","checkingStep","loadNextStep","updateState","completeWorkflowStateData","updateWorkflowStateData","showWorkflowContent","getIdAreaSistema","calculateProgressBarProgress","backFn","workflowStepsCount","currentStepIndex","setPercentComplete","percentage","LogoutBarComponent","appStoreService","TOKEN","profileImg","OnlineAppointmentCliniwebComponent","showState","logoutFn","checkOnlineAppointmentStatus","startWorkflow","getStatus","getStatusNext","status","onlineAppointmentStatus","POR_COMPLETAR","USUARIO_POR_REGISTRAR","activatingAccount","userConfirmation","userConfirmationNext","COMPLETADA","isLoggedInFullNext","configStatusView","routerState","statesRequestVerifyDataModel","companyLogoUrl","mainImageUrl","showActionButton","showHomeButton","buttonActionFn","continueWithAppointment","buttonTextRefI18n","textRefI18n","gotoAppointments","VENCIDA","gotoSignup","textDescriptionRefI18n","postConfirmation","getState","getStateByAppointmentCheckout","bootstrapState","appointmentCheckout","_state","getOnlineAppointmentRequest","_onlineAppointmentRequest","idResponsableServicioDestino","checkoutUrl","origin","localizacion","getCompanyByLicense","company","idEmpresaOrigen","nombreEmpresaOrigen","loadLicense","onCloseWorkflow","ONLINE_APPOINTMENT_CLINIWEB","updateOnlineAppointmentRequest","createOnlineAppointmentRequest","confirmOnlineAppointmentRequest","getUserPersonLoggedInFromService","usr","toCompleteStatus","completedStatus","expiredStatus","LoadingDialogComponent","OnlinePaymentWorkflowComponent","paymentService","sourceModel","continueWithPayment","gotoHome","getStateFromRequest","buildStateFromModel","requestId","requestModel","_closeWorkflow","workflowCleanup","sendLoadingMessage","confirmRequest","createInitilRequest","tipoNotificacion","ACTIVAR_CUENTA_PARA_PAGO_EN_LINEA","codigoVerificacion","sendCompletedMessage","sendErrorMessage","clearCreditCardData","showConfirmButton","savingDialogRef","ColaGobloDialogoComponent","AuthenticationComponent","authOidcService","loadingGoogle","isCliniweb","unlicensed","titleTextRefence","getTitleTextReference","redirectToSignup","signupWorkflowVerificationType","closeUrl","loginByGoogle","oidcModel","Login","Google","stringState","startAuthentication","openTermsDialog","openLegalAgreementsDialog","TERMINOS_CONDICIONES","openPrivacyDialog","POLITICA_PRIVACIDAD","onAppointmentKnowMoreClick","openLearnMoreDialog","alreadyLoggedIn","workflowTypeActive","completeAuthentication","textReference","selectTitleTextByWorkFlowTyope","onGetUserPersonLoggedIn","AppointmentInfoDialogComponent","SelectPatientAppointmentCheckoutComponent","showForm","showInitialView","showAppointmentInfo","_relationshipStringValue","patientRelationshipTypeForm","onClickContinue","_valueSelected","u","continueFlow","_dependentSelected","tipoRelacion","buttonDisabled","getUserAvatar","getDependentAvatar","openAppointmentInfoDialog","ValidatePersonName","allowSpaces","regex","whitespace","ValidateGender","PatientFormAppointmentCheckoutComponent","currentYear","SinValidar","updateModel","NombreYApellidoValidados","getBirthdateControl","SelectPatientRelationshipAppointmentCheckoutComponent","patientRelationshipForm","KeyboardService","zone","visualViewportSizeChangedSubject","Observable","keyboardOpenSubject","initKeyboardDetection","runOutsideAngular","visualViewport","fromEvent","isKeyboardOpen","distinctUntilChanged","focus$","blur$","isKeyboardClosed","merge","getVisualViewportSizeChangedObservable","getKeyboardOpenObservable","PatientContactFormAppointmentCheckoutComponent","renderer","keyboardService","userPatientMode","onChangeHeightContainer","setStyle","patientContactForm","contactRadio","requiredIfValidator","updateValueAndValidity","onClickFinish","predicate","formControl","PublicProfileHeaderComponent","urlPublicProfile","DefaultHeaderComponent","DefaultBackHeaderComponent","DefaultBackWithLinkHeaderComponent","onOpenInNewWindow","CliniwebMedicalAppointmentsLinkboxComponent","onLinkClick","SearchProvidersService","searchProviderComponentName","systemArea","BUSCAR_PERFILES_PUBLICOS","openSearch","getControlConfig","searchControl","searchComponent","CliniwebBookAppointmentLinkboxComponent","searchProvidersService","LatestDoctorsComponent","finishedLoading","currentMaxDoctorsToShow","maxDoctorsToShow","latestDoctors","_latestDoctors","getLatestDoctors","doctores","getMissingDoctorCount","onOtherClick","onNavigateToAppointmentClick","sexoResponsableServicio","MostCommonSpecialtiesComponent","onDentistClick","onNutritionClick","onGynecologyClick","onPediatricsClick","HealthAlliesComponent","healthAllies","navigateToSearch","clinicalConceptId","PreventiveControlTipsComponent","onGeneralMedicineClick","onDermatologyClick","onOphthalmologyClick","CliniwebHomeLayoutComponent","getUser","loggedIn","person","CliniwebFutureAppointmentsComponent","showAll","citasFuturas","sortByAppointmentState","appointmentsToShow","observables","intervalId","checkFutureAppointmentTime","refreshAppointments","clearAppointmentsCache","apps","onShowAll","onNewAppointmentClick","a1","a2","app","CliniwebPastAppointmentsComponent","getAppointmentsToShow","CliniwebAppointmentTabsComponent","SearchProvidersConfiguration","searchType","SearchProvidersType","DEFAULT","titleMobile","placeholderMobile","profilesPlaceholderClosed","profilesPlaceholderOpened","profilesLabel","showLocationsAutocomplete","locationsPlaceholderClosed","locationsPlaceholderOpened","locationsDefault","locationsLikeCombo","showInsurersAutocomplete","insurersPlaceholderClosed","insurersPlaceholderOpened","insurersLabel","insurersDefault","insurersLikeCombo","searchParamMap","locationsLabel","SearchProvidersV2Component","cdref","clinicalConceptsService","searchOpened","insuranceAutocompleteOpen","loadingSearchInsurance","searchInsuranceCtrl","insuranceObjectSelected","fullsize","isAnonymous","mobileDelimiter","maxLastestDoctorsToShow","lastestDoctors","loadingLastestDoctors","lastestDoctorsIndex","otherInsuranceComp","configSearchByCountryApp","configSearchInsurers","initBySearchType","setDefaultsText","configSearchByCountry","setLocationDefaultByCountry","toggleAutocompleteInsurance","getParamMaps","collectParams","root","POPUP","initLikePopup","initEmptyProviderSearchMessage","WIDGET","initLikeWidget","textValue","isSearchDefault","removeSearchInsuranceSelected","searchInsuranceInput","insuranceUnfilteredResults","autocompleteInsuranceTrigger","optgroupDoctorText","triggerOpenPublicProfileByType","closeSearch","gotoProfile","searchInputBlur","insuranceSelected","autoCompleteInsuranceDisplayWith","onKeydownInputInsuranceSearch","scroll","onBlurInputInsuranceSearch","onCancelMobile","onClickSearchTextMobile","inputWrapperProvider","sendMessageIframeResizeOpen","sendMessageIframeResizeClose","inputWrapperLocation","autocompleteInsuranceOpened","matAutocompleteInsurance","inputWrapperInsurance","autocompleteInsuranceClosed","optionalText","showPreviewProviderPlaceholder","showPreviewProviderValue","getPreviewProviderValue","showPreviewLocationPlaceholder","showPreviewLocationValue","showButtonRemoveProvider","showButtonRemoveLocation","showHeaderMobile","getPreviewLocationValue","onFocusProvider","clearProviderSelected","onFocusLocation","clearLocationSelected","onFocusInsurance","clearInsuranceSelected","clearSearchSelected","isPopup","isWidget","onClickMobilePreview","closeDropdownProvider","closeDropdownLocation","closeDropdownInsurance","showSearchPlaceholderMobile","getSelectionTextMobile","getPlaceholderInsurance","getAvatarModelByLastestDoctor","prevLastestDoctors","nextLastestDoctors","showLastestDoctors","showSearchTextOption","getSearchTextOption","setInsuranceBaseOnQueryParams","triggerSearchByType","redirectToSearchPage","goToSearhPage","publicProfileUrl","goToPublicPage","searchProviderUrl","getRelativeSearchPath","SearchProvidersUrl","serializeUrl","createUrlTree","countryDefaultText","dontApplyInsuranceText","childSnapshots","children","shift","selectedInsurers","filteredInsuranceResults$","filterDefaultInsurers","filteredInsuranceResultsCount","getInsuranceSearchGroupByDefault","groupProfileFilters","onFocusInputInsuranceSearch","directoryFilters","DefaultLogoHeaderComponent","DropdownTriggerForDirective","overlay","isDropdownOpen","dropdownClosingActionsSub","Subscription","EMPTY","dropdownOverlay","toggleDropdown","destroyDropdown","openDropdown","overlayConfig","hasBackdrop","backdropClass","dropdownPanel","overlayTransparent","fullscreen","scrollStrategy","scrollStrategies","block","positionStrategy","flexibleConnectedTo","withPositions","originX","originY","overlayX","overlayY","offsetY","overlayRef","create","templatePortal","templateRef","attach","dropdownClosingActions","backdropClick$","backdropClick","detachment$","detachments","dropdownClosed","closed","detach","dispose","DropdownComponent","CheckAutocompleteComponent","filteredGroups","filteredOptions","onAutocompleteClick","onAutocompleteOptionsChanged","clasnameComponent","componentId","checkAutocompleteForm","optionsObs","ops","groupConcepts","filterItems","toggleAutocomplete","getClassNameButton","getButtonText","selectedOptionDisplayNameFtn","placeholder","onClickAutocomplete","optionClicked","toggleSelection","optionDeleted","isOptionSelected","idAttributeName","onClearFilter","closeDropdown","dropdown","onFocusInputSearchDropdown","addPanelClass","setOverlayRef","optionFilterFtn","filteredConcepts","ProviderFiltersBodyComponent","filterSelectedCount","clearAll","fireFilterEvent","filterTrackBy","onFilterItemClick","conceptsDeleted","_item","getNameI18n","getIdAttributeName","getOwnPropertyNames","onOptionChanged","optionsDeleted","conceptDeleted","getFilterMobileClassName","getFilterMobileText","filterText","ANDROID","IOS","PublicProfilePageHeaderComponent","headerLogo","directoryUrl","setHeaderLogo","logo","CountryFormCheckoutComponent","errorSubject","BehaviorSubject","errorObservable","loadCountry","onCountrySelected","updateUserResidenceCountry","RequestToVerifyUpdateModel","MedicalOrderWorkflowComponent","requestToVerifyService","updatedUserLoggedIn","checkMedicalOrderStatus","medicalOrderRequest","tipoRelacionPacienteUsuario","esUsuarioNuevo","wasUserCreated","MEDICAL_ORDER_WORKFLOW_BOOTSTRAP_STATE","PatientVerificationComponent","sending","configBirthday","patientBirthday","enviar","datos","validateNext","MyMedicalOrdersEmptyStateComponent","tipoSolicitud","MyMedicalOrdersComponent","tipoSolitudEnum","estadoOrdenMedicaEnum","routeParamsNext","configByParams","getMedicalOrders","idTipo","idsTipoContenidos","nombreTipo","nombreTipoCardText","nombreTipoButtonText","nombreConteoDetalle","getList","medicalOrders","medicalOrder","publicProfileAvatar","idDoctor","avatarDoctor","nombreDoctor","viewMoreClick","uidOrdenMedica","ChartType","GrowthMeasurementUnitType","GrowthMeasurementsService","getByPatientId","getPercentiles","idEstandarMedicion","idTipoMedicion","rangoInicial","rangoFinal","idUnidadMedidaRango","getMeasurementTypes","getHcaFieldByType","chartType","SIZE_FOR_AGE","WEIGHT_FOR_AGE","WEIGHT_FOR_SIZE","BMI_FOR_AGE","HEAD_CIRCUMFERENCE_FOR_AGE","getIntervaleByRangeAndType","rangeId","typeId","Gender","GrowthChartsTabDataTypeComponent","genderClassMap","MALE","FEMALE","OTHER","genderTextMap","omsDataColor","omsDataText","GrowthChartsTabComponent","growthMeasurementsService","ranges","percentiles","selectedRange","updateTab","fillAxisYText","renderCharts","measurements","chartContainer","getElementById","innerHTML","emptyStateDiv","codigoEstandar","codigoUnidadMedida","selectedRangeObj","mediciones","getPatientGrowthMeasurementsByRange","parentElement","groupedData","reduce","acc","legendText","dataPercentile","CanvasDataModel","markerSize","indexLabelFontSize","indexLabelFontFamily","indexLabelFontColor","showInLegend","dataPoints","dataPatient","lineColor","markerColor","animationEnabled","animationDuration","theme","axisY","axisYText","titleFontSize","titleFontFamily","titleFontColor","includeZero","interval","intervaloY","axisX","toolTip","contentFormatter","content","entries","dataSeries","dataPoint","xReference","yReference","references","fontColor","fontSize","AxisXCanvasDataModel","nombreUnidadMedida","intervaloX","minimum","maximun","viewportMinimum","viewportMaximun","CanvasJS","Chart","render","hca","Percentiles","Unidad","valorTallaCm","valorPesoKg","prev","curr","Valor","toLocaleString","minimumFractionDigits","maximumFractionDigits","edadTotal","getDecimalAge","edadAnios","edadMeses","edadDias","getAxisYTextByType","getAxisYByType","getDetailedAge","yearAge","monthsAge","daysAge","unitType","YEARS","MONTHS","WEEKS","valorIMC","valorCircunferenciaCefalicaCm","img","src","alt","selectedRangeText","tipoMedicion","tabText","textDiv","rangeTextSpan","innerText","addEventListener","rangeSelect","additionalTextDiv","GrowthChartsComponent","tabChangeSubject","tabLoading","GrowthChartsModel","showDoctorSelect","selectedDoctorId","initAvatarUploadOptions","measurementTypes","initGrowthChartTabs","_onTabChange","updateDoctor","getGrowthMeasurementsPatient","patientAvatar","patientObject","patientDependentRelationId","idRelacionDependiente","patientFirstName","patientLastName","patientBirthDate","patientRelationType","createOrUpdateDependent","onTabChange","trueIndex","initializedTabs","setSelectedTabIndex","loadGrowthData","growthMeasurements","idResponsableMedicion","doctorId","responsablesAsociados","growthTabsModel","fill","GrowthCurvesWorkflowComponent","growthCurvesRequest","confirmacionResponse","SelectPatientRelationshipComponent","CreatePatientRelationshipComponent","relationTypes","configTitle","createPatientRelationshipForm","viewValue","PROGENITOR_DE","HIJO_DE","ESPOSO","HERMANO","ABUELO","TUTOR","DEPENDIENTE_FAMILIAR_DE","relationTypeId","ProviderCardContactsComponent","mapObjetoToArray","icon","objetoDetalle1","objetoDetalle2","objetoDetalle4","ProviderCardLocationComponent","locationAddress","locationAvailability","locationIconClass","locationTitle","setLocationIconClass","setLocationAddress","setLocationAvailability","setLocationTitle","diLocalidad2","diLocalidad1","endsWith","ciudad","pais","availability","citaEnLineaHab","goToProfileEvent","onClickHowToGetButton","objetoDetalle3","empresaObjetoPerfilPublico","empresaPerfilPublico","ProviderCardProfileComponent","featureConceptIconClassName","featuresConceptsText","isPharmacyProfile","profileTypeIconClassName","showAvatarInitials","setAvatarModel","setIsPharmacyProfile","setFeatureConcepts","setShowAvatarInitials","setProfileTypeIconClassName","foto","featuresConceptsObject","conceptosDestacados","profileTypeIconMap","SaludYBelleza","SharedModule","forRoot","apiKey","CustomCurrencyPipe","currencyCode","digitsInfo","RegExp","displayStr","AUTH_API","HttpBaseService","refreshSubject","useAuthentication","setAuthenticationHeader","header","delete","access_token","refreshAuthenticationToken","onAuthenticationRequired","BaseHttpServiceUnauthorizeException","tokenObject","refreshToken","refresh_token","FileViewerDialogComponent","viewerData","BottomSheetMenuComponent","resolver","eventoClickAsignado","openCloseBottomSheet","currentComponent","loadComponent","_close","factory","resolveComponentFactory","containerRef","createComponent","backdrop","HomeComponent","onScrollingBody","IframeMessageService","IFRAME_RESIZE_EVENT_NAME","MODAL_OPEN_EVENT_NAME","MODAL_CLOSE_EVENT_NAME","REQUEST_USER_ID_EVENT_NAME","SCROLL_TOP_EVENT_NAME","MANAGE_APPOINTMENTS_EVENT_NAME","PUBLIC_PROFILE_LOADED_EVENT_NAME","REFRESH_USER","iframeResizeSubject","modalOpenSubject","modalCloseSubject","requestUserIdSubject","scrollTopSubject","manageAppointmentsSubject","publicProfileFinishLoadingSubject","refreshUserSubject","IframeMessage","IframeResizeMessage","handleIframeEvent","onIframeResize","onModalOpen","modalClose","onModalClose","onRequestUserId","onScrollTop","onManageAppointments","onPublicProfileLoaded","onRefreshUser","ModalEventMessage","BaseRequestModel","RequestingPatient","RequestingUser","SenderPatientRelationship","PayModel","webpackContext","webpackContextResolve","ChatService","getByEtapaSolicitudId","chatId","HighlightPipe","tagName","filteredSearch","re","LegalAgreementsDialogComponent","LegalAgreementsDialogData","DirectoryType","DirectoryFiltersItemType","OnlinePaymentModel","DialogData","MapDialogData","OnlineAppointmentRequest","DoctorService","companyname","postMessageToDoctor","IdPersona","ConfirmDialogComponent","licenseLoading","loadLicenseTheme","GoogleAnalyticsService","static","gaScript","setAttribute","gaScript1","firstChild","logPageView","gtag","page_location","FormControl","componente","FormControlComponent","isVisible","FormComponentType","CARD","FormComponentData","VirtualAttentionService","ACTIVE_VIRTUAL_ATTENTION","idAreaSistemaDestino","IdEmpresaDestino","ConceptosClinicos","Emisor","NombreEmisor","UrlImagenEmisor","Email","idSolicitudPorVerificar","razon","PublicProfileService","page","locationCompaniesIds","types","conceptClassId","profileId","profileDetailType","tipoConcepto","provincia","idTipoConceptoClinico","idTipoPerfilPublico","getProfileDetailsDocuments","getProfileDetailsDocument","nickName","getPublicProfileVersion","getPublicProfileById","personIds","arrayIds","Set","groupsDef","idsConceptosClinicos","tituloGrupo","defaultGroup","PublicProfile","LoginSingupErrorBannerComponent","AttentionHistory","ClinicHistoryService","attentionHistoryArray","idAgrupador","attentionsFiltered","attentionHistory","_atenciones","_attentionHistory","getAttentionsByConceptType","concepType","extension","_className","_imagePreviewUrl","getClinicHistoryByHash","ChatConversacionMessage","ChatConversacionMessageType","ChatCancellationMessage","DoctorMessage","DoctorMessageDialogComponent","captchaSuccess","captchaSiteKey","messageForm","resolved","captchaResponse","IdEmpresa","NombreDoctor","Localizacion","NombreCompleto","Mensaje","OnlinePaymentRequest","NotificacionType","CommonTypesHelper","dateToValidate","stringToValidate","THEMES","STORAGE","VERSION","DIRECTORY","LOCALE","REFERRER","PROFILE_SEACH_SEED","AUTH_IFRAME","POLICIES","CLINIWEB_DIRECTORY","WELCOME_CLINIWEB_STATE","SIGNUP_CAPTCHA_REQUIRED","AUTHENTICATION_SERVICE_PROVIDER","APPOINTMENTS","LICENSE","NEXT_APPOINTMENT_LAST_TIME_SHOWN","SIGNUP_CHECKIN_STATE","AppStorageService","cookieService","swUpdate","localStorage","sessionStorage","deleteAll","available","activateUpdate","removeItem","encrypt","encryptObj","desencrypt","decryptObj","removeToken","_key","Utf8","_iv","keySize","iv","mode","ECB","padding","Pkcs7","decryptedText","decrypt","StatesRequestVerifyComponent","buttonSecondaryActionFn","StatesRequestVerifyDataModel","UserService","dependentRelationshipTranslations","relative","husband","wife","brother","sister","grandfather","grandmother","manWarded","womanWarded","setConfigTranslation","getUserPerson","getUserIdentification","identificationType","policyType","identifications","identification","policy","_userPerson","processRequestUserId","existsManager","startAuthenticationPopup","isInvalid","postUserRegister","Username","Password","requestUserRegistration","registerUser","postResetPassword","dominio","postConfirmationResetPassword","postExistsUser","DominioEmpresa","updateUser","updatePassword","SonOrDaughter","FatherOrMother","BrotherOrSister","HusbandOrWife","GrandfatherOrGrandmother","Warded","Family","updateProfilePicture","uploadProfilePicture","pUploadResponse","reader","FileReader","readAsDataURL","onloadend","fileReaderOnLoadEnd","ultimoPunto","lastIndexOf","contentType","deleteUploadedImage","IdPais","countryUser","getUserUnverifiedRequest","requestGuid","registerUnverifiedUser","userCreated","LoginGuard","canActivate","redirectToAuthOidc","AuthCallbackPopupComponent","completeAuthenticationPopup","AuthCallbackComponent","showErrorView","isSura","skeletonHeightStyles","skeletonBorderStyles","skeletonColorStyles","invalidMessage","parseTokenState","activeWorkflow","initWorkflow","ALERT","Signup","onRetryClick","decodeURIComponent","handleWorkflowStartError","LoginComponent","ResetPasswordModel","ForgotPasswordComponent","showCallback","closeOnBack","forgotPasswordForm","updateOn","emailCallbackModel","titleReference","onCancel","activeWorkflowType","decodeURI","UpdatePasswordRequestModel","ResetPasswordComponent","showPassword","showCustomHeader","changePassword","showCurrentPassword","isRequestExpired","isRequestCompleted","vencida","resetPasswordForm","pattern","noWhitespaceValidator","currentPassword","clearValidators","currentUser","onChangePassword","onResetPassword","emailUsuario","contraseniaAnterior","contraseniaNueva","showSuccessToast","showInvalidCurrentPasswordToast","first","secondaryButtonTextRefI18n","goToForgotPassword","goToLogin","LoginHeaderComponent","isModalOpened","LOGIN","LoginFormComponent","loginService","alreadyExistsGoogleUser","loadingByGoogle","getQsParams","goToHomePage","loginForm","existsUserNext","googleAuthentication","loginNext","onForgotPassword","onClickCreateAccount","LoginFormGoogleComponent","LoginFormCliniwebComponent","LoginFormManagerComponent","loginTypeEnum","LoginFormType","getAuthenticationProviders","idAuthProvider","CLINIWEB","proveedorServicioAutenticacion","GOOGLE","getCurrentNavigation","extras","loginRoutes","LoginRoutingModule","LoginModule","Dependent","DependentRelationshipType","DependentRequest","TeleconsultaService","getByIdEstado","SummaryAppointmentCheckoutComponent","teleconsultaService","appointmentStateName","appointmentExpired","appointmentStateClassName","appointmentStateIconClassName","licensedCompany","enablePublicProfileLink","userAgent","loadFromAppointment","getTeleconsultaInfoIfVirtual","idEtapa","getAppointmentId","getAppointmentById","utcDate","endDateUtc","fechaFinalizacion","getAppointmentStateName","getAppointmentStateClassName","getAppointmentStateIconClassName","loadModelFromAppointment","idTeleconsulta","stateName","stateClassName","stateIconClass","appointmentInfoDataModel","cancellationDate","medicalConsultationAmount","getName","getPatientGender","pendingApproval","telefonoLocalidad1","telefonoLocalidad2","idPacienteOrigen","showMyAppointments","getCallNumber","getWazeUrl","getVirtualConsultation","openDialogContact","onCancelAppointmentClick","onReScheduleAppointmentClick","pp","isVirtual","PrivacyPoliciesComponent","policiesControlName","getPoliciesControlName","PrivacyPoliciesSuraComponent","privacyPoliciesRoutes","PrivacyPoliciesRoutingModule","PrivacyPoliciesModule","OnlinePaymentWorkflowState","pagoDetalle","monto","tipoTarjeta","numeroTarjeta","cardNumber","mesExpiracionTarjeta","expMonth","anioExpiracionTarjeta","cVVTarjeta","cvc","firstName","rest","lastName","numeroTelefono","AppointmentService","maxAmount","getNextAppointment","getAppointmentLastTimeShown","appointmentId","setAppointmentLastTimeShown","isAppointmentsCacheEmpty","getFromCache","addToCache","getAppointmentsSchedule","getAppointmentsScheduleNextItem","MatSelectCustomDirective","matSelect","alturaQuitada","animacion","disableOptionCentering","openedChange","matSelectOpenedChange","agregarClaseParaManipularUbicacionDeOptiones","opened","matSelectPanel","procesarPanelPadreAbiertoYqueContieneLaClase","cdkOverlayPanel","moficarLaPosicionDelPanel","bottom","EmptyHomeComponent","homeRoutes","HomeRoutingModule","HomeModule","MenuGuard","menu","canGo","sublinkSelected","CliniwebDirectoryLinkComponent","numberOfDoctors","Form","FormConfiguration","MedicalOrderWorkflowState","setPatientName","PublicProfileDetailType","MedicalOrderService","requestTypeId","padStart","generateByIdHashed","idHashed","AvatarInitialsComponent","PublicProfileAvatarComponent","withoutBorder","legacyAvatar","_model","profileInitialsColor","defaultBorderColor","profileInitials","getProfileTypeIconClassNameForPanamaAsistencia","PublicProfileAvatarComponentModel","PublicProfileToPublicProfileAvatarComponentModelConverter","AppointmentCheckout","LogLevel","LogService","logError","postLog","logWarning","Warning","logInfo","Info","Verbose","EditUserComponent","edit","loadAvailableCountries","formGroup","nameControl","lastNameControl","birthDateControl","sexControl","countryControl","dirty","beforeCloseAlert","anotherCountry","onUserSaveClick","updated","ComponentLookupRegistry","ComponentLookup","CoreModule","BaseWorkflowState","AppointmentInfoDataModel","AppointmentType","ProfileResultModel","PublicProfileType","OnlineAppointmentStatus","AuthOidcService","clientOidc","initManager","getDirectoryClientOidc","manager","authority","expired","extraQueryParams","login_hint","getManager","signinRedirect","requestTokenFromUser","signinRedirectCallback","signinPopup","signinPopupCallback","promiseUser","_manager","urlUserInfo","settings","metadata","userinfo_endpoint","dummyToken","clientAuthority","authenticationServiceProvider","AvatarUploadComponent","onFileUploaded","uploading","onFileSelected","uploadProfilePictureNext","uploadProfilePictureError","deletePicture","uploadData","updateProfilePictureNext","showToast","messageText","snackBarType","AvatarUploadComponentOptions","ViewUserComponent","residenceCountryName","onUserEditClick","CapitalizeDirective","onInput","SignalrService","connectionLostRetryTimeInSeconds","waitingConnectionLostRetry","connectionEstablishedSubject","connectionLostSubject","createConnection","connect","connection","hubConnection","createHubProxy","disconnected","handleConnectionLost","getAuthorizationToken","start","pingInterval","done","CompanyModel","AuthenticationServiceProvider","LearnMoreDialogComponent","PortalPHRService","LicenseService","getLicensePhr","LICENSE_TYPE","PHR","license","BaseService","portalPhrService","licenseService","localeChangedSource","localeChanged$","checkVersion","getAppConfig","setDefaultLanguage","localizacionDefecto","V2","loadGoogleAnalytics","analyticsKey","_menuLinks","getMenuLinkByAreaId","areaId","clientesOidc","getCliniwebDomain","idEmpresaDestinoDirectorio","nombreEmpresaDestinoDirectorio","idsEmpresasLocalidades","nombreMenu","getDisclaimer","descargoResponsabilidad","getPrivacyPolicy","politicasPrivacidad","getTermsAndConditions","terminosCondiciones","versionPerfilPublico","languageString","getHeaderName","nombreEncabezado","nombrePoliticas","nombreClaseEstilo","getDirectoryUrlFavicon","urlFavicon","clienteOidc","Sura","oidcClient","nombreCuentaPaciente","Cliniweb","isMenuLinksVisible","menuVisible","assign","convertObjectToQS","pathQueryParams","pair","paramsObject","trunc","random","territorialDivisionIdentifier","getInitialsString","normalize","getColorByInitials","innerError","yearSeparator","momentDate","dateDay","dateMonth","dateYear","yearStr","getMonthName","uppercaseFirstLetter","formaData","CryptoJS","enc","AES","pad","isIOS","maxTouchPoints","isMacDesktop","getDetailedAgeByDate","yearSingularText","yearPluralText","monthSingularText","monthPluralText","daySingularText","dayPluralText","CliniwebAppointmentsComponent","popupView","me","unconfirmedStateName","confirmedStateName","setAppointmentExtraData","locationDescription","appointmentFormattedDate","teleconsultation","teleconsultationUrl","appointmentStateDisplayName","getPatientFirstName","onAppointmentViewMoreClick","openVideConsultationLink","onNavigateWithWaze","onCancelAppointment","onUnconfirmedAppointmentClick","onReScheduleAppointment","closePopupView","LayoutService","themes","hideComponentSource","postNavigateSource","scrollingBodySource","objectSerialized","textLanguage","classNameContainer","directoryClassname","containerElement","properties","setProperty","componentClass","offsetParent","GrowthCurvesWorkflowState","DynamicComponent","factoryClass","dynamicHost","componentRef","instance","EditDependentComponent","loadDependentFormData","onSaveClick","createOrUpdateDependentSuccess","scrollToInvalidField","onSuccess","showErrorToast","invalidControl","supportRoutes","SupportContactComponent","toastrService","CONTACT","procesarGetUserPersonLoggedIn","postSupportError","directoryDomain","contenido","toJSON","pagina","postSupport","postSupportNext","SupportRoutingModule","SupportModule","DoctorSearchResult","CenterInputDirective","onlyMobile","scrollIntoViewOptions","behavior","scrollIntoView","PatientService","getIdentifierPatient","idPacientePortal","cliniwebTheme","UserPaymentComponent","loadingPayment","loadingPdf","gotoPayments","getFormatedAmount","onDownloadTransactionPdfClick","nombrePacientePhr","fechaTransaccion","toDateString","transactionTranslation","LegalAgreementsComponent","legalAgreements","DISCLAIMER","AuthPrivateRoutesGuard","validar","condicion","RouteLoaderService","load","buildMenuRoutes","createRoute","subLink","resetConfig","isSublink","childrenRoutes","buildChildrenRoutebyLink","l10n","l10nProviders","asset","animation","nombreAnimacion","isRestrictedRoute","childrenRouteArray","paramsArray","parametrosUrl","ifHaveParamsArray","childrenRoute","getPathByNumber","originPath","AuthGuard","routeLoaderService","LocationLanguageComponent","selectedLanguage","ShowNonProdGuard","routes","loadChildren","WelcomeModule","SignupModule","SearchResultsModule","PublicProfilesModule","AppointmentsModule","PaymentsModule","MedicalOrdersModule","GrowthCurvesModule","TemplatePanelModule","ChartsModule","AppRoutingModule","relativeLinkResolution","EmptyDialogComponent","CustomSnackBarComponent","snackBarRef","dismiss","getIconClassname","INFO","getTypeClassname","AppointmentsSignalRService","appointmentChangedSubject","appointmentEvent","onAppointmentChangedReceived","NextAppointmentDialogComponent","SelectCountryDialogComponent","ErrorDialogComponent","ThemeLoaderService","insertToDom","head","insertedElement","themeName","default","AppComponent","_document","overlayContainer","iframeMessageService","matIconRegistry","titleService","themeLoaderService","dateAdapter","contexts","meta","snackBar","appointmentSignalRService","directoryClass","iframeZIndex","sessionExpiredPopupOpen","serviceErrorPopupOpen","isIframeModalOpen","hasJointGroup","lastUrl","reloadPage","selectCountryDialogOpened","ID_AREA_SISTEMA_INICIO","ID_AREA_SISTEMA_DOCTORES","isDesktopMac","registerFontClassAlias","openFromComponent","horizontalPosition","MAIN","onUrlChange","snapshotUrl","isntExceptedUrl","containsLanguage","navigationTrigger","pathName","checkNextAppointmentAlert","setHeaderComponentName","toggleHeaderView","loadDirectoryTheme","setOverlayMaterial","setTitlePage","setFavicon","setManifestUrl","setIframeModalActions","manageVirtualAttentionActions","manageSessionExpiredAction","manageServiceErrorAction","setDateAdapter","startNewAppointmentsListener","setCountryByUser","setZIndexInitialValue","routeQueryParamsSubscribe","getDirectoryClassName","setThemeProperties","setThemeColor","initAppointmentSignalR","IdUsuario","getRouteAnimationData","getContext","getActiveVirtualAttention","overlayContainerClasses","getContainerElement","themeClassesToRemove","htmlElement","appleHtmlElement","currentTheme","manifestUrl","addTag","dummyDialog","hasNextAppointmentAlert","lastTimeShown","creationDate","showNextAppointmentAlert","ErrorInterceptor","intercept","handle","statusText","sendLogs","throwError","fallback","cache","keySeparator","defaultLocale","currency","defaultRouting","initL10n","l10nLoader","AppStorage","hasStorage","Storage","read","write","HttpTranslationLoader","LocaleValidation","parseNumber","decimalSeparator","digits","minimumIntegerDigits","parseDate","appInitializer","routeLoader","countryObservable","take","appConfigObservable","URLSearchParams","LoadingService","_loading","loadingStatus","startLoading","stopLoading","LoadingInterceptor","loadingService","activeRequests","finalize","suraTheme","MatPaginatorI18nService","getRangeLabel","max","ofStr","itemsPerPageLabel","nextPageLabel","previousPageLabel","firstPageLabel","lastPageLabel","mapfrePanamaTheme","mapfreGuatemalaTheme","mapfrePanamaAsistenciaTheme","townCenterTheme","hospitalPaitillaTheme","OidcWorkflowInterceptor","request2","clone","procesarMedicalOrderWorklow","idVerificacionSolicitudPorVerificar","pacificaSaludPhrTheme","hsantafePhrTheme","GlobalErrorHandler","handleError","chpanamericanoPhrTheme","chsfPhrTheme","AppModule","useClass","useFactory","deps","cliniweb","storage","translationLoader","validation","register","enabled","bootstrapModule","RouteDialogService","dialogs","currentRoute","beforeClosed","componentInstance","getDialogById","checkRouteConfig","outlet","duplicateRoutes","duplicatedRoute","webpackEmptyAsyncContext"],"mappings":"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","sourceRoot":"webpack:///","sourcesContent":["
0, 'non-preview-file': !selectedFileHasPreview()}\">\r\n
\r\n \r\n {{selectedFile.title}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
","import { Component, ElementRef, EventEmitter, Inject, Input, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { Observable, of } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { map } from 'rxjs/operators';\r\nimport { DocumentService } from 'src/app/core/services/document.service';\r\nimport { SystemDocument } from '../../models/process/document.model';\r\n\r\n@Component({\r\n selector: 'file-viewer',\r\n templateUrl: './file-viewer.component.html',\r\n styleUrls: ['./file-viewer.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('FileViewerComponent')\r\nexport class FileViewerComponent implements IControlComponent, OnInit {\r\n data: FormComponentData;\r\n\r\n // Input / Output\r\n @Input() viewerDto : FileViewerDto;\r\n @Output() onClose = new EventEmitter();\r\n\r\n // Model\r\n selectedFile: FileViewerItemDto;\r\n selectedFileIndex: number = 0;\r\n selectedFileUrl: string;\r\n loadingFileUrl = false;\r\n selectedImgZooms = 0;\r\n\r\n files : FileViewerItemDto[]; \r\n googleFileViewerBaseUrl = \"\";\r\n dragPosition = {x: 0, y: 0};\r\n \r\n @ViewChild('selectedImg') selectedImageEl: ElementRef;\r\n\r\n constructor(\r\n private documentService : DocumentService, \r\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.googleFileViewerBaseUrl = environment.googleFileViewerUrl;\r\n\r\n if (this.viewerDto.useExternalDocumentProvider && !this.viewerDto.documentProvider) {\r\n throw \"Invalid file viewer configuration\";\r\n }\r\n\r\n this.files = this.viewerDto.files;\r\n for(let i=0; i < this.viewerDto.files.length; i++) {\r\n if (this.viewerDto.files[i].fileId == this.viewerDto.selectedFileId) {\r\n this.selectedFile = this.viewerDto.files[i];\r\n this.selectedFileIndex = i;\r\n\r\n break;\r\n }\r\n }\r\n\r\n this.onSelectedFileChange(this.selectedFileIndex);\r\n }\r\n\r\n onCloseClick() {\r\n this.onClose.emit(); \r\n }\r\n\r\n openOnNewTab() {\r\n this.getFileUrl(this.selectedFile, false, false).subscribe(url => {\r\n window.open(url, '_blank')?.focus();\r\n }); \r\n }\r\n\r\n isNextVisible() {\r\n return this.selectedFileIndex < (this.files.length - 1);\r\n }\r\n\r\n next() { \r\n this.selectedFileIndex++;\r\n this.onSelectedFileChange(this.selectedFileIndex);\r\n }\r\n\r\n isPreviousVisible() {\r\n return this.selectedFileIndex > 0 && this.files.length > 1;\r\n }\r\n\r\n previous() { \r\n this.selectedFileIndex--;\r\n this.onSelectedFileChange(this.selectedFileIndex);\r\n }\r\n\r\n clearViewCustomizations() {\r\n this.selectedImgZooms = 0; \r\n\r\n // Re-center img\r\n if (this.selectedImageEl)\r\n this.selectedImageEl.nativeElement.style.transform = \"none\";\r\n\r\n this.dragPosition = {x: 0, y: 0};\r\n }\r\n\r\n showZoomIn() {\r\n return this.selectedImgZooms == 0;\r\n }\r\n\r\n showZoomOut() {\r\n return this.selectedImgZooms > 0;\r\n }\r\n\r\n zoomIn() {\r\n this.selectedImgZooms++;\r\n this.resizeSelectedImg(true);\r\n }\r\n\r\n zoomOut() {\r\n this.selectedImgZooms--;\r\n this.resizeSelectedImg(false);\r\n\r\n if (this.selectedImgZooms == 0)\r\n this.clearViewCustomizations();\r\n }\r\n\r\n onFileClick(file: FileViewerItemDto) {\r\n if (this.selectedImgZooms == 0)\r\n this.zoomIn(); \r\n }\r\n\r\n resizeSelectedImg(zoomIn : boolean) {\r\n let scale = (zoomIn) ? 150 / 100 : 100 / 150;\r\n let width = this.selectedImageEl.nativeElement.width;\r\n let height = this.selectedImageEl.nativeElement.height;\r\n\r\n // Set new dimensions\r\n this.selectedImageEl.nativeElement.width = width * scale;\r\n this.selectedImageEl.nativeElement.height = height * scale;\r\n }\r\n\r\n resetZoom() {\r\n this.clearViewCustomizations();\r\n }\r\n\r\n selectedFileHasPreview() {\r\n let file = this.selectedFile; \r\n\r\n if (!file)\r\n return false;\r\n\r\n return file.fileExtension == \"jpg\"\r\n || file.fileExtension == \"jpeg\"\r\n || file.fileExtension == \"bmp\"\r\n || file.fileExtension == \"gif\"\r\n || file.fileExtension == \"png\"; \r\n }\r\n\r\n useGoogleViewer(file: FileViewerItemDto) { \r\n\r\n if (!file)\r\n return false;\r\n\r\n return file.fileExtension == \"pdf\";\r\n }\r\n\r\n onSelectedFileChange(selectedFileIndex: number) {\r\n this.clearViewCustomizations(); \r\n this.selectedFile = this.files[selectedFileIndex];\r\n this.selectedFileUrl = null as any;\r\n \r\n this.getFileUrl(this.selectedFile).subscribe(url => {\r\n this.selectedFileUrl = url;\r\n });\r\n }\r\n\r\n getFileUrl(file: FileViewerItemDto, useExtensionImage = true, useLoading = true) : Observable {\r\n let url = file.fileUrl;\r\n let imageUrl = ''; \r\n let hasExtensionImage= true; \r\n\r\n // Check if it is a partial URL\r\n if (url.indexOf(\"http\") < 0) \r\n url = document.location.protocol + \"//\" + document.location.host + \"/\" + url; \r\n \r\n if (useExtensionImage) {\r\n switch (file.fileExtension) {\r\n case 'jpg':\r\n case 'jpeg':\r\n case 'bmp':\r\n case 'gif':\r\n case 'png':\r\n case 'pdf':\r\n imageUrl = url.replace('\\\\/gi', '/');\r\n hasExtensionImage = false;\r\n break;\r\n case 'xls':\r\n case 'xlsx':\r\n case 'xlt':\r\n imageUrl = '/assets/images/HC/img_preview_xls.png';\r\n break;\r\n case 'doc':\r\n case 'docx':\r\n imageUrl = '/assets/images/HC/img_preview_doc.png';\r\n break;\r\n case 'mp3':\r\n imageUrl = '/assets/images/HC/img_preview_mp3.png';\r\n break;\r\n case 'mp4':\r\n imageUrl = '/assets/images/HC/img_preview_mp4.png';\r\n break;\r\n default:\r\n imageUrl = '/assets/images/HC/img_preview_default.png';\r\n break;\r\n }\r\n }\r\n else {\r\n imageUrl = url.replace('\\\\/gi', '/');\r\n hasExtensionImage = false;\r\n } \r\n\r\n if (!hasExtensionImage) {\r\n \r\n // Check if the file has a bucket\r\n if (file.amazonBucketName) {\r\n\r\n if(useLoading)\r\n this.loadingFileUrl = true;\r\n\r\n /*return this.documentService.getDocumentUrl(file.fileId).pipe(map((url: string) => { \r\n this.loadingFileUrl = false;\r\n \r\n return url;\r\n }));*/\r\n\r\n return this.getFileDocumentUrl(file).pipe(map((url: string) => { \r\n this.loadingFileUrl = false;\r\n \r\n return url;\r\n }));\r\n }\r\n else \r\n return of(imageUrl);\r\n }\r\n // If we do not render this image just use the extension one\r\n else \r\n return of(imageUrl);\r\n } \r\n\r\n getSelectedFileViewerUrl() : string {\r\n let result = this.googleFileViewerBaseUrl + encodeURIComponent(this.selectedFileUrl);\r\n\r\n return result;\r\n }\r\n\r\n getFileDocumentUrl(file: FileViewerItemDto) : Observable {\r\n if (this.viewerDto.useExternalDocumentProvider) {\r\n return this.viewerDto.documentProvider.getDocument(file.fileId).pipe(map((doc: SystemDocument) => {\r\n return doc.url;\r\n }));\r\n }\r\n else {\r\n return this.documentService.getDocumentUrl(file.fileId);\r\n }\r\n }\r\n}\r\n\r\n/* External classes */\r\nexport class FileViewerDto {\r\n selectedFileId: number;\r\n files : FileViewerItemDto[];\r\n\r\n // In case of public profile images, we will use the public profile service to get images in order to avoid authentication\r\n useExternalDocumentProvider: boolean = false; \r\n documentProvider: IDocumentProvider;\r\n}\r\n\r\nexport class FileViewerItemDto {\r\n fileId: number;\r\n fileUrl: string;\r\n fileExtension: string;\r\n amazonBucketName: string;\r\n webUrl: string;\r\n\r\n title: string; \r\n description: string;\r\n createdAt: Date; \r\n\r\n creatorName: string;\r\n creatorImageUrl: string; \r\n}\r\n\r\nexport interface IDocumentProvider {\r\n getDocument(documentId: number) : Observable;\r\n}\r\n","import { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { MapDialogData } from 'src/app/shared/models/dialog-data.model';\r\n\r\n@Component({\r\n selector: 'map-dialog',\r\n templateUrl: './map-dialog.component.html',\r\n styleUrls: ['./map-dialog.component.css'] \r\n})\r\nexport class MapDialogComponent implements AfterViewInit {\r\n @ViewChild('titleTag') private divTitle: ElementRef;\r\n title: string;\r\n description: string;\r\n showWazeButton: boolean = false; \r\n lat = 8.537981;\r\n lng = -80.782127;\r\n zoom = 15;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: MapDialogData,\r\n private mdDialogRef: MatDialogRef,\r\n private breakpointObserver: BreakpointObserver,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n @Inject(DOCUMENT) private document: Document\r\n ) {\r\n \r\n this.title = data.title;\r\n this.description = data.description;\r\n this.showWazeButton = data.showWazeButton;\r\n var coordinates = data.message.split(\";\");\r\n\r\n this.lat = Number(coordinates[0]);\r\n this.lng = Number(coordinates[1]);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n console.log(this.breakpointObserver.isMatched('(max-width:800px)'))\r\n if (!this.breakpointObserver.isMatched('(max-width:800px)')) return;\r\n const width = this.divTitle.nativeElement.clientWidth;\r\n if (width >= this.medicionTitulo())\r\n this.divTitle.nativeElement.style.display = 'flex';\r\n }\r\n\r\n private medicionTitulo() {\r\n const span = this.document.createElement('span');\r\n span.style.visibility = 'hidden';\r\n span.style.whiteSpace = 'nowrap';\r\n span.textContent = this.title;\r\n this.document.body.appendChild(span);\r\n const width = span.offsetWidth\r\n this.document.body.removeChild(span);\r\n return width;\r\n }\r\n\r\n onCloseClick() {\r\n if(this.data.animationOut){\r\n this.document.getElementsByClassName('map-dialog')[0].classList.remove(this.data.animationIn);\r\n this.document.getElementsByClassName('map-dialog')[0].classList.add(this.data.animationOut);\r\n setTimeout(()=>{ \r\n this.mdDialogRef.close();\r\n }, 300);\r\n }\r\n else{\r\n this.mdDialogRef.close();\r\n }\r\n }\r\n\r\n buildWazeLink() {\r\n let coordinates = this.lat + \",\" + this.lng;\r\n\r\n return \"https://www.waze.com/ul?ll=\" + coordinates + \"&navigate=yes&zoom=17\";\r\n }\r\n \r\n}","\r\n
\r\n \r\n\r\n
{{title}}
\r\n
{{description}}
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {{ 'shared.mapDialog.text1' | translate:locale.language }}\r\n \r\n
\r\n\r\n","\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { SystemAreas } from 'src/app/shared/enums/system-areas.enum';\n\n@Component({\n selector: 'app-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SearchComponent implements OnInit {\n\n idAreaSistema:number = SystemAreas.BUSCADOR_WIDGET_PERFILES_PUBLICOS;\n\n constructor(private route:ActivatedRoute, private messageBusService: MessageBusService) { \n\n this.messageBusService.hideHeader();\n\n }\n\n ngOnInit(): void {\n\n if(this.route.snapshot.params.idAreaSistema){\n this.idAreaSistema = this.route.snapshot.params.idAreaSistema;\n }\n }\n}\n","
\n \n
","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { SearchComponent } from './pages/search/search.component';\n\n\nconst widgetRoutes: Routes = [\n {\n path: 'search/:idAreaSistema',\n component: SearchComponent,\n data:{\n showHeader: false\n }\n },\n {\n path: 'search',\n component: SearchComponent,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(widgetRoutes)],\n exports: [RouterModule]\n})\nexport class WidgetRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { WidgetRoutingModule } from './widget-routing.module';\nimport { SearchComponent } from './pages/search/search.component';\n\n\n\n@NgModule({\n declarations: [SearchComponent],\n imports: [\n SharedModule,\n CommonModule,\n WidgetRoutingModule\n ]\n})\nexport class WidgetModule { }\n","import { DOCUMENT } from '@angular/common';\nimport { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\n\n@Component({\n selector: 'app-not-found',\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.css']\n})\nexport class NotFoundComponent implements OnInit, OnDestroy {\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n @Inject(DOCUMENT) private document: Document,\n private router: Router) { \n\n }\n\n ngOnInit(): void {\n this.document.body.classList.add('not-found');\n }\n\n ngOnDestroy():void{\n this.document.body.classList.remove('not-found');\n }\n\n goHome() {\n this.router.navigate(['/'], { });\n }\n\n}\n","
\n
\n \n

{{ 'notFound.text1' | translate:locale.language }}

\n
{{ 'notFound.text2' | translate:locale.language }}
\n \n
\n
\n","export class ProfileFilterSearchResult {\r\n tc: number;\r\n n_tc: string;\r\n conceptos: ProfileFilterSearchResultConcept[];\r\n}\r\n\r\nexport class ProfileFilterSearchResultConcept {\r\n cc: number;\r\n n_cc: string;\r\n num: number;\r\n\r\n constructor(){\r\n this.cc = 0; \r\n }\r\n}\r\n\r\nexport class ProfileFilterSearchResultGroup {\r\n titulo: string;\r\n tooltip: string;\r\n idsConceptosClinicos: number[];\r\n results: ProfileFilterSearchResultConcept[];\r\n}","import { IWorkflowDataState } from \"../../../interfaces/workflow-data-state\";\nimport { OnlineAppointmentRequest } from \"../../process/online-appointment-request.model\";\nimport { AppointmentSummaryDataModel } from \"../models/appointment-summary-data.model\";\nimport { IAuthenticationWorkflowState } from \"../steps/authentication-step.model\";\nimport { IPatientContactFormAppointmentCheckoutWorkflowState } from \"../steps/patient-contact-form-appointment-checkout-step.model\";\nimport { IPatientFormAppointmentCheckoutWorkflowState } from \"../steps/patient-form-appointment-checkout-step.model\";\nimport { ISelectPatientAppointmentCheckoutWorkflowState } from \"../steps/select-patient-appointment-checkout-step.model\";\nimport { ISelectPatientRelationshipAppointmentCheckoutWorkflowState } from \"../steps/select-patient-relationship-appointment-checkout-step.model\";\nimport { ISummaryAppointmentCheckoutWorkflowState } from \"../steps/summary-appointment-checkout-step.model\";\nimport { RequestingPatient, RequestingUser, SenderPatientRelationship } from \"../../process/base-request.model\";\nimport { BaseWorkflowState } from \"./base-workflow-state.model\";\nimport * as moment from \"moment\";\nimport { AppointmentInfoDataModel, AppointmentType } from \"../models/appointment-info-data.model\";\nimport { PatientFormAppointmentDataModel } from \"../models/patient-form-appointment-data.model\";\nimport { UserPerson } from \"../../people/user-person.model\";\nimport { PersonDataModel } from \"../models/select-patient-data.model\";\nimport { PublicProfile } from \"../../people/public-profile.model\";\nimport { StateType } from \"src/app/shared/enums/state-type.enum\";\nimport CommonTypesHelper from \"src/app/shared/helpers/common-types-helper\";\nimport { ISelectCountryWorkflowState } from \"../steps/select-country-step.model\";\nimport { TerritorialDivision } from \"../../systems/territorial-division.model\";\n\nexport class OnlineAppointmentCliniwebState \n extends BaseWorkflowState \n implements \n IWorkflowDataState, \n IAuthenticationWorkflowState,\n ISelectCountryWorkflowState,\n ISelectPatientAppointmentCheckoutWorkflowState,\n IPatientFormAppointmentCheckoutWorkflowState,\n ISelectPatientRelationshipAppointmentCheckoutWorkflowState,\n IPatientContactFormAppointmentCheckoutWorkflowState,\n ISummaryAppointmentCheckoutWorkflowState{\n\n onlineAppointmentRequest: OnlineAppointmentRequest;\n idVerificacion: string;\n\n request: any;\n\n constructor();\n constructor(obj: OnlineAppointmentCliniwebState);\n constructor(obj?:any){\n super();\n \n this.onlineAppointmentRequest = obj && obj.onlineAppointmentRequest || new OnlineAppointmentRequest();\n this.idVerificacion = obj && obj.idVerificacion || null;\n \n if (obj)\n this.request = obj.request;\n }\n\n public getPosition(): number {\n return this.onlineAppointmentRequest.workflowPosition;\n }\n\n public setPosition(position: number): void {\n this.onlineAppointmentRequest.workflowPosition = position;\n }\n\n public getIdVerificacion(): string {\n return this.idVerificacion;\n }\n\n getIdTipoSolicitud(): number {\n return -1;\n }\n\n public getDoctorAvatarUrl(): string {\n return this.onlineAppointmentRequest.urlAvatarResponsableServicioDestino;\n }\n\n setPublicProfile(profile: PublicProfile):void {\n this.onlineAppointmentRequest.perfilPublico = profile;\n }\n\n getPublicProfile():PublicProfile {\n return this.onlineAppointmentRequest.perfilPublico;\n }\n\n public setUserData(userPerson: UserPerson): void {\n this.onlineAppointmentRequest.emailPersonaEmisora = userPerson.emailParticular;\n\n if(!this.onlineAppointmentRequest.usuarioSolicitante){\n this.onlineAppointmentRequest.usuarioSolicitante = new RequestingUser();\n }\n\n this.onlineAppointmentRequest.usuarioSolicitante.id = userPerson.id;\n this.onlineAppointmentRequest.usuarioSolicitante.username = userPerson.emailParticular; \n this.onlineAppointmentRequest.usuarioSolicitante.sexo = userPerson.sexo;\n this.onlineAppointmentRequest.usuarioSolicitante.fechaNacimiento = userPerson.fechaNacimiento;\n this.onlineAppointmentRequest.usuarioSolicitante.urlAvatar = userPerson.ubicacionLogo;\n this.onlineAppointmentRequest.usuarioSolicitante.nombre = userPerson.nombre;\n this.onlineAppointmentRequest.usuarioSolicitante.apellido = userPerson.apellido;\n this.onlineAppointmentRequest.usuarioSolicitante.idEstadoValidacionIdentidadPersona = userPerson.idEstadoValidacionIdentidadPersona;\n this.onlineAppointmentRequest.usuarioSolicitante.idPaisResidencia = userPerson.idPaisResidencia;\n\n if(userPerson.numeroTelCelular) {\n this.onlineAppointmentRequest.numeroCelularContacto = userPerson.numeroTelCelular;\n }\n }\n\n public getUserId(): number {\n return this.onlineAppointmentRequest.usuarioSolicitante && this.onlineAppointmentRequest.usuarioSolicitante.id\n ? this.onlineAppointmentRequest.usuarioSolicitante.id\n : 0;\n }\n\n public setEmmiterPersonId(personId: number): void {\n this.onlineAppointmentRequest.idPersonaEmisora = personId;\n }\n\n public getAppointmentInfo(): AppointmentInfoDataModel {\n let appointmentInfo = new AppointmentInfoDataModel();\n \n appointmentInfo.appointmentType = this.onlineAppointmentRequest.teleconsulta == 'S' \n ? AppointmentType.VIRTUAL \n : AppointmentType.FACE_TO_FACE;\n appointmentInfo.appointmentDate = moment.utc(this.onlineAppointmentRequest.fechaInicio).toDate(); \n appointmentInfo.doctorName = this.onlineAppointmentRequest.nombreResponsableServicioDestino;\n appointmentInfo.doctorSpecialty = this.onlineAppointmentRequest.especialidadResponsableServicioDestino;\n appointmentInfo.doctorAvatarUrl = this.onlineAppointmentRequest.urlAvatarResponsableServicioDestino;\n appointmentInfo.perfilPublico = this.onlineAppointmentRequest.perfilPublico;\n appointmentInfo.attentionPlaceName = this.onlineAppointmentRequest.nombreLocalidad;\n appointmentInfo.attentionPlaceAddress = this.onlineAppointmentRequest.direccionLocalidad;\n appointmentInfo.attentionPlaceLatLng = this.onlineAppointmentRequest.coordenadasLocalidad;\n appointmentInfo.medicalConsultationType = this.onlineAppointmentRequest.nombreProcedimiento;\n appointmentInfo.idEstado = this.onlineAppointmentRequest.idEstado;\n appointmentInfo.nombreEstado = this.onlineAppointmentRequest.nombreEstado;\n\n if(this.onlineAppointmentRequest.pacienteSolicitante)\n appointmentInfo.patientName = this.onlineAppointmentRequest.pacienteSolicitante.nombre;\n\n if(this.onlineAppointmentRequest.pacienteSolicitante && this.onlineAppointmentRequest.pacienteSolicitante.sexo)\n appointmentInfo.patientGender = this.onlineAppointmentRequest.pacienteSolicitante.sexo;\n\n if(this.onlineAppointmentRequest.relacionEmisorPaciente)\n appointmentInfo.patientRelationshipType = this.onlineAppointmentRequest.relacionEmisorPaciente;\n \n if (this.request && this.request.etapasSolicitud && this.request.etapasSolicitud.length > 0) {\n appointmentInfo.idEtapaSolicitud = this.request.etapasSolicitud[0].id;\n appointmentInfo.idResponsableServicio = this.request.etapasSolicitud[0].idResponsableServicio;\n appointmentInfo.idEmpresa = this.request.etapasSolicitud[0].idEmpresa;\n appointmentInfo.idEstado = this.request.etapasSolicitud[0].idEstado;\n appointmentInfo.nombreEstado = this.request.etapasSolicitud[0].nombreEstado;\n }\n\n return appointmentInfo;\n }\n\n public getRelationship(): number {\n return this.onlineAppointmentRequest.relacionEmisorPaciente > 0\n ? this.onlineAppointmentRequest.relacionEmisorPaciente == SenderPatientRelationship.USUARIO \n ? 1 \n : 2\n : 0;\n }\n\n public setRelationship(relationshipType: number): void {\n this.onlineAppointmentRequest.relacionEmisorPaciente = relationshipType == 1 \n ? SenderPatientRelationship.USUARIO\n : SenderPatientRelationship.DESCONOCIDO;\n }\n\n public setPatientId(patientId: number): void {\n if(!this.onlineAppointmentRequest.pacienteSolicitante){\n this.onlineAppointmentRequest.pacienteSolicitante = new RequestingPatient();\n }\n\n this.onlineAppointmentRequest.pacienteSolicitante.id = patientId;\n }\n\n public setDependentsFlow(): void {\n this.onlineAppointmentRequest.flujoDependientes = true;\n }\n\n public getUsername(): string {\n return this.onlineAppointmentRequest.usuarioSolicitante.nombre;\n }\n\n public getRequestingUser(): RequestingUser {\n return this.onlineAppointmentRequest.usuarioSolicitante;\n }\n\n public getRequestingPatient(): RequestingPatient {\n return this.onlineAppointmentRequest.pacienteSolicitante;\n }\n\n public isDependentsFlow(): boolean {\n return this.onlineAppointmentRequest.flujoDependientes;\n }\n\n public setPatientDataInitiallyIncomplete(incomplete: boolean):void {\n this.onlineAppointmentRequest.patientDataInitiallyIncomplete = incomplete;\n }\n public getPatientDataInitiallyIncomplete(): boolean {\n return this.onlineAppointmentRequest.patientDataInitiallyIncomplete;\n }\n\n public setPatient(patient: PersonDataModel): void {\n if(!this.onlineAppointmentRequest.pacienteSolicitante)\n this.onlineAppointmentRequest.pacienteSolicitante = new RequestingPatient();\n\n this.onlineAppointmentRequest.pacienteSolicitante.id = patient.id;\n this.onlineAppointmentRequest.pacienteSolicitante.nombre = patient.firstname;\n this.onlineAppointmentRequest.pacienteSolicitante.apellido = patient.lastname;\n this.onlineAppointmentRequest.pacienteSolicitante.email = patient.email;\n this.onlineAppointmentRequest.pacienteSolicitante.fechaNacimiento = patient.birthDate;\n this.onlineAppointmentRequest.pacienteSolicitante.sexo = patient.gender;\n this.onlineAppointmentRequest.pacienteSolicitante.numeroCelularParticular = patient.cellPhone;\n this.onlineAppointmentRequest.pacienteSolicitante.idEstadoValidacionIdentidadPersona = patient.identityPersonValidationStateId;\n\n this.onlineAppointmentRequest.pacienteSolicitante.idPaisResidencia = this.onlineAppointmentRequest.usuarioSolicitante.idPaisResidencia;\n }\n\n public getPatientFormData(): PatientFormAppointmentDataModel {\n \n let patientForm = new PatientFormAppointmentDataModel();\n\n patientForm.appointmentInfo = this.getAppointmentInfo();\n patientForm.relationship = this.getRelationship();\n\n if(this.onlineAppointmentRequest.pacienteSolicitante){\n var isUserPatient = this.onlineAppointmentRequest.relacionEmisorPaciente == SenderPatientRelationship.USUARIO;\n\n patientForm.firstname = isUserPatient && !this.onlineAppointmentRequest.pacienteSolicitante.nombre\n ? this.onlineAppointmentRequest.usuarioSolicitante.nombre\n : this.onlineAppointmentRequest.pacienteSolicitante.nombre;\n\n patientForm.lastname = isUserPatient && !this.onlineAppointmentRequest.pacienteSolicitante.apellido\n ? this.onlineAppointmentRequest.usuarioSolicitante.apellido\n : this.onlineAppointmentRequest.pacienteSolicitante.apellido;\n\n patientForm.gender = isUserPatient && !this.onlineAppointmentRequest.pacienteSolicitante.sexo\n ? this.onlineAppointmentRequest.usuarioSolicitante.sexo\n : this.onlineAppointmentRequest.pacienteSolicitante.sexo;\n\n if (isUserPatient) {\n if (CommonTypesHelper.dateHasValue(this.onlineAppointmentRequest.pacienteSolicitante.fechaNacimiento)) {\n patientForm.birthdate = (this.onlineAppointmentRequest.pacienteSolicitante.fechaNacimiento as Date);\n } else if (CommonTypesHelper.dateHasValue(this.onlineAppointmentRequest.usuarioSolicitante.fechaNacimiento)){\n patientForm.birthdate = (this.onlineAppointmentRequest.usuarioSolicitante.fechaNacimiento as Date);\n }\n } else if (CommonTypesHelper.dateHasValue(this.onlineAppointmentRequest.pacienteSolicitante.fechaNacimiento)) {\n patientForm.birthdate = (this.onlineAppointmentRequest.pacienteSolicitante.fechaNacimiento as Date);\n }\n\n patientForm.email = this.onlineAppointmentRequest.pacienteSolicitante.email;\n\n if (isUserPatient) {\n patientForm.identityPersonValidationStateId = this.onlineAppointmentRequest.pacienteSolicitante.idEstadoValidacionIdentidadPersona\n ? this.onlineAppointmentRequest.pacienteSolicitante.idEstadoValidacionIdentidadPersona\n : this.onlineAppointmentRequest.usuarioSolicitante.idEstadoValidacionIdentidadPersona;\n } else {\n // el paciente (dependiente) se crea a partir de la pantalla de dependientes donde todos los campos son requeridos\n patientForm.identityPersonValidationStateId = StateType.NombreApellidoSexoFechaNacimientoValidados;\n }\n }\n \n return patientForm;\n }\n\n public setPatientFormData(data: PatientFormAppointmentDataModel): void { \n if(!this.onlineAppointmentRequest.pacienteSolicitante){\n this.onlineAppointmentRequest.pacienteSolicitante = new RequestingPatient();\n }\n\n this.onlineAppointmentRequest.pacienteSolicitante.nombre = data.firstname;\n this.onlineAppointmentRequest.pacienteSolicitante.apellido = data.lastname;\n this.onlineAppointmentRequest.pacienteSolicitante.denominacion = `${data.firstname} ${data.lastname}`;\n this.onlineAppointmentRequest.pacienteSolicitante.fechaNacimiento = data.birthdate;\n this.onlineAppointmentRequest.pacienteSolicitante.sexo = data.gender;\n this.onlineAppointmentRequest.pacienteSolicitante.idEstadoValidacionIdentidadPersona = data.identityPersonValidationStateId;\n\n this.onlineAppointmentRequest.pacienteSolicitante.idPaisResidencia = this.onlineAppointmentRequest.usuarioSolicitante.idPaisResidencia;\n }\n\n public getPatientRelationship(): number {\n return this.onlineAppointmentRequest.relacionEmisorPaciente;\n }\n\n public setPatientRelationship(patientRelationshipType: number): void {\n this.onlineAppointmentRequest.relacionEmisorPaciente = patientRelationshipType;\n }\n\n public getPatientName():string{\n return this.onlineAppointmentRequest.pacienteSolicitante.nombre;\n }\n \n public getUserPhone(): string {\n return this.onlineAppointmentRequest.numeroCelularContacto;\n }\n\n public setUserPhone(userPhone: string): void {\n this.onlineAppointmentRequest.numeroCelularContacto = userPhone;\n }\n\n public getPatientPhone(): string {\n return this.onlineAppointmentRequest.pacienteSolicitante.numeroCelularParticular;\n }\n\n public setPatientPhone(patientPhone: string): void {\n this.onlineAppointmentRequest.numeroCelularContacto = patientPhone;\n this.onlineAppointmentRequest.pacienteSolicitante.numeroCelularParticular = patientPhone;\n }\n\n public getPatientEmail(): string {\n return this.onlineAppointmentRequest.pacienteSolicitante.email;\n }\n\n public setPatientEmail(patientEmail: string): void {\n this.onlineAppointmentRequest.pacienteSolicitante.email = patientEmail;\n }\n\n public getContactType(): number {\n return this.onlineAppointmentRequest.tipoContacto;\n }\n\n public setContactType(contactType: number): void {\n this.onlineAppointmentRequest.tipoContacto = contactType;\n }\n\n public getAppointmentSummary(): AppointmentSummaryDataModel {\n \n let summary = new AppointmentSummaryDataModel();\n\n summary.appointmentInfo = this.getAppointmentInfo();\n\n summary.specialty = this.onlineAppointmentRequest.especialidadResponsableServicioDestino;\n\n if(this.onlineAppointmentRequest.coordenadasLocalidad){\n summary.locationLat = +this.onlineAppointmentRequest.coordenadasLocalidad.split(';')[0];\n summary.locationLng = +this.onlineAppointmentRequest.coordenadasLocalidad.split(';')[1];\n }\n\n if(this.onlineAppointmentRequest.telefonoLocalidad){\n summary.phoneNumber = this.onlineAppointmentRequest.telefonoLocalidad;\n }\n \n return summary;\n }\n\n public getCountryId(): number {\n return this.onlineAppointmentRequest.usuarioSolicitante.idPaisResidencia;\n }\n\n public setCountry(country: TerritorialDivision): void {\n this.onlineAppointmentRequest.usuarioSolicitante.idPaisResidencia = country.idPais;\n }\n}\n","import { AfterContentChecked, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { ComponentFinishLoadingMessage, FloatingComponentsMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { FormControlComponent, FormComponentData, FormControl, FormComponentType } from '../../models/people/form-control.model';\nimport { Form, FormConfiguration } from '../../models/people/form.model';\nimport { Link } from '../../models/people/link.model';\n\n@Component({\n selector: 'app-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.css']\n})\nexport class FormComponent implements OnInit, OnDestroy, AfterContentChecked {\n private ngUnsubscribe = new Subject();\n\n private _idAreaSistema:number;\n\n @Input() set idAreaSistema(value:number){\n\n if(this._idAreaSistema == value)\n return;\n\n this._idAreaSistema = value;\n \n this.loadForm();\n }\n\n // Dictionary where key is componentName and value is object\n @Input() formConfigurationData : {[componentName: string] : any; };\n\n data: any; \n form: Form;\n controles: FormControl[];\n formConfiguration: FormConfiguration;\n tipoComponente = FormComponentType;\n loadingForm: boolean = false;\n \n // Logic to wait for all component to finish loading before showing the form\n waitForComponentsToFinish = false;\n componentsFinishLoading = false;\n componentsConfirmedFinishLoading = 0;\n\n anonymousComponentName:string;\n\n constructor(\n private baseService: BaseService,\n private layoutService: LayoutService,\n private activatedRoute: ActivatedRoute,\n private appStorageService: AppStorageService, \n private messageBusService: MessageBusService,\n private router: Router,\n private changeDetector: ChangeDetectorRef,\n @Inject(L10N_LOCALE) public locale: L10nLocale) \n {\n this.form = new Form();\n this.controles = [];\n\n this.layoutService.hideComponentSource$\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data:FormComponentData)=>{\n this.changeVisibilityComponent(data);\n });\n }\n\n ngOnInit(): void {\n\n // Se comenta el subcribe para recargar el formulario ya que no falla en las pruebas (mi salud) y es innecesario.\n // this.messageBusService.onReloadFormComponent().pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.loadFromIdAreaCliente.bind(this)); \n // this.messageBusService.sendReloadFormComponent(this._idAreaSistema);\n\n this.loadFromIdAreaCliente();\n\n // This will be use in case the form is configured to wait for all components to finish loading before showing the content\n this.messageBusService.onComponentFinishLoading()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(message => {\n this.onComponentFinishLoading(message);\n });\n\n // Form configuration event\n this.messageBusService.onFormConfiguration()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(message => {\n this.formConfiguration = message.config;\n });\n\n // Control compoenent configuration classname\n this.messageBusService.onControlComponentClassname()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(message => {\n const controlComponent = this.controles.find(control=> control.componentes.filter(c => c.nombre === message.conponentName).length > 0);\n\n if(controlComponent)\n controlComponent.className = message.classname;\n });\n }\n\n private loadFromIdAreaCliente(): void {\n if(this._idAreaSistema > 0 && !this.loadingForm){\n this.loadForm();\n }\n else{\n this.activatedRoute.data\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(data => {\n \n let tokenObject = this.appStorageService.getToken();\n if(!tokenObject && data.nombreComponenteAnonimo){\n this.anonymousComponentName = data.nombreComponenteAnonimo;\n }else if(data.idAreaSistema){\n this._idAreaSistema = data.idAreaSistema;\n this.loadForm();\n }\n else{\n this.getDataByMenu();\n }\n });\n }\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngAfterContentChecked(): void {\n this.changeDetector.detectChanges();\n }\n\n loadForm() {\n this.loadingForm = true;\n\n this.layoutService.getForm(this._idAreaSistema)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((form:Form)=>{\n this.loadingForm = false;\n\n if(!form) return;\n\n this.form = new Form(form);\n this.controles = form ? form.controles.map(c=> { return new FormControl(c) }) : [];\n\n this.parseFormData(form);\n \n this.sendFloatingComponents();\n });\n }\n\n parseFormData(form: Form) {\n if (form.valor) {\n try {\n this.form.configuracion = new FormConfiguration(JSON.parse(form.valor));\n\n if (this.form.configuracion){\n this.waitForComponentsToFinish = this.form.configuracion.waitForComponents;\n\n this.formConfiguration = this.form.configuracion;\n } \n \n if(!this.waitForComponentsToFinish){\n this.sendFormFinishLoadingMessage(this._idAreaSistema);\n }\n } \n catch (error) {}\n }\n }\n\n sendFloatingComponents(){\n\n let components: FormControlComponent[] = [];\n\n this.controles.forEach(c=>{\n components = components.concat(c.componentes.filter(cp=>cp.contenedor));\n });\n\n let message = new FloatingComponentsMessage();\n\n message.componentsData = components.map(c => this.getComponentData(c));\n\n\n this.messageBusService.sendFloatingComponents(message);\n \n }\n\n onComponentFinishLoading(message: ComponentFinishLoadingMessage) {\n \n // If this form is not configured to wait for components to load lets just ignore this event\n if (!this.waitForComponentsToFinish)\n return;\n\n if (message.idFormulario == this.form.id) {\n this.componentsConfirmedFinishLoading += 1;\n\n if (this.controles.length == this.componentsConfirmedFinishLoading){\n this.componentsFinishLoading = true;\n\n this.sendFormFinishLoadingMessage(this._idAreaSistema);\n }\n }\n }\n\n isFormVisible() {\n let result = (!this.waitForComponentsToFinish || this.componentsFinishLoading) && !this.anonymousComponentName;\n\n return result;\n }\n\n isAnonymousComponentVisible(){\n return this.anonymousComponentName != undefined;\n }\n\n getForm(){\n return this.layoutService.getForm(this._idAreaSistema);\n }\n\n getDataByMenu(){\n let links: Link[] = this.appStorageService.getItemSession(STORAGE.MENU, true);\n const cleanUrl = this.router.url.replace(\"/\", \"\");\n const completePath = cleanUrl.split(\"?\")[0]\n const path = completePath.split(\"/\")[0];\n\n if(path == '') {\n let firstLink = links[0].identificadorUrl\n ? links[0].identificadorUrl\n : links[0].subMenu.length > 0\n ? links[0].subMenu[0].identificadorUrl\n : links[1].identificadorUrl\n\n this.baseService.goToRoute(firstLink);\n }\n else{\n let link = this.findLink(links, completePath) ?? links.find((l:Link)=> l.identificadorUrl == path);\n\n if(link){\n let tokenObject = this.appStorageService.getToken();\n\n if(!tokenObject && link.nombreComponenteAnonimo){\n this.anonymousComponentName = link.nombreComponenteAnonimo;\n }else{\n this._idAreaSistema = link.idAreaSistema;\n this.loadForm();\n }\n }\n }\n }\n\n private findLink(arg0:Link[] | null, arg1: string): Link | undefined {\n let resultado: Link | undefined;\n for (let item of (arg0 ?? [])) {\n resultado = item.identificadorUrl == arg1 ? item : this.findLink(item.subMenu, arg1);\n if (resultado) break;\n }\n return resultado;\n }\n\n getFlexStyle(control: FormControl){\n if(!control) return 0;\n let porc = control.numeroControlesPorFila ? 100 / control.numeroControlesPorFila : 100;\n return `1 1 ${porc}%`;\n }\n\n leakedComponents(components:FormControlComponent[]){\n return components.filter(c=> !c.contenedor);\n }\n\n getComponentData(component:FormControlComponent){\n let componentData = new FormComponentData();\n componentData.nombreComponente = component.nombre;\n componentData.contenedor = component.contenedor;\n componentData.valor = component.valor;\n componentData.idControlPadre = component.idControl;\n componentData.idFormulario = this.form.id;\n componentData.nombreFormulario = this.form.nombre;\n\n if (this.formConfigurationData && this.formConfigurationData[componentData.nombreComponente] != undefined) {\n componentData.configurationData = this.formConfigurationData[componentData.nombreComponente];\n }\n\n return componentData; \n }\n\n changeVisibilityComponent(data:FormComponentData){\n let control = this.controles.find(c => c.id == data.idControlPadre);\n\n if(!control) return;\n\n let component = control.componentes.find(c => c.nombre == data.nombreComponente);\n \n if(!component) return;\n \n component.visible = false;\n }\n\n sendFormFinishLoadingMessage(idAreaSistema: number){\n\n this.messageBusService.formFinishLoading(idAreaSistema);\n }\n}\n","
\n\n \n

{{form.nombre| i18nText:locale.language}}

\n\n \n

{{form.descripcion | i18nText:locale.language}}

\n\n \n \n
0\" [hidden]=\"!control.isVisible()\">\n \n \n
{{control.titulo | i18nText:locale.language}}
\n \n
\n \n
\n \n
\n
\n
\n
\n
\n\n \n\n\n","import { Injectable } from '@angular/core';\nimport { HttpBaseService } from './http-base-service';\nimport { Observable } from 'rxjs';\nimport { PatientVerificationResponse } from 'src/app/shared/interfaces/patient-verification-response';\nimport { BaseService } from './base.service';\nimport { RequestToVerifySummary } from 'src/app/shared/interfaces/request-to-verify-summary';\nimport { RequestToVerifyUpdateModel } from 'src/app/shared/models/systems/resquest-to-verify-update.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RequestsToVerifyService {\n\n private baseUrl = 'api/solicitudes-x-verificar';\n\n constructor(private http: HttpBaseService, private baseService: BaseService) { }\n\n confirmation(idVerificacion: string): Observable {\n const url = `${this.baseUrl}/${idVerificacion}/confirmacion`;\n return this.http.post(url, null, null, true);\n }\n\n validate(fechaNacimiento: string, idVerificacion: string): Observable {\n const url = `${this.baseUrl}/${idVerificacion}/validacion-paciente`;\n return this.http.post(url, { fechaNacimiento }, null, false);\n }\n\n getSummaryData(idVerificacion: string): Observable {\n const url = `${this.baseUrl}/id-verificacion/${idVerificacion}/resumen?idEmpresa=${this.baseService.getCompanyId()}`;\n return this.http.get(url, null, false);\n }\n\n update(idVerificacion: string, model: RequestToVerifyUpdateModel): Observable{\n const url = `${this.baseUrl}/${idVerificacion}/actualizacion-solicitud-consulta`;\n return this.http.put(url, model, null, true);\n }\n}\n\nexport interface RequestsToVerifyConfirmationResponse {\n idPaciente: number, idRelacionPaciente: number\n}\n","
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n 0\" (click)=\"clearSelectedName()\"> \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{option.nombre}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
{{wrapper.className}}
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
{{ 'shared.searchDoctors.text4' | translate:locale.language }}
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ 'name' | translate:locale.language }} {{ 'specialty' | translate:locale.language }} {{result.descripcion}} {{ 'city' | translate:locale.language }} {{result.ciudades}}
\r\n
\r\n
\r\n
\r\n
{{result.descripcion}}
\r\n
{{result.ciudades}}
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
{{ 'shared.searchDoctors.text6' | translate:locale.language }}
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ 'name' | translate:locale.language }} {{ 'specialty' | translate:locale.language }} {{result.descripcion}} {{ 'city' | translate:locale.language }} {{result.ciudades}}
\r\n
\r\n
\r\n
\r\n
{{result.descripcion}}
\r\n
{{result.ciudades}}
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n {{ 'shared.searchDoctors.text8' | translate:locale.language }}\r\n
\r\n
    \r\n
  • \r\n {{ 'shared.searchDoctors.text9' | translate:locale.language }}\r\n
  • \r\n
  • \r\n {{ 'shared.searchDoctors.text10' | translate:locale.language }}\r\n
  • \r\n
  • \r\n {{ 'shared.searchDoctors.text11' | translate:locale.language }}\r\n
  • \r\n
\r\n
\r\n\r\n
","import { Component, HostListener, Inject, Input, OnInit } from '@angular/core';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\r\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { DoctorService } from 'src/app/core/services/doctors.service';\r\nimport { TerritorialDivisionsService } from 'src/app/core/services/territorial-divisions.service';\r\nimport { DoctorSearchResult } from 'src/app/shared/models/cdr/doctor-search-result.model';\r\nimport { TerritorialDivision } from 'src/app/shared/models/systems/territorial-division.model';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { PublicProfileType } from '../../models/people/profile-search-results.model';\r\nimport { MessageBusService, ProfileSearchMessage } from 'src/app/core/services/message-bus.service';\r\nimport { FormComponentData } from '../../models/people/form-control.model';\r\nimport { IControlComponent } from '../../interfaces/control-component';\r\nimport { UtilsService } from 'src/app/core/services/utils.service';\r\nimport { DirectoryFilters } from '../../models/systems/directory.model';\r\nimport { PortalPhrConfiguracionLocalidad } from '../../models/systems/portal-phr.model';\r\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\r\n\r\n@Component({\r\n selector: 'search-doctors-container',\r\n templateUrl: './search-doctors.component.html',\r\n styleUrls: ['./search-doctors.component.css']\r\n})\r\n@ComponentLookup('SearchDoctorsComponent')\r\nexport class SearchDoctorsComponent implements OnInit, IControlComponent { \r\n data: FormComponentData;\r\n searchDoctorsForm: FormGroup;\r\n cityControl: FormControl;\r\n searchText : FormControl;\r\n searchValue = \"\";\r\n searchTimeout: number; \r\n locationGroups: TerritorialDivisionGroup[] = [];\r\n selectedCity: TerritorialDivision;\r\n filteredLocationsGroups: TerritorialDivisionGroup[]; \r\n resultWrapper: DoctorSearchResultUIWrapper; \r\n companyName: string = \"\";\r\n qsParams: SearchResultsQsParameters; \r\n placeholderTexts: [];\r\n onlyDoctorsProvider = false; \r\n clinicalConcept: DoctorSearchResult; \r\n disabledSearch = false; \r\n profileSearchTypes = [PublicProfileType.Doctor];\r\n locationConfiguration: PortalPhrConfiguracionLocalidad;\r\n cityText: string;\r\n stateText: string;\r\n countryText: string;\r\n headquartersCompIds: number[] = [];\r\n\r\n @Input() parentData: FormComponentData;\r\n\r\n @Input() useSearchEvents = false; \r\n @Input() profileType = PublicProfileType.Doctor;\r\n\r\n constructor(\r\n private doctorService: DoctorService, \r\n private territorialDivisionsService: TerritorialDivisionsService,\r\n private baseService: BaseService,\r\n private router: Router,\r\n private route : ActivatedRoute,\r\n private messageBusService: MessageBusService,\r\n private translation: L10nTranslationService,\r\n private utilsService: UtilsService,\r\n private publicProfileService: PublicProfileService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.parseControlData();\r\n\r\n this.cityControl = new FormControl('');\r\n this.searchText = new FormControl('');\r\n\r\n this.searchDoctorsForm = new FormGroup({\r\n searchText: this.searchText,\r\n city: this.cityControl\r\n }); \r\n\r\n let companyId = this.baseService.getCompanyId();\r\n this.companyName = this.baseService.getCliniwebDirectoryCompanyName();\r\n \r\n let dir = this.baseService.getDirectory();\r\n this.headquartersCompIds = dir.idEmpresasSedes? dir.idEmpresasSedes.split(\",\").map(id => parseInt(id)) : [];\r\n\r\n this.resultWrapper = new DoctorSearchResultUIWrapper(companyId, this.headquartersCompIds); \r\n\r\n this.translation.onChange().subscribe({\r\n next: () => {\r\n this.placeholderTexts = this.translation.translate(this.isMobile()? 'shared.searchDoctors.text13': 'shared.searchDoctors.text12'); \r\n this.cityText = this.translation.translate('city'); \r\n this.stateText = this.translation.translate('province'); \r\n this.countryText = this.translation.translate('country'); \r\n }\r\n }); \r\n \r\n if (dir && dir.configuracionBusquedaLocalidad)\r\n this.locationConfiguration = this.baseService.parseObject(JSON.parse(dir.configuracionBusquedaLocalidad)); \r\n\r\n this.loadAllCities();\r\n\r\n // Auto complete search function \r\n this.cityControl.valueChanges.subscribe(v => {\r\n // When an option is selected here we receive the complete object (TerritorialDivision), in those cases we want to filter by the object name\r\n if (v && v.id)\r\n v = v.nombre;\r\n\r\n if (!v)\r\n this.filteredLocationsGroups = this.locationConfiguration? this.goupCities(this.locationConfiguration.localidadesPorDefecto) : this.locationGroups;\r\n else {\r\n let filtered = this._filterCities(v);\r\n\r\n this.filteredLocationsGroups = filtered;\r\n } \r\n });\r\n\r\n this.setDirectorySearchProfileTypes();\r\n\r\n // On search results page we will initialize the control base con QS parameters\r\n this.initializeFromQs();\r\n } \r\n\r\n isMobile() {\r\n return window.outerWidth < 959;\r\n }\r\n\r\n initializeFromQs() {\r\n // Get search parameters\r\n this.route.queryParams.subscribe(params => {\r\n this.qsParams = this.baseService.parseObject(params);\r\n\r\n if (this.qsParams && this.qsParams.t) {\r\n // Disabled search for 1 second so it does not fire after we change the search input text\r\n this.disableSearch(1000);\r\n\r\n this.searchDoctorsForm.controls[\"searchText\"].setValue(this.qsParams.t);\r\n } \r\n\r\n if (this.qsParams && this.qsParams.tp)\r\n this.profileType = this.qsParams.tp;\r\n \r\n if (this.qsParams && this.qsParams.ds)\r\n this.onlyDoctorsProvider = true;\r\n\r\n if (this.qsParams && this.qsParams.nav)\r\n {\r\n this.clinicalConcept = new DoctorSearchResult();\r\n this.clinicalConcept.claseId = this.qsParams.idTc;\r\n this.clinicalConcept.id = this.qsParams.idC;\r\n this.clinicalConcept.url = this.qsParams.nav;\r\n this.clinicalConcept.nombre = this.qsParams.t;\r\n }\r\n\r\n this.setDirectorySearchProfileTypes();\r\n\r\n if (this.qsParams)\r\n setTimeout(() => {\r\n this.fireSearchEvent(this.qsParams); \r\n }, 50); \r\n }); \r\n }\r\n\r\n setDirectorySearchProfileTypes() { \r\n let directory = this.baseService.getDirectory();\r\n\r\n if (directory && directory.filtros) {\r\n let filtersObj = JSON.parse(directory.filtros);\r\n let filters = this.baseService.parseObject(filtersObj); \r\n\r\n // Find the filter for this provider\r\n let provider = filters.providers.find(p => p.type == this.profileType);\r\n\r\n // Check if the provider has special configuracion for search\r\n if (provider && provider.searchProviderTypes) {\r\n this.profileSearchTypes = provider.searchProviderTypes;\r\n }\r\n else \r\n this.profileSearchTypes = [this.profileType];\r\n } \r\n } \r\n\r\n onOptionSelected(event: MatAutocompleteSelectedEvent) {\r\n this.selectedCity = event.option.value \r\n\r\n // If the user selected previously a concept, let just fire the search\r\n if (this.clinicalConcept)\r\n this.navigateToSearchResult(this.clinicalConcept);\r\n else if (this.useSearchEvents)\r\n this.onSearchClick();\r\n }\r\n\r\n autoCompleteDisplayWith(item: TerritorialDivision) {\r\n return item? item.nombre : \"\";\r\n } \r\n\r\n onAutocompleteOpened() {\r\n \r\n // Each time the user open the autocomplete we want to show ALL options\r\n // After that the autocomplete will work as always\r\n //let filtered = this._filterCities(\"\");\r\n\r\n //this.filteredLocationsGroups = filtered;\r\n } \r\n \r\n onAutocompleteClosed() {\r\n // When autocomplete closed always set the name of the selected city/state\r\n if (this.selectedCity) {\r\n this.cityControl.setValue(this.selectedCity);\r\n }\r\n }\r\n\r\n clearSelectedName() {\r\n this.searchText.setValue(\"\");\r\n this.clinicalConcept = null as any;\r\n this.resultWrapper.clear();\r\n\r\n // Fire search\r\n if (this.useSearchEvents)\r\n this.onSearchClick();\r\n }\r\n\r\n clearSelectedLocation(trigger : MatAutocompleteTrigger) {\r\n this.selectedCity = null as any;\r\n this.cityControl.setValue(this.selectedCity);\r\n \r\n // Fire search\r\n if (this.useSearchEvents)\r\n this.onSearchClick();\r\n\r\n // Open combo to select a new option\r\n setTimeout(() => {\r\n trigger.openPanel();\r\n }, 100); \r\n } \r\n\r\n private _filterCities(value: string): TerritorialDivisionGroup[] {\r\n \r\n try {\r\n // We need to use a try catch, because when searching this is an string but when an option is selected this is an object\r\n const filterValue = value.toLowerCase(); \r\n \r\n let result: TerritorialDivisionGroup[] = [];\r\n\r\n for (let index = 0; index < this.locationGroups.length; index++) {\r\n const group = this.locationGroups[index];\r\n \r\n let locations = group.values.filter(l => l.nombre.toLowerCase().indexOf(filterValue) === 0);\r\n\r\n if (locations.length > 0)\r\n result.push(new TerritorialDivisionGroup(group.key, locations, this.getLocationDisplayNameFromLevel(group.key)))\r\n }\r\n\r\n //return this.cities.filter(c => c.nombre.toLowerCase().indexOf(filterValue) === 0); \r\n\r\n return result;\r\n } \r\n catch (error) { \r\n }\r\n\r\n return [];\r\n }\r\n\r\n loadAllCities(): void {\r\n let levels = \"3\"; // Cities\r\n\r\n if (this.locationConfiguration)\r\n levels = this.locationConfiguration.niveles;\r\n\r\n this.territorialDivisionsService.getByLevels(this.locale.language, \"Panama\", levels).subscribe(locations => {\r\n locations.forEach(c => c.nombre = c.nombre.toLowerCase());\r\n \r\n this.locationGroups = this.goupCities(locations); \r\n this.filteredLocationsGroups = this.goupCities(this.locationConfiguration? this.locationConfiguration.localidadesPorDefecto : locations); \r\n \r\n if (this.qsParams && this.qsParams.idP) {\r\n let city = locations.find(c => c.id == this.qsParams.idP);\r\n\r\n if (city) {\r\n this.cityControl.setValue(city);\r\n this.selectedCity = city;\r\n }\r\n }\r\n },\r\n error => {\r\n this.baseService.handleServiceError(error, \"Error getting cities\");\r\n });\r\n } \r\n\r\n goupCities(locations: TerritorialDivision[]) : TerritorialDivisionGroup[] {\r\n var groups: any = [];\r\n var result: TerritorialDivisionGroup[] = [];\r\n\r\n for (let index = 0; index < locations.length; index++) {\r\n const location = locations[index];\r\n \r\n if (!groups[location.nivel]) {\r\n groups[location.nivel] = new TerritorialDivisionGroup(location.nivel, [], this.getLocationDisplayNameFromLevel(location.nivel));\r\n }\r\n\r\n groups[location.nivel].values.push(location);\r\n }\r\n\r\n var keys = Object.keys(groups);\r\n\r\n for (let index = 0; index < keys.length; index++) {\r\n result.push(groups[keys[index]]); \r\n }\r\n\r\n return result;\r\n };\r\n\r\n getLocationDisplayNameFromLevel(level: number) {\r\n return level == 1? this.countryText : (level == 2? this.stateText : this.cityText);\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n clickout(event : any) {\r\n let elResults = document.getElementsByClassName(\"search-doctor-search-results\")[0]; \r\n let elSearchBox = document.getElementsByClassName(\"search-doctors-container\")[0]; \r\n\r\n if(elResults && !elResults.contains(event.target) && !elSearchBox.contains(event.target))\r\n this.resultWrapper.hide();\r\n }\r\n\r\n onSearchInputClick() {\r\n let containerClass = this.useSearchEvents? \"body-container\" : \"mat-sidenav-content\";\r\n\r\n let container = window.document.getElementsByClassName(containerClass)[0];\r\n let el = window.document.getElementsByClassName(\"left-box\")[0];\r\n\r\n this.utilsService.scrollToElementWithAnimation(container, el);\r\n\r\n this.resultWrapper.show();\r\n } \r\n\r\n onSearch(search : string) {\r\n if (this.searchTimeout)\r\n window.clearTimeout(this.searchTimeout);\r\n\r\n if (this.disabledSearch)\r\n return;\r\n\r\n this.searchTimeout = window.setTimeout(() => {\r\n this.doSearch(search);\r\n }, 300);\r\n }\r\n \r\n doSearch(search : string) {\r\n if (!search || !search.trim())\r\n return;\r\n\r\n search = search.trim();\r\n\r\n // If the autocomplete is not enabled then does not search.\r\n // It will only search when user press the search btn, and the results will be shown on the search-results component\r\n if(!this.isAutoCompleteEnabled())\r\n return;\r\n\r\n this.searchValue = search;\r\n\r\n this.doctorService.searchDoctors(this.locale.language, search, this.companyName, this.profileSearchTypes).subscribe(results =>{ \r\n \r\n // Clear previous results\r\n this.resultWrapper.clear();\r\n\r\n this.clinicalConcept = null as any;\r\n \r\n // Add new items\r\n results.forEach(result => {\r\n this.resultWrapper.addItem(result);\r\n }); \r\n },\r\n error => {\r\n this.baseService.handleServiceError(error, \"Error getting profiles\"); \r\n });\r\n }\r\n\r\n wrappersTrackBy(index : number, item: DoctorSearchResultUIWrapperGroup){\r\n return item.classId; \r\n }\r\n\r\n resultsTrackBy(index : number, item: DoctorSearchResult){\r\n return item.id; \r\n }\r\n\r\n territorialDivisionsTrackBy(index : number, item: TerritorialDivision){\r\n return item.id; \r\n }\r\n\r\n setSelectedClinicalConcept(item: DoctorSearchResult, trigger : MatAutocompleteTrigger) { \r\n \r\n this.clinicalConcept = item; \r\n\r\n // Disabled search for 1 second so it does not fire after we change the search input text\r\n this.disableSearch(1000);\r\n\r\n // Set concept name to search input\r\n this.searchDoctorsForm.controls[\"searchText\"].setValue(item.nombre); \r\n\r\n this.resultWrapper.hide();\r\n\r\n if (!this.selectedCity)\r\n // Open city panel\r\n trigger.openPanel(); \r\n else \r\n this.navigateToSearchResult(item);\r\n }\r\n\r\n disableSearch(time: number) {\r\n this.disabledSearch = true;\r\n\r\n if (time)\r\n setTimeout(() => {\r\n this.disabledSearch = false;\r\n }, time); \r\n }\r\n\r\n // Concept search\r\n navigateToSearchResult(item: DoctorSearchResult) {\r\n \r\n let params = new SearchResultsQsParameters();\r\n\r\n params.idTc = item.claseId;\r\n params.idC = item.id;\r\n params.nav = item.url;\r\n params.idP = this.selectedCity? this.selectedCity.id : 0;\r\n params.idDt = this.selectedCity? this.selectedCity.identificador : \"\";\r\n params.t = item.nombre; \r\n params.tp = this.profileType; \r\n params.ds = this.onlyDoctorsProvider;\r\n params.rUrl = this.router.url;\r\n\r\n this.resultWrapper.hide();\r\n\r\n if (this.useSearchEvents)\r\n this.fireSearchEvent(params);\r\n else\r\n this.router.navigate(['/busqueda'], { queryParams: params });\r\n }\r\n \r\n // Text search\r\n onSearchClick() {\r\n let searchText = this.searchDoctorsForm.controls[\"searchText\"].value;\r\n \r\n if (searchText)\r\n searchText = searchText.trim();\r\n\r\n // If the user click search but before a clinical concept was selected let just do a concept search\r\n if (this.clinicalConcept) {\r\n this.navigateToSearchResult(this.clinicalConcept);\r\n return;\r\n } \r\n\r\n let params = new SearchResultsQsParameters();\r\n\r\n params.idTc = 0;\r\n params.idC = 0;\r\n params.nav = \"\";\r\n params.idP = this.selectedCity? this.selectedCity.id : 0;\r\n params.idDt = this.selectedCity? this.selectedCity.identificador : \"\";\r\n params.t = searchText; \r\n params.tp = this.profileType; \r\n params.ds = this.onlyDoctorsProvider;\r\n params.rUrl = this.router.url; \r\n\r\n this.resultWrapper.hide();\r\n\r\n if (this.useSearchEvents)\r\n this.fireSearchEvent(params);\r\n else\r\n this.router.navigate(['/busqueda'], { queryParams: params });\r\n }\r\n\r\n fireSearchEvent(params: SearchResultsQsParameters) {\r\n // Fire a new search event for all the suscribers\r\n var message = new ProfileSearchMessage();\r\n message.profileType = this.profileType;\r\n message.searchText = params.nav? \"\" : params.t;\r\n message.conceptNav = params.nav;\r\n message.doctorSearch = params.ds; \r\n message.conceptId = params.idC;\r\n message.conceptClaseId = params.idTc; \r\n\r\n if (params.idDt) { \r\n message.territorialDivisionIdentification = params.idDt; \r\n }\r\n\r\n this.messageBusService.profileSearch(message)\r\n }\r\n\r\n onDoctorClick(item: DoctorSearchResult) {\r\n let url = this.publicProfileService.getPublicProfileUrl(item.url);\r\n\r\n this.router.navigate([url]); \r\n }\r\n\r\n getPlaceholderText() {\r\n return this.placeholderTexts[this.profileType - 1];\r\n }\r\n\r\n getDisplayColumns() {\r\n if (this.profileType == PublicProfileType.Doctor)\r\n return ['name', 'specialty', 'city'];\r\n else \r\n return ['name', 'city'];\r\n }\r\n\r\n areDoctorsResults() {\r\n return this.profileType == PublicProfileType.Doctor;\r\n }\r\n\r\n isAutoCompleteEnabled() {\r\n return this.profileType == PublicProfileType.Doctor\r\n || this.profileType == PublicProfileType.CentroDeImagenes; \r\n }\r\n\r\n private parseControlData() {\r\n if (!this.data)\r\n this.data = this.parentData;\r\n\r\n if (this.data && this.data.valor) {\r\n try {\r\n this.data.valor = JSON.parse(this.data.valor); \r\n \r\n let data = this.data.valor;\r\n \r\n this.onlyDoctorsProvider = data.showOnlyDoctors;\r\n } catch (ex) {} \r\n } \r\n }\r\n}\r\n\r\nexport class DoctorSearchResultUIWrapper {\r\n companyId: number = 0;\r\n groups: DoctorSearchResultUIWrapperGroup[];\r\n hidden: boolean = false;\r\n searchDone: boolean = false;\r\n headquartersCompIds: number[] = [];\r\n \r\n constructor(companyId: number, headquartersCompIds: number[]) {\r\n this.groups = [];\r\n this.companyId = companyId;\r\n this.headquartersCompIds = headquartersCompIds;\r\n }\r\n\r\n clear() {\r\n this.groups = [];\r\n this.hidden = false; \r\n }\r\n\r\n isEmpty() {\r\n return this.groups.length == 0;\r\n }\r\n\r\n hide() {\r\n this.hidden = true;\r\n }\r\n\r\n show() {\r\n this.hidden = false;\r\n }\r\n\r\n isHidden() {\r\n return this.hidden;\r\n }\r\n\r\n addItem(item : DoctorSearchResult) {\r\n let relatedComp = item.empresasRelacionadas.split(\",\").map(id => parseInt(id))\r\n let classId = item.claseId; \r\n \r\n this.searchDone = true;\r\n\r\n // Current directory doctos\r\n //if (classId == 0 && this.companyId > 0 && item.idEmpresa == this.companyId) {\r\n if (classId == 0 && this.companyId > 0 && this.containsAnyNumber(relatedComp, this.headquartersCompIds)) {\r\n classId = -2;\r\n }\r\n else if (classId == 0) {\r\n classId = -1;\r\n }\r\n\r\n let wrapper = this.groups.find(w => w.classId == classId);\r\n\r\n if (wrapper == null) {\r\n wrapper = new DoctorSearchResultUIWrapperGroup();\r\n\r\n wrapper.classId = classId;\r\n wrapper.className = item.clase;\r\n wrapper.results = [];\r\n\r\n // Push new wrapper\r\n this.groups.push(wrapper);\r\n }\r\n\r\n // Push new wapper item\r\n wrapper.results.push(item);\r\n }\r\n\r\n getClassItems() {\r\n return this.groups.filter(g => g.isClassGroup());\r\n }\r\n\r\n getDirectoryItems() { \r\n return this.groups.filter(g => g.isDirectoryGroup());\r\n }\r\n\r\n getDoctorItems() {\r\n return this.groups.filter(g => g.isDoctorGroup());\r\n }\r\n\r\n containsAnyNumber(arrayNumber: number[], valueArray: number[]) {\r\n if (!arrayNumber)\r\n return false;\r\n \r\n return arrayNumber.filter(elem => valueArray.indexOf(elem) > -1).length > 0;\r\n }\r\n}\r\n\r\nexport class DoctorSearchResultUIWrapperGroup {\r\n classId: number;\r\n className: string;\r\n results: DoctorSearchResult[]\r\n\r\n isClassGroup() {\r\n return this.classId > 0;\r\n }\r\n\r\n isDoctorGroup() {\r\n return this.classId == -1;\r\n }\r\n\r\n isDirectoryGroup() {\r\n return this.classId == -2;\r\n }\r\n}\r\n\r\nexport class TerritorialDivisionGroup {\r\n key: number;\r\n values: TerritorialDivision[];\r\n displayName: string; \r\n\r\n constructor(key: number, values :TerritorialDivision[], displayName: string) {\r\n this.key = key;\r\n this.values = values;\r\n this.displayName = displayName;\r\n }\r\n}\r\n\r\nexport class SearchResultsQsParameters { \r\n idTc: number; // Id Tipo Concepto\r\n idC: number; // Id Concepto\r\n nav: string; // URL navegacion\r\n idP: number; // Id Pais\r\n idDt: string; // Id Division territorial\r\n t: string; // Texto busqueda\r\n tp: number; // Tipo Perfil Publico (Medico, Farmacia, Clinica, etc)\r\n ds: boolean; // Doctor Search (this will be false when navigating from the Home menu)\r\n hideHeader: string;\r\n rUrl: string; //Return url\r\n}\r\n\r\nexport interface SearchWidgetConfigurationDataModel {\r\n showOnlyDoctors: boolean;\r\n}","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { Subject } from 'rxjs';\r\nimport { CloseRouteDialogMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { PaymentService } from 'src/app/core/services/payment-service';\r\nimport { UserPaymentItem } from 'src/app/shared/models/finance/payments/user-payment-item.model';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { Router } from '@angular/router';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\r\nimport { CustomCurrencyPipe } from 'src/app/shared/pipes/custom-currency.pipe';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-user-payments-list',\r\n templateUrl: './user-payments-list.component.html',\r\n styleUrls: ['./user-payments-list.component.css'],\r\n providers: [CustomCurrencyPipe],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UserPaymentsListComponent implements OnInit, OnDestroy {\r\n private ngUnsubscribe = new Subject();\r\n payments: UserPaymentItem[];\r\n loading: boolean = false;\r\n \r\n constructor( \r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n private translation: L10nTranslationService,\r\n private messageBusService: MessageBusService,\r\n private paymentsService: PaymentService,\r\n private baseService: BaseService,\r\n private router: Router,\r\n private dialogRef: MatDialog,\r\n private routeDialogService: RouteDialogService,\r\n private currencyPipe : CustomCurrencyPipe,\r\n @Inject(DOCUMENT) private document: Document\r\n ) { \r\n }\r\n\r\n ngOnInit(): void {\r\n this.document.body.classList.add('user-payments-list');\r\n this.loading = true;\r\n\r\n this.paymentsService.getUserPayments()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(payments => { \r\n this.payments = payments; \r\n\r\n this.loading = false; \r\n },\r\n error => {\r\n this.baseService.handleServiceError(error, \"Error getting payments\");\r\n\r\n this.loading = false;\r\n });\r\n\r\n // On Header Back click\r\n this.messageBusService.onNavigateBack()\r\n .pipe(takeUntil(this.ngUnsubscribe)) \r\n .subscribe(m => {\r\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.document.body.classList.remove('user-payments-list');\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n paymentTrackBy(index : number, item: UserPaymentItem){\r\n return item.idPagoElectronico; \r\n }\r\n \r\n onPaymentClick(payment: UserPaymentItem) {\r\n this.router.navigate([\"/configuracion/pagos/\" + payment.idTransaccionFacturaProveedor]);\r\n }\r\n\r\n formatPaymentAmount(amount: number) {\r\n return this.currencyPipe.transform(amount.toFixed(2), 'USD','','1.2-2','en-US');\r\n }\r\n\r\n onNewPaymentClick() {\r\n let dialogData = new DialogData();\r\n \r\n dialogData.title = this.translation.translate(\"shared.userPaymentsList.text3\"); \r\n dialogData.message = this.translation.translate(\"shared.userPaymentsList.text4\"); \r\n dialogData.confirmText = this.translation.translate(\"shared.userPaymentsList.text5\"); \r\n dialogData.showHeaderIcon = false;\r\n dialogData.showHeader = true;\r\n //dialogData.headerIconClass = \"phr-iconset-info\"; \r\n dialogData.showCancelButton = true;\r\n dialogData.cancelText = this.translation.translate(\"shared.userPaymentsList.text6\");\r\n\r\n const dialogRef = this.dialogRef.open(ConfirmDialogComponent, {\r\n data: dialogData,\r\n panelClass: ['confirm-logout-dialog', 'confirm-logout-animation-in', 'new-payment-info-dialog']\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(accepted => { \r\n if (accepted) { \r\n let cliniPayEnabledFilter = 61903;\r\n let qs = {filtros: cliniPayEnabledFilter};\r\n this.routeDialogService.closeDialogsAndNavigate(\"/doctores/todos\", {queryParams: qs});\r\n }\r\n }); \r\n } \r\n}\r\n\r\n\r\n\r\n","
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n 0\">\r\n
\r\n {{'shared.userPaymentsList.text1' | translate:locale.language}}\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{payment.nombreResponsableServicio | lowercase }}\r\n
\r\n
\r\n {{payment.fechaPagoElectronico | date:'d MMM, y' }}\r\n
\r\n
\r\n
\r\n
\r\n ${{formatPaymentAmount(payment.montoPago)}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n {{'shared.userPaymentsList.text1' | translate:locale.language}}\r\n
\r\n \r\n \r\n
\r\n {{'shared.userPaymentsList.text7' | translate:locale.language}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[appDisableAutoFocusIfMobile]'\n})\nexport class DisableAutoFocusIfMobileDirective {\n\n private isManualFocus = false;\n private isMobile: boolean = this.breakpointObserver.isMatched([Breakpoints.Handset, Breakpoints.Tablet]);\n private thisElementRef: HTMLInputElement;\n\n constructor(private breakpointObserver: BreakpointObserver, private elementRef: ElementRef) {\n this.setElementRef();\n this.setTabIndex();\n }\n\n private setTabIndex(index = -1): void {\n if (this.isMobile) {\n this.thisElementRef.tabIndex = index;\n }\n }\n\n @HostListener('focus', ['$event'])\n onFocus(_: FocusEvent): void {\n this.setElementRef();\n if (this.isMobile && !this.isManualFocus) {\n this.isManualFocus = true;\n this.setTabIndex(0);\n }\n }\n\n private setElementRef(): void {\n if (!this.thisElementRef) {\n this.thisElementRef = this.elementRef.nativeElement;\n }\n }\n\n}\n","
\n

{{ label }}

\n
\n \n \n {{day}}\n \n \n {{ errors?.maxDate?.message | translate:locale.language }}\n {{ errors?.minDate?.message | translate:locale.language }}\n {{ errors?.required ? ('shared.datepicker.required' | translate:locale.language) : '' }}\n \n \n \n \n {{month.nombre}}\n \n \n \n \n {{year}}\n \n \n
\n
","import { Component, Inject, Input, OnDestroy, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, FormBuilder, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, Validators } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { maxDate, minDate } from '../../validators/max-min-date.validator';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport * as moment from 'moment';\nimport { MAT_SELECT_CONFIG } from '@angular/material/select';\n\n@Component({\n selector: 'app-datepicker-flat-field',\n templateUrl: './datepicker-flat-field.component.html',\n styleUrls: ['./datepicker-flat-field.component.css'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatepickerFlatFieldComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatepickerFlatFieldComponent),\n multi: true\n },\n {\n provide: MAT_SELECT_CONFIG,\n useValue: { overlayPanelClass: 'datepicker-flat-field-select' }\n }\n ]\n})\nexport class DatepickerFlatFieldComponent implements ControlValueAccessor, OnDestroy, Validator {\n\n @Input() errorMessage: string | null = '';\n @Input() label: string | null = '';\n @Input() maxDate: Date = new Date();\n @Input() minDate: Date | null;\n\n days = Array.from({ length:31 }, (_, i) => i + 1);\n formulario = this.fb.group({\n day: [null, [Validators.required]],\n month: [null, [Validators.required]],\n year: [null, [Validators.required]],\n });\n months: {id: number, nombre: string}[] = [];\n years = Array.from({ length: 120 }, (_, i) => (-(new Date().getFullYear()) + i) * -1);\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n private ngUnsubscribe = new Subject();\n thisControl: AbstractControl;\n\n get errors(): ValidationErrors | null | undefined { return this.formulario.get('day')?.errors; }\n get isTouched(): boolean { \n if (!this.formulario.touched && this.thisControl.touched) {\n this.formulario.markAllAsTouched();\n if (this.thisControl.errors) this.setErrors(this.thisControl.errors);\n }\n return this.thisControl?.touched;\n }\n\n constructor(@Inject(L10N_LOCALE) public locale: L10nLocale, private fb: FormBuilder) {\n moment.locale(locale.language);\n this.months = Array.from({ length: 12 }, this.mapMonth);\n this.formulario.valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe({next: this.onSelectChanges.bind(this)});\n }\n\n private mapMonth(_: number, i: number): {id: number, nombre: string} {\n const fecha = moment(new Date(0, i)) ;\n const monthName = fecha.format('MMMM')\n return { id : i, nombre: monthName.charAt(0).toUpperCase() + monthName.slice(1) };\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (isDisabled) {\n this.formulario.disable();\n } else {\n this.formulario.enable();\n }\n }\n\n writeValue(value: Date | moment.Moment | string): void {\n let dateResult: Date | moment.Moment = typeof value == 'string' ? new Date(value) : value;\n this.updateForm(dateResult);\n }\n\n onSelectChanges(args: DatePickerFlatField): void {\n if (this.isChanged(args)) {\n let dateResult = new Date(args.year, args.month, args.day, 5);\n if (args.day != dateResult.getDate() && args.month != dateResult.getMonth()) {\n this.setErrorsToThisControl();\n } else {\n this.changesThisControl(dateResult)\n }\n }\n }\n\n private isChanged(args: DatePickerFlatField): boolean {\n return !!args.day && isFinite(args.month) && args.month >= 0 && !!args.year;\n }\n\n private setErrorsToThisControl(): void {\n this.setErrors({ maxDate: { valid: false, message: 'shared.datepicker.maxDate'} });\n this.thisControl?.setErrors({ maxDate: { valid: false, message: 'shared.datepicker.maxDate'} });\n this.thisControl?.markAsTouched();\n }\n\n private changesThisControl(dateResult: Date): void {\n this.onChange(dateResult);\n this.onTouched();\n }\n\n private updateForm(value: Date | moment.Moment, emitEvent = true): void {\n let day: number | null = null;\n let month: number | null = null;\n let year: number | null = null;\n\n if (value) {\n day = value instanceof Date ? value.getDate() : (value as moment.Moment).date();\n month = value instanceof Date ? value.getMonth() : (value as moment.Moment).month();\n year = value instanceof Date ? value.getFullYear() : (value as moment.Moment).year();\n }\n \n const formValue = {day, month, year };\n \n this.formulario.setValue(formValue, { onlySelf: !emitEvent});\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n this.thisControl = control;\n let val: ValidationErrors | null = null\n val = maxDate(this.maxDate)(control);\n if (!val) val = minDate(this.minDate)(control);\n return this.setErrors(val);\n }\n\n private setErrors(errors: ValidationErrors | null, emitEvent = true) : ValidationErrors | null {\n this.formulario.get('day')?.setErrors(errors, { emitEvent });\n this.formulario.get('month')?.setErrors(errors, { emitEvent });\n this.formulario.get('year')?.setErrors(errors, { emitEvent });\n if (errors) {\n this.formulario.get('day')?.markAsTouched({ onlySelf: emitEvent });\n this.formulario.get('month')?.markAsTouched({ onlySelf: emitEvent });\n this.formulario.get('year')?.markAsTouched({ onlySelf: emitEvent });\n }\n return errors\n }\n\n}\n\nexport interface DatePickerFlatField {\n day: number, month: number, year: number\n}","import { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\nimport * as moment from \"moment\";\r\n\r\nexport function maxDate(maxDate: Date | null): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (control.value && maxDate ) {\r\n const fecha1 = moment(control.value).startOf('day');\r\n const fecha2 = moment(maxDate).startOf('day');\r\n if (fecha1.isAfter(fecha2)) {\r\n return {\r\n maxDate: { valid: false, message: 'shared.datepicker.maxDate'}\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nexport function minDate(minDate: Date | null): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (control.value && minDate ) {\r\n const fecha1 = moment(control.value).startOf('day');\r\n const fecha2 = moment(minDate).startOf('day');\r\n if (fecha1.isBefore(fecha2)) {\r\n return {\r\n minDate: { valid: false, message: 'shared.datepicker.minDate'}\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { SystemDocument } from 'src/app/shared/models/process/document.model';\r\nimport { HttpBaseService } from './http-base-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DocumentService {\r\n\r\n constructor(private http: HttpBaseService) { }\r\n\r\n getDocumentUrl(documentId: number) : Observable {\r\n let url = \"api/documentos/\" + documentId + \"/url\";\r\n \r\n return this.http.get(url);\r\n } \r\n\r\n getDocumens(documentIds: string) : Observable {\r\n let url = \"api/documentos/batch?idsDocumento=\" + documentIds;\r\n \r\n return this.http.get(url);\r\n } \r\n}","export enum LegalAgreementType {\r\n DISCLAIMER = \"descargoResponsabilidad\",\r\n POLITICA_PRIVACIDAD = \"politicaPrivacidad\",\r\n TERMINOS_CONDICIONES = \"terminosCondiciones\",\r\n}","export enum SystemAreas {\n PERFIL_PUBLICO_DOCTOR = 3981,\n PERFIL_PUBLICO_HOSPITAL = 3982,\n PERFIL_PUBLICO_LABORATORIO = 3983,\n PERFIL_PUBLICO_CENTRO_IMAGENES = 3984,\n PERFIL_PUBLICO_FARMACIA = 3985,\n PERFIL_PUBLICO_ASEGURADORA = 3986,\n PERFIL_PUBLICO_SEDES_SURA = 3987,\n PERFIL_PUBLICO_FISIOTERAPIA = 3988,\n PERFIL_PUBLICO_SALUD_Y_BELLEZA = 3989,\n PERFIL_PUBLICO_SERVICIOS_ODONTOLOGICOS = 3990,\n PERFIL_PUBLICO_OPTICAS = 3991,\n PERFIL_PUBLICO_CLINICAS_ATENCION_PRIMARIA = 3992,\n PERFIL_PUBLICO_OTROS_PROVEEDORES = 3993,\n PERFIL_PUBLICO_LABORATORIOS_CON_DESCUENTOS = 3994,\n PERFIL_PUBLICO_IMAGENOLOGIA_CON_DESCUENTOS = 3995,\n DIRECTORIO_DOCTORES = 3741,\n BUSCAR_PERFILES_PUBLICOS = 4113,\n BUSCADOR_WIDGET_PERFILES_PUBLICOS = 4115, \n MIS_CITAS = 3459,\n MI_SALUD = 4240,\n MIS_ORDENES_MEDICAS = 4246,\n IMPRESION_ORDEN_LABORATORIO = 4294,\n IMPRESION_ORDEN_IMAGENOLOGIA = 4295,\n IMPRESION_PRESCRIPCION_MEDICA = 4296,\n IMPRESION_CURVA_CRECIMIENTO = 4353\n}\n\n","import { IWorkflowComponent } from \"../interfaces/workflow-component\";\r\n\r\nexport type WorkflowComponentClass = { new (): IWorkflowComponent };\r\n\r\nexport const WorkflowLookupRegistry: Map = new Map();\r\n\r\nexport const WorkflowLookup = (key: string): any => {\r\n return (cls: WorkflowComponentClass) => {\r\n WorkflowLookupRegistry.set(key, cls);\r\n };\r\n};","import { Pipe, PipeTransform } from '@angular/core';\nimport { LayoutService } from 'src/app/core/services/layout.service';\n\n@Pipe({\n name: 'i18nText'\n})\nexport class I18nTextPipe implements PipeTransform {\n\n constructor(private layoutService: LayoutService){}\n\n transform(value: any, language:string): unknown {\n return this.layoutService.getTextByLanguage(value, language);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\n@Pipe({\r\n name: \"safeUrl\"\r\n})\r\nexport class SafeUrlPipe implements PipeTransform { \r\n\r\n constructor(private sanitizer: DomSanitizer) { }\r\n \r\n transform(url :any) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}","import { AppointmentInfoDataModel } from \"./appointment-info-data.model\";\r\n\r\nexport class PatientFormAppointmentDataModel{\r\n relationship: number;\r\n appointmentInfo: AppointmentInfoDataModel;\r\n\r\n firstname: string;\r\n lastname: string;\r\n birthdate: Date;\r\n gender: string;\r\n email: string;\r\n identityPersonValidationStateId: number;\r\n}","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { ChatCancelledMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { VirtualAttentionService } from 'src/app/core/services/virtual-attention.service';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { VirtualAttention } from 'src/app/shared/models/process/virtual-attention.model';\r\nimport { ConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-cancel-virtual-attention-dialog',\r\n templateUrl: './cancel-virtual-attention-dialog.component.html',\r\n styleUrls: ['./cancel-virtual-attention-dialog.component.css'] \r\n})\r\nexport class CancelVirtualAttentionDialogComponent implements OnInit { \r\n virtualAttention: VirtualAttention; \r\n reasonText: string;\r\n loading = false;\r\n completed = false; \r\n selectionControl: FormControl; \r\n options: CancelOption[];\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\r\n private mdDialogRef: MatDialogRef, \r\n private baseService: BaseService, \r\n private virtualAttentionService: VirtualAttentionService, \r\n private messageBusService: MessageBusService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private translation: L10nTranslationService,\r\n private dialog: MatDialog\r\n ) { \r\n this.selectionControl = new FormControl('auto');\r\n this.virtualAttention = this.baseService.parseObject(data.data);\r\n\r\n this.options = [\r\n new CancelOption(1, \"Llevo demasiado tiempo en espera\"),\r\n new CancelOption(2, \"No necesito la atención, estaba probando la plataforma\"),\r\n new CancelOption(3, \"Deseo tener atención presencial\"),\r\n new CancelOption(4, \"Lo resolví de otra forma\"),\r\n new CancelOption(5, \"Ya me siento mucho mejor, no necesito la atención\"),\r\n new CancelOption(6, \"Otro motivo\", true),\r\n ];\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public cancel() {\r\n this.close(false);\r\n }\r\n\r\n public close(value:any) {\r\n this.mdDialogRef.close(value);\r\n } \r\n\r\n isSaveEnabled() {\r\n let reason = this.getSelectedReason();\r\n\r\n return !this.loading && (reason && reason.trim());\r\n }\r\n\r\n showTextarea() : boolean {\r\n let option = this.options.find(o => o.id == this.selectionControl.value);\r\n\r\n return option != undefined && option.showTextarea;\r\n }\r\n\r\n getSelectedReason() : string {\r\n let reasonId = this.selectionControl.value;\r\n let option = this.options.find(o => o.id == reasonId);\r\n\r\n if (!option)\r\n return \"\";\r\n\r\n return reasonId == 6? this.reasonText : option.text;\r\n }\r\n\r\n confirm() {\r\n this.loading = true; \r\n\r\n let reason = this.getSelectedReason();\r\n \r\n this.virtualAttentionService.cancelVirtualAttention(this.virtualAttention.data.codigoSolicitudPorVerificar, reason).subscribe(r => { \r\n if (!r.success) {\r\n this.showErrorDialog(parseInt(r.errorMessage));\r\n\r\n this.loading = false; \r\n }\r\n else {\r\n // Send event indicating the chat finished\r\n this.messageBusService.chatCancelled(new ChatCancelledMessage(reason));\r\n\r\n this.loading = false; \r\n this.completed = true;\r\n } \r\n }); \r\n }\r\n\r\n showErrorDialog(previousState: number) {\r\n let dialogData = new DialogData();\r\n let stateText = \"\";\r\n\r\n switch(previousState) {\r\n case 100:\r\n stateText = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.states.waitingTriage\");\r\n break;\r\n case 79:\r\n stateText = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.states.onRevision\");\r\n break;\r\n case 99:\r\n stateText = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.states.onTriage\");\r\n break;\r\n case 101:\r\n stateText = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.states.waitingAlly\");\r\n break;\r\n case 24:\r\n stateText = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.states.waitingDoctor\");\r\n break;\r\n case 30:\r\n stateText = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.states.attention\");\r\n break;\r\n case 37:\r\n stateText = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.states.ended\");\r\n break;\r\n case 7:\r\n stateText = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.states.canceled\");\r\n break;\r\n }\r\n \r\n if (previousState == 37 || previousState == 7) {\r\n dialogData.message = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.text11\");\r\n }\r\n else \r\n dialogData.message = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.text10\");\r\n\r\n dialogData.title = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.text7\");\r\n //dialogData.message = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.text8\") + stateText;\r\n dialogData.confirmText = this.translation.translate(\"shared.cancelVirtualAppointmentDialog.text9\"); \r\n dialogData.showHeaderIcon = true;\r\n dialogData.headerIconClass = \"phr-iconset-info\"; \r\n dialogData.showCancelButton = false;\r\n\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n data: dialogData\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(accepted => { \r\n location.reload();\r\n });\r\n } \r\n}\r\n\r\nexport class CancelOption {\r\n id: number;\r\n text: string;\r\n showTextarea: boolean;\r\n\r\n constructor(id: number, text: string, showTextarea: boolean = false) {\r\n this.id = id;\r\n this.text = text;\r\n this.showTextarea = showTextarea;\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n

\r\n {{ 'shared.cancelVirtualAppointmentDialog.text1' | translate:locale.language }}\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n {{option.text}}\r\n \r\n \r\n
\r\n \r\n {{ 'shared.cancelVirtualAppointmentDialog.text2' | translate:locale.language }} \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n

\r\n {{ 'shared.cancelVirtualAppointmentDialog.text5' | translate:locale.language }}\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
","import { Component, Inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\n\n@Component({\n selector: 'app-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SpinnerComponent implements OnInit {\n\n @Input() spinnerText = '';\n\n constructor(@Inject(L10N_LOCALE) public locale: L10nLocale) { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n \n {{ spinnerText | translate:locale.language }}\n
\n
","import { Person } from \"./person.model\";\r\n\r\nexport class UserPerson extends Person {\r\n idEmpresa: number;\r\n numeroTelCelular: string;\r\n numeroCedula: string;\r\n titulo: string;\r\n idPaisResidencia: number;\r\n idPaisNacimiento: number;\r\n emailParticular: string;\r\n idEstadoValidacionIdentidadPersona: number;\r\n autenticadoPorGoogle: boolean;\r\n username: string;\r\n}\r\n\r\nexport class UpdateUser {\r\n nombre: string;\r\n apellido: string;\r\n sexo: string;\r\n fechaNacimiento: Date;\r\n ubicacionLogo: string;\r\n idEstadoValidacionIdentidadPersona?: number;\r\n idPais: number;\r\n}","import { Injectable } from '@angular/core';\nimport { IWorkflowDataState } from 'src/app/shared/interfaces/workflow-data-state';\nimport { Workflow } from 'src/app/shared/models/systems/workflow.model';\nimport { OnlineAppointmentCliniwebState } from 'src/app/shared/models/workflow/states/online-appointment-cliniweb-state.model';\nimport { AppStorageService, STORAGE } from './app-storage.service';\nimport { HttpBaseService } from './http-base-service';\nimport { OnlinePaymentWorkflowState } from 'src/app/shared/models/workflow/states/online-payment-workflow-state.model';\nimport { environment } from 'src/environments/environment';\nimport { LocationPublicProfile, PublicProfile } from 'src/app/shared/models/people/public-profile.model';\nimport { OnlinePaymentModel } from 'src/app/shared/models/workflow/models/online-payment.model';\nimport { Router } from '@angular/router';\nimport { AppointmentCheckout } from 'src/app/shared/models/workflow/models/appointment-checkout.model';\nimport { TokenState } from 'src/app/shared/models/token.model';\nimport { MedicalOrderWorkflowState } from 'src/app/shared/models/workflow/states/medical-order-workflow-state.model';\nimport { GrowthCurvesWorkflowState } from 'src/app/shared/models/workflow/states/growth-curves-workflow-state.model';\nimport { IAuthenticationWorkflowState } from 'src/app/shared/models/workflow/steps/authentication-step.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WorkflowService {\n\n encryptSessionData = environment.encryptLocalStorage;\n\n constructor(\n private http: HttpBaseService,\n private appStorageService: AppStorageService,\n private router: Router\n ) { } \n\n get(idTipoFlujoTrabajo: number, idEmpresa?: number, idResponsableServicio?:number){ \n let url = `api/flujos-trabajo?idTipoFlujoTrabajo=${idTipoFlujoTrabajo}`;\n \n if(idEmpresa)\n url += `&idEmpresa=${idEmpresa}`;\n \n if(idResponsableServicio)\n url += `&idResponsableServicio=${idResponsableServicio}`;\n\n return this.http.get(url, null, false);\n } \n\n setWorkflowTypeActive(type:string){\n this.appStorageService.setItemSession(STORAGE.WORKFLOW_TYPE, type, this.encryptSessionData);\n }\n \n getWorkflowTypeActive():string{\n return this.appStorageService.getItemSession(STORAGE.WORKFLOW_TYPE, this.encryptSessionData);\n }\n\n getWorkflowDataState(type?:string):any{\n\n let workflowType = type ?? this.appStorageService.getItemSession(STORAGE.WORKFLOW_TYPE, this.encryptSessionData);\n\n let workflowState = this.appStorageService.getItemSession(workflowType, this.encryptSessionData);\n\n if(!workflowState)\n return null;\n\n switch(workflowType){\n case STORAGE.ONLINE_APPOINTMENT_CLINIWEB_STATE:\n workflowState = new OnlineAppointmentCliniwebState(workflowState);\n break;\n case STORAGE.ONLINE_PAYMENT_WORKFLOW_STATE:\n if (workflowState)\n workflowState = new OnlinePaymentWorkflowState(workflowState);\n break;\n case STORAGE.MEDICAL_ORDER_WORKFLOW_STATE:\n if (workflowState)\n workflowState = new MedicalOrderWorkflowState(workflowState);\n break;\n case STORAGE.GROWTH_CURVES_WORKFLOW_STATE:\n if (workflowState)\n workflowState = new GrowthCurvesWorkflowState(workflowState);\n break;\n default: \n break;\n }\n return workflowState;\n }\n\n setWorkflowDataState(workflowDataState: IWorkflowDataState | IAuthenticationWorkflowState, type?:string):void{\n \n let workflowType = type ?? this.appStorageService.getItemSession(STORAGE.WORKFLOW_TYPE, this.encryptSessionData);\n\n this.appStorageService.setItemSession(workflowType, workflowDataState, this.encryptSessionData);\n }\n\n removeWorkflowData(type?:string) {\n let workflowType = type ?? this.appStorageService.getItemSession(STORAGE.WORKFLOW_TYPE, this.encryptSessionData);\n\n this.appStorageService.removeSessionItem(workflowType);\n }\n\n getTokenStateFromWorkflow() : TokenState {\n let tokenState: TokenState = new TokenState();\n let workflowState = this.getWorkflowDataState(); \n\n if (workflowState instanceof OnlineAppointmentCliniwebState) { \n let appointmentState = workflowState as OnlineAppointmentCliniwebState;\n\n tokenState.workflowType = this.getWorkflowTypeActive();\n\n tokenState.publicProfileIdentifier = appointmentState.getPublicProfile().username; \n tokenState.locationId = appointmentState.onlineAppointmentRequest.idLocalidad;\n tokenState.targetDate = appointmentState.getAppointmentInfo().appointmentDate.getTime();\n }\n else if (workflowState instanceof OnlinePaymentWorkflowState) { \n let paymentState = workflowState as OnlinePaymentWorkflowState;\n\n tokenState.workflowType = this.getWorkflowTypeActive();\n tokenState.publicProfileIdentifier = paymentState.getPublicProfile().username;\n }\n\n return tokenState;\n }\n\n initPaymentWorkflow(publicProfile: PublicProfile, companyName: string) {\n let dto = new OnlinePaymentModel();\n \n dto.idResponsableServicio = publicProfile.id;\n dto.nombreResponsableServicio = publicProfile.nombrePersona;\n dto.urlAvatarResponsableServicio = publicProfile.ubicacionFoto;\n dto.nickname = publicProfile.username;\n dto.especialidadResponsableServicio = publicProfile.especialidad;\n dto.idEmpresa = publicProfile.idEmpresa; \n dto.nombreEmpresa = companyName;\n dto.emailResponsableServicio = publicProfile.emailRemitenteNotificacion; \n dto.idEmpresaResponsableServicio = publicProfile.idEmpresa;\n \n dto.perfilPublico = publicProfile;\n\n this.appStorageService.setItemSession(STORAGE.ONLINE_PAYMENT_WORKFLOW_BOOTSTRAP_STATE, dto); \n this.router.navigate([\"/pagos/checkout\"]);\n }\n\n initAppointmentWorkflow(publicProfile: PublicProfile, location: LocationPublicProfile, dateTimestamp: number) {\n let dto = new AppointmentCheckout();\n let date = new Date(dateTimestamp);\n let endDate = new Date(dateTimestamp + (30 * 60 * 1000));\n\n dto.fechaInicio = date;\n dto.fechaFin = endDate;\n dto.idLocalidad = location.localidad.id;\n dto.nombreLocalidad = location.localidad.nombre;\n dto.direccionLocalidad = location.localidad.direccion1;\n dto.coordenadasLocalidad = location.localidad.coordenadas;\n dto.telefonoLocalidad = location.localidad.tel \n ? location.localidad.tel \n : location.localidad.tel2;\n dto.idResponsableServicio = publicProfile.id;\n dto.nombreResponsableServicio = publicProfile.nombrePersona;\n dto.urlAvatarResponsableServicio = publicProfile.ubicacionFoto;\n dto.nickname = publicProfile.username;\n dto.especialidadResponsableServicio = publicProfile.especialidad;\n dto.idEmpresa = location.idEmpresa ?? publicProfile.idEmpresa;\n dto.teleconsulta = location.localidad.teleconsulta;\n \n dto.perfilPublico = publicProfile;\n\n this.appStorageService.setItemSession(STORAGE.ONLINE_APPOINTMENT_CLINIWEB_BOOTSTRAP_STATE, dto); \n this.router.navigate([\"/citas/checkout\"]);\n }\n}\n","import { SystemAreas } from \"./system-areas.enum\";\r\n\r\nexport enum MEDICAL_REQUEST_TYPE {\r\n GROWTH_CURVE = 57,\r\n LABORATORY_ORDER = 29,\r\n MEDICAL_ORDER = 26,\r\n MEDICAL_PRESCRIPTION = 46,\r\n RADIOLOGY_ORDER = 32\r\n}\r\n\r\nexport enum MEDICAL_REQUEST_STATE{\r\n COMPLETED = 1\r\n}\r\n\r\nexport enum CONCEPTOS_ID {\r\n COMENTARIO = 25027\r\n}\r\n\r\nexport enum TIPO_CONCEPTOS_ID {\r\n DIAGNOSTICO = 5\r\n}\r\n\r\nexport interface TitleMapping {\r\n [key: number]: string;\r\n}\r\n\r\nexport interface TitleMapping2 {\r\n [key: number]: number;\r\n}\r\n\r\nexport const MY_MEDICAL_ORDERS_TITLE: TitleMapping = {\r\n [MEDICAL_REQUEST_TYPE.LABORATORY_ORDER]: 'shared.myMedicalOrders.titleLaboratory',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION]: 'shared.myMedicalOrders.titlePrescription',\r\n [MEDICAL_REQUEST_TYPE.RADIOLOGY_ORDER]: 'shared.myMedicalOrders.titleRadiology',\r\n}\r\n\r\nexport const MY_MEDICAL_ORDERS_CARD_TEXT: TitleMapping = {\r\n [MEDICAL_REQUEST_TYPE.LABORATORY_ORDER]: 'shared.myMedicalOrders.cardTextLaboratory',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION]: 'shared.myMedicalOrders.cardTextPrescription',\r\n [MEDICAL_REQUEST_TYPE.RADIOLOGY_ORDER]: 'shared.myMedicalOrders.cardTextRadiology',\r\n}\r\n\r\nexport const MY_MEDICAL_ORDERS_BUTTON_TEXT: TitleMapping = {\r\n [MEDICAL_REQUEST_TYPE.LABORATORY_ORDER]: 'shared.myMedicalOrders.buttonTextLaboratory',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION]: 'shared.myMedicalOrders.buttonTextPrescription',\r\n [MEDICAL_REQUEST_TYPE.RADIOLOGY_ORDER]: 'shared.myMedicalOrders.buttonTextRadiology',\r\n}\r\n\r\nexport const TITLE_MAPPING:TitleMapping = {\r\n [MEDICAL_REQUEST_TYPE.LABORATORY_ORDER]: 'shared.medicalOrder.summary.laboratoryOrder',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_ORDER]: 'shared.medicalOrder.summary.medicalOrder',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION]: 'shared.medicalOrder.summary.medicalPrescription',\r\n [MEDICAL_REQUEST_TYPE.RADIOLOGY_ORDER]: 'shared.medicalOrder.summary.radiologyOrder',\r\n} as const;\r\n\r\nexport const MY_MEDICAL_ORDER_EMPTY_STATE_TITLE: TitleMapping = {\r\n [MEDICAL_REQUEST_TYPE.LABORATORY_ORDER]: 'shared.medicalOrder.empty.laboratoryOrderTitle',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_ORDER]: 'shared.medicalOrder.empty.medicalOrderTitle',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION]: 'shared.medicalOrder.empty.medicalPrescriptionTitle',\r\n [MEDICAL_REQUEST_TYPE.RADIOLOGY_ORDER]: 'shared.medicalOrder.empty.radiologyOrderTitle',\r\n} as const;\r\n\r\nexport const MY_MEDICAL_ORDER_EMPTY_STATE_TEXT: TitleMapping = {\r\n [MEDICAL_REQUEST_TYPE.LABORATORY_ORDER]: 'shared.medicalOrder.empty.laboratoryOrder',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_ORDER]: 'shared.medicalOrder.empty.medicalOrderTitle',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION]: 'shared.medicalOrder.empty.medicalPrescription',\r\n [MEDICAL_REQUEST_TYPE.RADIOLOGY_ORDER]: 'shared.medicalOrder.empty.radiologyOrder',\r\n} as const;\r\n\r\nexport const MY_MEDICAL_ORDER_DETAIL_COUNT_TEXT: TitleMapping = {\r\n [MEDICAL_REQUEST_TYPE.LABORATORY_ORDER]: 'shared.medicalOrder.summaryDetailText.laboratoryOrder',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_ORDER]: 'shared.medicalOrder.summaryDetailText.medicalOrder',\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION]: 'shared.medicalOrder.summaryDetailText.medicalPrescription',\r\n [MEDICAL_REQUEST_TYPE.RADIOLOGY_ORDER]: 'shared.medicalOrder.summaryDetailText.radiologyOrder',\r\n} as const;\r\n\r\nexport const MY_MEDICAL_ORDER_PRINT_SYSTEM_AREA: TitleMapping2 = {\r\n [MEDICAL_REQUEST_TYPE.LABORATORY_ORDER]: SystemAreas.IMPRESION_ORDEN_LABORATORIO,\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_ORDER]: SystemAreas.IMPRESION_ORDEN_LABORATORIO,\r\n [MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION]: SystemAreas.IMPRESION_PRESCRIPCION_MEDICA,\r\n [MEDICAL_REQUEST_TYPE.RADIOLOGY_ORDER]: SystemAreas.IMPRESION_ORDEN_IMAGENOLOGIA,\r\n} as const;\r\n","import { NgModule } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule} from '@angular/material/input';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTableModule } from '@angular/material/table' \nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatMomentDateModule } from '@angular/material-moment-adapter';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport {PortalModule} from '@angular/cdk/portal';\n\n@NgModule({\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatSliderModule,\n MatButtonModule, \n MatCheckboxModule,\n MatToolbarModule,\n MatAutocompleteModule,\n MatIconModule,\n MatSidenavModule,\n MatDividerModule,\n MatListModule,\n MatSelectModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatMenuModule,\n MatTableModule,\n MatPaginatorModule,\n MatChipsModule,\n MatProgressBarModule,\n MatDialogModule,\n MatTabsModule,\n MatExpansionModule,\n MatTooltipModule,\n MatMomentDateModule,\n MatDatepickerModule,\n MatRadioModule,\n MatSlideToggleModule,\n DragDropModule,\n MatSnackBarModule,\n MatButtonToggleModule,\n PortalModule\n ],\n exports: [\n MatFormFieldModule,\n MatInputModule,\n MatSliderModule,\n MatButtonModule, \n MatCheckboxModule,\n MatToolbarModule,\n MatAutocompleteModule,\n MatIconModule,\n MatSidenavModule,\n MatDividerModule,\n MatListModule,\n MatSelectModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatMenuModule,\n MatTableModule,\n MatPaginatorModule,\n MatChipsModule,\n MatProgressBarModule,\n MatDialogModule,\n MatTabsModule,\n MatExpansionModule,\n MatTooltipModule,\n MatDatepickerModule,\n MatRadioModule,\n MatSlideToggleModule,\n DragDropModule,\n MatSnackBarModule,\n MatButtonToggleModule,\n PortalModule\n ],\n declarations: []\n})\nexport class MaterialModule { }\n","export enum Direction {\r\n None = 'None',\r\n Up = 'Up',\r\n Down = 'Down'\r\n}","import { Injectable } from '@angular/core';\r\nimport { Directory, DirectoryType } from 'src/app/shared/models/systems/directory.model';\r\nimport { HttpBaseService } from './http-base-service';\r\nimport { Observable } from 'rxjs';\r\nimport { DirectorySearchTitle } from 'src/app/shared/interfaces/directory-search-title';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DirectoryService {\r\n\r\n constructor(\r\n private http: HttpBaseService\r\n ) { } \r\n\r\n getByType(companyId: number, type: DirectoryType) {\r\n let url = \"api/directorios/\" + companyId + \"?tipo=\" + type;\r\n\r\n return this.http.get(url, null, false);\r\n } \r\n\r\n getByUrl(serverUrl: string) {\r\n let url = \"api/directorios?url=\" + serverUrl;\r\n\r\n return this.http.get(url, null, false)\r\n }\r\n\r\n getSearchTitle(\r\n language:string,\r\n publicProfileType:number, \r\n searchText:string, \r\n conceptTypeId: number, \r\n conceptId:number, \r\n contryCityIdentifier:string, \r\n filters:string):Observable{\r\n\r\n let url = 'api/directorios/titulo-busqueda';\r\n url += `?localizacion=${language}`;\r\n\r\n if(publicProfileType)\r\n url += `&tipoPerfilPublico=${publicProfileType}`;\r\n\r\n if(searchText)\r\n url += '&textoBusqueda=' + encodeURIComponent(searchText);\r\n\r\n if(conceptTypeId)\r\n url += `&idTipoConcepto=${conceptTypeId}`;\r\n\r\n if(conceptId)\r\n url += `&idConcepto=${conceptId}`;\r\n\r\n if(contryCityIdentifier)\r\n url += `&identificadorPaisCiudad=${contryCityIdentifier}`;\r\n\r\n if(filters)\r\n url += `&filtros=${filters}`;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n}","import { UserManagerSettings } from \"oidc-client\";\r\nimport { AuthenticationServiceProvider } from \"../../enums/authentication-service-provider\";\r\nimport { TerritorialDivision } from \"./territorial-division.model\";\r\n\r\nexport class PortalPhr { \r\n url: string;\r\n idEmpresa?: number; \r\n nombre: string;\r\n nombreClaseEstilo: string;\r\n nombreEncabezado: string;\r\n localizacionDefecto: string;\r\n urlCorporativo: string;\r\n titulo: string;\r\n urlLogo: string;\r\n urlFavicon: string;\r\n clientesOidc: ConfiguracionServicioAutenticacionPHR[];\r\n nombreCuentaPaciente: string;\r\n filtros: string;\r\n nombrePoliticas: string;\r\n idEmpresaDestinoConsultaVirtual?: number;\r\n idEmpresaDestinoDirectorio?: number; \r\n nombreEmpresaDestinoDirectorio: string;\r\n idAreaSistemaDestinoConsultaVirtual: number;\r\n menuVisible: string;\r\n configuracionBusquedaLocalidad: string;\r\n tipoIdentificacionPoliza: number;\r\n idEmpresasSedes: string;\r\n analyticsKey: string;\r\n idsEmpresasLocalidades: string;\r\n versionPerfilPublico: string;\r\n nombreMenu: string;\r\n descargoResponsabilidad: string;\r\n politicasPrivacidad: string;\r\n terminosCondiciones: string;\r\n versionPhr: number;\r\n}\r\n\r\nexport class PortalPhrConfiguracionLocalidad {\r\n niveles: string;\r\n localidadesPorDefecto: TerritorialDivision[];\r\n}\r\n\r\nexport class OidcUserManagerSettings implements UserManagerSettings {\r\n authenticationServiceProvider? : AuthenticationServiceProvider;\r\n readonly popup_redirect_uri?: string;\r\n authority?: string;\r\n}\r\n\r\nexport enum PublicProfileVersion {\r\n V1 = \"1.0\",\r\n V2 = \"2.0\"\r\n}\r\n\r\nexport enum PHRVersion {\r\n V1 = 1.0,\r\n V2 = 2.0\r\n}\r\n\r\nexport class ConfiguracionServicioAutenticacionPHR {\r\n id: number; \r\n proveedorServicioAutenticacion : AuthenticationServiceProvider;\r\n clienteOidc: string; \r\n}\r\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { Token } from 'src/app/shared/models/token.model';\nimport { AppStorageService, STORAGE } from './app-storage.service';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { LoginResponse } from 'src/app/shared/models/login-response.model';\nimport { BaseService } from './base.service';\nimport { LoginCompletedMessage, LogoutMessage, MessageBusService, TerritorialDivionCountryMessage } from './message-bus.service';\nimport { Link } from 'src/app/shared/models/people/link.model';\nimport { Router } from '@angular/router';\nimport { HttpBaseService } from './http-base-service';\nimport { L10nTranslationService } from 'angular-l10n';\nimport { UserService } from './user.service';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\nimport { TerritorialDivisionsService } from './territorial-divisions.service';\n\nconst AUTH_API = 'oauth/token';\n\nconst httpOptions = {\n headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' })\n};\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class AuthService {\n constructor(\n private http: HttpBaseService,\n private baseService: BaseService,\n private userService: UserService,\n private territorialDivisionService: TerritorialDivisionsService,\n private messageBusService: MessageBusService,\n private appStorageService: AppStorageService,\n private translation: L10nTranslationService,\n private router: Router\n ){}\n\n login(username: string, password: string): Observable {\n return this.baseService.getDirectoryDomain()\n .pipe(switchMap((domain:string)=>{\n let body = new HttpParams()\n .set('username', username)\n .set('password', password)\n .set('domain', domain)\n .set('grant_type', 'password');\n\n return this.http.post(AUTH_API, body.toString(), httpOptions, false)\n .pipe(\n map((token) => {\n token.username = username;\n this.appStorageService.setToken(token);\n\n this.appStorageService.removeSessionItem(STORAGE.USER);\n\n let response = new LoginResponse();\n response.success = true;\n return response;\n }),\n catchError((err) => {\n let response = new LoginResponse();\n response.success = false;\n response.message = this.translation.translate(\"invalidCredentials\");\n\n return of(response);\n }));\n }));\n }\n\n getTransferToken():Observable{\n let token = this.getToken();\n\n return this.http.post(\"api/authentication/transfer-token/generate\", token);\n }\n\n getTokenByTransferToken(transferToken:string):Observable{\n let transferTokenObject = { token: transferToken };\n\n return this.http.post(\"api/authentication/transfer-token/process\", transferTokenObject, null, false);\n }\n\n loginByTransferToken(transferToken:string):Observable{\n\n return this.getTokenByTransferToken(transferToken)\n .pipe(switchMap((tokenString:string)=>{\n\n this.appStorageService.setSerializedToken(tokenString);\n\n return this.userService.getUserPersonLoggedIn()\n .pipe(switchMap((user:UserPerson | null) => {\n if (user)\n this.messageBusService.loginCompleted(new LoginCompletedMessage(user));\n return of(true);\n }));\n }));\n }\n\n /*getByKey(key: string): Observable{\n let url = environment.apiUrl + \"api/authentication?key=\" + key;\n\n return this.http.get(url);\n }*/\n\n isLoggedInFull(): Observable{\n let token = this.appStorageService.getToken();\n\n if(token){\n return this.getAuthenticationToken(false)\n .pipe(\n switchMap(token => {\n return of(token != null);\n }));\n }\n else{\n return of(false);\n }\n }\n\n isLoggedIn(): boolean {\n let token = this.appStorageService.getToken();\n\n return token && !this.http.isTokenExpired(token);\n }\n\n getToken(){\n return this.appStorageService.getToken();\n }\n\n getSerializedToken(){\n return this.appStorageService.getSerializedToken();\n }\n\n getAuthenticationToken(redirectToLogin:boolean = true): Observable {\n return this.http.getValidAuthenticationToken(redirectToLogin);\n }\n\n logout() {\n // Clear all object and cookies\n this.appStorageService.clearLogout();\n\n this.territorialDivisionService.getCountryByIp()\n .subscribe(country=>{\n\n let msg = new TerritorialDivionCountryMessage();\n msg.country = country.territorialDivision;\n\n this.messageBusService.sendTerritorialDivisionCountry(msg);\n });\n\n // Get directory again\n // this.baseService.getAppConfig().subscribe((any) => {});\n\n // Send logout message\n this.messageBusService.logout(new LogoutMessage());\n } \n\n isPathEnabled(path: string, menuLinks: Link[]):boolean {\n let _path = path.replace(\"/\", \"\").split(\"/\")[0].split(\"?\")[0];\n\n let _linkSelected = menuLinks\n ? _path == ''\n ? menuLinks[0].identificadorUrl\n ? menuLinks[0]\n : menuLinks[0].subMenu.length > 0\n ? menuLinks[0].subMenu[0]\n : menuLinks[1]\n : this.getLinkSelected(_path, menuLinks)\n : null;\n\n // let result:boolean = (_linkSelected != null && (_linkSelected.nombreComponenteAnonimo != null || _linkSelected.accesoPublico == 'S'));\n\n let result:boolean;\n\n if(_linkSelected == null) {\n let resutRouteConfig = this.router.config.filter(p => p.path == _path);\n\n result = resutRouteConfig.length > 0;\n }\n else{\n result = (_linkSelected.nombreComponenteAnonimo != null || _linkSelected.accesoPublico == 'S');\n }\n\n return result;\n }\n\n hasPermissions(path: string):Observable{\n return this.baseService.getMenuLinks()\n .pipe(map((links: Link[])=>{\n let _pathEnabled = this.isPathEnabled(path, links);\n let _tokenObject = this.appStorageService.getToken();\n \n if(_tokenObject) {\n return true;\n }\n else {\n if(_pathEnabled && path == '/empty'){\n this.router.navigate(['/login'], { queryParams: { returnUrl: \"empty\" } });\n \n window.parent.postMessage({ eventName: 'pre_login' }, '*');\n return false;\n }\n else {\n return true;\n }\n }\n }));\n }\n\n private getLinkSelected(path: string, links: Link[]){\n var linkSelected = links.find(link => this.baseService.getBasePath(link.identificadorUrl) == path);\n\n if(!linkSelected){\n links.filter(link => link.subMenu && link.subMenu.length > 0).forEach(link => {\n\n let subLinkSelected = link.subMenu.find(sublink => this.baseService.getBasePath(sublink.identificadorUrl) == path);\n\n if(subLinkSelected)\n linkSelected = subLinkSelected;\n });\n }\n\n return linkSelected;\n }\n}","import { DOCUMENT } from '@angular/common';\nimport { Component, HostListener, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MessageBusService, PageScrollMessage } from 'src/app/core/services/message-bus.service';\nimport { Direction } from 'src/app/shared/enums/direction.enum';\n\n@Component({\n selector: 'app-route-dialog',\n templateUrl: './route-dialog.component.html',\n styleUrls: ['./route-dialog.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class RouteDialogComponent implements OnInit, OnDestroy {\n\n currentRoute: string;\n headerModel: RouteDialogHeaderModel = new RouteDialogHeaderModel();\n private ngUnsubscribe = new Subject();\n scrollTop: number = 0;\n\n loading:boolean = true;\n\n constructor( \n @Inject(MAT_DIALOG_DATA) public data: RouteDialogModel,\n private router: Router,\n private messageBusService: MessageBusService,\n private mdDialogRef: MatDialogRef,\n @Inject(DOCUMENT) private document: Document\n \n ) {\n this.headerModel.dialogRef = this.mdDialogRef;\n this.headerModel.closeFn = this.onCloseClick.bind(this);\n this.headerModel.dialogModel = data; \n }\n\n ngOnInit(): void {\n this.document.body.classList.add('route-dialog-opened');\n\n if(this.data.route.split('?').length > 1){\n this.router.navigateByUrl(this.data.route, {state: this.data.state, });\n }\n else{\n this.router.navigate([this.data.route], {state: this.data.state, queryParams: this.data.queryParams});\n }\n\n this.messageBusService.onCloseRouteDialog()\n .pipe(takeUntil(this.ngUnsubscribe)) \n .subscribe(m => {\n this.onCloseClick();\n }\n );\n\n this.router.events\n .pipe(takeUntil(this.ngUnsubscribe)) \n .subscribe((val)=>{\n if(val instanceof NavigationEnd){\n this.loading = false;\n }\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onCloseClick(preventDialogClose = false){\n\n this.loading = true;\n\n if(this.data.animationOut){\n this.document.getElementsByClassName(this.data.className)[0].classList.remove(this.data.animationIn);\n this.document.getElementsByClassName(this.data.className)[0].classList.add(this.data.animationOut);\n }\n\n if (!preventDialogClose)\n setTimeout(()=>{ \n this.mdDialogRef.close();\n }, 300);\n\n setTimeout(()=>{\n if(this.document.getElementsByClassName(\"route-dialog-container\").length == 0){\n this.document.body.classList.remove('route-dialog-opened');\n }\n }, 600); \n }\n\n onScroll($event:Event){\n\n const scrollTop = ($event.target as Element).scrollTop;\n const offset = this.scrollTop - scrollTop;\n const elOffsetTop = ($event.target as HTMLElement).offsetTop\n\n if(Math.abs(offset) < 50) return; \n\n const direction = offset < 0\n ? Direction.Down\n : Direction.Up;\n\n this.scrollTop = scrollTop; \n\n this.messageBusService.pageScroll(new PageScrollMessage(direction, scrollTop, elOffsetTop, true));\n }\n}\n\nexport class RouteDialogModel{\n id: number;\n headerName: string;\n route: string;\n state: any;\n queryParams: any;\n className: string;\n backgroundClassName: string;\n animationIn: string;\n animationOut: string;\n disableClose: boolean = false;\n}\n\nexport class AppointmentRouteDialogModel extends RouteDialogModel{\n id = RouteDialogType.APPOINTMENT;\n route = 'citas/checkout';\n className = 'appointment-dialog';\n animationIn = 'appointment-animation-in';\n animationOut = 'appointment-animation-out';\n}\n\nexport class PaymentRouteDialogModel extends RouteDialogModel{\n id = RouteDialogType.PAYMENT;\n headerName = 'PaymentHeaderComponent';\n route = 'pagos/checkout';\n className = 'appointment-dialog';\n animationIn = 'appointment-animation-in';\n animationOut = 'appointment-animation-out';\n}\n\nexport class PublicProfileRouteDialogModel extends RouteDialogModel{\n id = RouteDialogType.PUBLIC_PROFILE;\n headerName = 'PublicProfileHeaderComponent';\n className = 'public-profile-dialog';\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n}\n\nexport class ProfileMenuDialogModel extends RouteDialogModel {\n id = RouteDialogType.PROFILE_MENU;\n headerName = 'DefaultHeaderComponent';\n route = 'configuracion/menu';\n className = 'profile-menu-route-dialog-container';\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n}\n\nexport class ConfigurationPageDialogModel extends RouteDialogModel {\n id = RouteDialogType.CONFIGURATION_PAGE;\n headerName = 'DefaultBackHeaderComponent';\n route = '';\n className = 'configuration-page-route-dialog-container';\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n}\n\nexport class AppointmentSummaryRouteDialogModel extends RouteDialogModel{\n id = RouteDialogType.APPOINTMENT_SUMMARY;\n route = '';\n headerName = 'DefaultBackWithLinkHeaderComponent';\n className = 'appointment-dialog';\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n}\n\nexport class MyOrderSummaryRouteDialogModel extends RouteDialogModel{\n id = RouteDialogType.MY_ORDER_SUMMARY;\n route = '';\n headerName = 'DefaultBackWithLinkHeaderComponent';\n className = 'my-order-summary-dialog';\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n}\n\nexport class AppointmentCancelationRouteDialogModel extends RouteDialogModel{\n id = RouteDialogType.CANCEL_APPOINTMENT;\n route = '';\n headerName = 'DefaultBackHeaderComponent';\n className = 'cancel-appointment-route-dialog';\n backgroundClassName = 'directory-background';\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n}\n\nexport class RescheduleAppointmentRouteDialogModel extends RouteDialogModel{\n id = RouteDialogType.RESCHEDULE_APPOINTMENT;\n route = '';\n headerName = 'DefaultBackWithLinkHeaderComponent'; \n backgroundClassName = 'directory-background';\n className = 'reschedule-appointment-route-dialog';\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n}\n\nexport class LoginRouteDialogModel extends RouteDialogModel {\n id = RouteDialogType.LOGIN;\n route = ''; \n className = 'login-route-dialog';\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n}\n\nexport class LegalAgreementsRouteDialogModel extends RouteDialogModel {\n id = RouteDialogType.LEGALAGREEMENTS;\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n className = 'legal-agreements-route-dialog';\n headerName = 'DefaultLogoHeaderComponent';\n}\n\nexport class LearnMoreRouteDialogModel extends RouteDialogModel {\n id = RouteDialogType.LEARN_MORE;\n route = 'conoce-mas'; \n headerName = 'DefaultLogoHeaderComponent'; \n className = 'login-route-dialog';\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n}\n\nexport class RouteDialogHeaderModel{\n dialogRef: any;\n closeFn: any;\n dialogModel: RouteDialogModel;\n}\n\nexport class ContactRouteDialogModel extends RouteDialogModel {\n id = RouteDialogType.CONTACT;\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n className = 'contact-route-dialog';\n headerName = 'DefaultBackHeaderComponent';\n}\n\nexport class ChangePasswordRouteDialogModel extends RouteDialogModel {\n id = RouteDialogType.CHANGE_PASSWORD;\n route: \"login/restablecer\";\n animationIn = 'public-profile-animation-in';\n animationOut = 'public-profile-animation-out';\n className = 'change-password-route-dialog';\n headerName = 'DefaultBackHeaderComponent';\n}\n\nexport enum RouteDialogType{\n APPOINTMENT = 1,\n PAYMENT = 2,\n PUBLIC_PROFILE = 3,\n PROFILE_MENU = 4,\n CONFIGURATION_PAGE = 5,\n APPOINTMENT_SUMMARY = 6,\n CANCEL_APPOINTMENT = 7,\n RESCHEDULE_APPOINTMENT = 8,\n LOGIN = 9,\n LEARN_MORE = 10,\n LEGALAGREEMENTS = 11,\n CONTACT = 12,\n CHANGE_PASSWORD = 13,\n MY_ORDER_SUMMARY = 14\n}\n","
\n \n
\n \n
\n
","import { Component, OnInit, Inject, ViewEncapsulation, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { UserPerson } from '../../models/people/user-person.model';\nimport { ChatLoadedMessage, MessageBusService, ServiceErrorMessage } from 'src/app/core/services/message-bus.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { ChatService } from 'src/app/core/services/chat-service';\nimport { ChatCancellationMessage, ChatConversacionMessage, ChatConversacionMessageType } from '../../models/people/chat-conversation.model';\nimport { VirtualAttentionService } from 'src/app/core/services/virtual-attention.service';\nimport { VirtualAttention } from '../../models/process/virtual-attention.model';\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\nimport { UtilsService } from 'src/app/core/services/utils.service';\nimport { ChatSignalRService } from 'src/app/core/services/signalR/chat-signalr.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { CancelVirtualAttentionDialogComponent } from '../dialogs/cancel-virtual-attention/cancel-virtual-attention-dialog.component';\nimport { DialogData } from '../../models/dialog-data.model';\nimport { ToastrService } from 'ngx-toastr';\nimport { UserActiveEvent } from '../../models/signalr/user-active-event.model';\nimport { VirtualAttentionEvent } from '../../models/signalr/virtual-attention-event.model';\nimport { ChatConversacionMessageEvent } from '../../models/signalr/chat-conversation-message-event.model';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-chat',\n templateUrl: './chat.component.html',\n styleUrls: ['./chat.component.css'],\n encapsulation: ViewEncapsulation.None,\n providers: [ChatSignalRService]\n})\nexport class ChatComponent implements OnInit, OnDestroy {\n companyId: number;\n virtualConsultationCompanyId : number | undefined;\n currentMessage: string; \n etapaSolicitudId: number; \n loggedUser: UserPerson; \n virtualAttention: VirtualAttention; \n chatWrapper : ChatWrapper; \n\n messagesPageSize = 30;\n chatInitialized = false;\n userActiveIntervalId = 0;\n agentActiveIntervalId = 0;\n lastAgentActiveDate = 0;\n isAgentActive = false;\n\n day: string;\n hour: string;\n min: string;\n and: string;\n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n constructor( \n @Inject(L10N_LOCALE) public locale: L10nLocale, \n private translation: L10nTranslationService, \n private signalRService: ChatSignalRService, \n private route: ActivatedRoute, \n private chatService: ChatService,\n private messageBusService: MessageBusService,\n private baseService: BaseService,\n private virtualAttentionService: VirtualAttentionService,\n private utilsService : UtilsService,\n public dialog: MatDialog,\n private userService: UserService,\n private toastr: ToastrService) { \n }\n\n ngOnInit(): void { \n this.companyId = this.baseService.getCompanyId();\n\n // For sura, this will be the account id of SURA-CAISS\n var dir = this.baseService.getDirectory();\n this.virtualConsultationCompanyId = dir ? dir.idEmpresaDestinoConsultaVirtual : 0;\n\n // Subscribe to Load Chat message\n this.messageBusService.onLoadChat()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg => {\n if (!msg || !msg.idEtapaSolicitud)\n return;\n \n if (this.etapaSolicitudId == msg.idEtapaSolicitud && this.chatInitialized) {\n let hasAgentMessages = this.chatWrapper.hasAgentMessages();\n this.messageBusService.chatLoaded(new ChatLoadedMessage(hasAgentMessages));\n \n return;\n }\n\n this.loadChat(msg.idEtapaSolicitud);\n });\n\n // Open chat event\n this.messageBusService.onOpenChat()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg => { \n if (this.chatWrapper)\n this.chatWrapper.show();\n });\n\n // Chat cancelled event\n this.messageBusService.onChatCancelled()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg => {\n this.chatWrapper.minimize(); \n\n // Send message that indicate que chat was cancelled\n this.sendCancellationMessage(msg.reason);\n\n this.chatWrapper = null as any;\n this.virtualAttention = null as any;\n\n this.virtualAttentionService.removeActiveFromCache();\n\n this.clearUserActiveInterval();\n this.clearAgentActiveInterval(); \n });\n\n this.messageBusService.onLogout()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg => {\n this.virtualAttention = null as any;\n this.chatWrapper = null as any;\n\n this.clearUserActiveInterval();\n this.clearAgentActiveInterval();\n });\n\n // Subscribe to route to load widget by QS\n this.route.params\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(params => {\n let etapaSolicitudId = params['supportId']; \n\n if (etapaSolicitudId) {\n this.loadChat(etapaSolicitudId);\n } \n }); \n\n this.translation.onChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe({\n next: () => {\n this.day = this.translation.translate('days'); \n this.hour = this.translation.translate('hours'); \n this.min = this.translation.translate('minutes');\n this.and = this.translation.translate('and');\n }\n });\n\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n // Clear user action interval before destroy\n this.clearUserActiveInterval();\n this.clearAgentActiveInterval();\n }\n\n loadChat(idEtapaSolicitud: number) {\n \n // Check if the chat was already initialized\n if (this.etapaSolicitudId == idEtapaSolicitud && this.chatWrapper && this.chatWrapper.initialized)\n return; \n\n this.etapaSolicitudId = idEtapaSolicitud;\n this.chatInitialized = true;\n\n // Get current user\n this.userService.getUserPersonLoggedIn().subscribe(logged => {\n if (logged) {\n this.loggedUser = logged;\n\n // Load virtual attention\n this.virtualAttentionService.getActiveWithCache().subscribe(va => {\n this.virtualAttention = va;\n\n if (this.virtualAttention) {\n \n this.chatWrapper = new ChatWrapper(this.loggedUser, this.virtualAttention);\n this.chatWrapper.min = this.min;\n this.chatWrapper.hour = this.hour;\n this.chatWrapper.initialized = true;\n\n this.lastAgentActiveDate = this.virtualAttention.fechaUnixUltimaVezActivoResponsableServicio;\n this.updateAgentActive();\n\n // Load chat messages\n this.loadChatMessages(this.virtualAttention.idSolicitud, 0);\n }\n },\n error => {\n this.baseService.handleServiceError(error, \"Error getting past appointments\");\n });\n\n // Load chat\n /*this.chatService.getByEtapaSolicitudId(this.etapaSolicitudId).subscribe(chat => {\n this.chat = chat; \n });*/\n\n } \n }); \n\n // Init signalR\n this.initSignalR();\n\n // Init interval that will keep the user as active\n this.initUserActiveInterval();\n\n this.initAgentActiveInterval();\n }\n\n loadChatMessages(idSolicitud: number, from: number, upDirection = false) {\n \n this.chatService.getChatMessages(idSolicitud, from, this.messagesPageSize).subscribe(messages => {\n this.chatWrapper.addMessages(messages, true, upDirection);\n\n this.chatWrapper.loading = false;\n\n let hasAgentMessages = this.chatWrapper.hasAgentMessages();\n this.messageBusService.chatLoaded(new ChatLoadedMessage(hasAgentMessages));\n },\n error => { \n this.baseService.handleServiceError(error, \"Error getting chat messages\");\n });\n }\n\n sendMessage(): void { \n \n // If it is an empty msg\n if (!this.currentMessage) {\n return;\n }\n\n let chatMessage = this.buildChatMessage();\n\n if (!chatMessage)\n return; \n\n // Add msg to chat\n this.chatWrapper.addMessages([chatMessage]);\n\n // Scroll bottom\n this.scrollBottom();\n\n this.currentMessage = \"\";\n \n this.chatService.sendMessage(chatMessage.idChat, chatMessage).subscribe(result => {\n console.log(result);\n },\n error => {\n this.baseService.handleServiceError(error, \"Error posting chat messages\"); \n });\n }\n\n sendCancellationMessage(cancelationReason: string) {\n let chatMessage = this.buildChatMessage();\n let model = new ChatCancellationMessage();\n\n model.mensaje = chatMessage;\n model.lenguaje = this.locale.language;\n model.razonCancelacion = cancelationReason;\n model.idEmpresaTemplate = this.virtualConsultationCompanyId ? this.virtualConsultationCompanyId : this.companyId;\n\n this.chatService.sendCancellationMessage(chatMessage.idChat, model).subscribe(result => {\n // No reason to add the cancellation msg here as the chat is already finished\n },\n error => {\n this.baseService.handleServiceError(error, \"Error posting chat cancellation message\"); \n });\n }\n\n buildChatMessage() : ChatConversacionMessage {\n let chatMessage = new ChatConversacionMessage();\n var user = this.loggedUser;\n\n if (!user)\n return null as any;\n\n chatMessage.idChat = this.etapaSolicitudId;\n chatMessage.idEtapaSolicitud = this.etapaSolicitudId;\n chatMessage.idPacienteEmpresaOrigen = user.id;\n chatMessage.idEmpresa = this.virtualConsultationCompanyId ? this.virtualConsultationCompanyId : this.companyId;\n chatMessage.tipo = ChatConversacionMessageType.PersonMessaje;\n chatMessage.idEstado = 1; // pendiente\n chatMessage.valor = this.currentMessage;\n chatMessage.idEmisor = user.id;\n chatMessage.nombreEmisor = user.nombre + \" \" + user.apellido;\n chatMessage.urlImagenEmisor = user.ubicacionLogo;\n chatMessage.fechaEnviado = new Date();\n chatMessage.fechaCreacion = new Date(); // This will be override on server but it is needed on client when adding the message\n \n return chatMessage;\n }\n\n onChatBtnClick() {\n this.chatWrapper.toggleMinimize();\n\n if (!this.chatWrapper.minimized) {\n // Each time the user opens the chat lets scroll to the bottom of the message container\n this.scrollBottom();\n } \n }\n\n scrollBottom() {\n let _this = this;\n let el = window.document.getElementsByClassName(\"chat-msgs-container\")[0];\n\n if (el)\n setTimeout(function() {\n _this.utilsService.scrollBottomWithAnimation(el); \n }, 100); \n }\n\n onMinimizeClick() {\n this.chatWrapper.toggleMinimize();\n }\n \n onScrollUp() {\n // Get message count\n let messageCount = this.chatWrapper.messages.length;\n \n // Load more messages\n this.loadChatMessages(this.virtualAttention.idSolicitud, messageCount, true);\n\n this.chatWrapper.loading = true;\n }\n\n onCancelVirtualAttention() {\n let dialogData = new DialogData();\n dialogData.data = this.virtualAttention;\n\n const dialogRef = this.dialog.open(CancelVirtualAttentionDialogComponent, {\n data: dialogData,\n autoFocus: false //disable auto focus in dialog\n }); \n }\n\n initSignalR() {\n this.signalRService.onConnectionLost().subscribe(m => {\n \n if (!this.chatWrapper)\n return;\n\n // Only show the toast if the previous state was connected\n if (!this.chatWrapper.connectionLost) {\n this.toastr.warning(\n this.translation.translate(\"connectionLostToast.message\"), \n this.translation.translate(\"connectionLostToast.title\"), \n {\n disableTimeOut: true,\n toastClass: \"chat-connection-lost-toast\",\n positionClass: \"toast-top-left\" \n }\n );\n }\n \n this.chatWrapper.onConnectionLost(); \n });\n\n this.signalRService.onConnectionStablished().subscribe(m => {\n \n this.toastr.clear();\n\n if (!this.chatWrapper)\n return;\n\n this.chatWrapper.onConnectionStablished();\n\n // Join group that will receive chat events\n this.signalRService.joinGroup(this.etapaSolicitudId);\n\n // Join group that will receive virtual attention events (like state changes)\n this.signalRService.joinGroup(this.virtualConsultationCompanyId ? this.virtualConsultationCompanyId : this.companyId);\n });\n \n // Init signalR\n this.signalRService.init();\n \n // Subscribe to events\n this.subscribeToSignalREvents();\n }\n\n subscribeToSignalREvents(): void { \n \n // NEW MESSAGE\n this.signalRService.onNewMessageReceived().subscribe((message: ChatConversacionMessageEvent) => { \n // If the message is for this chat AND\n // Is not a user message (the last message the user send)\n if (message && message.IdEtapaSolicitud == this.etapaSolicitudId && (message.Tipo != ChatConversacionMessageType.PersonMessaje || message.IdEmisor != this.loggedUser.id)) {\n // Map entity to VirtualAttention (same properties but ignore upper and lower case)\n let msg = this.baseService.parseObjectDeep(message);\n \n this.chatWrapper.addMessages([msg]); \n \n let hasAgentMessages = this.chatWrapper.hasAgentMessages();\n this.messageBusService.chatLoaded(new ChatLoadedMessage(hasAgentMessages));\n\n // Scroll bottom\n this.scrollBottom();\n } \n }); \n \n // VIRTUAL ATTENTION STATE CHANGE\n this.signalRService.onVirtualAttentionChanged().subscribe((virtualAttention: VirtualAttentionEvent) => {\n if (virtualAttention) {\n this.virtualAttention.idEstado = virtualAttention.IdEstado;\n this.virtualAttention.idResponsableServicio = virtualAttention.IdResponsableServicio;\n this.virtualAttention.nombreResponsableServicio = virtualAttention.NombreResponsableServicio;\n this.virtualAttention.fechaUltimaActualizacionEstado = virtualAttention.FechaUltimaActualizacionEstado;\n this.virtualAttention.fechaFin = virtualAttention.FechaFin;\n \n // Map entity to VirtualAttention (same properties but ignore upper and lower case)\n let vAttention = this.baseService.parseObjectDeep(virtualAttention); \n\n // Update wrapper virtual attention\n this.chatWrapper.virtualAttention = vAttention;\n\n if (virtualAttention.IdEstado == 37) {\n // disable input chat since attention finished\n this.chatWrapper.finishChat();\n this.messageBusService.virtualRequestFinished();\n }\n }\n });\n\n // User Active\n this.signalRService.onUserActive().subscribe((userActive: UserActiveEvent) => {\n if (!this.virtualAttention)\n return;\n \n if (userActive.UserId == this.virtualAttention.idResponsableServicio)\n this.lastAgentActiveDate = userActive.LastActiveUnixDate;\n });\n }\n\n initUserActiveInterval() {\n if (this.userActiveIntervalId > 0)\n return;\n\n // Run this every 30 seconds\n this.userActiveIntervalId = window.setInterval(() => {\n \n // If the chat finished we will just clear the interval\n if (!this.virtualAttention) {\n this.clearUserActiveInterval();\n return;\n }\n\n let compId = this.virtualConsultationCompanyId ? this.virtualConsultationCompanyId : this.companyId;\n\n console.log(\"Post user active!!!\");\n\n this.userService.postUserActive(compId, this.virtualAttention.idEtapaSolicitud).subscribe(() => {\n },\n error => {\n this.baseService.handleServiceError(error, \"Error posting user active\"); \n }); \n }, 30 * 1000)\n }\n\n initAgentActiveInterval() {\n if (this.agentActiveIntervalId > 0)\n return;\n\n // Run this every 30 seconds\n this.agentActiveIntervalId = window.setInterval(() => {\n this.updateAgentActive(); \n }, 30 * 1000)\n }\n\n updateAgentActive() {\n let tolerance = 90 * 1000; // After 90 seconds without events we will considere the agent as inactive\n let now = new Date().getTime(); \n let diff = now - this.lastAgentActiveDate;\n\n this.isAgentActive = diff <= tolerance;\n }\n\n clearUserActiveInterval() {\n if (this.userActiveIntervalId > 0)\n clearInterval(this.userActiveIntervalId);\n }\n\n clearAgentActiveInterval() {\n if (this.agentActiveIntervalId > 0)\n clearInterval(this.agentActiveIntervalId);\n }\n\n getChatDate(date: Date) {\n return this.baseService.getBasicDateFormat(date, false);\n }\n\n getSymptoms() {\n let symptoms = this.virtualAttention.data.sintomasPaciente.split(\",\");\n let last = symptoms.pop(); \n\n return symptoms.join(\",\") + \" \" + this.and + \" \" + last;\n }\n}\n\nexport class ChatWrapper {\n virtualAttention: VirtualAttention;\n messages: ChatMessageWrapper[] = []; \n user: UserPerson; \n hour: string;\n min: string;\n minimized: boolean = true;\n unreadMessagesCount: number = 0;\n loading = false;\n initialized = false;\n connectionLost = false;\n isVirtualAttentionFinished = false;\n\n constructor(user: UserPerson, va: VirtualAttention) {\n this.user = user;\n this.virtualAttention = va;\n this.messages = [];\n }\n\n addMessages(messages: ChatConversacionMessage[], avoidUnreadCountUpdate: boolean = false, upDirection: boolean = false) { \n \n if (!messages)\n return;\n\n // If we are scrolling up, the service will alway return first the oldest message\n // So in order to add it one by one (at the top) we need to revert the array\n if (upDirection)\n messages = messages.reverse();\n\n // Check if the msg was already added (when adding the msg the same one can came from signalR)\n for(let i = 0; i < messages.length; i++) {\n let msg = null;\n\n if (messages[i].id) {\n msg = this.messages.find(m => m.message.id == messages[i].id);\n }\n \n if (!msg) {\n\n // If the chat is minimized when adding the messages, then add this to the unread counter\n if (this.minimized && !avoidUnreadCountUpdate)\n this.unreadMessagesCount += 1;\n\n if (upDirection)\n this.messages.unshift(new ChatMessageWrapper(this.user, messages[i]));\n else\n this.messages.push(new ChatMessageWrapper(this.user, messages[i]));\n } \n }\n }\n\n getDoctorName() {\n return this.virtualAttention.nombreResponsableServicio? \n this.virtualAttention.nombreResponsableServicio.toLowerCase():\n \"\";\n }\n\n getChatTime() {\n let startTime = new Date(this.virtualAttention.fechaInicio).getTime();\n let now = new Date().getTime();\n let timeDiffInMin = (now - startTime) / (1000 * 60);\n\n if (timeDiffInMin < 60)\n return Math.floor(timeDiffInMin) + \" \" + this.min;\n else\n return Math.floor(timeDiffInMin / 60) + \" \" + this.hour;\n }\n\n isUserBlockMessage(currentMessageIndex: number) {\n if (currentMessageIndex == 0)\n return false;\n\n // Get current and previous msg\n let previous = this.messages[currentMessageIndex - 1];\n let current = this.messages[currentMessageIndex];\n\n // If we need to show the date stamp for this message then it is a new group\n if (this.showDateStamp(currentMessageIndex))\n return false;\n\n // We will only show user msg together if the previous msg was an user message and current is as well\n if (previous.isUserMessage() && current.isUserMessage())\n return true;\n\n return false;\n }\n\n isAgentBlockMessage(currentMessageIndex: number) {\n if (currentMessageIndex == 0)\n return false;\n\n // Get current and previous msg\n let previous = this.messages[currentMessageIndex - 1];\n let current = this.messages[currentMessageIndex];\n\n // If we need to show the date stamp for this message then it is a new group\n if (this.showDateStamp(currentMessageIndex))\n return false;\n\n // We will only show agent msg together if the previous msg was an agent message and current is as well\n if (previous.isAgentMessage() && current.isAgentMessage())\n return true;\n\n return false;\n }\n\n showDateStamp(currentMessageIndex: number) {\n if (currentMessageIndex == 0)\n return true;\n\n // Get current and previous msg\n let previous = new Date(this.messages[currentMessageIndex - 1].message.fechaCreacion);\n let current = new Date(this.messages[currentMessageIndex].message.fechaCreacion);\n \n // If the days are differents, then show the date time stampt\n if (previous.getDate() != current.getDate())\n return true;\n\n return false;\n }\n\n toggleMinimize() {\n this.minimized = !this.minimized;\n\n // If the user open the chat let mark all msg as readed\n if (!this.minimized)\n this.unreadMessagesCount = 0;\n }\n\n minimize() {\n this.minimized = true;\n }\n\n showMessageTime(currentMessageIndex: number) {\n // Only show the time for the last message\n return currentMessageIndex === (this.messages.length - 1);\n }\n\n isWaitingForAttention() {\n // It will be waiting for attention ONLY if it does not have any message sent from the agent.\n let isWaiting = (!this.messages.find(m => m.isAgentMessage()));\n\n return isWaiting;\n }\n\n isWaitingForTriage() {\n return this.virtualAttention.idEstado == 100;\n }\n\n requestIsFinished() : boolean {\n return this.virtualAttention.idEstado == 37;\n }\n\n getFirstMessage() : ChatConversacionMessage {\n return this.messages[0].message;\n }\n\n show() {\n if (this.initialized)\n this.minimized = false;\n }\n\n onConnectionStablished() {\n this.connectionLost = false;\n }\n\n onConnectionLost() {\n this.connectionLost = true;\n }\n\n hasAgentMessages() {\n return this.messages.find(m => m.isAgentMessage()) != null;\n }\n\n finishChat() {\n this.isVirtualAttentionFinished = true;\n }\n}\n\nexport class ChatMessageWrapper {\n message: ChatConversacionMessage;\n user: UserPerson; \n\n constructor(user: UserPerson, message: ChatConversacionMessage) {\n this.user = user;\n this.message = message;\n }\n\n isUserMessage() {\n return this.message.idEmisor == this.user.id && this.message.tipo == ChatConversacionMessageType.PersonMessaje\n }\n\n isAgentMessage() {\n return this.message.idEmisor != this.user.id && this.message.tipo == ChatConversacionMessageType.PersonMessaje;\n } \n}","\n
\n
\n\n \n
\n
\n
{{ 'shared.chatWidget.text1' | translate:locale.language }}
\n \n
\n \n
\n
\n
\n \n \n \n
\n
\n
{{ 'shared.chatWidget.text9' | translate:locale.language }}
\n {{ 'shared.chatWidget.text10' | translate:locale.language }}\n
\n
\n \n {{ 'shared.chatWidget.text11' | translate:locale.language }}\n \n
\n
\n
\n \n
\n
\n {{ 'shared.chatWidget.text5' | translate:locale.language }}
\n {{getSymptoms()}}\n
\n
\n \n
\n
\n
\n\n \n
\n\n \n
\n
{{chatWrapper.getDoctorName()}}
\n
\n \n {{ 'shared.chatWidget.text7' | translate:locale.language }}\n {{ 'shared.chatWidget.text8' | translate:locale.language }} |\n {{ 'time' | translate:locale.language }}: {{chatWrapper.getChatTime()}}\n
\n
\n \n
\n
\n \n
\n
\n\n \n
\n
\n \n
\n {{ getChatDate(messageWrapper.message.fechaCreacion) }}\n
\n\n \n
\n
\n \n
\n \n {{messageWrapper.message.fechaCreacion | date:'shortTime' }}\n \n
\n\n \n
\n \n \n {{chatWrapper.getDoctorName()}} \n
\n \n
\n {{messageWrapper.message.fechaCreacion | date:'shortTime' }}\n
\n
\n \n
\n
\n\n \n
\n \n \n \n \n
\n\n
\n\n
\n\n \n
\n
\n \n \n 0\">\n {{chatWrapper.unreadMessagesCount}}\n \n
\n
\n\n
","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { LoginResponse } from 'src/app/shared/models/login-response.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoginService {\n\n constructor(private authService: AuthService){ }\n\n isLoggedIn(): Observable{\n return this.authService.isLoggedInFull();\n }\n\n login(username: string, password: string): Observable{\n return this.authService.login(username, password);\n }\n}\n","export const environment = {\n version: '3.71.00.1-yqp',\n production: true,\n apiUrl: 'https://api.cliniweb.com/',\n cloudHubUrl: \"https://apps.aspsoluciones.com/CloudHubWebApi/cloudhub\",\n cliniwebUrl: \"https://www.cliniweb.com/\",\n logLevel: 1,\n searchProfilesPageSize: 8,\n googleApiKey: 'AIzaSyAhEjpF14LorjB9dHPlSMDr0GP81hy2IAU',\n cKey: '2e35f242a46d67eeb74aabc37d5e5d05',\n googleFileViewerUrl: 'https://drive.google.com/viewerng/viewer?embedded=true&url=',\n useElasticsearchForProfiles: true,\n googleCaptchaSiteKey: '6Lf6gBUUAAAAAHb2HNwaQx5TpP6FJcTHjF-yPAjO',\n encryptLocalStorage: true,\n portalUrl: 'https://professional.cliniweb.com/',\n idEmpresaCliniwebPHR: 4243012,\n nombreEmpresaCliniwebPHR: 'cliniweb-phr',\n cliniwebPhrUrl: 'https://app.cliniweb.com/'\n};\n","import { TextLanguage } from \"../people/text-language.model\";\r\n\r\nexport class TerritorialDivision { \r\n id: number;\r\n idEmpresa?: number;\r\n nombre: string;\r\n nombreCanonico: string;\r\n identificador: string;\r\n nivel: number;\r\n paisISO: string;\r\n idPais:number;\r\n nombreI18n: TextLanguage[];\r\n}\r\n\r\nexport class CountryModel{\r\n territorialDivision: TerritorialDivision;\r\n ip: string; \r\n}","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { MessageBusService, OpenSnackBarMessage, SnackBarType } from 'src/app/core/services/message-bus.service';\n\n@Component({\n selector: 'app-email-callback',\n templateUrl: './email-callback.component.html',\n styleUrls: ['./email-callback.component.css']\n})\nexport class EmailCallbackComponent implements OnInit {\n\n forwardingCount: number = 0;\n emailSent: boolean = false;\n loading: boolean = false;\n\n @Input() model: EmailCallbackComponentData;\n\n constructor(\n private messageBusService: MessageBusService,\n private translation: L10nTranslationService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnInit(): void {\n }\n\n resendRequest(){\n this.forwardingCount++;\n\n if(this.forwardingCount <= this.model.forwardingLimit){\n this.loading = true;\n\n this.model.resend$\n .pipe(first())\n .subscribe({\n next:(response:boolean) =>{\n this.loading = false;\n \n if(this.forwardingCount > 0){\n this.emailSent = true;\n \n setTimeout(() => {\n this.emailSent = false;\n }, 3000);\n }\n },\n error: (error:string) =>{\n this.loading = false;\n\n this.openSnackBar(error);\n }\n });\n }\n }\n\n enterDataAgain(){\n this.model.enterDataAgainFn();\n }\n\n private openSnackBar(error:string){\n let snackBarMessage = new OpenSnackBarMessage();\n\n snackBarMessage.type = SnackBarType.ERROR;\n snackBarMessage.text = error;\n\n this.messageBusService.openSnackBar(snackBarMessage);\n }\n}\nexport class EmailCallbackComponentData{\n titleReference: string;\n description: string;\n forwardingLimit: number;\n\n resend$: Observable;\n resendModel: any;\n enterDataAgainFn: any;\n}","
\n \n \n {{ model.titleReference | translate:locale.language }}\n \n \n
\n {{ 'emailCallback.item2Text' | translate:locale.language }} \n {{ 'emailCallback.item2Link' | translate:locale.language }}\n
\n
\n","export enum ComponentName {\r\n PAYMENT_AMOUNT = \"PaymentAmountComponent\",\r\n PAYMENT_FORM = \"PaymentComponent\",\r\n AUTHENTICATION = \"AuthenticationComponent\",\r\n SELECT_PATIENT = \"SelectPatientAppointmentCheckoutComponent\",\r\n SELECT_PATIENT_RELATIONSHIP_APPOINTMENT = \"SelectPatientRelationshipAppointmentCheckoutComponent\",\r\n PATIENT_FORM_APPOINTMENT = \"PatientFormAppointmentCheckoutComponent\",\r\n PATIENT_CONTACT_FORM = \"PatientContactFormAppointmentCheckoutComponent\",\r\n PATIENT_VERIFICATION = \"PatientVerificationComponent\",\r\n SUMMARY_APPOINTMENT = \"SummaryAppointmentCheckoutComponent\",\r\n SUMMARY_MEDICAL_ORDER = \"SummaryMedicalOrderComponent\",\r\n SELECT_COUNTRY = \"CountryFormCheckoutComponent\",\r\n SELECT_PATIENT_RELATIONSHIP = \"SelectPatientRelationshipComponent\",\r\n CREATE_PATIENT_RELATIONSHIP = \"CreatePatientRelationshipComponent\"\r\n}","var map = {\n\t\"./chpanamericano-phr/theme.js\": [\n\t\t\"sSOk\",\n\t\t3\n\t],\n\t\"./chsf-phr/theme.js\": [\n\t\t\"I7Z6\",\n\t\t4\n\t],\n\t\"./cliniweb/theme.js\": [\n\t\t\"/zkc\",\n\t\t5\n\t],\n\t\"./hospital-paitilla/theme.js\": [\n\t\t\"FTze\",\n\t\t6\n\t],\n\t\"./hsantafe-phr/theme.js\": [\n\t\t\"hGII\",\n\t\t7\n\t],\n\t\"./mapfre-guatemala/theme.js\": [\n\t\t\"U/dV\",\n\t\t9\n\t],\n\t\"./mapfre-panama-asistencia/theme.js\": [\n\t\t\"qvpH\",\n\t\t10\n\t],\n\t\"./mapfre-panama/theme.js\": [\n\t\t\"zUDy\",\n\t\t11\n\t],\n\t\"./pacifica-salud-phr/theme.js\": [\n\t\t\"eaQY\",\n\t\t21\n\t],\n\t\"./sura/theme.js\": [\n\t\t\"zEwz\",\n\t\t25\n\t],\n\t\"./town-center/theme.js\": [\n\t\t\"35gM\",\n\t\t26\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"DOuQ\";\nmodule.exports = webpackAsyncContext;","import { Pipe, PipeTransform } from '@angular/core';\nimport * as moment from 'moment';\n\n@Pipe({\n name: 'ageFromBirthday'\n})\nexport class AgeFromBirthdayPipe implements PipeTransform {\n\n transform(value?: string | Date): string {\n if (!value) return `0 años, 0 meses y 0 días`;\n const ahora = moment().set({ hour: 0, minute: 0, second: 0, millisecond: 0});\n const nacimiento = moment(value).set({ hour: 0, minute: 0, second: 0, millisecond: 0});\n const edad = moment.duration(ahora.diff(nacimiento));\n return `${edad.years()} años, ${edad.months()} meses y ${edad.days() + 1} días`;\n }\n\n}\n","export class Token {\n access_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n username: string;\n isInvalid:boolean;\n invalidMessage: string;\n state: string; \n userCreated: boolean;\n}\n\nexport class TokenState {\n email: string;\n returnUrl: string;\n flowType: OAuthFlowType = OAuthFlowType.None;\n sourceType: OAuthSourceType = OAuthSourceType.None;\n \n // Only to solve PWA issues on OIDC callbaks\n workflowType: string = \"\";\n publicProfileIdentifier: string = \"\";\n targetDate: number = 0;\n locationId: number = 0;\n}\n\nexport enum OAuthFlowType {\n None = 1,\n Login = 2,\n Signup = 3\n}\n\nexport enum OAuthSourceType {\n None = 1,\n Sura = 2,\n Google = 3\n}\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { OnlinePaymentRequest } from 'src/app/shared/models/process/online-payment-request.model';\r\nimport { HttpBaseService } from './http-base-service';\r\nimport { UserPaymentItem } from 'src/app/shared/models/finance/payments/user-payment-item.model';\r\nimport { UserPayment } from 'src/app/shared/models/finance/payments/user-payment.model';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { TempDocument } from 'src/app/shared/models/process/document.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PaymentService {\r\n\r\n constructor(private http: HttpBaseService) { } \r\n\r\n getOnlinePaymentRequest(idVerificacion: string): Observable{\r\n return this.http.get(\"api/pagos/por-verificar/\" + idVerificacion, null, false);\r\n }\r\n\r\n createOnlinePaymentRequest(onlinePaymentRequest: OnlinePaymentRequest): Observable{\r\n return this.http.post(\"api/pagos/por-verificar\", onlinePaymentRequest, null, false);\r\n }\r\n\r\n updateOnlinePaymentRequest(idVerificacion: string, onlinePaymentRequest: OnlinePaymentRequest): Observable{\r\n let url = `api/pagos/por-verificar/${idVerificacion}`;\r\n return this.http.put(url, onlinePaymentRequest);\r\n }\r\n\r\n confirmOnlinePaymentRequest(idVerificacion: string, onlinePaymentRequest: OnlinePaymentRequest): Observable{\r\n let url = `api/pagos/por-verificar/${idVerificacion}/confirmacion`;\r\n return this.http.post(url, onlinePaymentRequest);\r\n }\r\n\r\n getUserPayments(): Observable{\r\n return this.http.get(\"api/pagos/\", null, true);\r\n }\r\n\r\n getUserPayment(transaccionId: number): Observable{\r\n return this.http.get(\"api/pagos/\" + transaccionId, null, true);\r\n } \r\n\r\n getUserPaymentPdf(transaccionId: number): Observable {\r\n let url = \"api/pagos/\" + transaccionId + \"/pdf?language=es\"; \r\n\r\n let headers = new HttpHeaders(); \r\n headers = headers.set('Accept', 'application/pdf');\r\n\r\n return this.http.post(url, null, { headers: headers, responseType: 'blob' as 'json' });\r\n }\r\n}\r\n\r\n","import { AbstractControl } from '@angular/forms';\r\n\r\nexport function CustomEmailValidator(control: AbstractControl) {\r\n if (control.value) {\r\n const matches = control.value.match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/);\r\n \r\n return matches ? null : { 'email': true };\r\n } \r\n else {\r\n return null;\r\n }\r\n}","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[dynamicHost]'\n})\nexport class DynamicHostDirective {\n\n constructor(public viewContainerRef: ViewContainerRef) { }\n}\n","export enum SignupWorkflowVerificationType{\r\n SIMPLE = 0,\r\n ONLINE_APPOINTMENT_CLINIWEB = 1\r\n}","import { Component, HostListener, Inject, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\nimport { inOutAnimation } from '../../animations';\nimport { AppointmentInfoDataModel, AppointmentType } from '../../models/workflow/models/appointment-info-data.model';\nimport { SenderPatientRelationship } from '../../models/process/base-request.model';\nimport { MapDialogData } from '../../models/dialog-data.model';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MapDialogComponent } from '../dialogs/map-dialog/map-dialog.component';\nimport { PublicProfileAvatarComponentModel } from '../public-profile-avatar/public-profile-avatar.component';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { PublicProfileRouteDialogModel, RouteDialogType } from '../dialogs/route-dialog/route-dialog.component';\n\n@Component({\n selector: 'app-appointment-info-checkout',\n templateUrl: './appointment-info-checkout.component.html',\n styleUrls: ['./appointment-info-checkout.component.css'],\n animations: [ inOutAnimation ]\n})\nexport class AppointmentInfoCheckoutComponent implements OnChanges, OnInit {\n\n language: string;\n @Input() model:AppointmentInfoDataModel;\n @Input() show: boolean = true;\n @Input() showRelative: boolean = false;\n @Input() enablePublicProfileLinks: boolean = false;\n @Input() initialLoading = false;\n attentionPlaceLabel = 'shared.appointmentInfoCheckout.attentionPlaceLabel';\n isDesktop: boolean;\n avatarModel: PublicProfileAvatarComponentModel;\n isVirtualAppointment: boolean = false;\n\n constructor(\n private dialog: MatDialog,\n private translation: L10nTranslationService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private publicProfileService: PublicProfileService,\n private routeDialogService: RouteDialogService\n ) {\n this.language = locale.dateLanguage ?? 'es-AR';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.model && this.model.perfilPublico) {\n this.avatarModel = new PublicProfileAvatarComponentModel();\n this.avatarModel.personId = this.model.perfilPublico.id;\n this.avatarModel.avatarUrl = this.model.perfilPublico.ubicacionFoto;\n this.avatarModel.fullName = this.model.perfilPublico.nombrePersona;\n this.avatarModel.sex = this.model.perfilPublico.sexo;\n this.avatarModel.profileType = this.model.perfilPublico.tipoPerfil;\n }\n }\n\n ngOnInit(): void {\n this.isDesktop = window.innerWidth > 799;\n\n this.setAttentionPlaceLabel();\n\n this.isVirtualAppointment = (this.model.appointmentType == AppointmentType.VIRTUAL);\n }\n \n private setAttentionPlaceLabel(): void {\n if (this.model.appointmentType == AppointmentType.VIRTUAL)\n this.attentionPlaceLabel = 'shared.appointmentInfoCheckout.attentionPlaceLabel2';\n }\n\n getAppointmentTypeText():string{\n return this.model.appointmentType == AppointmentType.FACE_TO_FACE \n ? this.translation.translate(\"shared.appointmentInfoCheckout.faceToFaceAppointment\")\n : this.translation.translate(\"shared.appointmentInfoCheckout.virtualAppointment\");\n }\n\n getAppointmentTypeClasname():string{\n return this.model.appointmentType == AppointmentType.FACE_TO_FACE\n ? 'phr-iconset-home'\n : 'phr-iconset-PHR-video';\n }\n\n showRelationship(){\n\n return this.model.patientRelationshipType > 0 \n && this.model.patientRelationshipType != SenderPatientRelationship.USUARIO\n && this.model.patientRelationshipType != SenderPatientRelationship.DESCONOCIDO;\n\n }\n\n getRelationshipText(){\n\n this.model.patientGender = this.model.patientGender == '9' \n ? 'M' \n : this.model.patientGender;\n\n let _textRef = `shared.appointmentInfoCheckout.relationship_${this.model.patientRelationshipType}_${this.model.patientGender}`;\n \n return this.translation.translate(_textRef);\n }\n\n openMap(){\n let data = new MapDialogData();\n \n data.title = this.model.attentionPlaceName;\n data.message = this.model.attentionPlaceLatLng;\n data.animationIn = 'map-phr-animation-in';\n data.animationOut = 'map-phr-animation-out';\n data.showCloseTextButton = true;\n data.showWazeButton = false;\n\n this.dialog.open(MapDialogComponent, { \n panelClass: ['map-dialog','map-phr-dialog', 'map-phr-animation-in'],\n data: data\n });\n }\n\n goToPublicProfile() { \n if(!this.enablePublicProfileLinks)\n return;\n\n let url = this.publicProfileService.getPublicProfileUrl(this.model.perfilPublico.username);\n\n if (this.routeDialogService.isOpen(RouteDialogType.APPOINTMENT_SUMMARY))\n this.routeDialogService.closeDialog(RouteDialogType.APPOINTMENT_SUMMARY);\n \n // Final step from appointment creation\n if (this.routeDialogService.isOpen(RouteDialogType.PUBLIC_PROFILE)) {\n this.routeDialogService.closeDialogsAndNavigate(url);\n }\n else {\n setTimeout(() => {\n let routeDialogModel = new PublicProfileRouteDialogModel();\n routeDialogModel.route = url;\n \n this.routeDialogService.openDialog(routeDialogModel);\n }, 1000);\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.isDesktop = event.target.innerWidth > 799;\n }\n}","
\n
\n
\n
\n \n {{getAppointmentTypeText()}}\n
\n
\n {{model.appointmentDate | date:'EEEE': 'UTC': language | titlecase }}, {{model.appointmentDate | date:'mediumDate': 'UTC': language }}\n {{model.appointmentDate | date:'h:mm a': 'UTC' | lowercase }}\n
\n
\n \n
\n\n
\n
\n \n
\n\n \n \n {{model.doctorName}}\n \n \n {{model.doctorSpecialty}}\n \n
\n
\n \n \n \n {{ model.attentionPlaceAddress }}\n
\n
\n \n \n {{ model.medicalConsultationType }}\n {{ model.medicalConsultationAmount | currency:'USD' }}\n \n
\n
\n \n \n
\n {{ model.patientName }}\n {{ ' (' + getRelationshipText() + ')' }}\n
\n
\n
\n
\n
","import { AppointmentInfoDataModel } from \"./appointment-info-data.model\";\r\n\r\nexport class AppointmentSummaryDataModel{\r\n appointmentInfo: AppointmentInfoDataModel;\r\n specialty: string;\r\n pendingApproval: boolean;\r\n locationLat: number;\r\n locationLng: number;\r\n locationZoom: number = 15;\r\n phoneNumber: string;\r\n}","import { Component, ChangeDetectorRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\n\n@Component({\n selector: 'app-company-logo',\n templateUrl: './company-logo.component.html',\n styleUrls: ['./company-logo.component.css']\n})\nexport class CompanyLogoComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n isLicensed: boolean;\n showCliniwebLogo: boolean;\n companyName: string;\n companyLogo:string;\n loading:boolean = true;\n isCliniwebPhr:boolean = false;\n\n companyLogos:{ [key: string]: string } = {\n 'town-center':'assets/images/logos/townCenter.png',\n 'mapfre': 'assets/images/logos/mapfre.png',\n 'hospital-paitilla': 'assets/images/logos/paitilla-round.png',\n 'pacifica-salud-phr': 'assets/images/logos/PuntaPacifica.png',\n 'hsantafe-phr': 'assets/images/logos/HSantaFe.png'\n , 'chpanamericano-phr': 'assets/images/logos/chpanamericano-phr.png',\n\t'chsf-phr': 'assets/images/logos/chsf-phr.png'};\n \n @Input() showCompanyImage:boolean = false;\n\n constructor(\n private baseService: BaseService,\n private cd: ChangeDetectorRef,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n ) { }\n\n ngOnInit(): void {\n this.isCliniwebPhr = this.baseService.isCliniwebCompany();\n\n if(this.isCliniwebPhr){\n this.loading = false;\n this.isLicensed = true;\n }\n else{\n this.baseService.isLicensedCompany()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result=>{\n this.loading = false;\n this.isLicensed = result;\n this.companyName = this.baseService.getDirectoryTitle();\n this.companyLogo = this.getCompanyLogoValueByPartialKey(this.baseService.getDirectoryClass());\n setTimeout(() => this.cd.detectChanges(), 100);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n private getCompanyLogoValueByPartialKey(partialKey: string): string {\n for (const key in this.companyLogos) {\n if (key.includes(partialKey)) {\n return this.companyLogos[key];\n }\n }\n return '';\n }\n}\n","
\n
\n
\n
\n
\n \n
\n {{'shared.companyLogo.directoryName' | translate:locale.language:{ companyName: companyName } }}\n
\n
\n
\n
\n \n
\n \n {{'shared.companyLogo.allianceText' | translate:locale.language }}\n \n \n \n \n
\n
\n
","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\n\r\n@Component({\r\n selector: 'app-learn-more',\r\n templateUrl: './learn-more.component.html',\r\n styleUrls: ['./learn-more.component.css']\r\n})\r\n@ComponentLookup('LearnMoreComponent')\r\nexport class LearnMoreComponent implements OnInit, OnDestroy {\r\n data: FormComponentData;\r\n private ngUnsubscribe = new Subject();\r\n\r\n constructor(\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private messageBusService: MessageBusService,\r\n private routeDialogService: RouteDialogService\r\n ) { }\r\n\r\n ngOnInit(): void { \r\n // On Header Back click\r\n this.messageBusService.onNavigateBack()\r\n .pipe(takeUntil(this.ngUnsubscribe)) \r\n .subscribe(m => {\r\n this.routeDialogService.closeDialogsAndNavigate(\"/citas/checkout\");\r\n });\r\n } \r\n \r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n}","
\r\n \r\n \r\n \r\n \r\n
\r\n {{ 'shared.learnMore.title' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.learnMore.subtitle1' | translate:locale.language }}\r\n
\r\n

\r\n {{ 'shared.learnMore.text1' | translate:locale.language }}\r\n

\r\n
\r\n {{ 'shared.learnMore.subtitle2' | translate:locale.language }}\r\n
\r\n

\r\n {{ 'shared.learnMore.text2' | translate:locale.language }}\r\n

\r\n
\r\n
\r\n
","export class Person{\r\n id: number;\r\n nombre: string;\r\n apellido: string;\r\n sexo: string;\r\n ubicacionLogo: string;\r\n fechaNacimiento: Date;\r\n}","export enum ContainerType{\r\n MAIN = 'main',\r\n HEADER = 'header'\r\n}","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { Dependent } from 'src/app/shared/models/people/dependent.model';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { Subject } from 'rxjs';\r\nimport { CloseRouteDialogMessage, MessageBusService, OpenSnackBarMessage, SnackBarType } from 'src/app/core/services/message-bus.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { AvatarUploadComponentOptions, AvatarUploadedFileModel } from '../../avatar-upload/avatar-upload.component';\r\nimport CommonTypesHelper from 'src/app/shared/helpers/common-types-helper';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'app-view-dependent',\r\n templateUrl: './view-dependent.component.html',\r\n styleUrls: ['./view-dependent.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ViewDependentComponent implements OnInit, OnDestroy {\r\n \r\n private ngUnsubscribe = new Subject();\r\n dependent: ViewDependentModelDto | undefined;\r\n fechaNacimiento: string | null;\r\n saving: boolean = false;\r\n translations = {\r\n other: \"\",\r\n son: \"\",\r\n daughter: \"\",\r\n father: \"\",\r\n mother: \"\",\r\n language: \"\",\r\n man: \"\",\r\n women: \"\" \r\n };\r\n avatarUploadOptions : AvatarUploadComponentOptions;\r\n \r\n constructor(\r\n private userService: UserService,\r\n private route: ActivatedRoute,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n private translation: L10nTranslationService,\r\n private router: Router,\r\n private dialog: MatDialog,\r\n private messageBusService: MessageBusService,\r\n ) {\r\n moment.locale(this.locale.language);\r\n this.avatarUploadOptions = new AvatarUploadComponentOptions();\r\n this.avatarUploadOptions.requiredFileType = \"image/png,image/jpeg\";\r\n this.avatarUploadOptions.selectFileLabel = \"añadir foto\";\r\n this.avatarUploadOptions.changeFileLabel = \"Editar\";\r\n this.avatarUploadOptions.showFileOnceUpload = true;\r\n }\r\n\r\n ngOnInit(): void {\r\n const dependentIdQs = this.route.snapshot.paramMap.get('id');\r\n\r\n if(!dependentIdQs) {\r\n // TODO: redirect to home???\r\n return;\r\n }\r\n\r\n let dependentId = parseInt(dependentIdQs);\r\n\r\n this.translation.onChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: () => {\r\n this.translations.other = this.translation.translate('shared.profileMenu.text8');\r\n this.translations.son = this.translation.translate('shared.profileMenu.text9');\r\n this.translations.daughter = this.translation.translate('shared.profileMenu.text10');\r\n this.translations.father = this.translation.translate('shared.profileMenu.text11');\r\n this.translations.mother = this.translation.translate('shared.profileMenu.text12');\r\n this.translations.man = this.translation.translate('man');\r\n this.translations.women = this.translation.translate('women'); \r\n \r\n this.avatarUploadOptions.selectFileLabel = this.translation.translate('shared.viewUser.text8');\r\n this.avatarUploadOptions.changeFileLabel = this.translation.translate('shared.viewUser.text3');\r\n this.avatarUploadOptions.changePictureLabel = this.translation.translate('shared.viewUser.text9');\r\n this.avatarUploadOptions.deleteFileLabel = this.translation.translate('shared.viewUser.text10');\r\n }\r\n });\r\n\r\n this.userService.getUserDependents()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(d => {\r\n let dependents = d as ViewDependentModelDto[];\r\n\r\n // Lookup dependent by Id\r\n this.dependent = dependents.find(d => d.id == dependentId);\r\n\r\n if (!this.dependent) {\r\n // TODO: redirect to home???\r\n return;\r\n }\r\n\r\n this.setUpDependentExtraData();\r\n });\r\n\r\n // On Header Back click\r\n this.messageBusService.onNavigateBack()\r\n .pipe(takeUntil(this.ngUnsubscribe)) \r\n .subscribe(m => {\r\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n this.messageBusService.refreshProfileMenu();\r\n }\r\n\r\n setUpDependentExtraData() {\r\n if (!this.dependent)\r\n return;\r\n\r\n this.dependent.fullName = this.dependent.nombre + \" \" + this.dependent.apellido; \r\n this.dependent.relationshipName = this.userService.getDependentRelationshipName(this.dependent);\r\n\r\n let feNacimiento = this.dependent.fechaNacimiento ? new Date(this.dependent.fechaNacimiento) : null;\r\n this.fechaNacimiento = CommonTypesHelper.dateHasValue(feNacimiento) ? moment(feNacimiento).format('D [de] MMMM[,] yyyy') : null;\r\n\r\n if (this.dependent.sexo && this.dependent.sexo != \"9\") {\r\n if (this.dependent.sexo.toLocaleLowerCase() == \"m\") {\r\n this.dependent.sexName = this.translations.man;\r\n this.dependent.sexIconClass = \"phr-iconset-hombre\";\r\n }\r\n else {\r\n this.dependent.sexName = this.translations.women;\r\n this.dependent.sexIconClass = \"phr-iconset-mujer\";\r\n } \r\n \r\n }\r\n } \r\n\r\n onEditDependentClick() {\r\n this.router.navigate(['configuracion/dependiente/edicion/' + this.dependent?.id]);\r\n } \r\n\r\n onDeleteClick() {\r\n //this.saving = true;\r\n\r\n let dialogData = new DialogData();\r\n dialogData.title = this.translation.translate('shared.viewDependent.text9');\r\n dialogData.message = this.translation.translate('shared.viewDependent.text10');\r\n dialogData.confirmText = this.translation.translate('shared.viewDependent.text14'); \r\n dialogData.cancelText = this.translation.translate('shared.viewDependent.text12');\r\n dialogData.headerIconClass = 'phr-iconset-alert';\r\n dialogData.showHeaderIcon = true;\r\n dialogData.showCancelButton = true;\r\n dialogData.id = 'confirm-delete-user-dialog';\r\n dialogData.animationIn = 'confirm-logout-animation-in';\r\n dialogData.animationOut = 'confirm-logout-animation-out';\r\n \r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n data: dialogData,\r\n panelClass: ['confirm-delete-user-dialog', 'confirm-logout-animation-in']\r\n });\r\n \r\n dialogRef.afterClosed().subscribe(accepted => {\r\n if(accepted){\r\n this.saving = true;\r\n\r\n this.userService.deleteDependent(this.dependent as Dependent).subscribe(r => {\r\n this.saving = false;\r\n\r\n this.showDeleteSuccessToast();\r\n\r\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\r\n\r\n },\r\n error => {\r\n this.saving = false;\r\n });\r\n }\r\n });\r\n }\r\n\r\n showDeleteSuccessToast() {\r\n let message = new OpenSnackBarMessage();\r\n message.text = this.translation.translate('shared.viewDependent.text13');\r\n message.type = SnackBarType.SUCCESS;\r\n message.duration = 3000;\r\n \r\n this.messageBusService.openSnackBar(message);\r\n }\r\n\r\n onAvatarUploaded(file: AvatarUploadedFileModel) {\r\n if (this.dependent) this.dependent.ubicacionLogo = file?.webUrl;\r\n }\r\n\r\n}\r\n\r\nexport class ViewDependentModelDto extends Dependent { \r\n relationshipName: string;\r\n fullName: string;\r\n sexName: string;\r\n sexIconClass: string; \r\n}\r\n","
\r\n \r\n\r\n
\r\n {{'shared.viewDependent.text1' | translate:locale.language}} {{dependent.nombre}}\r\n ({{dependent.relationshipName}})\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n {{'shared.viewDependent.text4' | translate:locale.language}}\r\n
\r\n
\r\n {{dependent.fullName}}\r\n
\r\n
\r\n
\r\n
\r\n {{'shared.viewDependent.text5' | translate:locale.language}}\r\n
\r\n
\r\n {{ fechaNacimiento }} \r\n
\r\n
\r\n
\r\n
\r\n {{'shared.viewDependent.text6' | translate:locale.language}}\r\n
\r\n
\r\n \r\n {{dependent.sexName}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n transform(html: string | null): SafeHtml {\n if (!html) return '';\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n}\n","import { Directive, HostListener, Inject } from '@angular/core';\nimport { Debounce } from '../decorators/debounce.decorator';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[appTouchMoveListener]'\n})\nexport class TouchMoveListenerDirective {\n\n constructor(@Inject(DOCUMENT) private document: Document) { }\n\n @HostListener('touchmove', ['$event'])\n @Debounce(200)\n onTouchMove($event: Event) {\n const activeElement = this.document.activeElement;\n if (activeElement && (activeElement as HTMLElement).blur) {\n (activeElement as HTMLElement).blur();\n }\n }\n}\n","import { SignupWorkflowVerificationType } from \"src/app/shared/enums/signup-workflow-verification.enum\";\r\nimport { PublicProfile } from \"../../people/public-profile.model\";\r\n\r\nexport class PatientVerificationDataModel{\r\n configData: PatientVerificationComponentData;\r\n idResponsableServicio: number;\r\n idVerificacion: string;\r\n idPaciente: number;\r\n nombrePaciente: string; \r\n profile: PublicProfile;\r\n}\r\n\r\nexport class PatientVerificationComponentData{ \r\n showCliniwebSection: boolean;\r\n signupWorkflowVerificationType: SignupWorkflowVerificationType;\r\n workflowType: number;\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { CountryModel, TerritorialDivision } from 'src/app/shared/models/systems/territorial-division.model';\r\nimport { HttpBaseService } from './http-base-service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { AppStorageService, STORAGE } from './app-storage.service';\r\nimport { BaseService } from './base.service';\r\nimport { MessageBusService, TerritorialDivionCountryMessage } from './message-bus.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TerritorialDivisionsService {\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private http: HttpBaseService,\r\n private baseService: BaseService,\r\n private messageBusService: MessageBusService,\r\n private appStorageService: AppStorageService\r\n ) { } \r\n \r\n getByLevels(language: string, searchText: string, levels: string, countryId: number = -1):Observable {\r\n let url = `api/divisiones-territoriales?localizacion=${language}&texto=${encodeURIComponent(searchText)}&niveles=${levels}&codigoPais=${countryId}`;\r\n\r\n return this.http.get(url, null, false); \r\n }\r\n\r\n getBySwiftCode(language: string, swift:string):Observable{\r\n let url = `api/divisiones-territoriales/swift/${swift}?localizacion=${language}`;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getByIp(language: string, ip:string):Observable{\r\n let url = `api/divisiones-territoriales/ip/${ip}?localizacion=${language}`;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getByCountryId(language: string, countryId:number){\r\n let url = `api/divisiones-territoriales/pais/${countryId}?localizacion=${language}`;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getCountryByIp(): Observable{\r\n return this.getIp().pipe(switchMap((ip:string)=>{\r\n \r\n let countryObject = this.appStorageService.getItem(STORAGE.COUNTRY, true);\r\n\r\n if(countryObject && (countryObject.ip && countryObject.ip == ip || countryObject.territorialDivision)){\r\n return of(countryObject);\r\n }\r\n\r\n const language = this.baseService.getLanguage();\r\n\r\n return this.getByIp(language, ip)\r\n .pipe(map((t:TerritorialDivision)=>{\r\n\r\n countryObject = new CountryModel();\r\n countryObject.ip = ip;\r\n countryObject.territorialDivision = t;\r\n\r\n this.appStorageService.setItem(STORAGE.COUNTRY, countryObject, true);\r\n\r\n return countryObject; \r\n }));\r\n }));\r\n }\r\n\r\n setCountryApp(countryId: number){\r\n this.getCountryApp().subscribe(countryApp=>{\r\n\r\n let country = this.getAvailableCountries().find(c=>c.idPais == countryId);\r\n\r\n if(!country)\r\n return;\r\n \r\n countryApp.territorialDivision = country;\r\n \r\n this.appStorageService.setItem(STORAGE.COUNTRY, countryApp, true); \r\n \r\n let msg = new TerritorialDivionCountryMessage();\r\n msg.country = country;\r\n \r\n this.messageBusService.sendTerritorialDivisionCountry(msg);\r\n });\r\n }\r\n\r\n getCountryApp():Observable{\r\n let country = this.appStorageService.getItem(STORAGE.COUNTRY, true);\r\n\r\n if(country){\r\n return of(country);\r\n }\r\n else{\r\n return this.getCountryByIp();\r\n }\r\n }\r\n\r\n getAvailableCountries(): TerritorialDivision[]{\r\n\r\n let countries: TerritorialDivision[] = [];\r\n \r\n let panama = new TerritorialDivision();\r\n panama.id = 19;\r\n panama.nombre = \"Panamá\";\r\n panama.nombreI18n = [{lenguaje: 'es', texto: 'Panamá'}, {lenguaje: 'en', texto: 'Panamá'}];\r\n panama.nombreCanonico = \"Panamá\";\r\n panama.nivel = 1;\r\n panama.identificador = \"panama\";\r\n panama.paisISO = \"PA\";\r\n panama.idPais = 28;\r\n\r\n countries.push(panama);\r\n\r\n let ecuador = new TerritorialDivision();\r\n ecuador.id = 4;\r\n ecuador.nombre = \"Ecuador\";\r\n ecuador.nombreI18n = [{lenguaje: 'es', texto: 'Ecuador'}, {lenguaje: 'en', texto: 'Ecuador'}];\r\n ecuador.nombreCanonico = \"Ecuador\";\r\n ecuador.nivel = 1;\r\n ecuador.identificador = \"ecuador\";\r\n ecuador.paisISO = \"EC\";\r\n ecuador.idPais = 13;\r\n\r\n countries.push(ecuador);\r\n\r\n let costaRica = new TerritorialDivision();\r\n costaRica.id = 14;\r\n costaRica.nombre = \"Costa Rica\";\r\n costaRica.nombreI18n = [{lenguaje: 'es', texto: 'Costa Rica'}, {lenguaje: 'en', texto: 'Costa Rica'}];\r\n costaRica.nombreCanonico = \"Costa Rica\";\r\n costaRica.nivel = 1;\r\n costaRica.identificador = \"costa-rica\";\r\n costaRica.paisISO = \"CR\";\r\n costaRica.idPais = 23;\r\n\r\n countries.push(costaRica);\r\n\r\n let honduras = new TerritorialDivision();\r\n honduras.id = 16;\r\n honduras.nombre = \"Honduras\";\r\n honduras.nombreI18n = [{lenguaje: 'es', texto: 'Honduras'}, {lenguaje: 'en', texto: 'Honduras'}];\r\n honduras.nombreCanonico = \"Honduras\";\r\n honduras.nivel = 1;\r\n honduras.identificador = \"honduras\";\r\n honduras.paisISO = \"HN\";\r\n honduras.idPais = 25;\r\n\r\n countries.push(honduras);\r\n\r\n let republicaDominicana = new TerritorialDivision();\r\n republicaDominicana.id = 29;\r\n republicaDominicana.nombre = \"República Dominicana\";\r\n republicaDominicana.nombreI18n = [{lenguaje: 'es', texto: 'República Dominicana'}, {lenguaje: 'en', texto: 'Dominican Republic'}];\r\n republicaDominicana.nombreCanonico = \"República Dominicana\";\r\n republicaDominicana.nivel = 1;\r\n republicaDominicana.identificador = \"republica-dominicana\";\r\n republicaDominicana.paisISO = \"DO\";\r\n republicaDominicana.idPais = 38;\r\n\r\n countries.push(republicaDominicana);\r\n\r\n let otros = new TerritorialDivision();\r\n otros.id = 6213;\r\n otros.nombre = \"Otros\";\r\n otros.nombreI18n = [{lenguaje: 'es', texto: 'Otros'}, {lenguaje: 'en', texto: 'Others'}];\r\n otros.nombreCanonico = \"Otros\";\r\n otros.nivel = 1;\r\n otros.identificador = \"otros\";\r\n otros.paisISO = \"1\";\r\n otros.idPais = 1;\r\n\r\n countries.push(otros);\r\n\r\n return countries;\r\n }\r\n\r\n private getIp():Observable{\r\n return this.httpClient.post(\"https://ip.aspsoluciones.com/ServiciosIP.asmx/IP\", {})\r\n .pipe(map((ipObject:any)=>{\r\n return ipObject.d;\r\n }));\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpBaseService } from './http-base-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PrintsService {\r\n\r\n private url = 'api/impresiones';\r\n\r\n constructor(\r\n private http: HttpBaseService\r\n ) { }\r\n\r\n getPdf(args: MedicalOrderReport):Observable {\r\n return this.http.post(`${this.url}/pdf`, args);\r\n }\r\n\r\n}\r\n\r\nexport interface MedicalOrderFile {\r\n fileName: string;\r\n pdfBase64: string;\r\n}\r\n\r\nexport interface MedicalOrderReport {\r\n valorLocalizacion: string;\r\n idAreaSistema: number;\r\n idAreaSistemaImpresion: number;\r\n idEmpresa: number;\r\n idPersona: number;\r\n idResponsableImpresion: number;\r\n urlLogoEmpresa: string;\r\n htmlReporte: string;\r\n formatoHoja: FormatoHojaReporte;\r\n idPaciente: number;\r\n idResponsableServicio: number;\r\n idContactoClinico: number;\r\n idHistoriaClinicaActualQR: number;\r\n idEmpresaDestino: number;\r\n urlFirma: string;\r\n idLocalidad: number;\r\n fechaOrdenMedica: Date;\r\n comentario: string;\r\n diagnosticos: string;\r\n numeroOrden: string;\r\n esProfesionalVerificado: boolean;\r\n licenciaProfesionalInfo: LicenciaProfesional;\r\n categorias: ReporteCategoriaConceptoDTO[]; \r\n}\r\n\r\nexport class ReporteCategoriaConceptoDTO\r\n{\r\n nombre?: string;\r\n cantidad?: number;\r\n conceptos?: ReporteCategoriaConceptoDTO[];\r\n comentario?: string;;\r\n}\r\n\r\nexport class LicenciaProfesional {\r\n Codigo: string;\r\n Especialidad: string;\r\n Folio: string\r\n Nombre: string;\r\n Registro: string;\r\n}\r\n\r\nexport enum FormatoHojaReporte\r\n{\r\n CARTA,\r\n PERSONALIZADO\r\n}\r\n","
\n
\n \n
\n {{nombreResponsableServicio}}\n {{nombreEspecialidad}}\n {{registro}}\n
\n  PROFESIONAL VERIFICADO\n
\n
\n
\n
","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DoctorService } from 'src/app/core/services/doctors.service';\nimport { LicenciaProfesional } from 'src/app/core/services/prints.service';\nimport { LicenseDoctor } from 'src/app/shared/models/clinic-history/license-doctor.model';\n\n@Component({\n selector: 'app-summary-order-sign',\n templateUrl: './summary-order-sign.component.html',\n styleUrls: ['./summary-order-sign.component.css']\n})\nexport class SummaryOrderSignComponent implements OnChanges {\n\n @Input() idResponsableServicio: number;\n sign: string;\n nombreResponsableServicio: string;\n nombreEspecialidad: string;\n registro: string;\n esProfesionalVerificado = false;\n json: LicenciaProfesional;\n private _signPdf = '';\n\n get signPdf() { return this._signPdf; }\n \n constructor(private doctorService: DoctorService) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.idResponsableServicio && changes.idResponsableServicio.currentValue > 0) {\n this.doctorService.getLicense(this.idResponsableServicio).subscribe(this.procesarIdoneidad.bind(this));\n }\n }\n\n private procesarIdoneidad(args: LicenseDoctor): void {\n const informacionResponsableServicio = args.informacionResponsableServicio;\n const licencia = args.licenciasProfesional\n .filter(x => x.idIdentificacionPersona == informacionResponsableServicio.idIdentificacionIdoneidadProfesionalDefault)[0];\n\n if (licencia) {\n this.json = JSON.parse(licencia.jsonIdentificacion);\n\n this.nombreResponsableServicio = this.json.Nombre;\n this.nombreEspecialidad = this.json.Especialidad;\n this.registro = `${this.json.Registro ? `Reg. ${this.json.Registro}` : ''} ${this.json.Codigo ? `Cod. ${this.json.Codigo}` : ''} ${this.json.Folio ? `Folio. ${this.json.Folio}` : ''}`\n }\n\n this.esProfesionalVerificado = informacionResponsableServicio.profesionalVerificado == 'S';\n this.sign = args.documentosFirma\n .filter(x => x.idDocumento == informacionResponsableServicio.idDocumentoImagenFirma)\n .map(x => x.direccionUbicacionWeb)[0];\n this._signPdf = args.documentosFirma\n .filter(x => x.idDocumento == informacionResponsableServicio.idDocumentoImagenFirma)\n .map(x => x.nombreBucketAmazonS3 ? x.direccionUbicacionWeb : x.direccionUbicacionFisica)[0];\n }\n\n imgError(event: Event) {\n const element = event.target as HTMLImageElement;\n element.style.visibility = \"hidden\";\n event.preventDefault();\n }\n\n imgLoad(event: Event) {\n const element = event.target as HTMLImageElement;\n element.style.visibility = \"visible\";\n event.preventDefault();\n }\n\n}\n","
\n {{posologia}}\n
\n Comentarios: {{observaciones}}\n
","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ClinicalHistoryItem } from 'src/app/shared/interfaces/clinical-history-item';\n\n@Component({\n selector: 'app-summary-order-concept-value',\n templateUrl: './summary-order-concept-value.component.html',\n styleUrls: ['./summary-order-concept-value.component.css']\n})\nexport class SummaryOrderConceptValueComponent implements OnInit {\n\n @Input() item: ClinicalHistoryItem;\n observaciones: string;\n posologia?: string;\n \n constructor() { }\n\n ngOnInit(): void {\n this.posologia = this.item.valorConcepto;\n const json = this.item.jsonHistoriaClinicaActual || this.item.jsonOrdenMedicaDetalle\n if (json) {\n this.procesarJson(json);\n }\n }\n\n private procesarJson(json: string): void {\n const obj = JSON.parse(json);\n if (obj?.Comentarios) {\n this.posologia = this.posologia?.replace(obj.Comentarios, '').trim();\n this.posologia = (this.posologia || '').length <= 1 ? this.posologia?.replace('.',''): this.posologia;\n this.observaciones = obj.Comentarios;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Location } from \"@angular/common\";\nimport { NavigationEnd, Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavigationService {\n private history: string[] = [];\n\n constructor(private router: Router, private location: Location) {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.history.push(event.urlAfterRedirects);\n }\n });\n }\n\n back(): void {\n this.history.pop();\n if (this.history.length > 0) {\n this.location.back();\n }\n else {\n this.router.navigateByUrl(\"/\");\n }\n }\n\n getNavigator(): Navigator {\n return window.navigator;\n }\n\n canShare(data: { files: File[] }): boolean {\n const navigator = this.getNavigator();\n return !!navigator.canShare ? navigator.canShare(data) : false;\n }\n\n share(data: ShareData): Promise {\n const nav = this.getNavigator();\n if (nav.share) {\n return nav.share(data);\n } else {\n return Promise.reject('Share API no soportada en este navegador.');\n }\n }\n\n isNavigatorAvailable(): boolean {\n return !!window.navigator && !!window.navigator.share;\n }\n}\n\ninterface ShareData {\n title?: string;\n text?: string;\n url?: string;\n files?: File[];\n}\n\ninterface Navigator {\n canShare?: (data?: ShareData) => boolean;\n share?: (data: ShareData) => Promise;\n}","","import { Component, HostBinding, Inject, Input, OnInit } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { NavigationService } from 'src/app/core/services/navigation.service';\n\n@Component({\n selector: 'app-summary-order-download-button',\n templateUrl: './summary-order-download-button.component.html',\n styleUrls: ['./summary-order-download-button.component.css']\n})\nexport class SummaryOrderDownloadButtonComponent implements OnInit {\n\n @HostBinding('style.flex-grow') flexGrow = '1';\n @HostBinding('style.max-width') maxWidth = '464px';\n @Input() share = false;\n @Input() file: File;\n\n buttonText:string = '';\n loading: boolean = false;\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private navigationService: NavigationService\n ) { \n }\n\n ngOnInit(): void {\n this.buttonText = this.share \n ? 'shared.medicalOrder.summary.buttonShareOrder' \n : 'shared.medicalOrder.summary.buttonDownloadOrder';\n }\n\n onClick(): void{\n this.loading = true;\n if(this.share){\n this.compartirArchivo(this.file);\n }\n else{\n this.fallbackDownload(this.file);\n }\n this.loading = false;\n }\n\n private compartirArchivo(file: File): void {\n if (this.navigationService.isNavigatorAvailable() && this.navigationService.canShare({ files: [file] })) {\n this.navigationService.share({\n title: 'Compartir reporte',\n text: 'Revisa este reporte médico',\n files: [file],\n }).then(() => {\n console.log('Compartido exitosamente');\n }).catch((error) => {\n console.error('Error al compartir', error);\n // this.fallbackDownload(file);\n });\n } else {\n console.error('El navegador no soporta compartir archivos.');\n this.fallbackDownload(file);\n }\n }\n\n private fallbackDownload(file: File): void {\n const blobUrl = URL.createObjectURL(file);\n const a = document.createElement('a');\n a.href = blobUrl;\n a.download = file.name;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n}\n","","import { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport { Component, Inject, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { MEDICAL_REQUEST_TYPE } from 'src/app/shared/enums/medical-request-type.enum';\nimport { AttentionsHistory } from 'src/app/shared/interfaces/attentions-history';\nimport { ClinicalHistoryItem } from 'src/app/shared/interfaces/clinical-history-item';\n\n@Component({\n selector: 'app-summary-order-footer',\n templateUrl: './summary-order-footer.component.html',\n styleUrls: ['./summary-order-footer.component.css']\n})\nexport class SummaryOrderFooterComponent implements OnDestroy, OnChanges {\n\n @Input() idPaciente = -1;\n @Input() inWorflow: boolean = true;\n @Input() idTipoSolicitud: number;\n @Input() nombreTipoSolicitud: string;\n @Input() file: File;\n\n buttonSecondaryText = 'shared.medicalOrder.summary.buttonText2';\n buttonPrimaryText = 'shared.medicalOrder.summary.buttonTextPrescriptions';\n\n private ngUnsubscribe = new Subject();\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private breakpointObserver: BreakpointObserver,\n private messageBusService: MessageBusService,\n private userService: UserService\n ) {\n this.breakpointObserver.observe(Breakpoints.Handset).pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.mobileNext.bind(this));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.nombreTipoSolicitud) {\n this.buttonPrimaryText = `${this.nombreTipoSolicitud}Button`;\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n private mobileNext(x: BreakpointState): void {\n if (!x.matches) return;\n this.buttonSecondaryText = 'shared.medicalOrder.summary.buttonTextMobile2';\n }\n\n verOrdenes(): void {\n\n this.userService.getUserIdLoggedIn()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((userId: number) => {\n let pagina = MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION == this.idTipoSolicitud \n ? 'recetas' \n : 'laboratorio';\n \n let url = `mi-salud/${pagina}`;\n\n if (userId != this.idPaciente) {\n url += `?p=${this.idPaciente}`;\n }\n\n this.messageBusService.closeWorkFlowRequest(url);\n });\n }\n\n irInicio(): void {\n this.messageBusService.closeWorkFlowRequest('inicio');\n }\n\n}\n","
\n

\n {{ 'shared.medicalOrder.summary.text1' | translate:locale.language:{ tipoSolicitud: (title | translate:locale.language) } }}\n

\n

\n {{ 'shared.medicalOrder.summary.text2' | translate:locale.language:{patientName: patient?.nombre, tipoSolicitud: (title | translate:locale.language)} }}\n

\n
\n
\n
\n \n
\n \n
\n \n {{ requestTypeName | translate:locale.language:{requestNumber: requestNumber} }}\n \n \n Fecha: {{dateString}}\n \n
\n
\n
\n
\n
\n
\n \n {{ 'shared.medicalOrder.summary.patientTitle' | translate:locale.language }} \n
\n {{patient?.nombre}} {{patient?.apellido}}\n {{patient?.fechaNacimiento | ageFromBirthday}}\n {{patient?.cedula || 'No disponible'}}\n \n {{patient?.emailParticular || 'N/A'}}\n \n \n {{patient?.telefonoCelularParticular}}\n \n
\n
\n
\n \n {{ 'shared.medicalOrder.summary.healthcareProfesionalTitle' | translate:locale.language }} \n
\n
\n\t\t\t\t\t\t
{{publicProfile?.nombrePersona}}
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n \n {{publicProfile?.especialidad || 'N/A'}}\n \n \n {{history?.empresaPortal?.denominacion || ''}}\n \n \n {{history?.empresaPortal?.direccionLaboral || ''}} {{history?.empresaPortal?.nombreCanonicoDivisionTerritorialLaboral || ''}}\n \n \n {{history?.empresaPortal?.numeroTelCelular || 'N/A'}}, {{history?.empresaPortal?.numeroTelParticular || ''}}\n \n \n {{history?.empresaPortal?.emailLaboral || history?.empresaPortal?.emailParticular || 'N/A'}}\n \n
\n \n
\n
\n \n {{'shared.medicalOrder.summary.' + diagnosticosLabel | translate:locale.language}}:\n {{diagnosticos}}\n \n
\n
    \n
  1. \n \n {{item.nombreConcepto || item.nombreConceptoClinico}}\n (Total: #{{item.cantidad}})\n
    \n \n
    \n
      \n
    • \n {{item2.nombreConcepto || item2.nombreConceptoClinico}}
      \n {{item2.valorConcepto}}\n
    • \n
    \n
  2. \n
\n
\n
{{'shared.medicalOrder.summary.comment' | translate:locale.language}}
\n
{{comentarios.valorConcepto}}
\n
\n
\n \n
\n\n \n
\n
","import { Component, Inject, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { forkJoin, Observable, of, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { MedicalOrderService } from 'src/app/core/services/medical-order.service';\nimport { CloseRouteDialogMessage, ComponentFinishLoadingMessage, MessageBusService, NavigationBackMessage } from 'src/app/core/services/message-bus.service';\nimport { PatientService } from 'src/app/core/services/patient.service';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { ComponentName } from 'src/app/shared/enums/component-name.enum';\nimport { CONCEPTOS_ID, MEDICAL_REQUEST_TYPE, MY_MEDICAL_ORDER_PRINT_SYSTEM_AREA, TIPO_CONCEPTOS_ID, TITLE_MAPPING } from 'src/app/shared/enums/medical-request-type.enum';\nimport { AttentionsHistory } from 'src/app/shared/interfaces/attentions-history';\nimport { ClinicalHistoryItem } from 'src/app/shared/interfaces/clinical-history-item';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { PublicProfile } from 'src/app/shared/models/people/public-profile.model';\nimport { PatientVerificationComponentData, PatientVerificationDataModel } from 'src/app/shared/models/workflow/models/patient-verification-data.model';\nimport { RouteDialogType } from '../../dialogs/route-dialog/route-dialog.component';\nimport { MedicalOrder } from 'src/app/shared/interfaces/medical-order';\nimport { Location } from 'src/app/shared/models/people/location.model';\nimport { BreakpointObserver, BreakpointState, Breakpoints } from '@angular/cdk/layout';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { PatientPartial } from 'src/app/shared/interfaces/patient-partial';\nimport { ClinicContact } from 'src/app/shared/interfaces/clinic-contact';\nimport { RequestsToVerifyConfirmationResponse, RequestsToVerifyService } from 'src/app/core/services/requests-to-verify.service';\nimport { FormatoHojaReporte, MedicalOrderFile, MedicalOrderReport, PrintsService, ReporteCategoriaConceptoDTO } from 'src/app/core/services/prints.service';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { DoctorService } from 'src/app/core/services/doctors.service';\nimport { SummaryOrderSignComponent } from './summary-order-sign/summary-order-sign.component';\n\n@Component({\n selector: 'app-summary-medical-order',\n templateUrl: './summary-medical-order.component.html',\n styleUrls: ['./summary-medical-order.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup(ComponentName.SUMMARY_MEDICAL_ORDER)\nexport class SummaryMedicalOrderComponent implements IControlComponent, OnInit {\n\n @Input() inWorflow: boolean = true;\n @ViewChild(SummaryOrderSignComponent) summaryOrderSignComponent: SummaryOrderSignComponent;\n atenciones: ClinicalHistoryItem[] = [\n { nombreConcepto: '', items: [ { nombreConcepto: '' }, { nombreConcepto: '' }, { nombreConcepto: '' }, { nombreConcepto: '' }, { nombreConcepto: '' } ] },\n { nombreConcepto: '', items: [ { nombreConcepto: '' }, { nombreConcepto: '' }, { nombreConcepto: '' } ] }\n ];\n componentData: PatientVerificationComponentData;\n comentarios?: ClinicalHistoryItem;\n diagnosticos = '';\n diagnosticosLabel = 'diagnosis';\n data: any;\n initialLoading = true;\n loading = false;\n model = new PatientVerificationDataModel();\n isAndroid = false;\n history: AttentionsHistory = {\n solicitud: { fechaInicio: '1990-04-02', idResponsableServicio: 0, idPersonaEmisora: 0, idTipoSolicitud: 29 },\n historialAtencion: { atenciones: []},\n ubicacionFotoLogoTitulo: '',\n empresaPortal: { denominacion: 'N/A', numeroTelParticular:'N/A', numeroTelCelular: 'N/A', direccionLaboral: 'N/A' }\n };\n dateString = 'N/A';\n language: string;\n localidad: Location;\n patient: PatientPartial;\n publicProfile?: PublicProfile | null;\n title = 'N/A';\n requestType = 0;\n requestTypeName = 'N/A';\n requestNumber = 'N/A';\n buttonSecondaryText = 'shared.medicalOrder.summary.buttonText2';\n buttonPrimaryText = 'shared.medicalOrder.summary.buttonTextPrescriptions';\n private ngUnsubscribe = new Subject();\n idPaciente: number;\n\n showHtmlComment: boolean = false;\n htmlComment: SafeHtml = '';\n\n file: File;\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private baseService: BaseService,\n private doctorService: DoctorService,\n private messageBusService: MessageBusService,\n private medicalOrderSevice: MedicalOrderService,\n private requestsToVerifyService: RequestsToVerifyService,\n private publicProfileService: PublicProfileService,\n private medicalOrderService: MedicalOrderService,\n private printsService: PrintsService,\n private route: ActivatedRoute,\n private patientService: PatientService,\n private breakpointObserver: BreakpointObserver,\n private sanitizer: DomSanitizer\n ) {\n this.language = locale.dateLanguage ?? 'es-AR';\n this.messageBusService.onNavigateBack().pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.onNavigateBackNext.bind(this));\n this.breakpointObserver.observe(Breakpoints.Handset).pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.mobileNext.bind(this));\n }\n\n ngOnInit(): void {\n const idVerificacion: string = this.route.snapshot.params.idVerificacion;\n if (this.inWorflow) {\n this.requestsToVerifyService.confirmation(idVerificacion).subscribe((confirmModel:RequestsToVerifyConfirmationResponse) => {\n\n this.idPaciente = confirmModel.idPaciente;\n\n this.medicalOrderSevice.get(idVerificacion).subscribe({ next: this.processAttentionsHistory.bind(this) });\n });\n } else {\n this.medicalOrderSevice.getById(idVerificacion)\n .pipe(map(this.mapMedicalOrderIntoHistory.bind(this)))\n .subscribe(this.processAttentionsHistory.bind(this));\n }\n }\n\n showNumbers(): boolean {\n return MEDICAL_REQUEST_TYPE.LABORATORY_ORDER == this.history?.solicitud?.idTipoSolicitud;\n }\n\n private onNavigateBackNext(x: NavigationBackMessage) {\n if (x.dialogId != RouteDialogType.MY_ORDER_SUMMARY) return;\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\n }\n\n private mobileNext(x: BreakpointState) {\n if (!x.matches) return;\n this.buttonSecondaryText = 'shared.medicalOrder.summary.buttonTextMobile2';\n }\n\n private mapMedicalOrderIntoHistory(order: MedicalOrder): AttentionsHistory {\n const result: AttentionsHistory = {\n empresaPortal: order.empresaPortal,\n historialAtencion: {\n atenciones: order.detalles.map(this.mapMedicalOrderDetails),\n contactoClinico: {idPaciente: order.idPacientePhr} as ClinicContact,\n },\n solicitud: {\n fechaInicio: order.fecha,\n idEmpresa: order.idEmpresaPortal,\n idPersonaEmisora: order.idPacientePhr,\n idResponsableServicio: order.idResponsableDoctor,\n idTipoSolicitud: order.idTipoSolicitud,\n idEmpresaCorporativa: order.idEmpresaPhr,\n numeroSolicitud: order.numeroSolicitud\n },\n ubicacionFotoLogoTitulo: order.ubicacionFotoLogoTitulo\n };\n return result;\n }\n\n private mapMedicalOrderDetails(item: ClinicalHistoryItem): ClinicalHistoryItem {\n const args = JSON.parse(item.jsonHistoriaClinicaActual || item.jsonOrdenMedicaDetalle || '{}');\n let cantidad = args?.Cantidad ?? 0;\n\n return { ...item, cantidad };\n }\n\n private processAttentionsHistory(args: AttentionsHistory): void {\n this.initializeHistory(args);\n this.parseControlData();\n this.setRequestTypeAndFilters(args);\n this.processComments(args);\n \n this.diagnosticos = this.getDiagnosis(args.historialAtencion.atenciones);\n\n this.loadDoctorAndpatientData(args);\n }\n private initializeHistory(args: AttentionsHistory): void {\n this.history = args;\n const solicitud = this.history?.solicitud;\n\n if (!solicitud) {\n throw new Error('Solicitud data no existe')\n }\n\n this.setTitle(solicitud.idTipoSolicitud, solicitud.numeroSolicitud);\n this.setDate(solicitud.fechaInicio);\n }\n private setRequestTypeAndFilters(args: AttentionsHistory): void {\n const solicitud = this.history?.solicitud;\n\n this.requestType = solicitud?.idTipoSolicitud ?? -1;\n this.atenciones = this.filterAtenciones(args.historialAtencion.atenciones).map(this.mapAtenciones.bind(this));\n\n this.atenciones.forEach(atencion => this.setItems(atencion, args));\n }\n private processComments(args: AttentionsHistory): void {\n this.comentarios = args.historialAtencion.atenciones.find(x => x.idConcepto == CONCEPTOS_ID.COMENTARIO);\n\n if(this.comentarios?.valorConcepto){\n this.showHtmlComment = this.baseService.isSerializedHtml(this.comentarios?.valorConcepto);\n this.htmlComment = this.sanitizer.bypassSecurityTrustHtml(this.comentarios?.valorConcepto);\n }\n }\n private loadDoctorAndpatientData(args: AttentionsHistory): void {\n const contactoClinico$ = args.historialAtencion.contactoClinico\n ? this.patientService.getPartial(args.historialAtencion.contactoClinico.idPaciente)\n : of(null);\n const publicProfile$ = this.publicProfileService.getPublicProfileByIds([this.history.solicitud.idResponsableServicio]);\n\n forkJoin([contactoClinico$, publicProfile$]).subscribe({\n next: ([patient, publicProfile]) => {\n if (patient) {\n this.patient = patient;\n }\n this.getPublicProfileByIdNext(publicProfile);\n\n this.getFile().subscribe(file => this.file = file, error => console.error(error), () => this.initialLoading = false);\n\n this.sendComponentFinishLoadingMessage();\n \n }\n });\n }\n private getFile(): Observable {\n const primeraAtencion = this.history.historialAtencion.atenciones[0];\n const body: MedicalOrderReport = {\n valorLocalizacion: 'es',\n idAreaSistema: this.history.solicitud.idAreaSistema ?? -1,\n idAreaSistemaImpresion: MY_MEDICAL_ORDER_PRINT_SYSTEM_AREA[this.history.solicitud.idTipoSolicitud ?? -1] ,\n idEmpresa: this.history.solicitud?.idEmpresa ?? -1,\n idPersona: this.history.solicitud?.idPersonaEmisora ?? -1,\n idResponsableImpresion: this.history.solicitud?.idResponsableServicio ?? -1,\n urlLogoEmpresa: this.history.ubicacionFotoLogoTitulo,\n htmlReporte: '',\n formatoHoja: FormatoHojaReporte.CARTA,\n idPaciente: this.history.historialAtencion.contactoClinico?.idPaciente ?? -1,\n idResponsableServicio: this.history.solicitud?.idResponsableServicio ?? -1,\n idContactoClinico: this.history.historialAtencion.contactoClinico?.id ?? -1,\n idHistoriaClinicaActualQR: primeraAtencion?.idHistoriaClinicaActualInicial ?? primeraAtencion?.id ?? -1,\n idEmpresaDestino: this.history.solicitud.idEmpresaCorporativa ?? this.baseService.getCompanyId(),\n idLocalidad: -1,\n fechaOrdenMedica: new Date(),\n comentario: this.comentarios?.valorConcepto ?? '',\n diagnosticos: this.diagnosticos,\n esProfesionalVerificado: this.summaryOrderSignComponent.esProfesionalVerificado,\n licenciaProfesionalInfo: this.summaryOrderSignComponent.json,\n urlFirma: this.summaryOrderSignComponent.signPdf,\n numeroOrden: this.medicalOrderService.buildRequestNumber(this.history.solicitud.idTipoSolicitud, this.history.solicitud.numeroSolicitud),\n categorias: this.obtenerCategoriasPorTiposolicitud(this.history.solicitud.idTipoSolicitud ?? -1, this.atenciones)\n };\n\n if (body.idHistoriaClinicaActualQR < 1) {\n throw new Error(\"No es posible obtener los datos necesarios para la generación del PDF\");\n }\n\n return this.printsService.getPdf(body).pipe(map((response)=>{\n return this.buildFile(response);\n }));\n }\n\n private buildFile(response: MedicalOrderFile): File {\n const byteCharacters = atob(response.pdfBase64);\n const byteNumbers = new Array(byteCharacters.length);\n\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: 'application/pdf' });\n const file = new File([blob], response.fileName + '.pdf', { type: 'application/pdf' });\n\n return file; \n }\n\n private obtenerCategoriasPorTiposolicitud(idTipoSolicitud: number, conceptos: ClinicalHistoryItem[]): ReporteCategoriaConceptoDTO[] {\n if (idTipoSolicitud == MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION) {\n return [{nombre: \"Otros\", conceptos: this.obtenerCategoriasPorTiposolicitud(-1, conceptos)}]\n }\n return conceptos.map(this.mapearConceptos.bind(this));\n }\n\n private mapearConceptos(concepto: ClinicalHistoryItem): ReporteCategoriaConceptoDTO {\n const json = JSON.parse(concepto.jsonHistoriaClinicaActual || concepto.jsonOrdenMedicaDetalle || '{}');\n\n return {\n conceptos: concepto.items?.map(this.mapearConceptos.bind(this)),\n comentario: concepto.valorConcepto,\n nombre: concepto.nombreConcepto,\n cantidad: json.Cantidad\n }\n }\n \n private setTitle(idTipoSolicitud = 0, numeroSolicitud = 0): void {\n const currentRequestTypeName = TITLE_MAPPING[idTipoSolicitud] || '';\n\n this.requestNumber = this.medicalOrderSevice.buildRequestNumber(idTipoSolicitud, numeroSolicitud);\n this.requestTypeName = currentRequestTypeName;\n this.title = `${currentRequestTypeName}Short`;\n }\n\n private setDate(args?: string): void {\n if (!args) return;\n this.dateString = this.baseService.getBasicDateFormat(new Date(args), true);\n }\n\n private parseControlData(): void {\n this.loading = true;\n\n if (this.data && this.data.configurationData) {\n this.model = this.data.configurationData as PatientVerificationDataModel;\n\n if(this.model.idPaciente > 0){\n this.idPaciente = this.model.idPaciente;\n }\n\n this.componentData = this.model.configData;\n }\n\n this.loading = false;\n }\n\n private filterAtenciones(atenciones: ClinicalHistoryItem[]): ClinicalHistoryItem[] {\n return atenciones.filter(x => !x.idConceptoObjeto && x.idConcepto != CONCEPTOS_ID.COMENTARIO && x.idTipoConcepto != TIPO_CONCEPTOS_ID.DIAGNOSTICO);\n }\n private mapAtenciones(atencion: ClinicalHistoryItem) {\n const json = JSON.parse(atencion.jsonHistoriaClinicaActual || atencion.jsonOrdenMedicaDetalle || '{}');\n const cantidad = json?.Cantidad;\n\n return {...atencion, cantidad};\n }\n\n private getDiagnosis(atenciones: ClinicalHistoryItem[]): string {\n const diagnosis = atenciones\n .filter(x => x.idTipoConcepto == TIPO_CONCEPTOS_ID.DIAGNOSTICO)\n .map(x => x.valorCodigoTerminoReferenciaConceptoClinico || this.truncate(x.nombreConcepto));\n let result = diagnosis.join(', ');\n\n if (diagnosis.length > 1) {\n const lastItem = diagnosis.pop();\n result = `${diagnosis.join(', ')} y ${lastItem}`;\n this.diagnosticosLabel = 'diagnoses';\n }\n\n return result;\n }\n\n private truncate(text: string, maxLength = 28): string {\n let result = text;\n if (text.length > maxLength) {\n result = `${text.substring(0, maxLength)}...`\n }\n return result;\n }\n\n private setItems(x: ClinicalHistoryItem, args: AttentionsHistory): void {\n x.items = args.historialAtencion.atenciones.filter(y => y.idConceptoObjeto == x.idConcepto);\n }\n\n private sendComponentFinishLoadingMessage(): void {\n if (!this.data) return;\n\n const event = new ComponentFinishLoadingMessage();\n \n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n }\n\n private getPublicProfileByIdNext(args: (PublicProfile | null)[]): void {\n this.publicProfile = args[0];\n }\n\n imgError(event: Event) {\n const element = event.target as HTMLImageElement;\n element.style.visibility = \"hidden\";\n event.preventDefault();\n }\n\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ChatConversacionMessageEvent } from 'src/app/shared/models/signalr/chat-conversation-message-event.model';\r\nimport { UserActiveEvent } from 'src/app/shared/models/signalr/user-active-event.model';\r\nimport { VirtualAttentionEvent } from 'src/app/shared/models/signalr/virtual-attention-event.model';\r\nimport { AppStorageService } from '../app-storage.service';\r\nimport { BaseService } from '../base.service';\r\nimport { SignalrService } from './signalr.service';\r\n\r\n/*\r\nIt is important for this Service to NOT be a Singleton (avoid adding \"providedIn: 'root'\")\r\nin order to work properly. If not all the event related to connection and re-connection get mixed between all the clients that use the service\r\nIn order to use the service on an component add it to the providers of the component like: \"providers: [ChatSignalRService]\"\"\r\n*/\r\n@Injectable()\r\nexport class ChatSignalRService extends SignalrService {\r\n\r\n protected newChatMessageSubject = new Subject();\r\n protected virtualAttentionChangedSubject = new Subject();\r\n protected userActiveSubject = new Subject();\r\n\r\n constructor(protected baseService: BaseService, protected appStorageService: AppStorageService) { \r\n super(baseService, appStorageService);\r\n \r\n this.hubName = \"CliniwebHub\";\r\n } \r\n\r\n registerOnServerEvents(): void { \r\n\r\n // Virtual consultation state changed\r\n this.proxy.on('virtualRequestStateChanged', (data: VirtualAttentionEvent) => { \r\n \r\n console.log(\"ChatSignalRService -> VirtualAttention changed ->\");\r\n console.log(data); \r\n \r\n this.virtualAttentionChangedSubject.next(data);\r\n });\r\n\r\n // New Message received\r\n this.proxy.on('ChatMessageReceived', (data: ChatConversacionMessageEvent) => { \r\n \r\n console.log(\"ChatSignalRService -> New Message ->\");\r\n console.log(data); \r\n \r\n this.newChatMessageSubject.next(data);\r\n });\r\n \r\n // User Active\r\n this.proxy.on('UserActive', (data: UserActiveEvent) => { \r\n \r\n //console.log(\"ChatSignalRService -> User Active ->\");\r\n //console.log(data);\r\n\r\n //let obj = this.baseService.parseObjectDeep(JSON.parse(data));\r\n \r\n this.userActiveSubject.next(data);\r\n });\r\n }\r\n \r\n onNewMessageReceived() : Observable {\r\n return this.newChatMessageSubject.asObservable();\r\n }\r\n\r\n onVirtualAttentionChanged() : Observable {\r\n return this.virtualAttentionChangedSubject.asObservable();\r\n }\r\n\r\n onUserActive() : Observable {\r\n return this.userActiveSubject.asObservable();\r\n }\r\n\r\n public userActive(groupId: number, userId: number, etapaSolicitudId: number) {\r\n var model = {\r\n userId: userId,\r\n etapaSolicitudId: etapaSolicitudId,\r\n action: \"chat_user_active\",\r\n eventUnixDate: new Date().getTime()\r\n };\r\n\r\n this.proxy.invoke('UserActive', groupId, JSON.stringify(model)).catch((error: any) => {\r\n console.log('UserActive error -> ' + error); \r\n });\r\n }\r\n}\r\n\r\n","export class LoginResponse {\n success: boolean;\n message: string;\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\r\nimport { FormConfiguration } from 'src/app/shared/models/people/form.model';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { ClinicHistory } from 'src/app/shared/models/clinic-history/clinic-history.model';\r\nimport { PublicProfile } from 'src/app/shared/models/people/public-profile.model';\r\nimport { IWorkflowDataState } from 'src/app/shared/interfaces/workflow-data-state';\r\nimport { ComponentName } from 'src/app/shared/enums/component-name.enum';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { AppointmentsByPatient } from 'src/app/shared/models/process/appointment.model';\r\nimport { TerritorialDivision } from 'src/app/shared/models/systems/territorial-division.model';\r\nimport { Direction } from 'src/app/shared/enums/direction.enum';\r\nimport { Type } from '@angular/core';\r\n\r\n/*\r\n This service will be used for communication between components\r\n Each type of event will be a message (with a class that represent its properties)\r\n For each message we will have a method to fire a new message and a method to subscribe to new messages\r\n*/\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageBusService {\r\n \r\n private profileSearchSubject = new Subject();\r\n private profileSearchFilterSubject = new Subject();\r\n private sendUserIdSubject = new Subject();\r\n private authIframeSubject = new Subject();\r\n private pastVirtualRequestsSubject = new Subject();\r\n private virtualRequestFinishedSubject = new Subject();\r\n private appointmentCancelledSubject = new Subject();\r\n private loadChatSubject = new BehaviorSubject(null as any); // BehaviorSubject allway keeps the last value\r\n private openChatSubject = new BehaviorSubject(null as any); // BehaviorSubject allway keeps the last value\r\n private componentFinishLoadingSubject = new Subject();\r\n private formConfigurationSubject = new Subject();\r\n private chatCancelledSubject = new Subject();\r\n private chatLoadedSubject = new Subject();\r\n private loginCompletedSubject = new Subject();\r\n private logoutSubject = new Subject();\r\n private sessionExpiredSubject = new Subject();\r\n private serviceErrorSubject = new Subject();\r\n private sendClinicHistorySubject = new Subject();\r\n private providerSearchSubject = new Subject();\r\n private pageSrollSubject = new Subject();\r\n private scrollTopBodySubject = new Subject();\r\n private closeCheckAutocompleteSubject = new Subject();\r\n private localeChangeSubject = new Subject();\r\n private formFinishLoadingSubject = new Subject();\r\n private sendPublicProfileSubject = new Subject();\r\n private sendWorkflowDataSubject = new Subject();\r\n private sendFlowStepCompletedSubject = new Subject();\r\n private componentDataSetSubject = new Subject();\r\n private workflowStateUpdateSubject = new Subject();\r\n private openSnackBarSubject = new Subject();\r\n private hideHeaderSubject = new Subject();\r\n private showHeaderSubject = new Subject();\r\n private navigationBackSubject = new Subject();\r\n private closeRouteDialogSubject = new Subject();\r\n private appointmentChangeReceivedSubject = new Subject();\r\n private closeWorkFlowRequestSubject: Subject = new Subject();\r\n private hideAnonymousMenuSubject: Subject = new Subject();\r\n private showAnonymousMenuSubject: Subject = new Subject();\r\n private closeSearchProviderDialogSubject = new Subject();\r\n private showSignupLoginHeaderMenuSubject: BehaviorSubject = new BehaviorSubject(true);\r\n private showWelcomeImageSubject: BehaviorSubject = new BehaviorSubject(true);\r\n private sendFloatingComponentsSubject = new Subject();\r\n private refreshProfileMenuSubject = new Subject();\r\n private clearProviderFiltersSubject = new Subject();\r\n private openProviderFiltersSubject = new Subject();\r\n private providerFiltersCountSubject = new Subject();\r\n private controlComponentClassnameSubject = new Subject();\r\n private openRouteDialogSubject = new Subject();\r\n private allRouteDialogClosedSubject = new Subject();\r\n private publicProfilePageSubject = new Subject();\r\n private dialogOpenSubject = new Subject();\r\n private dialogCloseSubject = new Subject();\r\n private territorialDivisionCountrySubject = new Subject(); \r\n private publicProfileHeaderVisibilityChangeSubject = new Subject();\r\n private publicProfileActionSubject = new Subject();\r\n private reloadFormComponentSubject = new Subject();\r\n private toggleBottomSheetSubject = new Subject<{action: string, component?: Type}>();\r\n\r\n constructor() { } \r\n\r\n // This is events is fired by 'search-doctors.component' each time a user click on search\r\n profileSearch(message: ProfileSearchMessage) {\r\n this.profileSearchSubject.next(message);\r\n }\r\n onProfileSearch(): Observable {\r\n return this.profileSearchSubject.asObservable();\r\n }\r\n \r\n // This is events is fired by 'search-doctors-filters.component' each time a user click on filter\r\n profileSearchFilter(message: ProfileSearchFilterMessage) {\r\n this.profileSearchFilterSubject.next(message);\r\n }\r\n onProfileSearchFilter(): Observable {\r\n return this.profileSearchFilterSubject.asObservable();\r\n }\r\n \r\n sendUserId(userId: number){\r\n this.sendUserIdSubject.next(userId);\r\n }\r\n onSendUserId(): Observable{\r\n return this.sendUserIdSubject.asObservable();\r\n }\r\n\r\n authIframe(){\r\n this.authIframeSubject.next();\r\n }\r\n onAuthIframe(): Observable{\r\n return this.authIframeSubject.asObservable();\r\n }\r\n\r\n appointmentCancelled(message: AppointmentCancelledMessage) {\r\n this.appointmentCancelledSubject.next(message);\r\n }\r\n onAppointmentCancelled(): Observable {\r\n return this.appointmentCancelledSubject.asObservable();\r\n }\r\n\r\n loadChat(message: LoadChatMessage) {\r\n this.loadChatSubject.next(message);\r\n }\r\n onLoadChat(): Observable {\r\n return this.loadChatSubject.asObservable();\r\n }\r\n\r\n openChat(message: OpenChatMessage) {\r\n this.openChatSubject.next(message);\r\n }\r\n onOpenChat(): Observable {\r\n return this.openChatSubject.asObservable();\r\n }\r\n\r\n chatCancelled(message: ChatCancelledMessage) {\r\n this.chatCancelledSubject.next(message);\r\n }\r\n onChatCancelled(): Observable {\r\n return this.chatCancelledSubject.asObservable();\r\n }\r\n\r\n chatLoaded(message: ChatLoadedMessage) {\r\n this.chatLoadedSubject.next(message);\r\n }\r\n onChatLoaded(): Observable {\r\n return this.chatLoadedSubject.asObservable();\r\n }\r\n\r\n setFormConfiguration(message: FormConfigurationMessage) {\r\n this.formConfigurationSubject.next(message);\r\n }\r\n onFormConfiguration(): Observable {\r\n return this.formConfigurationSubject.asObservable();\r\n }\r\n\r\n componentFinishLoading(message: ComponentFinishLoadingMessage) {\r\n this.componentFinishLoadingSubject.next(message);\r\n }\r\n onComponentFinishLoading(): Observable {\r\n return this.componentFinishLoadingSubject.asObservable();\r\n }\r\n\r\n loginCompleted(message: LoginCompletedMessage) {\r\n this.loginCompletedSubject.next(message);\r\n }\r\n onLoginCompleted(): Observable {\r\n return this.loginCompletedSubject.asObservable();\r\n }\r\n\r\n logout(message: LogoutMessage) {\r\n this.logoutSubject.next(message);\r\n }\r\n onLogout(): Observable {\r\n return this.logoutSubject.asObservable();\r\n }\r\n\r\n sessionExpired(message: SessionExpiredMessage) {\r\n this.sessionExpiredSubject.next(message);\r\n }\r\n onSessionExpired(): Observable {\r\n return this.sessionExpiredSubject.asObservable();\r\n }\r\n\r\n serviceError(message: ServiceErrorMessage) {\r\n this.serviceErrorSubject.next(message);\r\n }\r\n onServiceError(): Observable {\r\n return this.serviceErrorSubject.asObservable();\r\n }\r\n\r\n sendClinicHistory(message: ClinicHistoryMessage) {\r\n this.sendClinicHistorySubject.next(message);\r\n }\r\n\r\n onSendClinicHistory(): Observable{\r\n return this.sendClinicHistorySubject.asObservable();\r\n }\r\n\r\n providerSearch(message: ProviderSearchMessage) {\r\n this.providerSearchSubject.next(message);\r\n }\r\n\r\n onProviderSearch(): Observable {\r\n return this.providerSearchSubject.asObservable();\r\n }\r\n\r\n goToPastVirtualRequests() {\r\n this.pastVirtualRequestsSubject.next();\r\n }\r\n \r\n onGoToPastVirtualRequests(): Observable {\r\n return this.pastVirtualRequestsSubject.asObservable();\r\n }\r\n \r\n virtualRequestFinished() {\r\n this.virtualRequestFinishedSubject.next();\r\n }\r\n \r\n onOnVirtualRequestFinished(): Observable {\r\n return this.virtualRequestFinishedSubject.asObservable();\r\n }\r\n\r\n appointmentChangeReceived(appointmentsByPatient: AppointmentsByPatient) {\r\n this.appointmentChangeReceivedSubject.next(appointmentsByPatient);\r\n }\r\n \r\n onAppointmentChangeReceived(): Observable {\r\n return this.appointmentChangeReceivedSubject.asObservable();\r\n }\r\n\r\n pageScroll(message: PageScrollMessage) {\r\n this.pageSrollSubject.next(message);\r\n }\r\n onPageScroll(): Observable {\r\n return this.pageSrollSubject.asObservable();\r\n }\r\n\r\n scrollTopBody(message: number) {\r\n this.scrollTopBodySubject.next(message);\r\n }\r\n onScrollTopBody(): Observable {\r\n return this.scrollTopBodySubject.asObservable();\r\n }\r\n closeCheckAutocomplete(originComponentId:number){\r\n this.closeCheckAutocompleteSubject.next(originComponentId);\r\n }\r\n onCloseCheckAutocomplete(): Observable{\r\n return this.closeCheckAutocompleteSubject.asObservable();\r\n }\r\n\r\n localeChange(message: LocaleChangeMessage) {\r\n this.localeChangeSubject.next(message);\r\n }\r\n onLocaleChange(): Observable {\r\n return this.localeChangeSubject.asObservable();\r\n }\r\n formFinishLoading(idAreaSistema: number) {\r\n this.formFinishLoadingSubject.next(idAreaSistema);\r\n }\r\n onFormFinishLoading(): Observable {\r\n return this.formFinishLoadingSubject.asObservable();\r\n }\r\n\r\n sendPublicProfile(message: PublicProfileMessage){\r\n this.sendPublicProfileSubject.next(message);\r\n }\r\n \r\n onSendPublicProfile(): Observable {\r\n return this.sendPublicProfileSubject.asObservable();\r\n }\r\n\r\n sendWorkflowData(message: WorkflowDataMessage){\r\n this.sendWorkflowDataSubject.next(message);\r\n }\r\n\r\n onSendWorkflowData(): Observable{\r\n return this.sendWorkflowDataSubject.asObservable();\r\n }\r\n\r\n sendFlowStepCompleted(message: FlowStepCompletedMessage){\r\n this.sendFlowStepCompletedSubject.next(message);\r\n }\r\n\r\n onSendFlowStepCompleted(): Observable{\r\n return this.sendFlowStepCompletedSubject.asObservable();\r\n }\r\n\r\n onComponentDataSetMessage(message: ComponentDataSetMessage) {\r\n this.componentDataSetSubject.next(message);\r\n }\r\n\r\n onSendComponentDataSetMessage(): Observable{\r\n return this.componentDataSetSubject.asObservable();\r\n }\r\n\r\n onWorkflowStateUpdateMessage(message: WorkflowStateUpdateMessage) {\r\n this.workflowStateUpdateSubject.next(message);\r\n }\r\n\r\n onSendWorkflowStateUpdateMessage(): Observable{\r\n return this.workflowStateUpdateSubject.asObservable();\r\n }\r\n\r\n openSnackBar(message: OpenSnackBarMessage){\r\n this.openSnackBarSubject.next(message);\r\n }\r\n\r\n onOpenSnackBar():Observable{\r\n return this.openSnackBarSubject.asObservable();\r\n }\r\n\r\n hideHeader(){\r\n this.hideHeaderSubject.next();\r\n }\r\n onHideHeader(): Observable{\r\n return this.hideHeaderSubject.asObservable();\r\n }\r\n\r\n showHeader(){\r\n this.showHeaderSubject.next();\r\n }\r\n onShowHeader(): Observable{\r\n return this.showHeaderSubject.asObservable();\r\n }\r\n\r\n navigateBack(message: NavigationBackMessage){\r\n this.navigationBackSubject.next(message);\r\n }\r\n onNavigateBack(): Observable{\r\n return this.navigationBackSubject.asObservable();\r\n }\r\n\r\n closeRouteDialog(message: CloseRouteDialogMessage){\r\n this.closeRouteDialogSubject.next(message);\r\n }\r\n onCloseRouteDialog(): Observable{\r\n return this.closeRouteDialogSubject.asObservable();\r\n }\r\n\r\n closeSearchProviderDialog(){\r\n this.closeSearchProviderDialogSubject.next();\r\n }\r\n onCloseSearchProviderDialog():Observable{\r\n return this.closeSearchProviderDialogSubject.asObservable();\r\n }\r\n\r\n sendFloatingComponents(message: FloatingComponentsMessage){\r\n this.sendFloatingComponentsSubject.next(message);\r\n }\r\n\r\n onSendFloatingComponents():Observable{\r\n return this.sendFloatingComponentsSubject.asObservable();\r\n }\r\n\r\n clearProviderFilters(){\r\n this.clearProviderFiltersSubject.next();\r\n }\r\n\r\n onClearProviderFilters():Observable{\r\n return this.clearProviderFiltersSubject.asObservable();\r\n }\r\n\r\n openProviderFilters(){\r\n this.openProviderFiltersSubject.next();\r\n }\r\n\r\n onOpenProviderFilters():Observable{\r\n return this.openProviderFiltersSubject.asObservable();\r\n }\r\n\r\n providerFiltersCount(count:number){\r\n this.providerFiltersCountSubject.next(count);\r\n }\r\n\r\n onProviderFiltersCount():Observable{\r\n return this.providerFiltersCountSubject.asObservable();\r\n }\r\n\r\n closeWorkFlowRequest(ruta?: string): void {\r\n this.closeWorkFlowRequestSubject.next(ruta);\r\n }\r\n\r\n onCloseWorkFlowRequest(): Observable{\r\n return this.closeWorkFlowRequestSubject.asObservable();\r\n }\r\n\r\n hideAnonymousMenu(): void {\r\n this.hideAnonymousMenuSubject.next();\r\n }\r\n\r\n onHideAnonymousMenu(): Observable{\r\n return this.hideAnonymousMenuSubject.asObservable();\r\n }\r\n\r\n showAnonymousMenu(): void {\r\n this.showAnonymousMenuSubject.next();\r\n }\r\n\r\n onShowAnonymousMenu(): Observable{\r\n return this.showAnonymousMenuSubject.asObservable();\r\n }\r\n\r\n controlComponentClassname(message: ControlComponentClassnameMessage){\r\n this.controlComponentClassnameSubject.next(message);\r\n }\r\n\r\n onControlComponentClassname():Observable{\r\n return this.controlComponentClassnameSubject.asObservable();\r\n }\r\n\r\n\tshowSignupLoginHeaderMenu(arg: boolean) {\r\n this.showSignupLoginHeaderMenuSubject.next(arg);\r\n }\r\n\r\n onShowSignupLoginHeaderMenu(): Observable {\r\n return this.showSignupLoginHeaderMenuSubject.asObservable();\r\n }\r\n\r\n\tshowWelcomeImage(arg: boolean) {\r\n this.showWelcomeImageSubject.next(arg);\r\n }\r\n\r\n onShowWelcomeImage(): Observable {\r\n return this.showWelcomeImageSubject.asObservable();\r\n }\r\n\r\n\trefreshProfileMenu() {\r\n this.refreshProfileMenuSubject.next();\r\n }\r\n\r\n onRefreshProfileMenu(): Observable {\r\n return this.refreshProfileMenuSubject.asObservable();\r\n }\r\n\r\n openRouteDialog(){\r\n this.openRouteDialogSubject.next(); \r\n }\r\n\r\n onOpenRouteDialog(){\r\n return this.openRouteDialogSubject.asObservable();\r\n }\r\n\r\n allRouteDialogClosed(){\r\n this.allRouteDialogClosedSubject.next();\r\n }\r\n\r\n onAllRouteDialogClosed(){\r\n return this.allRouteDialogClosedSubject.asObservable();\r\n }\r\n\r\n publicProfilePage(){\r\n this.publicProfilePageSubject.next();\r\n }\r\n \r\n onPublicProfilePage(){\r\n return this.publicProfilePageSubject.asObservable();\r\n }\r\n\r\n dialogOpen(message: DialogOpenMessage){\r\n this.dialogOpenSubject.next(message);\r\n } \r\n onDialogOpen() : Observable {\r\n return this.dialogOpenSubject.asObservable();\r\n }\r\n\r\n dialogClose(message: DialogCloseMessage){\r\n this.dialogCloseSubject.next(message);\r\n } \r\n onDialogClose() : Observable {\r\n return this.dialogCloseSubject.asObservable();\r\n }\r\n\r\n sendTerritorialDivisionCountry(message: TerritorialDivionCountryMessage){\r\n this.territorialDivisionCountrySubject.next(message);\r\n }\r\n\r\n onSendTerritorialDivisionCountry():Observable{\r\n return this.territorialDivisionCountrySubject.asObservable();\r\n }\r\n\r\n sendPublicProfileHeaderVisibilityChange(message: PublicProfileHeaderVisibilityChangeMessage){\r\n this.publicProfileHeaderVisibilityChangeSubject.next(message);\r\n }\r\n\r\n onPublicProfileHeaderVisibilityChange():Observable{\r\n return this.publicProfileHeaderVisibilityChangeSubject.asObservable();\r\n }\r\n\r\n sendPublicProfileAction(message: PublicProfileActionMessage){\r\n this.publicProfileActionSubject.next(message);\r\n }\r\n\r\n onPublicProfileAction():Observable{\r\n return this.publicProfileActionSubject.asObservable();\r\n }\r\n\r\n sendReloadFormComponent(idAreaSistema?: number): void {\r\n this.reloadFormComponentSubject.next(idAreaSistema);\r\n }\r\n\r\n onReloadFormComponent():Observable{\r\n return this.reloadFormComponentSubject.asObservable();\r\n }\r\n\r\n sendToggleBottomSheetSubject(args: {action: string, component?: Type}): void {\r\n this.toggleBottomSheetSubject.next(args);\r\n }\r\n\r\n onToggleBottomSheetSubject():Observable<{action: string, component?: Type}>{\r\n return this.toggleBottomSheetSubject.asObservable();\r\n }\r\n}\r\n\r\nexport class ClinicHistoryMessage {\r\n clinicHistory: ClinicHistory;\r\n\r\n constructor(clinicHistory : ClinicHistory) {\r\n this.clinicHistory = clinicHistory;\r\n }\r\n}\r\n\r\nexport class ProfileSearchMessage {\r\n profileType: PublicProfileType;\r\n searchText: string;\r\n conceptNav: string;\r\n territorialDivisionIdentification: string; \r\n doctorSearch: boolean; \r\n conceptId : number;\r\n conceptClaseId : number;\r\n}\r\n\r\nexport class ProfileSearchFilterMessage {\r\n conceptsIds: number[];\r\n}\r\n\r\nexport class AppointmentCancelledMessage {\r\n idEtapaSolicitud: number;\r\n}\r\n\r\nexport class LoadChatMessage {\r\n idEtapaSolicitud: number;\r\n}\r\n\r\nexport class OpenChatMessage { \r\n}\r\n\r\nexport class ChatCancelledMessage {\r\n reason: string;\r\n\r\n constructor(reason : string) {\r\n this.reason = reason;\r\n }\r\n}\r\n\r\nexport class ChatLoadedMessage {\r\n hasAgentMessage: boolean;\r\n\r\n constructor(hasAgentMessage : boolean) {\r\n this.hasAgentMessage = hasAgentMessage;\r\n }\r\n}\r\n\r\nexport class FormConfigurationMessage {\r\n config: FormConfiguration; \r\n}\r\n\r\nexport class ComponentFinishLoadingMessage {\r\n idFormulario: number;\r\n idControl: number;\r\n}\r\n\r\nexport class SessionExpiredMessage { \r\n returnUrl: string;\r\n\r\n constructor(returnUrl: string) {\r\n this.returnUrl = returnUrl;\r\n }\r\n}\r\n\r\nexport class LogoutMessage {\r\n}\r\n\r\nexport class LoginCompletedMessage {\r\n user: UserPerson;\r\n \r\n constructor(user: UserPerson) {\r\n this.user = user;\r\n }\r\n}\r\n\r\nexport class AppointmentMessage {\r\n appointment: AppointmentsByPatient;\r\n \r\n constructor(appointment: AppointmentsByPatient) {\r\n this.appointment = appointment;\r\n }\r\n}\r\n\r\nexport class ServiceErrorMessage {\r\n innerError: any;\r\n message: string;\r\n displayMessage: string;\r\n\r\n constructor(message : string, displayMessage : string = \"\") {\r\n this.message = message;\r\n this.displayMessage = displayMessage;\r\n }\r\n}\r\n\r\nexport class ProviderSearchMessage {\r\n searchText: string;\r\n conceptNav: string;\r\n territorialDivisionIdentification: string;\r\n filtros: string;\r\n conceptId : number;\r\n conceptClaseId : number;\r\n countryIdentification: string;\r\n}\r\n\r\nexport class PageScrollMessage {\r\n direction: Direction;\r\n offset: number;\r\n containerTopPosition: number;\r\n routeDialogScroll: boolean = false;\r\n\r\n constructor(direction: Direction, offset: number, containerTopPosition: number, routeDialogScroll: boolean) {\r\n this.direction = direction;\r\n this.offset = offset;\r\n this.containerTopPosition = containerTopPosition;\r\n this.routeDialogScroll = routeDialogScroll;\r\n }\r\n}\r\n\r\nexport class LocaleChangeMessage {\r\n language: string;\r\n}\r\n\r\nexport class PublicProfileMessage{\r\n publicProfile: PublicProfile;\r\n}\r\n\r\nexport class WorkflowDataMessage{\r\n data: any;\r\n}\r\n\r\nexport class FlowStepCompletedMessage{\r\n state: IWorkflowDataState;\r\n}\r\n\r\nexport class WorkflowStateUpdateMessage{\r\n state: IWorkflowDataState;\r\n}\r\n\r\nexport class ComponentDataSetMessage {\r\n componentName: ComponentName;\r\n data: any;\r\n}\r\n\r\nexport class OpenSnackBarMessage {\r\n text: string;\r\n action: string;\r\n onAction: any;\r\n type: SnackBarType;\r\n duration?: number;\r\n}\r\n\r\nexport class NavigationBackMessage {\r\n dialogId: number;\r\n \r\n constructor(dialogId: number) {\r\n this.dialogId = dialogId\r\n }\r\n}\r\n\r\nexport class CloseRouteDialogMessage { \r\n}\r\n\r\nexport class FloatingComponentsMessage{\r\n componentsData: FormComponentData[] = [];\r\n}\r\n\r\nexport enum SnackBarType{\r\n SUCCESS = 1,\r\n ERROR = 2,\r\n INFO = 3,\r\n ALERT = 4\r\n}\r\n\r\nexport class ControlComponentClassnameMessage{\r\n conponentName: string;\r\n classname: string;\r\n}\r\n\r\nexport class DialogOpenMessage { \r\n dialogName: DialogName;\r\n\r\n constructor(dialogName: DialogName) {\r\n this.dialogName = dialogName;\r\n }\r\n}\r\nexport class DialogCloseMessage { \r\n dialogName: DialogName;\r\n\r\n constructor(dialogName: DialogName) {\r\n this.dialogName = dialogName;\r\n } \r\n}\r\nexport enum DialogName {\r\n UserProfileMenu = 1,\r\n BottomSheetMenu = 'bottomSheetMenu'\r\n}\r\nexport class TerritorialDivionCountryMessage{\r\n country: TerritorialDivision;\r\n}\r\nexport class PublicProfileHeaderVisibilityChangeMessage {\r\n headerVisible: boolean;\r\n profile: PublicProfile;\r\n publicProfileAvatarComponentModel: any;\r\n fromRouteDialog: boolean;\r\n\r\n constructor(headerVisible: boolean, profile: PublicProfile, publicProfileAvatarComponentModel: any, fromRouteDialog: boolean) {\r\n this.headerVisible = headerVisible;\r\n this.profile = profile;\r\n this.publicProfileAvatarComponentModel = publicProfileAvatarComponentModel;\r\n this.fromRouteDialog = fromRouteDialog;\r\n }\r\n}\r\n\r\nexport class PublicProfileActionMessage {\r\n paymentClick: boolean = false;\r\n appointmentClick: boolean = false;\r\n\r\n constructor(paymentClick: boolean, appointmentClick: boolean) {\r\n this.paymentClick = paymentClick;\r\n this.appointmentClick = appointmentClick;\r\n }\r\n}","export const Debounce = (delay: number = 300): any => {\r\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\r\n let timeout: number | null | undefined = null;\r\n \r\n const original = descriptor.value;\r\n \r\n descriptor.value = function (...args: any) {\r\n if(timeout)\r\n clearTimeout(timeout);\r\n timeout = window.setTimeout(() => original.apply(this, args), delay);\r\n };\r\n \r\n return descriptor;\r\n };\r\n}","import { animate, animateChild, group, query, style, transition, trigger } from \"@angular/animations\";\r\n\r\nexport const fadeAnimation = \r\n trigger('routeAnimations', [\r\n transition('SearchResultsPage => PublicProfilePage', [\r\n style({ position: 'relative' }),\r\n query(':enter, :leave', [\r\n style({\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n width: '100%'\r\n })\r\n ],{ optional: true }),\r\n query(':enter', [\r\n style({ right: '-100%' })\r\n ],{ optional: true }),\r\n query(':leave', animateChild(), { optional: true }),\r\n group([\r\n query(':leave', [animate('400ms ease-out', style({ right: '100%' }))],{ optional: true }),\r\n query(':enter', [animate('400ms 300ms ease-out', style({ right: '0%' }))],{ optional: true }),\r\n query('@*', animateChild(), { optional: true })\r\n ]),\r\n ]),\r\n transition('PublicProfilePage => SearchResultsPage', [\r\n style({ position: 'relative' }),\r\n query(':enter, :leave', [\r\n style({\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%'\r\n })\r\n ],{ optional: true }),\r\n query(':enter', [\r\n style({ left: '-100%' })\r\n ],{ optional: true }),\r\n query(':leave', animateChild(), { optional: true }),\r\n group([\r\n query(':leave', [animate('400ms ease-out', style({ left: '100%' }))],{ optional: true }),\r\n query(':enter', [animate('400ms ease-out', style({ left: '0%' }))],{ optional: true }),\r\n query('@*', animateChild(), { optional: true })\r\n ]),\r\n ]),\r\n transition('PublicProfilePage => AppointmentsPage', [\r\n style({ position: 'relative' }),\r\n query(':enter, :leave', [\r\n style({\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n width: '100%'\r\n })\r\n ],{ optional: true }),\r\n query(':enter', [\r\n style({ right: '-100%' })\r\n ],{ optional: true }),\r\n query(':leave', animateChild(), { optional: true }),\r\n group([\r\n query(':leave', [animate('400ms ease-out', style({ right: '100%' }))],{ optional: true }),\r\n query(':enter', [animate('400ms ease-out', style({ right: '0%' }))],{ optional: true }),\r\n query('@*', animateChild(), { optional: true })\r\n ]),\r\n ]),\r\n transition('AppointmentsPage => PublicProfilePage', [\r\n style({ position: 'relative' }),\r\n query(':enter, :leave', [\r\n style({\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%'\r\n })\r\n ],{ optional: true }),\r\n query(':enter', [style({ left: '-100%' })],{ optional: true }),\r\n query(':leave', animateChild(), { optional: true }),\r\n group([\r\n query(':leave', [animate('400ms ease-out', style({ left: '100%' }))],{ optional: true }),\r\n query(':enter', [animate('400ms ease-out', style({ left: '0%' }))],{ optional: true }),\r\n query('@*', animateChild(), { optional: true })\r\n ]),\r\n ]),\r\n transition('MedicalOrderLandingPage => *', [\r\n style({ position: 'relative' }),\r\n query(':enter, :leave', [\r\n style({\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n height: '100%',\r\n width: '100%'\r\n })\r\n ], { optional: true }),\r\n query(':enter', [\r\n style({ right: '-100%', backgroundColor: 'white' }),\r\n animate('600ms ease-in', style({ right: '0%' }))\r\n ], { optional: true }),\r\n ]),\r\n transition('* => MedicalOrderLandingPage', [\r\n style({ position: 'relative' }),\r\n query(':enter, :leave', [\r\n style({\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n height: '100%',\r\n width: '100%'\r\n })\r\n ], { optional: true }),\r\n query(':enter', [\r\n style({ right: '-100%', backgroundColor: 'white' }),\r\n animate('600ms ease-in', style({ right: '0%' }))\r\n ], { optional: true }),\r\n ]),\r\n ]);\r\n\r\nexport const inOutAnimation = trigger(\r\n 'inOutAnimation', \r\n [\r\n transition(':enter', [\r\n style({ transform: 'translateY(100%)' }),\r\n animate('300ms', style({transform: 'translateY(0)'}))\r\n ]),\r\n transition(':leave', [\r\n style({transform: 'translateY(0)'}),\r\n animate('300ms', style({transform: 'translateY(100%)'}))\r\n ])\r\n ]\r\n);\r\n\r\n/*export const inOutAnimationWithDelay = trigger(\r\n 'inOutAnimationWithDelay', \r\n [\r\n transition('* => PublicProfilePage', [\r\n style({ transform: 'translateX(100%)' }),\r\n animate('300ms 300ms', style({transform: 'translateX(0)'})),\r\n ]),\r\n transition(':leave', [\r\n style({transform: 'translateX(0)'}),\r\n animate('300ms', style({transform: 'translateX(100%)'}))\r\n ])\r\n ]\r\n);*/","export enum StateType {\r\n SinValidar = 108,\r\n NombreYApellidoValidados = 109,\r\n NombreApellidoSexoFechaNacimientoValidados = 110\r\n}","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { FloatingComponentsMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { UtilsService } from 'src/app/core/services/utils.service';\r\nimport { Dependent } from 'src/app/shared/models/people/dependent.model';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { ChangePasswordRouteDialogModel, ConfigurationPageDialogModel } from '../../dialogs/route-dialog/route-dialog.component';\r\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\r\nimport { Router } from '@angular/router';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { ContainerType } from 'src/app/shared/enums/container-type.enum';\r\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-profile-menu',\r\n templateUrl: './profile-menu.component.html',\r\n styleUrls: ['./profile-menu.component.css']\r\n})\r\n\r\nexport class ProfileMenuComponent implements OnDestroy, OnInit {\r\n\r\n loggedInUser: UserPerson;\r\n loggedInUserInitials: any;\r\n dependents: ProfileMenuDependentModel[]; \r\n\r\n translations = {\r\n other: \"\",\r\n son: \"\",\r\n daughter: \"\",\r\n father: \"\",\r\n mother: \"\",\r\n language: \"\", \r\n };\r\n private ngUnsubscribe = new Subject();\r\n @Input() dialog: MatDialogRef;\r\n\r\n constructor(\r\n private appStorageService: AppStorageService,\r\n private userService: UserService,\r\n private authService: AuthService,\r\n private utilsService: UtilsService, \r\n private routeDialogService: RouteDialogService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n private translation: L10nTranslationService,\r\n private router: Router,\r\n private dialogRef: MatDialog,\r\n private messageBusService: MessageBusService\r\n ) {\r\n this.messageBusService.onRefreshProfileMenu().pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.loadData.bind(this));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.translation.onChange().subscribe({\r\n next: () => {\r\n this.translations.other = this.translation.translate('shared.profileMenu.text8');\r\n this.translations.son = this.translation.translate('shared.profileMenu.text9');\r\n this.translations.daughter = this.translation.translate('shared.profileMenu.text10');\r\n this.translations.father = this.translation.translate('shared.profileMenu.text11');\r\n this.translations.mother = this.translation.translate('shared.profileMenu.text12');\r\n this.translations.language = this.translation.translate('language');\r\n }\r\n });\r\n\r\n this.loadData();\r\n }\r\n\r\n private loadData(): void {\r\n \r\n this.userService.getUserPersonLoggedIn().subscribe(this.setLoggedInUser.bind(this));\r\n\r\n this.userService.getUserDependents().subscribe(d => {\r\n this.dependents = d as ProfileMenuDependentModel[];\r\n\r\n // Order by age desc\r\n this.dependents = this.dependents.sort((d1: ProfileMenuDependentModel, d2: ProfileMenuDependentModel) => {\r\n let getTime = (date: Date) => {return date != null ? new Date(date).getTime() : 0;};\r\n \r\n return getTime(d1.fechaNacimiento) - getTime(d2.fechaNacimiento);\r\n });\r\n\r\n this.setUpDependentExtraData();\r\n });\r\n }\r\n\r\n private setLoggedInUser(p: UserPerson | null): void {\r\n if (p) {\r\n const token = this.appStorageService.getToken();\r\n\r\n this.loggedInUser = p;\r\n\r\n let fullName = this.loggedInUser.nombre + \" \" + (this.loggedInUser.apellido?? \"\");\r\n this.loggedInUserInitials = this.utilsService.getPersonInitials(this.loggedInUser.id, fullName);\r\n let birthDate = this.loggedInUser.fechaNacimiento? new Date(this.loggedInUser.fechaNacimiento) : null;\r\n\r\n this.loggedInUser.username = token.username;\r\n\r\n if (!this.loggedInUser.ubicacionLogo)\r\n this.loggedInUser.ubicacionLogo = this.utilsService.getPersonDefaultAvatarUrl(birthDate, this.loggedInUser.sexo); \r\n }\r\n }\r\n\r\n setUpDependentExtraData() {\r\n this.dependents.forEach(dependent => {\r\n dependent.fullName = dependent.nombre + \" \" + dependent.apellido; \r\n dependent.relationshipName = this.userService.getDependentRelationshipName(dependent);\r\n\r\n let birthDate = dependent.fechaNacimiento? new Date(dependent.fechaNacimiento) : null;\r\n\r\n if (!dependent.ubicacionLogo)\r\n dependent.ubicacionLogo = this.utilsService.getPersonDefaultAvatarUrl(birthDate, dependent.sexo);\r\n });\r\n } \r\n\r\n onEditUserClick() {\r\n let routeDialogModel = new ConfigurationPageDialogModel();\r\n routeDialogModel.route = \"configuracion/usuario\";\r\n routeDialogModel.state = null;\r\n \r\n this.routeDialogService.openDialog(routeDialogModel);\r\n }\r\n\r\n onEditDependentClick(dependent: ProfileMenuDependentModel) {\r\n let routeDialogModel = new ConfigurationPageDialogModel();\r\n routeDialogModel.route = \"configuracion/dependiente/\" + dependent.id;\r\n routeDialogModel.state = null;\r\n\r\n this.routeDialogService.openDialog(routeDialogModel);\r\n }\r\n\r\n onAddDependentClick() {\r\n let routeDialogModel = new ConfigurationPageDialogModel();\r\n routeDialogModel.route = \"configuracion/dependiente/edicion/0\";\r\n routeDialogModel.state = null;\r\n\r\n this.routeDialogService.openDialog(routeDialogModel);\r\n }\r\n\r\n onPaymentsClick() {\r\n let routeDialogModel = new ConfigurationPageDialogModel();\r\n routeDialogModel.route = \"configuracion/pagos\";\r\n routeDialogModel.state = null;\r\n\r\n this.routeDialogService.openDialog(routeDialogModel);\r\n }\r\n\r\n onLocaleEditClick() {\r\n let routeDialogModel = new ConfigurationPageDialogModel();\r\n routeDialogModel.route = \"configuracion/locale\";\r\n routeDialogModel.state = null;\r\n\r\n this.routeDialogService.openDialog(routeDialogModel);\r\n }\r\n \r\n onChangePasswordClick() {\r\n let routeDialogModel = new ChangePasswordRouteDialogModel(); \r\n routeDialogModel.route = \"login/restablecer\"; \r\n routeDialogModel.state = null;\r\n \r\n this.routeDialogService.openDialog(routeDialogModel);\r\n }\r\n\r\n closeSession() {\r\n let dialogData = new DialogData();\r\n \r\n dialogData.title = this.translation.translate(\"shared.profileMenu.text13\"); \r\n dialogData.confirmText = this.translation.translate(\"shared.profileMenu.text14\"); \r\n dialogData.showHeaderIcon = false;\r\n //dialogData.headerIconClass = \"phr-iconset-info\"; \r\n dialogData.showCancelButton = true;\r\n dialogData.cancelText = this.translation.translate(\"shared.profileMenu.text15\");\r\n\r\n const dialogRef = this.dialogRef.open(ConfirmDialogComponent, {\r\n data: dialogData,\r\n panelClass: ['cliniweb-theme-dialog', 'confirm-logout-dialog', 'confirm-logout-animation-in']\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(accepted => { \r\n if (accepted) {\r\n this.appStorageService.removeSessionItem(STORAGE.SIGNUP_WORKFLOW_VERIFICATION_TYPE);\r\n this.removeFloatingComponentToHeader();\r\n this.authService.logout();\r\n \r\n if (this.dialog)\r\n this.dialog.close();\r\n \r\n this.router.navigate(['/welcome/login'], {queryParams: { homeUrl: '/'}});\r\n }\r\n });\r\n }\r\n\r\n removeFloatingComponentToHeader(){\r\n let message = new FloatingComponentsMessage();\r\n let dummyComponentData = new FormComponentData();\r\n dummyComponentData.contenedor = ContainerType.HEADER;\r\n\r\n message.componentsData = [dummyComponentData];\r\n\r\n this.messageBusService.sendFloatingComponents(message);\r\n }\r\n \r\n}\r\n\r\nexport class ProfileMenuDependentModel extends Dependent { \r\n relationshipName: string;\r\n fullName: string; \r\n}","
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n {{loggedInUser.nombre}}\r\n ({{'shared.profileMenu.text1' | translate:locale.language}})\r\n {{loggedInUser.username}}\r\n {{'shared.profileMenu.text16' | translate:locale.language}}\r\n \r\n
\r\n \r\n
\r\n \r\n
0\">\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{dependent.nombre.toLowerCase()}}\r\n ({{dependent.relationshipName}})\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n {{'shared.profileMenu.text2' | translate:locale.language}}\r\n \r\n {{'shared.profileMenu.text3' | translate:locale.language}}\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {{'shared.profileMenu.text4' | translate:locale.language}}\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n {{'language' | translate:locale.language}}\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {{'shared.profileMenu.text6' | translate:locale.language}}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {{'shared.profileMenu.text7' | translate:locale.language}}\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
","import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { TerritorialDivisionsService } from 'src/app/core/services/territorial-divisions.service';\nimport { TerritorialDivision } from '../../models/systems/territorial-division.model';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'app-country-form',\n templateUrl: './country-form.component.html',\n styleUrls: ['./country-form.component.css']\n})\nexport class CountryFormComponent implements OnInit {\n\n availableCountries: TerritorialDivision[] = [];\n\n countryForm: FormGroup;\n loading:boolean = false;\n submitted: boolean = false;\n error: string;\n\n countryIdSelected:number;\n\n @Input() errorObs: Observable;\n @Input() country: TerritorialDivision | undefined; \n @Output() countrySelected: EventEmitter = new EventEmitter();\n\n constructor(\n private territorialDivisionService: TerritorialDivisionsService,\n private formBuilder: FormBuilder,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnInit(): void {\n if(this.errorObs){\n this.errorObs.subscribe(message=>{\n this.loading = false;\n \n this.error = message;\n });\n }\n\n this.availableCountries = this.territorialDivisionService.getAvailableCountries();\n\n // si el pais no esta en el listado de paises disponibles, se debe seleccionar la opcion \"Otros\"\n if(this.country && !this.availableCountries.find(c => c.id == this.country?.id)){\n this.country = this.availableCountries.find(c => c.id == 1);\n }\n\n if(this.country){\n this.countryIdSelected = this.country.id;\n }\n\n this.countryForm = this.formBuilder.group(\n {\n country: [this.countryIdSelected, [Validators.required]]\n }\n );\n }\n\n onSubmit(){\n this.submitted = true;\n\n if(this.countryForm.invalid)\n return;\n\n this.loading = true;\n\n let countrySelected = this.availableCountries.find(c => c.id == this.countryForm.controls.country.value);\n\n this.countrySelected.emit(countrySelected);\n }\n}\n","
\n {{ 'shared.countryForm.title' | translate:locale.language }}\n\n
\n \n \n \n {{ availableCountry.nombreI18n | i18nText:locale.language }}\n \n \n \n \n {{ 'shared.countryForm.countryRequired' | translate:locale.language }}\n \n \n \n
\n \n
\n
\n
","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n\r\n constructor() { } \r\n\r\n scrollTo(containerEl: Element, position: number) {\r\n containerEl.scrollTop = position;\r\n }\r\n\r\n scrollToWithAnimation(containerEl: Element, position: number) {\r\n // JQUERY dependency\r\n $(containerEl).animate({\r\n scrollTop: (position || 0)\r\n }, 500);\r\n }\r\n\r\n scrollToElementWithAnimation(containerEl: Element, element: Element) {\r\n let elOffset = $(element).offset();\r\n let containerOffset = $(containerEl).offset();\r\n let containerScrollTop = $(containerEl).scrollTop() || 0;\r\n\r\n let position = (elOffset? elOffset.top : 0) - (containerOffset? containerOffset.top : 0) + containerScrollTop; \r\n \r\n // JQUERY dependency\r\n $(containerEl).animate({\r\n scrollTop: (position || 0)\r\n }, 500);\r\n }\r\n \r\n scrollBottom(containerEl: Element) {\r\n containerEl.scrollTop = containerEl.scrollHeight;\r\n }\r\n\r\n scrollBottomWithAnimation(containerEl: Element) {\r\n this.scrollToWithAnimation(containerEl, containerEl.scrollHeight); \r\n }\r\n\r\n groupBy(list: T[], keyGetter:(item: T) => K) {\r\n const map = new Map();\r\n list.forEach((item) => {\r\n const key = keyGetter(item);\r\n const collection = map.get(key);\r\n if (!collection) {\r\n map.set(key, [item]);\r\n } else {\r\n collection.push(item);\r\n }\r\n });\r\n return map;\r\n }\r\n\r\n containsValue(arrayString: string, separator: string, value: any) {\r\n\r\n if (!arrayString)\r\n return false;\r\n\r\n var array = arrayString.split(separator);\r\n\r\n return array.filter(elem => elem == value).length > 0;\r\n }\r\n\r\n containsAnyValue(arrayString: string, separator: string, valueArray: any[]) {\r\n\r\n if (!arrayString)\r\n return false;\r\n\r\n var array = arrayString.split(separator);\r\n\r\n return array.filter(elem => valueArray.includes(parseInt(elem))).length > 0;\r\n } \r\n\r\n containsAnyNumber(arrayNumber: number[], valueArray: number[]) {\r\n if (!arrayNumber)\r\n return false;\r\n\r\n return arrayNumber.filter(elem => valueArray.indexOf(elem) > -1).length > 0;\r\n }\r\n\r\n /* Person Initials Utils */\r\n\r\n private getPersonInitialsString(personName: string) {\r\n let arrayText = personName.trim().replace(/\\s\\s+/g, ' ').split(\" \");\r\n let result;\r\n\r\n if (arrayText.length > 1) {\r\n let lastnamePosition = arrayText.length - 1;\r\n\r\n if (lastnamePosition == 0 || (arrayText[lastnamePosition].length >= 2 && arrayText[lastnamePosition].includes('.'))) {\r\n result = arrayText[0][0] + arrayText[1][0];\r\n }\r\n else if (arrayText.length == 4) {\r\n result = arrayText[0][0] + arrayText[2][0];\r\n }\r\n else {\r\n result = arrayText[0][0] + arrayText[lastnamePosition][0];\r\n }\r\n }\r\n else {\r\n result = arrayText[0][0];\r\n }\r\n\r\n return result.toUpperCase();\r\n }\r\n\r\n private getHashCodeByString(personId: number, personName: string) {\r\n var hash = 0;\r\n\r\n for (var i = 0; i < personName.length; i++) {\r\n hash = personName.charCodeAt(i) + ((hash << 5) - hash);\r\n }\r\n\r\n return hash + personId;\r\n }\r\n\r\n private getPersonInitialsColor(personId: number, initials: string) {\r\n var hashCode = this.getHashCodeByString(personId, initials);\r\n\r\n var colors = [\r\n \"#0ACBAC\",\r\n \"#17C65D\",\r\n \"#C801F2\",\r\n \"#FD3A58\",\r\n \"#F06C00\",\r\n \"#FFC000\",\r\n \"#296EFA\",\r\n \"#6B9DFF\",\r\n \"#7A1FA2\",\r\n \"#7C59BE\"\r\n ];\r\n\r\n var index = hashCode % colors.length;\r\n\r\n return colors[index];\r\n };\r\n\r\n getPersonInitials(personId: number, personName: string) {\r\n let initials = this.getPersonInitialsString(personName);\r\n let color = this.getPersonInitialsColor(personId, initials);\r\n\r\n return {\r\n initials: initials,\r\n color: color\r\n };\r\n }\r\n\r\n getPersonDefaultAvatarUrl(birthDate: Date | null, sex: string) {\r\n const age = this.getPersonAge(birthDate);\r\n const avatarBaseUrl = \"/assets/images/avatars/\";\r\n let url = \"Persona_anonima.svg\";\r\n\r\n sex = sex.toLowerCase();\r\n if ( !Number.isFinite(age) || !sex || sex == '9')\r\n return url;\r\n\r\n const ageRange = this.getAgeRange(age);\r\n url = this.getPhotoByAgeRangeAndSex(ageRange, sex);\r\n\r\n return avatarBaseUrl + url;\r\n }\r\n\r\n private getAgeRange(age: number): string {\r\n let range = \"76-99\";\r\n if (age >= 0 && age <= 17) {\r\n range = \"0-17\";\r\n } else if (age >= 18 && age <= 45) {\r\n range = \"18-45\";\r\n } else if (age >= 46 && age <= 75) {\r\n range = \"46-75\";\r\n }\r\n return range;\r\n}\r\n\r\nprivate getPhotoBySex (sex: string): string {\r\n const sexo = sex === 'm' ? 'male' : (sex === 'f' ? 'female' : 'no_gender');\r\n return `profile_${sexo}.svg`;\r\n}\r\n\r\nprivate getPhotoByAgeRangeAndSex(ageRange: string, sex: string): string {\r\n const sexo = sex === 'm' ? 'Hombre': 'Mujer';\r\n return `${sexo}_${ageRange}.svg`;\r\n}\r\n\r\n getPersonAge(birthDate: Date | null) { \r\n if (!birthDate)\r\n return -1;\r\n\r\n if(typeof birthDate === 'string')\r\n birthDate = new Date(birthDate); \r\n\r\n let now = new Date();\r\n let age = now.getFullYear() - birthDate.getFullYear();\r\n let m = now.getMonth() - birthDate.getMonth();\r\n \r\n if (m < 0 || (m === 0 && now.getDate() < birthDate.getDate())) {\r\n age--;\r\n }\r\n\r\n return age;\r\n }\r\n\r\n /* /Person Initials Utils */\r\n}\r\n\r\n","import { Dependent } from \"../people/dependent.model\";\r\nimport { PublicProfile } from \"../people/public-profile.model\";\r\nimport { Relation } from \"../people/relation.model\";\r\nimport { BaseRequestModel } from \"./base-request.model\";\r\n\r\nexport class WorkflowInitialData extends BaseRequestModel {\r\n idPaciente?: number;\r\n idTipoSolicitud?: number;\r\n emailPaciente: string;\r\n nombrePaciente: string;\r\n isValid: boolean;\r\n publicProfile: PublicProfile;\r\n relations: Relation[];\r\n dependents: Dependent[];\r\n workflowPosition:number = 0;\r\n idUsuario: number;\r\n}","
\r\n \r\n
\r\n
\r\n

\r\n {{ 'shared.cancelAppointmentDialog.text1' | translate:locale.language }}\r\n

\r\n
\r\n
\r\n \r\n \r\n {{option.text}}\r\n \r\n \r\n
\r\n \r\n {{ 'shared.cancelAppointmentDialog.text2' | translate:locale.language }} \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n

\r\n {{ 'shared.cancelAppointmentDialog.text5' | translate:locale.language }}\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { AppointmentCancelledMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { PatientAppointment } from 'src/app/shared/models/process/appointment.model';\r\nimport { CancelOption } from '../cancel-virtual-attention/cancel-virtual-attention-dialog.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-cancel-appointment-dialog',\r\n templateUrl: './cancel-appointment-dialog.component.html',\r\n styleUrls: ['./cancel-appointment-dialog.component.css'] \r\n})\r\nexport class CancelAppointmentDialogComponent implements OnInit { \r\n solicitudPaciente: PatientAppointment; \r\n loading = false;\r\n completed = false;\r\n selectionControl: FormControl; \r\n reasonText: string;\r\n options: CancelOption[];\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\r\n private mdDialogRef: MatDialogRef, \r\n private baseService: BaseService, \r\n private appointmentService: AppointmentService, \r\n private messageBusService: MessageBusService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale\r\n ) { \r\n this.selectionControl = new FormControl('auto');\r\n this.solicitudPaciente = this.baseService.parseObject(data.data);\r\n\r\n console.log(this.solicitudPaciente); \r\n\r\n this.options = [\r\n new CancelOption(1, \"No puedo asistir en el horario pactado\"),\r\n new CancelOption(2, \"Deseo tener atención virtual\"),\r\n new CancelOption(3, \"Lo resolví de otra forma\"),\r\n new CancelOption(4, \"Ya me siento mucho mejor, no necesito la atención\"),\r\n new CancelOption(5, \"Otro motivo\", true) \r\n ];\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public cancel() {\r\n this.close(false);\r\n }\r\n\r\n public close(value:any) {\r\n this.mdDialogRef.close(value);\r\n } \r\n\r\n isSaveEnabled() {\r\n let reason = this.getSelectedReason();\r\n\r\n return !this.loading && (reason && reason.trim());\r\n }\r\n\r\n showTextarea() : boolean {\r\n let option = this.options.find(o => o.id == this.selectionControl.value);\r\n\r\n return option != undefined && option.showTextarea;\r\n }\r\n\r\n getSelectedReason() : string {\r\n let reasonId = this.selectionControl.value;\r\n let option = this.options.find(o => o.id == reasonId);\r\n\r\n if (!option)\r\n return \"\";\r\n\r\n return reasonId == 5? this.reasonText : option.text;\r\n }\r\n\r\n confirm() {\r\n this.loading = true;\r\n let reason = this.getSelectedReason();\r\n\r\n this.appointmentService.cancelAppointment(this.solicitudPaciente.idSolicitud, this.solicitudPaciente.idEtapaSolicitud, reason).subscribe(r => {\r\n // Send message so each control can handle the appointment state change\r\n let msg = new AppointmentCancelledMessage();\r\n msg.idEtapaSolicitud = this.solicitudPaciente.idEtapaSolicitud;\r\n this.messageBusService.appointmentCancelled(msg);\r\n \r\n this.loading = false; \r\n this.completed = true; \r\n });\r\n }\r\n \r\n}\r\n","
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n {{ 'shared.futureAppointments.cardTitle' | translate:locale.language }} {{getAppointmentRemainingTime(app)}}\r\n {{ 'cancelled' | translate:locale.language | titlecase }}\r\n \r\n \r\n
\r\n \r\n {{getAppointmentDateStr(app.fechaRequerido)}} - {{app.fechaRequerido | date:'H:mm' }}\r\n
\r\n
\r\n \r\n {{getLocationDescription(app)}}\r\n
\r\n
\r\n \r\n {{ 'shared.futureAppointments.text9' | translate:locale.language }} \r\n {{ 'shared.futureAppointments.text10' | translate:locale.language }}\r\n \r\n
\r\n \r\n {{ 'cancel' | translate:locale.language }}\r\n {{ 'shared.futureAppointments.text7' | translate:locale.language }}\r\n \r\n
\r\n \r\n
\r\n
{{app.especialidadResponsableServicio}}
\r\n
\r\n {{app.nombreResponsableServicio}} \r\n {{ 'shared.futureAppointments.text1' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.futureAppointments.text2' | translate:locale.language }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n 0\">\r\n \r\n
\r\n \r\n
\r\n \r\n","import { Component, ViewChild, Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { ComponentLookup } from '../../../decorators/component-lookup.decorator';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\r\nimport { PatientAppointment } from 'src/app/shared/models/process/appointment.model';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { CancelAppointmentDialogComponent } from '../../dialogs/cancel-appointment/cancel-appointment-dialog.component';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { Router } from '@angular/router';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { Directory } from 'src/app/shared/models/systems/directory.model';\r\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-future-appointment-cards-container',\r\n templateUrl: './future-appointments.component.html',\r\n styleUrls: ['./future-appointments.component.css']\r\n})\r\n@ComponentLookup('FutureAppointmentsComponent')\r\nexport class FutureAppointmentsComponent implements OnInit, OnDestroy, IControlComponent {\r\n data: FormComponentData;\r\n pageSize: number = 2;\r\n appointments : PatientAppointment[];\r\n pageAppointments : PatientAppointment[];\r\n day: string;\r\n hour: string;\r\n min: string;\r\n inProgressState: string;\r\n resultsCount: number = 0;\r\n loading = true;\r\n skeletonItems: string[] = [\"\", \"\"];\r\n directory: Directory;\r\n\r\n //subscribes\r\n private ngUnsubscribe = new Subject();\r\n\r\n constructor(\r\n private appointmentService: AppointmentService, \r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n private translation: L10nTranslationService,\r\n public dialog: MatDialog,\r\n private messageBusService: MessageBusService,\r\n private router: Router,\r\n private baseService: BaseService,\r\n private publicProfileService: PublicProfileService,\r\n private layoutService: LayoutService) {\r\n }\r\n \r\n @ViewChild(MatPaginator) paginator: MatPaginator; \r\n\r\n ngOnInit(): void {\r\n this.parseControlData(); \r\n\r\n this.messageBusService.onAppointmentChangeReceived()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(message => {\r\n // Refresh the appointmen\r\n this.getAppointments();\r\n });\r\n\r\n this.translation.onChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: () => {\r\n this.day = this.translation.translate('days'); \r\n this.hour = this.translation.translate('hours'); \r\n this.min = this.translation.translate('minutes'); \r\n this.inProgressState = this.translation.translate('shared.futureAppointments.text8'); \r\n }\r\n });\r\n\r\n this.getDirectory();\r\n }\r\n\r\n ngOnDestroy():void{\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n getAppointments() {\r\n this.loading = true;\r\n\r\n this.appointmentService.getFutureAppointments(this.locale.language).subscribe(appointments =>{\r\n this.loading = false;\r\n \r\n this.appointments = appointments;\r\n this.resultsCount = appointments.length;\r\n\r\n this.setPageResults(0, this.pageSize)\r\n\r\n if(this.appointments == null || this.appointments.length == 0 && this.data){\r\n this.layoutService.hideComponent(this.data);\r\n }\r\n },\r\n error => {\r\n this.loading = false;\r\n\r\n this.baseService.handleServiceError(error, \"Error getting future appointment\"); \r\n }); \r\n }\r\n\r\n onPageChange(event: PageEvent) {\r\n let startIndex = event.pageIndex * event.pageSize;\r\n let endIndex = startIndex + event.pageSize;\r\n \r\n if(endIndex > this.appointments.length){\r\n endIndex = this.appointments.length;\r\n }\r\n \r\n this.setPageResults(startIndex, endIndex); \r\n }\r\n\r\n private setPageResults(startIndex: number, endIndex: number) {\r\n this.pageAppointments = this.appointments.slice(startIndex, endIndex);\r\n }\r\n\r\n appointmentTrackBy(index : number, item: PatientAppointment){\r\n return item.idSolicitud; \r\n }\r\n\r\n getLocationDescription(item : PatientAppointment) {\r\n let desc = item.direccionLocalidad;\r\n\r\n if (!desc)\r\n desc = item.nombreLocalidad;\r\n\r\n return desc;\r\n }\r\n\r\n getAvatarUrl(item : PatientAppointment) {\r\n let avatarUrl = item.urlAvatarResponsableServicio;\r\n\r\n if (!avatarUrl)\r\n avatarUrl = \"/assets/images/avatar_male_doctor.svg\";\r\n\r\n return avatarUrl;\r\n }\r\n\r\n getAppointmentDateStr(date: Date) {\r\n return this.baseService.getBasicDateFormat(date)\r\n }\r\n\r\n isAppointmentExpired(item : PatientAppointment) {\r\n let now = new Date().getTime();\r\n let appDate = new Date(item.fechaRequerido).getTime();\r\n\r\n return appDate <= now;\r\n }\r\n\r\n getAppointmentRemainingTime(item : PatientAppointment) {\r\n const dayDiff = 60 * 60 * 24;\r\n const hrDiff = 60 * 60;\r\n let now = new Date();\r\n let appDate = new Date(item.fechaRequerido);\r\n let timeDiff = (appDate.getTime() - now.getTime()) / 1000;\r\n let diffStr = \"\";\r\n\r\n if (timeDiff <= 0) {\r\n diffStr = this.inProgressState;\r\n }\r\n else if (timeDiff > dayDiff) {\r\n diffStr = (Math.ceil(timeDiff / dayDiff)) + \" \" + this.day;\r\n }\r\n else if (timeDiff > hrDiff) {\r\n diffStr = (Math.floor(timeDiff / hrDiff)) + \" \" + this.hour;\r\n }\r\n else {\r\n diffStr = (Math.floor(timeDiff / 60)) + \" \" + this.min;\r\n }\r\n\r\n return diffStr;\r\n }\r\n\r\n isTeleconsultation(item : PatientAppointment) {\r\n return item.teleconsulta && item.teleconsulta.toLocaleUpperCase() === \"S\";\r\n }\r\n\r\n buildTeleconsultationLink(item : PatientAppointment) {\r\n return this.directory.url + \"/meet/\" + item.teleconsultaId;\r\n }\r\n\r\n getDirectory() {\r\n let companyId = this.baseService.getCliniwebDirectoryCompanyId();\r\n\r\n this.baseService.getCliniwebDirectory(companyId).subscribe(d => {\r\n this.directory = d;\r\n\r\n this.getAppointments();\r\n }); \r\n }\r\n\r\n openCancelAppointmentDialog(item : PatientAppointment) {\r\n let dialogData = new DialogData();\r\n dialogData.data = item;\r\n\r\n const dialogRef = this.dialog.open(CancelAppointmentDialogComponent, {\r\n data: dialogData\r\n }); \r\n }\r\n \r\n onReprogramAppointment(item : PatientAppointment) {\r\n \r\n // If the doctor does not have a public profile\r\n if (!item.identificadorPerfilPublico) {\r\n let dialogData = new DialogData();\r\n dialogData.title = this.translation.translate(\"shared.pastAppointments.text4\");\r\n dialogData.message = this.translation.translate(\"shared.pastAppointments.text5\");\r\n dialogData.confirmText = this.translation.translate(\"shared.pastAppointments.text6\");\r\n dialogData.showCancelButton = false;\r\n\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n data: dialogData\r\n });\r\n }\r\n else {\r\n //let url = \"/perfil/\" + item.identificadorPerfilPublico; \r\n let url = this.publicProfileService.getPublicProfileUrl(item.identificadorPerfilPublico);\r\n \r\n this.router.navigate([url], { queryParams: {rs: true} });\r\n } \r\n }\r\n\r\n private parseControlData() {\r\n if (this.data && this.data.valor) {\r\n try {\r\n this.data.valor = JSON.parse(this.data.valor); \r\n\r\n let data = this.data.valor;\r\n\r\n this.pageSize = data.appointments;\r\n\r\n this.skeletonItems = ' '.repeat(this.pageSize).split('')\r\n } catch (ex) {} \r\n } \r\n }\r\n}\r\n\r\nexport interface FutureAppointmentConfigurationDataModel {\r\n appointments: number;\r\n}\r\n","\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n {{group.key}}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {{getDateAsStr(item.getDate()) | uppercase }}\r\n \r\n \r\n \r\n {{item.getDate() | date: 'h:mm a'}}\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
","import { AfterViewInit, Component, ContentChild, ElementRef, Inject, Input, OnDestroy, OnInit, TemplateRef, ViewEncapsulation } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-timeline-list-container',\r\n templateUrl: './timeline-list.component.html',\r\n styleUrls: ['./timeline-list.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TimelineListComponent implements OnInit, AfterViewInit, OnDestroy {\r\n groups: TimelineWrapperGroup[] = []; \r\n _items : TimelineWrapperItem[];\r\n _itemType = TimelineWrapperItemType;\r\n\r\n @ContentChild('TimelineContent') TimelineContent: TemplateRef;\r\n @ContentChild('TimelineSkeletonContent') TimelineSkeletonContent: TemplateRef;\r\n @ContentChild('TimelineEmptyStateContent') TimelineEmptyStateContent: TemplateRef;\r\n \r\n @Input() loading : boolean = false;\r\n @Input() skeletonItems : TimelineWrapperSkeletonItem[] = [];\r\n\r\n @Input() \r\n get items(): TimelineWrapperItem[] { return this._items; }\r\n set items(items : TimelineWrapperItem[]) {\r\n this._items = items;\r\n this.onItemsChange(items);\r\n }; \r\n\r\n ngAfterViewInit() { \r\n } \r\n\r\n constructor(\r\n public dialog: MatDialog,\r\n private baseService: BaseService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private layoutService: LayoutService) { \r\n } \r\n \r\n ngOnInit(): void { \r\n this.layoutService.addComponentInitClass(\"timeline-list-component\");\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.layoutService.removeComponentInitClass(\"timeline-list-component\");\r\n }\r\n\r\n onItemsChange(newItems: TimelineWrapperItem[]) {\r\n this.groups = []; \r\n\r\n if (newItems)\r\n this.populateItems(newItems);\r\n }\r\n \r\n populateItems(items : TimelineWrapperItem[]) {\r\n for (let index = 0; index < items.length; index++) {\r\n const item = items[index]; \r\n \r\n // Add item to group\r\n this.addToGroup(item);\r\n }\r\n }\r\n\r\n getGroup(item: TimelineWrapperItem) {\r\n return this.groups.find(g => g.key === item.getGroupKey());\r\n }\r\n\r\n addNewGroup(groupKey: number) {\r\n let group = new TimelineWrapperGroup(groupKey);\r\n\r\n this.groups.push(group);\r\n }\r\n\r\n addToGroup(item: TimelineWrapperItem) {\r\n let group = this.getGroup(item);\r\n\r\n if (!group) \r\n this.addNewGroup(item.getGroupKey());\r\n\r\n this.getGroup(item)?.addItem(item);\r\n }\r\n\r\n getDateAsStr(date: Date) {\r\n return this.baseService.getBasicDateFormat(date, false);\r\n }\r\n \r\n}\r\n\r\nexport class TimelineWrapperGroup {\r\n key : number;\r\n items: T[];\r\n collapsed = false;\r\n\r\n constructor(key: number) {\r\n this.key = key;\r\n this.items = [];\r\n }\r\n\r\n addItem(item: T) {\r\n this.items.push(item);\r\n }\r\n\r\n onClick() {\r\n this.collapsed = !this.collapsed;\r\n }\r\n}\r\n\r\nexport interface TimelineWrapperItem {\r\n getGroupKey() : number;\r\n getDate() : Date;\r\n getItemType(): TimelineWrapperItemType;\r\n showTime(): boolean;\r\n showDate(): boolean;\r\n}\r\n\r\nexport enum TimelineWrapperItemType {\r\n DOT = 1,\r\n CHECKED = 2,\r\n CANCELLED = 3\r\n}\r\n\r\nexport class TimelineWrapperSkeletonItem {\r\n}","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
{{item.patient.nombreResponsableServicio}}
\r\n
\r\n {{item.patient.especialidadResponsableServicio}}\r\n {{ 'shared.pastAppointments.text1' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.pastAppointments.programAgain' | translate:locale.language }}\r\n
\r\n \r\n
\r\n
{{item.patient.nombreLocalidad}}
\r\n
{{ getStateName(item.patient) }}
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n
{{ 'shared.pastAppointments.text8' | translate:locale.language }}
\r\n
\r\n {{ 'shared.pastAppointments.text9' | translate:locale.language }}\r\n {{ 'shared.pastAppointments.text10' | translate:locale.language }}\r\n
\r\n
\r\n\r\n
\r\n \r\n
","import { AfterViewInit, Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { ComponentLookup } from '../../../decorators/component-lookup.decorator';\r\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\r\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\r\nimport { PatientAppointment } from 'src/app/shared/models/process/appointment.model';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { Router } from '@angular/router';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { TimelineWrapperItem, TimelineWrapperItemType, TimelineWrapperSkeletonItem } from '../../timeline-list/timeline-list.component';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-past-appointment-container',\r\n templateUrl: './past-appointments.component.html',\r\n styleUrls: ['./past-appointments.component.css']\r\n})\r\n@ComponentLookup('PastAppointmentsComponent')\r\nexport class PastAppointmentsComponent implements IControlComponent, OnInit, OnDestroy, AfterViewInit {\r\n data: FormComponentData; \r\n appointments: TimelinePatientAppointment[]; \r\n completedStateName: string;\r\n notCompletedStateName: string;\r\n cancelledStateName: string;\r\n loading = true;\r\n skeletonItems: TimelineWrapperSkeletonItem[] = [new TimelineWrapperSkeletonItem(), new TimelineWrapperSkeletonItem()];\r\n\r\n //subscribes\r\n private ngUnsubscribe = new Subject();\r\n\r\n ngAfterViewInit() { \r\n } \r\n\r\n constructor(\r\n private appointmentService: AppointmentService, \r\n private translation: L10nTranslationService,\r\n private router: Router,\r\n private baseService: BaseService,\r\n public dialog: MatDialog,\r\n private publicProfileService: PublicProfileService,\r\n private messageBusService: MessageBusService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\r\n }\r\n \r\n ngOnInit(): void {\r\n this.translation.onChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: () => {\r\n this.completedStateName = this.translation.translate('shared.pastAppointments.text2'); \r\n this.notCompletedStateName = this.translation.translate('shared.pastAppointments.text3'); \r\n this.cancelledStateName = this.translation.translate('shared.pastAppointments.text7'); \r\n }\r\n });\r\n\r\n this.appointmentService.getPastAppointments(this.locale.language)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(appointments =>{\r\n this.appointments = appointments.map(a => new TimelinePatientAppointment(a)); \r\n\r\n this.loading = false;\r\n },\r\n error => {\r\n this.loading = false;\r\n\r\n this.baseService.handleServiceError(error, \"Error getting past appointments\"); \r\n });\r\n\r\n this.messageBusService.onAppointmentChangeReceived()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(\r\n appointments => {\r\n this.appointments = appointments.citasPasadas.map(a => new TimelinePatientAppointment(a)); \r\n this.loading = false;\r\n },\r\n error => { this.baseService.handleServiceError(error, \"Error getting past appointments\") } \r\n );\r\n }\r\n\r\n ngOnDestroy():void{\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n appointmentTrackBy(index : number, item: PatientAppointment){\r\n return item.idSolicitud; \r\n }\r\n\r\n getLocationDescription(item : PatientAppointment) {\r\n let desc = item.direccionLocalidad;\r\n\r\n if (!desc)\r\n desc = item.nombreLocalidad;\r\n\r\n return desc;\r\n }\r\n\r\n getAvatarUrl(item : PatientAppointment) {\r\n let avatarUrl = item.urlAvatarResponsableServicio;\r\n\r\n if (!avatarUrl)\r\n avatarUrl = \"/assets/Images/avatar_male_doctor.svg\";\r\n\r\n return avatarUrl;\r\n }\r\n\r\n getStateName(item : PatientAppointment) {\r\n if (item.idEstado == 7)\r\n return this.cancelledStateName;\r\n if (item.idEstado == 28 || item.idEstado == 22)\r\n return this.notCompletedStateName;\r\n else \r\n return this.completedStateName;\r\n }\r\n\r\n getStateClass(item : PatientAppointment) {\r\n if (item.idEstado == 7)\r\n return \"cancelled\";\r\n if (item.idEstado == 28)\r\n return \"incomplete\";\r\n else \r\n return \"completed\";\r\n }\r\n\r\n isIncomplete(item : PatientAppointment) {\r\n return item.idEstado == 7 || item.idEstado == 28;\r\n }\r\n \r\n navigateToPublicProfile(item : PatientAppointment) { \r\n\r\n // If the doctor does not have a public profile\r\n if (!item.identificadorPerfilPublico) {\r\n let dialogData = new DialogData();\r\n dialogData.title = this.translation.translate(\"shared.pastAppointments.text4\");\r\n dialogData.message = this.translation.translate(\"shared.pastAppointments.text5\");\r\n dialogData.confirmText = this.translation.translate(\"shared.pastAppointments.text6\");\r\n dialogData.showCancelButton = false;\r\n\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n data: dialogData\r\n });\r\n }\r\n else {\r\n //let url = \"/perfil/\" + item.identificadorPerfilPublico; \r\n let url = this.publicProfileService.getPublicProfileUrl(item.identificadorPerfilPublico); \r\n\r\n this.router.navigate([url], { queryParams: {rs: true} });\r\n }\r\n }\r\n\r\n navigateToAppointmentPage() {\r\n window.location.reload();\r\n }\r\n}\r\n\r\nexport class TimelinePatientAppointment implements TimelineWrapperItem { \r\n patient : PatientAppointment;\r\n\r\n constructor(patient : PatientAppointment) {\r\n this.patient = patient;\r\n }\r\n \r\n getGroupKey() : number {\r\n return new Date(this.patient.fechaInicio).getFullYear();\r\n }\r\n\r\n getDate() : Date {\r\n return new Date(this.patient.fechaInicio);\r\n }\r\n\r\n getItemType(): TimelineWrapperItemType{\r\n return this.patient.idEstado == 7 || this.patient.idEstado == 28 \r\n ? TimelineWrapperItemType.CANCELLED\r\n : TimelineWrapperItemType.CHECKED;\r\n }\r\n\r\n showTime():boolean{\r\n return true;\r\n }\r\n\r\n showDate():boolean{\r\n return true;\r\n }\r\n}","
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ 'name' | translate:locale.language }} \r\n {{app.nombreResponsableServicio}}\r\n {{ 'shared.cancelledAppointments.text1' | translate:locale.language }}\r\n {{ 'specialty' | translate:locale.language }} {{app.especialidadResponsableServicio}} {{ 'date' | translate:locale.language }} {{app.fechaRequerido | date:'dd/MM/yyyy' }} {{ 'state' | translate:locale.language }} {{ getStateName(app) }} {{ 'shared.cancelledAppointments.programAgain' | translate:locale.language }}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {{app.nombreResponsableServicio}} \r\n {{ 'shared.cancelledAppointments.text1' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'date' | translate:locale.language }}: {{app.fechaRequerido | date:'dd/MM/yyyy' }}\r\n
\r\n
\r\n {{ 'specialty' | translate:locale.language }}: {{app.especialidadResponsableServicio}} \r\n
\r\n
\r\n {{ 'state' | translate:locale.language }}: {{ getStateName(app) }}\r\n
\r\n
\r\n {{ 'shared.cancelledAppointments.programAgain' | translate:locale.language }}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
","import { AfterViewInit, Component, ViewChild, Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { ComponentLookup } from '../../../decorators/component-lookup.decorator';\r\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\r\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\r\nimport { PatientAppointment } from 'src/app/shared/models/process/appointment.model';\r\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { Router } from '@angular/router';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'cancelled-appointment-container',\r\n templateUrl: './cancelled-appointments.component.html',\r\n styleUrls: ['./cancelled-appointments.component.css']\r\n})\r\n@ComponentLookup('CancelledAppointmentsComponent')\r\nexport class CancelledAppointmentsComponent implements IControlComponent, OnInit, OnDestroy, AfterViewInit {\r\n data: FormComponentData;\r\n appointments : MatTableDataSource;\r\n appointmentsArray: PatientAppointment[];\r\n appointmentsPage: PatientAppointment[];\r\n resultsCount: number;\r\n displayedColumns: string[] = ['name', 'specialty', 'date', 'state', 'actions']; \r\n canceledStateName: string;\r\n missedStateName: string;\r\n\r\n //subscribes\r\n private ngUnsubscribe = new Subject();\r\n\r\n @ViewChild(MatPaginator) paginator: MatPaginator;\r\n\r\n ngAfterViewInit() { \r\n } \r\n\r\n constructor(\r\n private appointmentService: AppointmentService, \r\n private translation: L10nTranslationService,\r\n private router: Router,\r\n public dialog: MatDialog,\r\n private messageBusService: MessageBusService,\r\n private publicProfileService: PublicProfileService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\r\n }\r\n \r\n ngOnInit(): void {\r\n this.translation.onChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: () => {\r\n this.canceledStateName = this.translation.translate('shared.cancelledAppointments.text2'); \r\n this.missedStateName = this.translation.translate('shared.cancelledAppointments.text7'); \r\n }\r\n });\r\n\r\n // Subscribe to appointment cancelled event\r\n this.messageBusService.onAppointmentCancelled()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(message => {\r\n // Refresh the appointments\r\n this.getAppointments();\r\n });\r\n\r\n this.getAppointments();\r\n }\r\n\r\n ngOnDestroy():void{\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n getAppointments() {\r\n this.appointmentService.getIncompletedAppointments()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(appointments =>{\r\n this.appointmentsArray = appointments;\r\n this.appointments = new MatTableDataSource(appointments); \r\n this.appointments.paginator = this.paginator;\r\n this.resultsCount = appointments.length; \r\n \r\n this.setPageResults(0, this.appointments.paginator.pageSize); \r\n },\r\n error => {\r\n \r\n });\r\n }\r\n\r\n OnPageChange(event: PageEvent){\r\n let startIndex = event.pageIndex * event.pageSize;\r\n let endIndex = startIndex + event.pageSize;\r\n \r\n if(endIndex > this.appointmentsArray.length){\r\n endIndex = this.appointmentsArray.length;\r\n }\r\n \r\n this.setPageResults(startIndex, endIndex); \r\n }\r\n\r\n private setPageResults(startIndex: number, endIndex: number) {\r\n this.appointmentsPage = this.appointmentsArray.slice(startIndex, endIndex);\r\n }\r\n\r\n appointmentTrackBy(index : number, item: PatientAppointment){\r\n return item.idSolicitud; \r\n }\r\n\r\n getLocationDescription(item : PatientAppointment) {\r\n let desc = item.direccionLocalidad;\r\n\r\n if (!desc)\r\n desc = item.nombreLocalidad;\r\n\r\n return desc;\r\n }\r\n\r\n getAvatarUrl(item : PatientAppointment) {\r\n let avatarUrl = item.urlAvatarResponsableServicio;\r\n\r\n if (!avatarUrl)\r\n avatarUrl = \"/assets/Images/avatar_male_doctor.svg\";\r\n\r\n return avatarUrl;\r\n } \r\n \r\n navigateToPublicProfile(item : PatientAppointment) { \r\n\r\n // If the doctor does not have a public profile\r\n if (!item.identificadorPerfilPublico) {\r\n let dialogData = new DialogData();\r\n dialogData.title = this.translation.translate(\"shared.cancelledAppointments.text4\");\r\n dialogData.message = this.translation.translate(\"shared.cancelledAppointments.text5\");\r\n dialogData.confirmText = this.translation.translate(\"shared.cancelledAppointments.text6\");\r\n dialogData.showCancelButton = false;\r\n\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n data: dialogData\r\n });\r\n }\r\n else {\r\n //let url = \"/busqueda/perfil/\" + item.identificadorPerfilPublico;\r\n let url = this.publicProfileService.getPublicProfileUrl(item.identificadorPerfilPublico);\r\n\r\n this.router.navigate([url]);\r\n }\r\n }\r\n\r\n getStateName(item : PatientAppointment) {\r\n if (item.idEstado == 7)\r\n return this.canceledStateName; \r\n else \r\n return this.missedStateName; \r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{ 'shared.appointmentTabs.text1' | translate:locale.language }} \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n {{ 'shared.appointmentTabs.text2' | translate:locale.language }} \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { ComponentLookup } from '../../../decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\n\r\n@Component({\r\n selector: 'appointment-tabs-container',\r\n templateUrl: './appointment-tabs.component.html',\r\n styleUrls: ['./appointment-tabs.component.css']\r\n})\r\n@ComponentLookup('AppointmentTabsComponent')\r\nexport class AppointmentsTabsComponent implements IControlComponent, OnInit {\r\n data: FormComponentData;\r\n\r\n constructor( \r\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\n\n@Component({\n selector: 'app-menu-mobile',\n templateUrl: './menu-mobile.component.html',\n styleUrls: ['./menu-mobile.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class MenuMobileComponent implements OnInit, OnDestroy {\n public menuComponentName: string = \"\";\n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\n private mdDialogRef: MatDialogRef,\n private layoutService: LayoutService,\n private baseService: BaseService\n ) { \n this.layoutService.postNavigateSource$\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(data=>{\n this.close();\n });\n }\n\n ngOnInit(): void {\n this.menuComponentName = this.baseService.getMenuComponentName();\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public close() {\n this.mdDialogRef.close();\n }\n}\n","
\n \n \n \n
","import { DOCUMENT } from '@angular/common';\r\nimport { Component, HostListener, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\n\r\n@Component({\r\n selector: 'app-profile-menu-dialog',\r\n templateUrl: './profile-menu-dialog.component.html',\r\n styleUrls: ['./profile-menu-dialog.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ProfileMenuDialogComponent implements OnInit {\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\r\n @Inject(DOCUMENT) private document: Document,\r\n public mdDialogRef: MatDialogRef\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n history.pushState(null, '', location.href);\r\n } \r\n\r\n public close() {\r\n if(this.data.animationOut){\r\n this.document.getElementsByClassName(this.data.id)[0].classList.remove(this.data.animationIn);\r\n this.document.getElementsByClassName(this.data.id)[0].classList.add(this.data.animationOut);\r\n\r\n setTimeout(()=>{ \r\n this.mdDialogRef.close();\r\n }, 300);\r\n }\r\n else{\r\n this.mdDialogRef.close();\r\n }\r\n } \r\n \r\n @HostListener(\"keydown.esc\") \r\n public onEsc() {\r\n this.close();\r\n }\r\n}","
\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
","import { Component, Input, OnChanges } from '@angular/core';\nimport { ProfileMenuDialogComponent } from '../../dialogs/profile-menu-dialog/profile-menu-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\nimport { UtilsService } from 'src/app/core/services/utils.service';\nimport { DialogName, DialogOpenMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\n\n@Component({\n selector: 'app-logged-in-menu-button',\n templateUrl: './logged-in-menu-button.component.html',\n styleUrls: ['./logged-in-menu-button.component.css']\n})\nexport class LoggedInMenuButtonComponent implements OnChanges {\n\n @Input() loggedInUser: UserPerson;\n\n constructor(\n public dialog: MatDialog,\n private utilsService: UtilsService,\n private messageBusService: MessageBusService\n ) { }\n\n ngOnChanges(): void {\n this.setProfilePhoto();\n }\n\n private setProfilePhoto(): void {\n if (!this.loggedInUser.ubicacionLogo) {\n let feNacimiento = this.loggedInUser.fechaNacimiento? new Date(this.loggedInUser.fechaNacimiento) : null;\n this.loggedInUser.ubicacionLogo = this.utilsService.getPersonDefaultAvatarUrl(feNacimiento, this.loggedInUser.sexo);\n }\n }\n\n onMenuClick() {\n const dialogRef = this.dialog.open(ProfileMenuDialogComponent, {\n data: {\n id: 'profile-menu-dialog',\n animationIn: 'public-profile-animation-in',\n animationOut: 'public-profile-animation-out'\n }, \n panelClass: ['profile-menu-dialog', 'public-profile-animation-in']\n });\n\n this.messageBusService.dialogOpen(new DialogOpenMessage(DialogName.UserProfileMenu));\n\n dialogRef.afterClosed().subscribe(accepted => { \n this.messageBusService.dialogClose(new DialogOpenMessage(DialogName.UserProfileMenu));\n });\n }\n\n}\n","
\n \n
","
\n \n \n \n {{ item.locale.language | l10nDisplayNames:locale.language:{ type: 'language' } }}\n \n \n\n
","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { L10N_CONFIG, L10N_LOCALE, L10nConfig, L10nLocale } from 'angular-l10n';\nimport { BaseService } from 'src/app/core/services/base.service';\n\n@Component({\n selector: 'app-anonymous-language-menu',\n templateUrl: './anonymous-language-menu.component.html',\n styleUrls: ['./anonymous-language-menu.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AnonymousLanguageMenuComponent {\n\n schema = this.l10nConfig.schema;\n\n constructor(\n @Inject(L10N_CONFIG) private l10nConfig: L10nConfig,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private baseService: BaseService\n ) { }\n\n setLocale(locale: L10nLocale): void {\n this.baseService.setLocale(locale);\n }\n\n}\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { LoginRouteDialogModel } from '../../dialogs/route-dialog/route-dialog.component';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { SignupWorkflowVerificationType } from 'src/app/shared/enums/signup-workflow-verification.enum';\nimport { Router } from '@angular/router';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\n\n@Component({\n selector: 'app-anonymous-login-signup-menu',\n templateUrl: './anonymous-login-signup-menu.component.html',\n styleUrls: ['./anonymous-login-signup-menu.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AnonymousLoginSignupMenuComponent {\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private appStorageService: AppStorageService,\n private routeDialogService: RouteDialogService,\n private router: Router\n ) { }\n\n onCliniwebForDoctorsClick(): void {\n let cliniwebUrl = environment.cliniwebUrl + \"Doctor##comoFuncionaDoctores\";\n window.location.href = cliniwebUrl;\n }\n\n onCliniwebForPatientsClick(): void {\n let cliniwebUrl = environment.cliniwebUrl + \"##comoFuncionaPacientes\";\n window.location.href = cliniwebUrl; \n }\n\n onLoginClick(): void {\n let path = encodeURIComponent(window.location.pathname + window.location.search);\n\n this.appStorageService.setItemSession(STORAGE.SIGNUP_WORKFLOW_VERIFICATION_TYPE, SignupWorkflowVerificationType.SIMPLE);\n this.router.navigate(['welcome', 'login'], { queryParams: { returnUrl: path } });\n \n /*let routeDialogModel = new LoginRouteDialogModel();\n routeDialogModel.route = \"login\"; \n routeDialogModel.queryParams = { returnUrl: path, closeOnBack: true }\n this.routeDialogService.openDialog(routeDialogModel);*/\n }\n\n /**\n * Redirige al welcome según MCWNG-6496\n */\n onSignupClick(): void {\n let path = encodeURIComponent(window.location.pathname + window.location.search);\n\n\t this.appStorageService.setItemSession(STORAGE.SIGNUP_WORKFLOW_VERIFICATION_TYPE, SignupWorkflowVerificationType.SIMPLE);\n this.router.navigate(['welcome', 'signup'], { queryParams: { returnUrl: path } });\n }\n\n goToPortal(): void {\n let portalUrl = environment.portalUrl;\n window.location.href = portalUrl;\n }\n\n goToPortalPublicProfilePage(): void {\n let portalUrl = environment.portalUrl + \"perfiles\"; \n window.location.href = portalUrl; \n }\n\n onViewAppointmentsClick(): void {\n this.router.navigate(['/mis-citas']);\n }\n\n}\n","","\n\n\n
\n\n \n \n\n \n \n\n
","import { Component, EventEmitter, Inject, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { concat, Observable, of, Subject } from 'rxjs';\nimport { concatMap, delay, map, startWith, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { LoginCompletedMessage, LogoutMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { DOCUMENT } from '@angular/common';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { PHRVersion, PortalPhr } from 'src/app/shared/models/systems/portal-phr.model';\n\n@Component({\n selector: 'app-anonymous-menu',\n templateUrl: './anonymous-menu.component.html',\n styleUrls: ['./anonymous-menu.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AnonymousMenuComponent implements OnDestroy, OnInit {\n\n @Output() onLoggedInUser: EventEmitter = new EventEmitter();\n loggedInUser: UserPerson | null = null;\n showAnonymousMenu: boolean = false;\n showLoggedInMenu = false;\n private ngUnsubscribe = new Subject();\n directory: PortalPhr;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private authService: AuthService,\n private messageBusService: MessageBusService,\n private userService: UserService,\n private baseService: BaseService\n ) {\n this.messageBusService.onLoginCompleted().pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.onLoginCompleted.bind(this));\n this.messageBusService.onLogout().pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.onLogout.bind(this));\n this.messageBusService.onRefreshProfileMenu().pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.loadProfile.bind(this));\n this.messageBusService.onShowSignupLoginHeaderMenu()\n .pipe(takeUntil(this.ngUnsubscribe), concatMap(x => of(x).pipe(delay(50))))\n .subscribe(x => this.showLoggedInMenu = x);\n /*this.showAnonymousMenu = this.messageBusService.onHideAnonymousMenu()\n .pipe(takeUntil(this.ngUnsubscribe), map(() => false), startWith(true), withLatestFrom(onShowSignupLoginHeaderMenu), map(x => x[0] && x[1]), delay(100));*/\n }\n\n private onLoginCompleted(msg: LoginCompletedMessage) : void {\n if (msg.user) {\n this.loadProfile();\n }\n }\n\n private onLogout(_: LogoutMessage): void {\n this.loggedInUser = null;\n this.onLoggedInUser.emit(null);\n this.document.body.classList.add('anonymous');\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngOnInit(): void {\n this.loadProfile();\n\n this.messageBusService.onHideAnonymousMenu()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(m => {\n this.showAnonymousMenu = false;\n });\n \n this.messageBusService.onShowAnonymousMenu()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(m => {\n if (this.directory.versionPhr != PHRVersion.V1)\n this.showAnonymousMenu = true;\n });\n\n this.directory = this.baseService.getDirectory();\n this.showAnonymousMenu = this.directory.versionPhr != PHRVersion.V1;\n }\n\n loadProfile() {\n this.authService.isLoggedInFull()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((result:boolean)=>{\n\n if(result){\n this.userService.getUserPersonLoggedIn().subscribe(this.isLoggedIn.bind(this));\n }\n else{\n this.document.body.classList.add('anonymous');\n }\n });\n }\n\n private isLoggedIn(arg: UserPerson | null): void {\n if (!arg) return;\n this.loggedInUser = arg;\n this.onLoggedInUser.emit(arg);\n this.document.body.classList.remove('anonymous');\n }\n\n}\n","\n \n \n\n
\n \n \n \n
\n \n \n \n {{ 'shared.header.homeLinkText' | translate:language }}\n \n \n \n \n\n \n
\n
\n \n
\n {{publicProfileMenuModel.profile.nombrePersona}}\n \n \n \n \n
\n\n
\n","import { Component, ChangeDetectorRef, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\nimport { MenuMobileComponent } from '../../dialogs/menu-mobile/menu-mobile.component';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\nimport { MessageBusService, PublicProfileActionMessage } from 'src/app/core/services/message-bus.service';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { DOCUMENT } from '@angular/common';\nimport { ContainerType } from 'src/app/shared/enums/container-type.enum';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { environment } from 'src/environments/environment';\nimport { PublicProfile } from 'src/app/shared/models/people/public-profile.model';\nimport { PublicProfileAvatarComponentModel } from '../../public-profile-avatar/public-profile-avatar.component';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('HeaderComponent')\nexport class HeaderComponent implements OnInit, OnDestroy, IControlComponent {\n data: FormComponentData;\n\n routeDialogOpened: boolean = false;\n isPublicProfilePage: boolean = false;\n isSearchProfilePage: boolean = false;\n loggedInUser: UserPerson = null as any;\n floatingComponents: FormComponentData[] = [];\n language: string;\n publicProfileMenuModel: HeaderComponentPublicProfileMenuModel;\n\n private ngUnsubscribe = new Subject();\n\n constructor(\n private routeDialogService: RouteDialogService,\n private messageBusService: MessageBusService,\n private router: Router,\n public dialog: MatDialog,\n private cd: ChangeDetectorRef,\n @Inject(DOCUMENT) private document: Document,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n ) {\n }\n\n ngOnInit(): void {\n\n this.isPublicProfilePage = window.location.href.includes('perfil');\n this.isSearchProfilePage = window.location.href.includes('doctores');\n\n this.router.events\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(event=>{\n if(event instanceof NavigationEnd){\n if(this.routeDialogService.anyOpen())\n return; \n\n this.isPublicProfilePage = window.location.href.includes('perfil');\n this.isSearchProfilePage = window.location.href.includes('doctores');\n\n\n this.language = this.locale.language;\n }\n });\n\n this.messageBusService.onSendFloatingComponents()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message)=>{\n\n if(this.routeDialogService.anyOpen())\n return;\n\n this.floatingComponents = message.componentsData.filter(c=>c.contenedor == ContainerType.HEADER);\n });\n\n this.messageBusService.onOpenRouteDialog()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message)=>{\n\n this.routeDialogOpened = true;\n });\n\n this.messageBusService.onCloseRouteDialog()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message)=>{\n this.routeDialogOpened = false;\n });\n\n this.messageBusService.onAllRouteDialogClosed()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message)=>{\n this.routeDialogOpened = false;\n });\n\n this.messageBusService.onPublicProfileHeaderVisibilityChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message)=> {\n if (message.fromRouteDialog)\n return;\n\n this.publicProfileMenuModel = new HeaderComponentPublicProfileMenuModel();\n this.publicProfileMenuModel.headerVisible = message.headerVisible;\n this.publicProfileMenuModel.profile = message.profile;\n this.publicProfileMenuModel.avatarModel = message.publicProfileAvatarComponentModel;\n this.publicProfileMenuModel.avatarModel.useAvatarPadding = false;\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n openMenuMobile(){\n const dialogRef = this.dialog.open(MenuMobileComponent, {\n panelClass: \"menu-mobile\"\n });\n }\n\n onLogoClick() {\n let url = environment.cliniwebUrl;\n\n if (this.loggedInUser)\n this.router.navigate(['/']);\n else \n window.location.href = url;\n }\n\n setLoggedInUser(arg: UserPerson | null): void {\n this.loggedInUser = arg as any;\n this.cd.detectChanges();\n }\n\n gotoPayment() {\n this.messageBusService.sendPublicProfileAction(new PublicProfileActionMessage(true, false));\n }\n\n onAppointmentBtnClick() {\n this.messageBusService.sendPublicProfileAction(new PublicProfileActionMessage(false, true));\n }\n}\n\nexport class HeaderComponentPublicProfileMenuModel {\n headerVisible: boolean;\n profile: PublicProfile;\n avatarModel: PublicProfileAvatarComponentModel;\n}\n"," \r\n
\r\n
\r\n
\r\n \r\n
{{policy.plan}}
\r\n\r\n \r\n {{ 'policyMenu.text6' | translate:locale.language }}\r\n \r\n\r\n
\r\n {{ 'policyMenu.text2' | translate:locale.language }}: \r\n {{policy.redMedica}}\r\n
\r\n
\r\n {{ 'policyMenu.text3' | translate:locale.language }}: \r\n {{policy.numeroPoliza}}\r\n
\r\n\r\n {{ 'policyMenu.text4' | translate:locale.language }} \r\n
\r\n
","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { GoogleAnalyticsService } from 'src/app/core/services/google-analytics.service';\r\nimport { MessageBusService, ServiceErrorMessage } from 'src/app/core/services/message-bus.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { Policy } from 'src/app/shared/models/people/policy.model';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\n\r\n@Component({\r\n selector: 'app-policy-menu-content',\r\n templateUrl: './policy-menu-content.component.html',\r\n styleUrls: ['./policy-menu-content.component.css']\r\n})\r\n\r\nexport class PolicyMenuContentComponent implements OnInit, OnDestroy { \r\n private ngUnsubscribe = new Subject();\r\n user: UserPerson;\r\n policies : Policy[] = [];\r\n cedula: string;\r\n\r\n constructor(\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private baseService: BaseService,\r\n private userService: UserService,\r\n private messageBusService: MessageBusService,\r\n private authService: AuthService,\r\n private googleAnalyticsService: GoogleAnalyticsService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (this.authService.isLoggedIn()) {\r\n let tipoIdentificacionPoliza = this.baseService.getDirectory().tipoIdentificacionPoliza; \r\n\r\n tipoIdentificacionPoliza && this.getPolicies(tipoIdentificacionPoliza); \r\n\r\n // Get Cedula\r\n this.userService.getUserIdentificationNumber()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(i => {\r\n if (i && i.length > 0)\r\n this.cedula = i[0].valor; \r\n });\r\n }\r\n \r\n // On SSO when the ngOnInit the user is not yet logged in, so for those cases we will subscribe to this event\r\n this.messageBusService.onLoginCompleted()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(msg => { \r\n if (this.policies.length == 0) {\r\n let tipoIdentificacionPoliza = this.baseService.getDirectory().tipoIdentificacionPoliza; \r\n\r\n tipoIdentificacionPoliza && this.getPolicies(tipoIdentificacionPoliza); \r\n } \r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n getPolicies(tipoIdentificacionPoliza: number){\r\n this.userService.getPolicies(tipoIdentificacionPoliza)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(policies => {\r\n this.policies = policies; \r\n },\r\n error => {\r\n this.baseService.handleServiceError(error, \"Error getting user policies\"); \r\n });\r\n }\r\n\r\n policyTrackBy(index : number, item: Policy){\r\n return item.numeroPoliza; \r\n }\r\n\r\n goToPolicy(policyNumber: string) {\r\n\r\n this.googleAnalyticsService.sendEventGoToInsuranceCard();\r\n\r\n let url = this.baseService.getDirectory().urlCorporativo;\r\n \r\n url += \"micarnet?identificacion=\" + this.cedula;\r\n\r\n window.open(url, '_blank')?.focus();\r\n }\r\n\r\n}\r\n","
\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n
{{ 'policyMenu.text1' | translate:locale.language }}
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { Policy } from 'src/app/shared/models/people/policy.model';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\n\r\n@Component({\r\n selector: 'app-policy-menu',\r\n templateUrl: './policy-menu.component.html',\r\n styleUrls: ['./policy-menu.component.css']\r\n})\r\n\r\nexport class PolicyMenuComponent implements OnInit, OnDestroy { \r\n private ngUnsubscribe = new Subject();\r\n user: UserPerson;\r\n\r\n constructor(\r\n private userService: UserService,\r\n private authService: AuthService,\r\n private messageBusService: MessageBusService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n ) { \r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.authService.isLoggedIn()) {\r\n this.userService.getUserPersonLoggedIn()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(p => {\r\n if (p)\r\n this.user = p;\r\n });\r\n }\r\n\r\n // On SSO when the ngOnInit the user is not yet logged in, so for those cases we will subscribe to this event\r\n this.messageBusService.onLoginCompleted()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(msg => {\r\n if (msg.user) \r\n this.user = msg.user;\r\n });\r\n\r\n this.messageBusService.onLogout()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(msg => {\r\n this.user = null as any; \r\n });\r\n } \r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n getUserName() {\r\n return this.user.nombre + \" \" + this.user.apellido;\r\n }\r\n\r\n policyTrackBy(index : number, item: Policy){\r\n return item.numeroPoliza; \r\n }\r\n\r\n}\r\n","\n
\n \n \n \n \n \n \n
\n {{ 'headerSura.text1' | translate:locale.language | uppercase }}\n
\n
","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { Direction } from 'src/app/shared/enums/direction.enum';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\nimport { MenuMobileComponent } from '../../dialogs/menu-mobile/menu-mobile.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-header-sura',\n templateUrl: './header-sura.component.html',\n styleUrls: ['./header-sura.component.css']\n})\n@ComponentLookup('HeaderSuraComponent')\nexport class HeaderSuraComponent implements OnInit, OnDestroy, IControlComponent {\n data: FormComponentData;\n\n showHeaderSmall:boolean = false;\n lastHeaderChangeTime : Date = new Date();\n hideHeader = false;\n urlCompany:string;\n userLoggedIn = false;\n\n private ngUnsubscribe = new Subject();\n\n constructor(\n private baseService:BaseService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private layoutService: LayoutService,\n public dialog: MatDialog,\n private router: Router,\n private userService: UserService,\n private authService: AuthService, \n private messageBusService: MessageBusService, \n private route : ActivatedRoute\n ) {\n\n this.layoutService.scrollingBodySource$\n .subscribe((dir:Direction)=>{ \n let showSmall = dir === Direction.Down;\n\n if (showSmall != this.showHeaderSmall) {\n let timeDiff = (new Date().getTime() - this.lastHeaderChangeTime.getTime());\n\n // This will prevent a case in wich when header show/hide the scroll change and the animation enter in a loop\n if (timeDiff >= 500)\n this.lastHeaderChangeTime = new Date();\n else\n return;\n }\n\n this.showHeaderSmall = showSmall;\n });\n }\n\n ngOnInit(): void {\n this.urlCompany = this.baseService.getUrlCompany();\n\n // Get QS parameters\n this.route.queryParams\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(params => {\n if (params && params.hideHeader === \"true\")\n this.hideHeader = true;\n });\n\n if (this.authService.isLoggedIn()) {\n this.userService.getUserPersonLoggedIn()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(p => {\n if (p)\n this.userLoggedIn = true;\n });\n }\n\n // On SSO when the ngOnInit the user is not yet logged in, so for those cases we will subscribe to this event\n this.messageBusService.onLoginCompleted()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg => {\n this.userLoggedIn = true;\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n openMenuMobile(){\n const dialogRef = this.dialog.open(MenuMobileComponent, {\n panelClass: \"menu-mobile\"\n });\n }\n\n goToHome() {\n this.router.navigate(['/'], { });\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\n\n@Component({\n selector: 'app-virtual-consultation-linkbox',\n templateUrl: './virtual-consultation-linkbox.component.html',\n styleUrls: ['./virtual-consultation-linkbox.component.css']\n})\n@ComponentLookup('VirtualConsultationLinkboxComponent')\nexport class VirtualConsultationLinkboxComponent implements OnInit, IControlComponent {\n data: FormComponentData;\n\n constructor(\n private router: Router,\n private baseService: BaseService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnInit(): void {\n }\n\n navigate(){\n let path = this.baseService.getRouteLinkByArea(3458);\n this.router.navigate(['/' + path]);\n }\n}\n","\n \n \n

{{ 'shared.virtualConsultationLinkbox.title' | translate:locale.language | uppercase }}

\n {{ 'shared.virtualConsultationLinkbox.description' | translate:locale.language }}\n \n
\n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\n\n@Component({\n selector: 'app-medical-appointments-linkbox',\n templateUrl: './medical-appointments-linkbox.component.html',\n styleUrls: ['./medical-appointments-linkbox.component.css']\n})\n@ComponentLookup('MedicalAppointmentsLinkboxComponent')\nexport class MedicalAppointmentsLinkboxComponent implements OnInit, IControlComponent {\n data: FormComponentData;\n\n constructor(\n private router: Router,\n private baseService: BaseService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnInit(): void {\n }\n \n navigate(){\n let path = this.baseService.getRouteLinkByArea(3459);\n this.router.navigate(['/' + path]);\n }\n}\n","\n \n \n

{{ 'shared.medicalAppointmentsLinkbox.title' | translate:locale.language | uppercase }}

\n {{ 'shared.medicalAppointmentsLinkbox.description' | translate:locale.language }}\n \n
\n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\n\n@Component({\n selector: 'app-results-linkbox',\n templateUrl: './results-linkbox.component.html',\n styleUrls: ['./results-linkbox.component.css']\n})\n@ComponentLookup('ResultsLinkboxComponent')\nexport class ResultsLinkboxComponent implements OnInit, IControlComponent {\n data: FormComponentData;\n\n constructor(\n private router: Router,\n private baseService: BaseService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnInit(): void {\n }\n\n navigate(){\n let path = this.baseService.getRouteLinkByArea(3460);\n this.router.navigate(['/' + path]);\n }\n}\n","\n \n \n

{{ 'shared.resultsLinkbox.title' | translate:locale.language | uppercase }}

\n {{ 'shared.resultsLinkbox.description' | translate:locale.language }}\n \n
\n
\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\n\r\n@Component({\r\n selector: 'app-historia-clinica-linkbox',\r\n templateUrl: './historia-clinica-linkbox.component.html',\r\n styleUrls: ['./historia-clinica-linkbox.component.css']\r\n})\r\n@ComponentLookup('HistoriaClinicaLinkboxComponent')\r\nexport class HistoriaClinicaLinkboxComponent implements OnInit, IControlComponent {\r\n data: FormComponentData;\r\n\r\n constructor(\r\n private router: Router,\r\n private baseService: BaseService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n navigate(){\r\n let path = this.baseService.getRouteLinkByArea(3462);\r\n this.router.navigate(['/' + path]);\r\n }\r\n}\r\n","\r\n \r\n \r\n

{{ 'shared.historiaClinicaLinkbox.title' | translate:locale.language | uppercase }}

\r\n {{ 'shared.historiaClinicaLinkbox.description' | translate:locale.language }}\r\n \r\n
\r\n
","import { Component, Inject, OnInit } from '@angular/core';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { FormComponentData } from '../../models/people/form-control.model';\n\n@Component({\n selector: 'app-unread-clinical-exam',\n templateUrl: './unread-clinical-exam.component.html',\n styleUrls: ['./unread-clinical-exam.component.css']\n})\n@ComponentLookup('UnreadClinicalExamComponent')\nexport class UnreadClinicalExamComponent implements OnInit, IControlComponent {\n data: FormComponentData;\n \n constructor(@Inject(L10N_LOCALE) public locale: L10nLocale) { }\n\n ngOnInit(): void {\n }\n}\n","\n
\n \n \n

Examen de glucosa en sangre

\n
\n \n Fecha de realización del examen: 17/12/2020\n
\n \n
\n
\n","export class ClinicConcept {\n id: number = 0;\n nombre: string = '';\n idTerminoReferencia: number = 0;\n valorTerminoReferencia: string = '';\n idFuenteReferencia: number = 0;\n nombreClase: string = '';\n valorRutaNavegacion: string = '';\n idReferenciaConcepto: number = 0;\n idTipoConcepto: number;\n nombreTipoConcepto: string = '';\n nombreFuenteReferencia: string = '';\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { ClinicConcept } from 'src/app/shared/models/cdr/clinic-concept.model';\nimport { BaseService } from './base.service';\nimport { HttpBaseService } from './http-base-service';\nimport { LogService } from './log.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClinicalConceptService {\n\n constructor(\n private http: HttpBaseService,\n private baseService: BaseService,\n private logService: LogService\n ) { }\n\n getSymptoms(text: string): Observable{\n\n this.logService.logVerbose(\"getSymptoms: \" + text);\n\n if(!text) return of([]);\n\n let language = this.baseService.getLanguage();\n\n return this.http.get(\"api/conceptos-clinicos/sintomas?localizacion=\" + language + \"&textoBusqueda=\" + encodeURIComponent(text));\n }\n\n getFrequentSymptoms():Observable{\n let language = this.baseService.getLanguage();\n\n return this.http.get(\"api/conceptos-clinicos/sintomas/frecuentes?localizacion=\" + language);\n }\n\n getInsuraceConcepts():Observable{\n let language = this.baseService.getLanguage();\n\n return this.http.get(\"api/conceptos-clinicos/aseguradoras?localizacion=\" + language, null, false);\n }\n}\n","
\n
\n \n \n \n \n \n \n
\n
\n \n
\n
\n \n \n \n \n \n
\n \n
\n\n
\n \n \n \n clear\n {{ symptom.nombre }}\n \n \n \n \n \n \n \n {{ symptom.nombre }}\n \n \n {{ 'shared.selectSymptoms.mandatoryFieldText' | translate:locale.language }}\n \n\n \n {{ 'shared.selectSymptoms.frequentSymptomsLabelText' | translate:locale.language }}\n \n {{ frequentSymptom.nombre }}\n \n \n \n
\n\n
\n
{{ 'shared.selectSymptoms.virtualAttentionQueue' | translate:locale.language }}
\n
{{ 'shared.selectSymptoms.virtualAttentionActive' | translate:locale.language }}
\n
{{ 'shared.selectSymptoms.finishedAttention' | translate:locale.language }}
\n\n \n \n\n \n
","import { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { Component, ElementRef, Inject, Input, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipInputEvent } from '@angular/material/chips';\nimport { MatDialog } from '@angular/material/dialog';\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, map, switchMap, takeUntil } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { ClinicalConceptService } from 'src/app/core/services/clinical-concept.service';\nimport { ComponentFinishLoadingMessage, FormConfigurationMessage, LoadChatMessage, MessageBusService, OpenChatMessage, ServiceErrorMessage } from 'src/app/core/services/message-bus.service';\nimport { ChatSignalRService } from 'src/app/core/services/signalR/chat-signalr.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { VirtualAttentionService } from 'src/app/core/services/virtual-attention.service';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { ClinicConcept } from '../../models/cdr/clinic-concept.model';\nimport { DialogData } from '../../models/dialog-data.model';\nimport { FormComponentData } from '../../models/people/form-control.model';\nimport { FormConfiguration } from '../../models/people/form.model';\nimport { UserPerson } from '../../models/people/user-person.model';\nimport { VirtualAttention } from '../../models/process/virtual-attention.model';\nimport { ConfirmDialogComponent } from '../dialogs/confirm-dialog/confirm-dialog.component';\nimport { GoogleAnalyticsService } from 'src/app/core/services/google-analytics.service';\n\n@Component({\n selector: 'app-select-symptoms',\n templateUrl: './select-symptoms.component.html',\n styleUrls: ['./select-symptoms.component.css'],\n encapsulation: ViewEncapsulation.None,\n providers: [ChatSignalRService]\n})\n@ComponentLookup('SelectSymptomsComponent')\nexport class SelectSymptomsComponent implements OnInit, OnDestroy, IControlComponent {\n private ngUnsubscribe = new Subject();\n data: FormComponentData;\n selectable = true;\n removable = true;\n addOnBlur = true;\n separatorKeysCodes: number[] = [ENTER, COMMA];\n symptomCtrl = new FormControl();\n filteredSymptoms$: Observable;\n frequentSymptoms: ClinicConcept[] = [];\n symptoms: ClinicConcept[] = [];\n selectedFrequentSymptoms: ClinicConcept[] = [];\n existsResults: boolean = false;\n dropdownAbovePosition: boolean = false;\n autoCompleteOpen = false;\n virtualAttention : VirtualAttention;\n loaded = false;\n loggedUser: UserPerson; \n hasAgentMessage = false;\n virtualAttentionFinished = false;\n\n @Input() parentData: FormComponentData;\n\n @ViewChild('symptomInput') symptomInput: ElementRef;\n @ViewChild('auto') matAutocomplete: MatAutocomplete;\n\n constructor(\n private clinicalConceptService: ClinicalConceptService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n public dialog: MatDialog,\n private translation: L10nTranslationService,\n private baseService: BaseService,\n private messageBusService: MessageBusService,\n private virtualAttentionService : VirtualAttentionService,\n private userService: UserService,\n private googleAnalyticsService: GoogleAnalyticsService,\n private signalRService: ChatSignalRService\n ) {\n this.filteredSymptoms$ = this.symptomCtrl.valueChanges\n .pipe(\n debounceTime(300),\n switchMap(value => this.clinicalConceptService.getSymptoms(value)\n .pipe(\n map(symptoms => {\n\n let filteredSymptoms = symptoms ? symptoms.filter(item => {\n let symptomSelectedIds = this.symptoms.map(s => s.id);\n return symptomSelectedIds.indexOf(item.id) === -1;\n }): [];\n\n this.existsResults = filteredSymptoms.length > 0;\n\n return filteredSymptoms;\n })\n )\n )\n );\n }\n\n ngOnInit(): void {\n if (!this.data)\n this.data = this.parentData;\n\n this.clinicalConceptService.getFrequentSymptoms()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(frequentSymptoms => {\n this.frequentSymptoms = frequentSymptoms;\n },\n (error : any)=> {\n this.showErrorDialog(); \n });\n\n let _this = this;\n setTimeout(function() {\n _this.checkActiveVirtualAttention();\n }, 10);\n \n // If the chat was cancelled\n this.messageBusService.onChatCancelled()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg => {\n this.virtualAttention = null as any;\n this.configureForm(true); \n });\n\n this.messageBusService.onChatLoaded()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(m => {\n this.hasAgentMessage = m.hasAgentMessage;\n });\n\n this.messageBusService.onOnVirtualRequestFinished()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(m => {\n this.virtualAttentionFinished = true;\n });\n\n this.userService.getUserPersonLoggedIn()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(logged => {\n if (logged) {\n this.loggedUser = logged; \n }\n }); \n }\n\n ngOnDestroy():void{\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n \n goToPastVirtualAttentions() {\n this.virtualAttentionFinished = false;\n this.virtualAttention = null as any;\n this.messageBusService.goToPastVirtualRequests();\n }\n\n checkActiveVirtualAttention() {\n // Get active virtual atenttion\n this.virtualAttentionService.getActive()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(va => {\n if (va) { \n this.configureForm();\n \n let msg = new LoadChatMessage();\n msg.idEtapaSolicitud = va.idEtapaSolicitud;\n this.messageBusService.loadChat(msg);\n\n this.messageBusService.openChat(new OpenChatMessage());\n }\n\n this.virtualAttention = va;\n\n // Send event to parent indicating that this control finish loading\n let event = new ComponentFinishLoadingMessage();\n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n\n this.loaded = true; \n }, \n (error : any)=> {\n this.showErrorDialog();\n\n this.loaded = true;\n }); \n }\n\n configureForm(showItems: boolean = false) {\n // Send form configuration event\n let config = new FormConfiguration();\n\n config.formId = this.data.idFormulario;\n config.showFormTitle = true;\n config.showFormSubtitle = showItems;\n config.showControlTitle = showItems;\n\n let msg = new FormConfigurationMessage();\n msg.config = config;\n\n this.messageBusService.setFormConfiguration(msg);\n }\n\n addSymptom(event: MatChipInputEvent): void {\n const input = event.input;\n const value = event.value;\n\n if ((value || '').trim()) {\n var currentSymptom = value.trim();\n\n if (this.symptoms.filter(s=> s.nombre.toLowerCase() == currentSymptom.toLowerCase()).length == 0) {\n let newSymptom = new ClinicConcept();\n newSymptom.nombre = currentSymptom;\n newSymptom.idTipoConcepto = 1866; // concepto = sintomas\n newSymptom.nombreTipoConcepto = \"Síntomas\";\n newSymptom.id = 0;\n newSymptom.idFuenteReferencia = 15;\n newSymptom.idTerminoReferencia = 0;\n\n this.symptoms.push(newSymptom);\n }\n }\n\n if (input) {\n input.value = '';\n }\n }\n\n addSymptomClick(){ \n let value = this.symptomCtrl.value;\n \n if ((value || '').trim()) {\n value = value.trim();\n\n if (this.symptoms.filter(s => s.nombre.toLowerCase() == value.toLowerCase()).length == 0) {\n let newSymptom = new ClinicConcept();\n newSymptom.nombre = value.trim();\n newSymptom.idTipoConcepto = 1866; // concepto = sintomas\n newSymptom.nombreTipoConcepto = \"Síntomas\";\n newSymptom.id = 0;\n newSymptom.idFuenteReferencia = 15;\n newSymptom.idTerminoReferencia = 0;\n \n this.symptoms.push(newSymptom);\n }\n }\n if (this.symptomCtrl.value) { \n //this.symptomCtrl.setValue(null);\n this.symptomInput.nativeElement.value = '';\n this.symptomInput.nativeElement.focus();\n }\n }\n\n removeSymptom(symptom: ClinicConcept): void{\n const index = this.symptoms.indexOf(symptom, 0);\n if (index > -1) {\n this.symptoms.splice(index, 1);\n }\n }\n\n selected(event: MatAutocompleteSelectedEvent): void {\n\n var currentSymptom = event.option.value;\n\n if (currentSymptom) {\n // remove if another one has the same name.\n var symptomName = currentSymptom.nombre.trim();\n\n this.symptoms = this.symptoms.filter(s=> s.nombre.toLowerCase() != symptomName.toLowerCase());\n\n this.symptoms.push(currentSymptom);\n }\n\n this.symptomInput.nativeElement.value = '';\n this.symptomCtrl.setValue(null);\n this.existsResults = false;\n }\n \n autocompleteOpened():void{\n\n if (this.matAutocomplete.panel && this.matAutocomplete.panel.nativeElement) {\n const parentPanelContainer = this.matAutocomplete.panel.nativeElement.parentNode;\n\n if(parentPanelContainer){\n const classList = parentPanelContainer.classList.value.split(' ');\n this.dropdownAbovePosition = classList.filter((c:string) => c == 'mat-autocomplete-panel-above').length > 0; \n }\n } \n\n this.autoCompleteOpen = true;\n }\n\n autocompleteClosed() {\n this.autoCompleteOpen = false;\n }\n\n isSelectedFrequentSymptom(frequentSymptom: ClinicConcept): boolean {\n const index = this.selectedFrequentSymptoms.indexOf(frequentSymptom);\n return index >= 0;\n }\n\n toggleFrequentSymptom(frequentSymptom: ClinicConcept): void {\n let index = this.selectedFrequentSymptoms.indexOf(frequentSymptom);\n\n if (index >= 0) {\n this.selectedFrequentSymptoms.splice(index, 1);\n } else {\n this.selectedFrequentSymptoms.push(frequentSymptom);\n }\n }\n\n onClickStartConsultation(): void {\n if(this.symptoms.length == 0 && this.selectedFrequentSymptoms.length == 0){\n this.openEmptySymptomsDialog();\n }\n else{\n this.openPoliciesDialog();\n }\n }\n\n private openPoliciesDialog() {\n let dialogData = new DialogData();\n dialogData.title = this.translation.translate(\"shared.selectSymptoms.policiesDialog.title\");\n dialogData.message = this.translation.translate(\"shared.selectSymptoms.policiesDialog.body\");\n dialogData.confirmText = this.translation.translate(\"shared.selectSymptoms.policiesDialog.confirmButtonText\");\n dialogData.cancelText = this.translation.translate(\"shared.selectSymptoms.policiesDialog.cancelButtonText\");\n\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\n data: dialogData\n });\n\n dialogRef.afterClosed().subscribe(acceptedPolicies => {\n if(acceptedPolicies) {\n this.startClinicalContact();\n }\n });\n }\n\n private openEmptySymptomsDialog() {\n let dialogData = new DialogData();\n dialogData.title = this.translation.translate(\"shared.selectSymptoms.emptySymptomsDialog.title\");\n dialogData.message = this.translation.translate(\"shared.selectSymptoms.emptySymptomsDialog.body\");\n dialogData.confirmText = this.translation.translate(\"shared.selectSymptoms.emptySymptomsDialog.confirmButtonText\");\n dialogData.showCancelButton = false;\n dialogData.colorConfirmButton = \"accent\";\n\n this.dialog.open(ConfirmDialogComponent, { data: dialogData });\n }\n\n private startClinicalContact(){\n\n let allSelectedSymptoms = this.symptoms.concat(this.selectedFrequentSymptoms.filter(s => this.symptoms.find(sy => sy.id == s.id) == null)); \n \n let idEmpresaDestinoConsultaVirtual = this.baseService.getDirectory().idEmpresaDestinoConsultaVirtual;\n let idEmpresaDestino = idEmpresaDestinoConsultaVirtual ? idEmpresaDestinoConsultaVirtual : this.baseService.getCompanyId();\n let idAreaSistemaDestinoConsultaVirtual = this.baseService.getDirectory().idAreaSistemaDestinoConsultaVirtual;\n let nombreEmisor = this.loggedUser.nombre + ' ' + this.loggedUser.apellido;\n let urlImagenEmisor = this.loggedUser.ubicacionLogo;\n let email = this.loggedUser.emailParticular;\n\n this.loaded = false;\n\n // Post user active so the user shows as online when the Virtual attention is created\n this.userService.postUserActive(idEmpresaDestino, -1).subscribe(() => {\n },\n error => {\n this.baseService.handleServiceError(error, \"Error posting user active\"); \n });\n\n this.virtualAttentionService.startVirtualAttention(\n idEmpresaDestino,\n idAreaSistemaDestinoConsultaVirtual,\n allSelectedSymptoms,\n nombreEmisor,\n urlImagenEmisor,\n email)\n .subscribe(\n idEtapaSolicitud => {\n this.selectedFrequentSymptoms = [];\n this.symptoms = [];\n\n // Get active virtual attention and load chat \n this.checkActiveVirtualAttention();\n\n this.googleAnalyticsService.sendEventInitVirtualConsultation();\n }, \n (error : any)=> {\n this.showErrorDialog();\n this.loaded = true;\n }\n ); \n }\n\n showErrorDialog() {\n let dialogData = new DialogData();\n dialogData.title = this.translation.translate(\"shared.selectSymptoms.errorDialog.title\");\n dialogData.message = this.translation.translate(\"shared.selectSymptoms.errorDialog.description\");\n dialogData.confirmText = this.translation.translate(\"shared.selectSymptoms.errorDialog.btnText\");\n dialogData.showCancelButton = false;\n dialogData.colorConfirmButton = \"accent\";\n\n this.dialog.open(ConfirmDialogComponent, { data: dialogData });\n } \n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"orderBy\"\r\n})\r\nexport class OrderByPipe implements PipeTransform { \r\n\r\n transform(array: any, field: string, order?: string): any[] {\r\n if (!Array.isArray(array)) {\r\n return array;\r\n }\r\n\r\n array.sort((a: any, b: any) => {\r\n let result: number;\r\n\r\n if (a[field] < b[field]) {\r\n result = -1;\r\n } else if (a[field] > b[field]) {\r\n result = 1;\r\n } else {\r\n result = 0;\r\n }\r\n\r\n return order == \"desc\"? result * -1 : result;\r\n });\r\n\r\n return array;\r\n }\r\n}","","import { Component, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { MediaChange, MediaObserver } from '@angular/flex-layout';\nimport { Router } from '@angular/router';\nimport { Observable, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { Link } from '../../models/people/link.model';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'menu-link',\n templateUrl: './menu-link.component.html',\n styleUrls: ['./menu-link.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class MenuLinkComponent implements OnChanges, OnInit, OnDestroy {\n ID_AREA_SISTEMA_MIS_CITAS: number = 3459;\n ID_AREA_SISTEMA_MI_SALUD: number = 4240;\n\n expanded: boolean = true;\n hasOptions = false;\n showNotification: boolean = false;\n notificationValue: number = 0;\n private ngUnsubscribe = new Subject();\n\n @Input() link: Link;\n isMobile$: Observable;\n\n constructor(\n private router: Router,\n private baseService: BaseService,\n private mediaObserver: MediaObserver,\n private layoutService: LayoutService,\n private messageBusService: MessageBusService,\n private appointmentService: AppointmentService,\n private authService: AuthService,\n @Inject(L10N_LOCALE) public locale: L10nLocale, \n public dialog: MatDialog\n ) {\n this.isMobile$ = this.mediaObserver\n .asObservable()\n .pipe(\n map((changes) =>\n changes.some(\n (change: MediaChange) => change.mqAlias === \"lt-md\"\n )\n )\n );\n\n this.messageBusService.onToggleBottomSheetSubject()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onToggleBottomSheetSubjectNext.bind(this));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.link) {\n if (this.link.idAreaSistema == this.ID_AREA_SISTEMA_MI_SALUD) {\n this.expanded = false;\n this.hasOptions = false;\n } else {\n this.hasOptions = this.link.subMenu?.length > 0;\n }\n } \n }\n\n private onToggleBottomSheetSubjectNext(args: { action: string, component?: any}) {\n const menuItem: Element | null = document.querySelector('.mi-salud > a');\n if (args.action == 'open') {\n menuItem?.classList.add('active', 'open');\n } else\n menuItem?.classList.remove('active', 'open');\n }\n\n ngOnInit(): void {\n this.messageBusService.onLoginCompleted()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg => {\n if (this.link.idAreaSistema == this.ID_AREA_SISTEMA_MIS_CITAS) {\n this.getAppointments();\n }\n }\n );\n\n if (!this.authService.isLoggedIn()) {\n return;\n } \n\n if (this.link.idAreaSistema == this.ID_AREA_SISTEMA_MIS_CITAS) {\n this.getAppointments();\n } \n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n getAppointments() {\n this.appointmentService.getAppointmentsWithCache(this.locale.language)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n appointments => {\n this.showNotification = appointments.cantidadCitasFuturas > 0;\n this.notificationValue = appointments.cantidadCitasFuturas;\n } \n );\n\n this.messageBusService.onAppointmentChangeReceived()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n appointment => {\n this.showNotification = appointment.cantidadCitasFuturas > 0;\n this.notificationValue = appointment.cantidadCitasFuturas;\n }\n ); \n }\n\n onLinkSelected(link:Link): void {\n const isMiSalud = this.link.idAreaSistema == this.ID_AREA_SISTEMA_MI_SALUD;\n if (isMiSalud || !link.subMenu?.length) {\n let linkUrl = link.identificadorUrl;\n \n // For search result lets add the current URL to the paremerters\n if (link.identificadorUrl.startsWith(\"busqueda\")) {\n linkUrl += (linkUrl.indexOf(\"?\") > 0? \"&\" : \"?\") + \"rUrl=\" + this.router.url;\n }\n \n this.baseService.goToRoute(linkUrl);\n this.layoutService.postNavigate();\n }\n\n if (link.subMenu?.length && !isMiSalud) {\n this.expanded = !this.expanded;\n }\n }\n\n isLinkActive(link:Link){ \n let url = this.router.url.substr(1).split(\"/\")[0].split(\"?\")[0];\n\n if (!url)\n url = \"inicio\";\n\n return this.baseService.getBasePath(link.identificadorUrl) == url;\n }\n\n isSublinkActive(link:Link){\n let url = this.router.url.substr(1).split(\"/\")[0].split(\"?\")[0];\n\n if (!url)\n url = \"inicio\";\n\n return link.subMenu && link.subMenu.length > 0\n ? link.subMenu.filter(sublink => this.baseService.getBasePath(sublink.identificadorUrl) == url).length > 0\n : false;\n }\n\n getTooltip(link:Link) {\n return link.tooltip? link.tooltip : \"\";\n }\n\n getIconName(link:Link) {\n let isLinkActive = this.isLinkActive(link);\n let iconName = link.nombreIcono;\n\n if (isLinkActive) {\n switch(link.nombreIcono) {\n case \"PHR-inicio-1\":\n iconName = \"PHR-inicio-2\";\n break;\n case \"PHR-date-2\":\n iconName = \"PHR-date-1\";\n break;\n case \"PHR-buscar\":\n iconName = \"PHR-buscar-2\";\n break;\n case \"fav\":\n iconName = \"favfill\";\n break;\n }\n }\n\n return iconName;\n }\n\n}\n","
\n
\n

{{ 'menu.title' | translate:locale.language }}

\n \n \n {{ 'menu.backLinkText' | translate:locale.language }}\n \n
\n \n \n
\n \n \n \n \n \n {{ (user$|async)?.nombre + ' ' + (user$|async)?.apellido }}\n keyboard_arrow_down\n \n \n\n \n \n \n
\n \n
\n \n
\n
\n\n \n\n \n \n \n \n \n
\n","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MediaChange, MediaObserver } from '@angular/flex-layout';\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\nimport { Observable, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { Link } from '../../models/people/link.model';\nimport { UserPerson } from '../../models/people/user-person.model';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\n\n@Component({\n selector: 'app-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('MenuComponent')\nexport class MenuComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n urlBack:string;\n links: Link[];\n isMobile$: Observable;\n user$: Observable; \n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private mediaObserver: MediaObserver,\n private appStorageService: AppStorageService,\n private baseService: BaseService,\n private translation: L10nTranslationService,\n private layoutService: LayoutService,\n private userService: UserService,\n private authService: AuthService\n ) {\n\n this.translation.onChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe({\n next: (locale: L10nLocale) => {\n\n let menuLanguage = this.appStorageService.getItem(STORAGE.MENU_LANGUAGE);\n\n if(locale.language != menuLanguage)\n this.populateLinks(locale.language);\n }\n });\n\n this.translation.onError()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe({\n next: (error: any) => {\n if (error) console.log(error);\n }\n });\n\n this.isMobile$ = this.mediaObserver\n .asObservable()\n .pipe(\n map((changes) =>\n changes.some(\n (change: MediaChange) => change.mqAlias === \"lt-md\"\n )\n )\n );\n }\n\n ngOnInit(): void {\n this.links = this.appStorageService.getItemSession(STORAGE.MENU, true);\n this.urlBack = this.baseService.getBackUrlCompany();\n\n this.user$ = this.userService.getUserPersonLoggedIn(); \n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n hideUrlBack(){\n return !this.urlBack;\n }\n\n onBackClick() {\n // Get directory\n let directory = this.baseService.getDirectory();\n\n // Logout\n this.authService.logout();\n\n // Redirect to directory corporate url\n window.location.href = directory.urlCorporativo;\n }\n\n populateLinks(language: string){\n this.layoutService.getMenuLinks(language)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(data => {\n if (!data || data.length == 0)\n return;\n \n this.appStorageService.setItemSession(STORAGE.MENU, data, true);\n this.links = data;\n\n this.appStorageService.setItem(STORAGE.MENU_LANGUAGE, language);\n });\n }\n}\n","
\n
\n \n
\n
{{ 'shared.myHealth.title' | translate:locale.language }}
\n \n \n \n
\n
\n
\n
\n {{user.nombre}}\n {{'shared.myHealth.relationship1' | translate:locale.language}}\n
\n
\n \n
\n \n \n
\n
\n
\n
\n {{dependent.nombre.toLowerCase()}}\n {{'shared.myHealth.relationship2' | translate:locale.language: { relacion: dependent.relationshipName } }}\n
\n
\n \n
\n \n \n
\n
\n \n
\n {{'shared.myHealth.addFamily' | translate:locale.language}}\n
\n
\n
\n
\n
","import { Component, Inject, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { Link } from '../../models/people/link.model';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { Subject, zip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { UserPerson } from '../../models/people/user-person.model';\nimport { ProfileMenuDependentModel } from '../menu/profile/profile-menu.component';\nimport { SystemAreas } from '../../enums/system-areas.enum';\nimport { UtilsService } from 'src/app/core/services/utils.service';\nimport { ConfigurationPageDialogModel } from '../dialogs/route-dialog/route-dialog.component';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { Platform } from '@angular/cdk/platform';\nimport { ActivatedRoute, ParamMap, Params, Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { Dependent } from '../../models/people/dependent.model';\nimport { MatTabGroup } from '@angular/material/tabs';\n\n@Component({\n selector: 'app-my-health',\n templateUrl: './my-health.component.html',\n styleUrls: ['./my-health.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('MyHealthComponent')\nexport class MyHealthComponent implements OnDestroy, OnInit {\n @ViewChild('tabGroup') tabGroup!: MatTabGroup;\n user: UserPerson;\n dependents: ProfileMenuDependentModel[] = [];\n\n loading: boolean;\n loadingDependents: boolean;\n selectedTabIndex: number = 0;\n\n items: Link[] = [];\n private ngUnsubscribe = new Subject();\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private appStorageService: AppStorageService,\n private baseService: BaseService,\n private userService: UserService,\n private utilsService: UtilsService,\n private routeDialogService: RouteDialogService,\n private messageBusService: MessageBusService,\n private layoutService: LayoutService,\n private router: Router,\n private route: ActivatedRoute,\n public platform: Platform,\n ) { }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngOnInit(): void {\n const links: Link[] = this.appStorageService.getItemSession(STORAGE.MENU, true);\n const link = links.find(x => x.idAreaSistema == SystemAreas.MI_SALUD);\n this.items = link?.subMenu || [];\n\n this.loadData();\n\n this.messageBusService.onRefreshProfileMenu()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(m => {\n this.loadData();\n }\n );\n }\n\n onLinkSelected(link:Link, patientId?: number){\n let linkUrl = link.identificadorUrl;\n\n if (patientId){\n linkUrl += `?p=${patientId}`;\n }\n \n this.baseService.goToRoute(linkUrl);\n this.layoutService.postNavigate();\n }\n\n onAddFamily(event:any){\n event.stopPropagation();\n \n let routeDialogModel = new ConfigurationPageDialogModel();\n routeDialogModel.route = \"configuracion/dependiente/edicion/0\";\n routeDialogModel.state = null;\n\n this.routeDialogService.openDialog(routeDialogModel);\n }\n\n setTabSelected(event: any){\n if(this.loading)\n return;\n\n if(event.index == (this.dependents.length + 1)){\n return;\n }\n else{\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: { p: event.index == 0 ? null : this.dependents[event.index - 1].idPersona },\n queryParamsHandling: 'merge'\n });\n }\n }\n\n private loadData(){\n this.loading = true;\n\n const _getUserLoggedIn$ = this.userService.getUserPersonLoggedIn();\n const _getUserDependents$ = this.userService.getUserDependents();\n const _queryParams$ = this.route.queryParamMap;\n\n zip(_getUserLoggedIn$, _getUserDependents$, _queryParams$)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(([user, dependents, paramMap])=>{ \n this.loadUserData(user);\n this.loadDepedentsData(dependents);\n this.configTabIndexByParam(paramMap);\n\n this.loading = false;\n });\n }\n\n private loadUserData(user:UserPerson | null){\n if(!user)\n return;\n\n this.user = user;\n\n let birthDate = this.user.fechaNacimiento \n ? new Date(this.user.fechaNacimiento) \n : null;\n\n if (!this.user.ubicacionLogo)\n this.user.ubicacionLogo = this.utilsService.getPersonDefaultAvatarUrl(birthDate, this.user.sexo); \n }\n\n private loadDepedentsData(dependents: Dependent[]){\n this.dependents = dependents as ProfileMenuDependentModel[];\n\n // Order by age desc\n this.dependents = this.dependents.sort((d1: ProfileMenuDependentModel, d2: ProfileMenuDependentModel) => {\n let getTime = (date: Date) => {return date != null ? new Date(date).getTime() : 0;};\n \n return getTime(d1.fechaNacimiento) - getTime(d2.fechaNacimiento);\n });\n\n this.dependents.forEach(dependent => {\n dependent.fullName = dependent.nombre + \" \" + dependent.apellido; \n dependent.relationshipName = this.userService.getDependentRelationshipName(dependent);\n\n let birthDate = dependent.fechaNacimiento\n ? new Date(dependent.fechaNacimiento) \n : null;\n\n if (!dependent.ubicacionLogo)\n dependent.ubicacionLogo = this.utilsService.getPersonDefaultAvatarUrl(birthDate, dependent.sexo);\n });\n }\n\n private configTabIndexByParam(paramMap:ParamMap){\n\n const idPersona = paramMap.get('p');\n\n if(!idPersona)\n return;\n\n const indexDependent = this.dependents.findIndex(d => d.idPersona === +idPersona);\n\n if(indexDependent != -1){\n this.selectedTabIndex = indexDependent + 1;\n }\n }\n}\n","
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import { Component, Inject, OnDestroy, OnInit, Type, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { Link } from 'src/app/shared/models/people/link.model';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { UtilsService } from 'src/app/core/services/utils.service';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { Breakpoints, MediaMatcher } from '@angular/cdk/layout';\r\nimport { ProfileMenuComponent } from '../profile/profile-menu.component';\r\nimport { MyHealthComponent } from '../../my-health/my-health.component';\r\n\r\n@Component({\r\n selector: 'app-cliniweb-menu',\r\n templateUrl: './cliniweb-menu.component.html',\r\n styleUrls: ['./cliniweb-menu.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('CliniwebMenuComponent')\r\nexport class CliniwebMenuComponent implements OnInit, OnDestroy {\r\n private ngUnsubscribe = new Subject();\r\n private cargando = false;\r\n ID_AREA_SISTEMAS_MI_SALUD = 4240;\r\n links: Link[];\r\n loggedInUser: UserPerson = null as any;\r\n profileMenuOpen: boolean = false\r\n miSaludMenuOpen = false;\r\n @ViewChild(MatMenuTrigger) profileFloatingMenuTrigger: MatMenuTrigger;\r\n\r\n constructor(\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private appStorageService: AppStorageService,\r\n private translation: L10nTranslationService,\r\n private layoutService: LayoutService,\r\n private userService: UserService,\r\n private utilsService: UtilsService,\r\n private messageBusService: MessageBusService,\r\n private mediaMatcher: MediaMatcher\r\n ) {\r\n\r\n this.translation.onChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: (locale: L10nLocale) => {\r\n\r\n let menuLanguage = this.appStorageService.getItem(STORAGE.MENU_LANGUAGE);\r\n\r\n if(locale.language != menuLanguage)\r\n this.populateLinks(locale.language);\r\n }\r\n });\r\n\r\n this.translation.onError()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: (error: any) => {\r\n if (error) console.log(error);\r\n }\r\n });\r\n\r\n this.messageBusService.onLoginCompleted()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(msg => {\r\n if (msg.user) {\r\n this.loadProfile();\r\n } \r\n });\r\n\r\n this.messageBusService.onToggleBottomSheetSubject()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(this.onToggleBottomSheetSubjectNext.bind(this));\r\n }\r\n\r\n private onToggleBottomSheetSubjectNext(args: { action: string, component?: any}) {\r\n if (this.cargando) return;\r\n this.cargando = true;\r\n this.miSaludMenuOpen = args.action == 'open' && args.component === MyHealthComponent;\r\n this.profileMenuOpen = args.action === 'open' && args.component === ProfileMenuComponent;\r\n setTimeout(() => this.cargando = false, 100);\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.links = this.appStorageService.getItemSession(STORAGE.MENU, true);\r\n this.links = this.links.map(x => {\r\n const {idAreaSistema, subMenu, ...resto} = x;\r\n return x.idAreaSistema == this.ID_AREA_SISTEMAS_MI_SALUD ? ({...resto, idAreaSistema, subMenu: []}) : x\r\n });\r\n\r\n this.userService.getUserPersonLoggedIn()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(p => {\r\n if (!p)\r\n return;\r\n \r\n this.loggedInUser = p;\r\n\r\n if (!this.loggedInUser.ubicacionLogo) {\r\n let feNacimiento = this.loggedInUser.fechaNacimiento? new Date(this.loggedInUser.fechaNacimiento) : null;\r\n this.loggedInUser.ubicacionLogo = this.utilsService.getPersonDefaultAvatarUrl(feNacimiento, this.loggedInUser.sexo);\r\n }\r\n\r\n setTimeout(() => {\r\n this.profileFloatingMenuTrigger.menuOpened\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.profileMenuOpen = true;\r\n this.layoutService.overflowBodyDisabled();\r\n });\r\n this.profileFloatingMenuTrigger.menuClosed\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.profileMenuOpen = false;\r\n this.layoutService.overflowBodyEnabled();\r\n });\r\n }, 100);\r\n \r\n }); \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n loadProfile(){\r\n this.userService.getUserPersonLoggedIn().subscribe(p => {\r\n if (!p)\r\n return;\r\n \r\n this.loggedInUser = p;\r\n\r\n if (!this.loggedInUser.ubicacionLogo) {\r\n let feNacimiento = this.loggedInUser.fechaNacimiento? new Date(this.loggedInUser.fechaNacimiento) : null;\r\n this.loggedInUser.ubicacionLogo = this.utilsService.getPersonDefaultAvatarUrl(feNacimiento, this.loggedInUser.sexo);\r\n }\r\n });\r\n }\r\n\r\n populateLinks(language: string){\r\n this.layoutService.getMenuLinks(language).subscribe(data => {\r\n if (!data || data.length == 0)\r\n return;\r\n \r\n this.appStorageService.setItemSession(STORAGE.MENU, data, true);\r\n this.links = data;\r\n\r\n this.appStorageService.setItem(STORAGE.MENU_LANGUAGE, language);\r\n });\r\n }\r\n\r\n openProfile(event: MouseEvent): void {\r\n if (this.mediaMatcher.matchMedia(Breakpoints.Handset)) {\r\n this.messageBusService.sendToggleBottomSheetSubject({action: 'open', component: ProfileMenuComponent});\r\n } else {\r\n this.profileFloatingMenuTrigger.openMenu();\r\n }\r\n event.stopPropagation();\r\n }\r\n \r\n closeProfileMenu() {\r\n this.profileMenuOpen = false;\r\n\r\n this.profileFloatingMenuTrigger.closeMenu();\r\n }\r\n \r\n}\r\n","
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
{{getChatDate(chatDate, true) | uppercase }}
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {{ getChatDate(messageWrapper.message.fechaCreacion) }}\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {{messageWrapper.message.fechaCreacion | date:'shortTime' }}\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n {{chatWrapper.getDoctorName()}} \r\n
\r\n \r\n
\r\n {{messageWrapper.message.fechaCreacion | date:'shortTime' }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { ChatService } from 'src/app/core/services/chat-service';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { ChatConversacionMessage, ChatConversacionMessageType } from 'src/app/shared/models/people/chat-conversation.model';\r\nimport { VirtualAttention } from 'src/app/shared/models/process/virtual-attention.model';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { UtilsService } from 'src/app/core/services/utils.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'chat-history-dialog',\r\n templateUrl: './chat-history-dialog.component.html',\r\n styleUrls: ['./chat-history-dialog.component.css'] \r\n})\r\nexport class ChatHistoryDialogComponent implements OnInit, OnDestroy {\r\n chatDate: Date;\r\n timeElapsed: string;\r\n messagesPageSize = 30;\r\n chatWrapper : ChatHistoryWrapper;\r\n etapaSolicitudId: number;\r\n loggedUser: UserPerson; \r\n virtualAttention: VirtualAttention; \r\n loading = false;\r\n\r\n //subscribes\r\n private ngUnsubscribe = new Subject();\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\r\n private mdDialogRef: MatDialogRef,\r\n private baseService: BaseService, \r\n private chatService: ChatService,\r\n private userService: UserService,\r\n private utilsService : UtilsService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\r\n this.virtualAttention = this.baseService.parseObject(data.data);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loading = true;\r\n this.loadChat(this.virtualAttention.idEtapaSolicitud);\r\n }\r\n\r\n ngOnDestroy():void{\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n onCloseClick() {\r\n this.mdDialogRef.close();\r\n }\r\n\r\n loadChat(idEtapaSolicitud: number) {\r\n \r\n // Check if the chat was already initialized\r\n if (this.etapaSolicitudId == idEtapaSolicitud && this.chatWrapper && this.chatWrapper.initialized)\r\n return; \r\n\r\n this.etapaSolicitudId = idEtapaSolicitud;\r\n\r\n // Get current user\r\n this.userService.getUserPersonLoggedIn()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(logged => {\r\n if (logged) {\r\n this.loggedUser = logged;\r\n\r\n if (this.virtualAttention) {\r\n \r\n this.chatWrapper = new ChatHistoryWrapper(this.loggedUser, this.virtualAttention);\r\n /* this.chatWrapper.min = this.min;\r\n this.chatWrapper.hour = this.hour;*/\r\n this.chatWrapper.initialized = true;\r\n\r\n // Load chat messages\r\n this.loadChatMessages(this.virtualAttention.idSolicitud, 0);\r\n }\r\n }},\r\n error => {\r\n this.baseService.handleServiceError(error, \"Error getting past appointments\");\r\n }\r\n );\r\n\r\n // Load chat\r\n /*this.chatService.getByEtapaSolicitudId(this.etapaSolicitudId).subscribe(chat => {\r\n this.chat = chat; \r\n });*/\r\n\r\n }; \r\n\r\n onScrollUp() {\r\n // Get message count\r\n let messageCount = this.chatWrapper.messages.length;\r\n \r\n // Load more messages\r\n this.loadChatMessages(this.virtualAttention.idSolicitud, messageCount, true);\r\n\r\n this.loading = true;\r\n }\r\n\r\n scrollBottom() {\r\n let _this = this;\r\n let el = window.document.getElementsByClassName(\"chat-history-msgs-container\")[0];\r\n\r\n if (el)\r\n setTimeout(function() {\r\n _this.utilsService.scrollBottomWithAnimation(el); \r\n }, 100); \r\n }\r\n \r\n loadChatMessages(idSolicitud: number, from: number, upDirection = false) {\r\n \r\n this.chatService.getChatMessages(idSolicitud, from, this.messagesPageSize).subscribe(messages => {\r\n \r\n if (messages.length > 0) {\r\n this.chatDate = messages[0].fechaCreacion;\r\n this.timeElapsed = \"16 hr. 20 min.\";\r\n }\r\n\r\n this.chatWrapper.addMessages(messages, true, upDirection);\r\n this.scrollBottom();\r\n this.loading = false;\r\n },\r\n error => { \r\n this.baseService.handleServiceError(error, \"Error getting chat messages\");\r\n });\r\n }\r\n \r\n getChatDate(date: Date, includeYear: boolean = false) {\r\n return this.baseService.getBasicDateFormat(date, includeYear);\r\n }\r\n}\r\n\r\nexport class ChatHistoryWrapper {\r\n virtualAttention: VirtualAttention;\r\n messages: ChatHistoryMessageWrapper[] = []; \r\n user: UserPerson; \r\n hour: string;\r\n min: string;\r\n minimized: boolean = true;\r\n unreadMessagesCount: number = 0;\r\n loading = false;\r\n initialized = false;\r\n connectionLost = false;\r\n\r\n constructor(user: UserPerson, va: VirtualAttention) {\r\n this.user = user;\r\n this.virtualAttention = va;\r\n this.messages = [];\r\n }\r\n\r\n addMessages(messages: ChatConversacionMessage[], avoidUnreadCountUpdate: boolean = false, upDirection: boolean = false) { \r\n \r\n if (!messages)\r\n return;\r\n\r\n // If we are scrolling up, the service will alway return first the oldest message\r\n // So in order to add it one by one (at the top) we need to revert the array\r\n if (upDirection)\r\n messages = messages.reverse();\r\n\r\n // Check if the msg was already added (when adding the msg the same one can came from signalR)\r\n for(let i = 0; i < messages.length; i++) {\r\n let msg = null;\r\n\r\n if (messages[i].id) {\r\n msg = this.messages.find(m => m.message.id == messages[i].id);\r\n }\r\n \r\n if (!msg) {\r\n\r\n // If the chat is minimized when adding the messages, then add this to the unread counter\r\n if (this.minimized && !avoidUnreadCountUpdate)\r\n this.unreadMessagesCount += 1;\r\n\r\n if (upDirection)\r\n this.messages.unshift(new ChatHistoryMessageWrapper(this.user, messages[i]));\r\n else\r\n this.messages.push(new ChatHistoryMessageWrapper(this.user, messages[i]));\r\n } \r\n }\r\n }\r\n\r\n getDoctorName() {\r\n return this.virtualAttention.nombreResponsableServicio? \r\n this.virtualAttention.nombreResponsableServicio.toLowerCase():\r\n \"\";\r\n }\r\n\r\n getChatTime() {\r\n let startTime = new Date(this.virtualAttention.fechaInicio).getTime();\r\n let now = new Date().getTime();\r\n let timeDiffInMin = (now - startTime) / (1000 * 60);\r\n\r\n if (timeDiffInMin < 60)\r\n return Math.floor(timeDiffInMin) + \" \" + this.min;\r\n else\r\n return Math.floor(timeDiffInMin / 60) + \" \" + this.hour;\r\n }\r\n\r\n isUserBlockMessage(currentMessageIndex: number) {\r\n if (currentMessageIndex == 0)\r\n return false;\r\n\r\n // Get current and previous msg\r\n let previous = this.messages[currentMessageIndex - 1];\r\n let current = this.messages[currentMessageIndex];\r\n\r\n // If we need to show the date stamp for this message then it is a new group\r\n if (this.showDateStamp(currentMessageIndex))\r\n return false;\r\n\r\n // We will only show user msg together if the previous msg was an user message and current is as well\r\n if (previous.isUserMessage() && current.isUserMessage())\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n isAgentBlockMessage(currentMessageIndex: number) {\r\n if (currentMessageIndex == 0)\r\n return false;\r\n\r\n // Get current and previous msg\r\n let previous = this.messages[currentMessageIndex - 1];\r\n let current = this.messages[currentMessageIndex];\r\n\r\n // If we need to show the date stamp for this message then it is a new group\r\n if (this.showDateStamp(currentMessageIndex))\r\n return false;\r\n\r\n // We will only show agent msg together if the previous msg was an agent message and current is as well\r\n if (previous.isAgentMessage() && current.isAgentMessage())\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n showDateStamp(currentMessageIndex: number) {\r\n if (currentMessageIndex == 0)\r\n return true;\r\n\r\n // Get current and previous msg\r\n let previous = new Date(this.messages[currentMessageIndex - 1].message.fechaCreacion);\r\n let current = new Date(this.messages[currentMessageIndex].message.fechaCreacion);\r\n \r\n // If the days are differents, then show the date time stampt\r\n if (previous.getDate() != current.getDate())\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n showMessageTime(currentMessageIndex: number) {\r\n // Only show the time for the last message\r\n return currentMessageIndex === (this.messages.length - 1);\r\n }\r\n\r\n getFirstMessage() : ChatConversacionMessage {\r\n return this.messages[0].message;\r\n }\r\n\r\n hasAgentMessages() {\r\n return this.messages.find(m => m.isAgentMessage()) != null;\r\n }\r\n}\r\n\r\nexport class ChatHistoryMessageWrapper {\r\n message: ChatConversacionMessage;\r\n user: UserPerson; \r\n\r\n constructor(user: UserPerson, message: ChatConversacionMessage) {\r\n this.user = user;\r\n this.message = message;\r\n }\r\n\r\n isUserMessage() {\r\n return this.message.idEmisor == this.user.id && this.message.tipo == ChatConversacionMessageType.PersonMessaje\r\n }\r\n\r\n isAgentMessage() {\r\n return this.message.idEmisor != this.user.id && this.message.tipo == ChatConversacionMessageType.PersonMessaje;\r\n }\r\n}","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
{{ 'shared.pastVirtualConsultations.text1' | translate:locale.language }}
\r\n
{{ 'shared.pastVirtualConsultations.text2' | translate:locale.language }}
\r\n
\r\n {{ 'shared.pastVirtualConsultations.text3' | translate:locale.language }}\r\n
\r\n \r\n
\r\n
{{ 'shared.pastVirtualConsultations.text4' | translate:locale.language }}
\r\n
{{ getStateName(item.consultation) }}
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n
{{ 'shared.pastVirtualConsultations.text5' | translate:locale.language }}
\r\n
\r\n {{ 'shared.pastVirtualConsultations.text6' | translate:locale.language }}\r\n {{ 'shared.pastVirtualConsultations.text7' | translate:locale.language }}\r\n
\r\n
\r\n\r\n
\r\n \r\n
","import { AfterViewInit, Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TimelineWrapperItem, TimelineWrapperItemType, TimelineWrapperSkeletonItem } from '../../timeline-list/timeline-list.component';\r\nimport { VirtualAttention } from 'src/app/shared/models/process/virtual-attention.model';\r\nimport { VirtualAttentionService } from 'src/app/core/services/virtual-attention.service';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { ChatHistoryDialogComponent } from '../../dialogs/chat-history-dialog/chat-history-dialog.component';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-past-virtual-consultation-container',\r\n templateUrl: './past-virtual-consultation.component.html',\r\n styleUrls: ['./past-virtual-consultation.component.css']\r\n})\r\nexport class PastVirtualConsultationComponent implements IControlComponent, OnInit, OnDestroy, AfterViewInit {\r\n private ngUnsubscribe = new Subject();\r\n data: FormComponentData; \r\n consultations: TimelineVirtualAttention[]; \r\n completedStateName: string;\r\n notCompletedStateName: string;\r\n cancelledStateName: string;\r\n loading = true;\r\n skeletonItems: TimelineWrapperSkeletonItem[] = [new TimelineWrapperSkeletonItem(), new TimelineWrapperSkeletonItem()];\r\n\r\n ngAfterViewInit() { \r\n } \r\n\r\n constructor(\r\n private virtualAttentionService: VirtualAttentionService, \r\n private translation: L10nTranslationService, \r\n private baseService: BaseService,\r\n public dialog: MatDialog,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\r\n }\r\n \r\n ngOnInit(): void {\r\n this.translation.onChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: () => {\r\n this.completedStateName = this.translation.translate('shared.pastAppointments.text2'); \r\n this.notCompletedStateName = this.translation.translate('shared.pastAppointments.text3'); \r\n this.cancelledStateName = this.translation.translate('shared.pastAppointments.text7'); \r\n }\r\n });\r\n\r\n this.loading = true;\r\n\r\n this.virtualAttentionService.getPastAttentions()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(consultations =>{\r\n this.consultations = consultations.map(a => new TimelineVirtualAttention(a));\r\n\r\n this.loading = false;\r\n },\r\n error => {\r\n this.loading = false;\r\n\r\n this.baseService.handleServiceError(error, \"Error getting past virtual consultations\"); \r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n appointmentTrackBy(index : number, item: TimelineVirtualAttention){\r\n return item.consultation.idSolicitud; \r\n } \r\n\r\n getAvatarUrl(item : VirtualAttention) {\r\n return item.data? item.data.urlAvatarPaciente : \"\";\r\n }\r\n\r\n getStateClass(item : VirtualAttention) {\r\n if (item.idEstado == 7)\r\n return \"cancelled\"; \r\n else \r\n return \"completed\";\r\n }\r\n\r\n getStateName(item : VirtualAttention) {\r\n if (item.idEstado == 7)\r\n return this.cancelledStateName; \r\n else \r\n return this.completedStateName;\r\n }\r\n\r\n isIncomplete(item : VirtualAttention) {\r\n return item.idEstado == 7;\r\n }\r\n\r\n openChatHistory(virtualAttention: VirtualAttention) {\r\n\r\n let dialogData = new DialogData();\r\n dialogData.data = virtualAttention;\r\n\r\n const dialogRef = this.dialog.open(ChatHistoryDialogComponent, {\r\n data: dialogData,\r\n panelClass: 'chat-history-modal-container'\r\n //autoFocus: false //disable auto focus in dialog\r\n });\r\n }\r\n\r\n navigateToVirtualConsultationPage() {\r\n window.location.reload();\r\n }\r\n}\r\n\r\nexport class TimelineVirtualAttention implements TimelineWrapperItem { \r\n consultation : VirtualAttention;\r\n\r\n constructor(consultation : VirtualAttention) {\r\n this.consultation = consultation;\r\n }\r\n \r\n getGroupKey() : number {\r\n return new Date(this.consultation.fechaInicio).getFullYear();\r\n }\r\n\r\n getDate() : Date {\r\n return new Date(this.consultation.fechaInicio);\r\n }\r\n\r\n getItemType(): TimelineWrapperItemType{\r\n return this.consultation.idEstado == 7 \r\n ? TimelineWrapperItemType.CANCELLED\r\n : TimelineWrapperItemType.CHECKED;\r\n }\r\n\r\n showTime():boolean{\r\n return true;\r\n }\r\n\r\n showDate():boolean{\r\n return true;\r\n }\r\n}","
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{ 'shared.virtualConsultatiosTabs.text1' | translate:locale.language }} \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n {{ 'shared.virtualConsultatiosTabs.text2' | translate:locale.language }} \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ComponentLookup } from '../../../decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-virtual-consultation-tabs',\r\n templateUrl: './virtual-consultation-tabs.component.html',\r\n styleUrls: ['./virtual-consultation-tabs.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('VirtualConsultationTabsComponent')\r\nexport class VirtualConsultationTabsComponent implements IControlComponent, OnInit, OnDestroy {\r\n data: FormComponentData;\r\n\r\n private ngUnsubscribe = new Subject();\r\n selectedTabIndex: number;\r\n constructor( \r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private messageBusService: MessageBusService) {\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n this.messageBusService.onGoToPastVirtualRequests()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((result) => {\r\n // go to past virtual requests\r\n this.selectedTabIndex = 1;\r\n });\r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n}","export class ClinicHistoryConfiguration {\n tabs: TabClinicHistoryConfiguration[];\n}\n\nexport class TabClinicHistoryConfiguration{\n titulo: string;\n componentes: string;\n componentesArray: string[];\n\n constructor(obj:TabClinicHistoryConfiguration){\n this.titulo = obj.titulo;\n this.componentes = obj.componentes;\n this.componentesArray = obj.componentes.split('|')\n }\n}","
\n \n \n {{tab.titulo | i18nText:locale.language}}\n
\n
\n \n
\n
\n
\n
\n
\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { ClinicHistoryService } from 'src/app/core/services/clinic-history.service';\nimport { GoogleAnalyticsService } from 'src/app/core/services/google-analytics.service';\nimport { ClinicHistoryMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { ClinicHistory } from 'src/app/shared/models/clinic-history/clinic-history.model';\nimport { ClinicHistoryConfiguration, TabClinicHistoryConfiguration } from 'src/app/shared/models/people/clinic-history-configuration.model';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\n\n@Component({\n selector: 'app-clinic-history-tabs',\n templateUrl: './clinic-history-tabs.component.html',\n styleUrls: ['./clinic-history-tabs.component.css']\n})\n@ComponentLookup('ClinicHistoryTabsComponent')\nexport class ClinicHistoryTabsComponent implements OnInit, OnDestroy, IControlComponent {\n data: FormComponentData;\n tabs: TabClinicHistoryConfiguration[];\n\n private clinicHistory: ClinicHistory;\n\n //subscribes\n private ngUnsubscribe = new Subject();\n \n constructor(\n private baseService: BaseService,\n private clinicHistoryService: ClinicHistoryService, \n private messageBusService: MessageBusService,\n private googleAnalyticsService: GoogleAnalyticsService,\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\n\n }\n\n ngOnInit(): void {\n\n this.getClinicHistory();\n this.parseControlData();\n\n this.googleAnalyticsService.sendEventOpenClinicHistory();\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onSelectTab(){\n // se comenta la actualización de la historia clínica al seleccionar un tab\n // una idea para la segunda instancia es de iniciar la actualización por un mensaje del cloudhub\n // this.getClinicHistory();\n }\n\n getClinicHistory(){\n this.clinicHistoryService.getClinicHistory()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(clinicHistory =>{\n this.clinicHistory = clinicHistory;\n\n this.messageBusService.sendClinicHistory(new ClinicHistoryMessage(this.clinicHistory));\n },\n error => {\n this.baseService.handleServiceError(error, \"Error getting clinic history\"); \n });\n }\n\n private parseControlData() {\n if(this.data && this.data.valor){\n try {\n this.data.valor = JSON.parse(this.data.valor); \n\n let config = this.data.valor;\n\n this.tabs = config.tabs.map(t => new TabClinicHistoryConfiguration(t));\n } catch (ex) {} \n }\n }\n}\n","export enum GroupConcept {\n SUBJETIVO = 1,\n OBJETIVO = 2,\n ANALISIS = 3,\n PLAN = 4,\n ANTECEDENTES = 5,\n ALERGIAS = 6,\n PRESCRIPCION_MEDICA = 7,\n LABORATORIOS = 8,\n VACUNAS = 9,\n ENFERMEDADES = 10,\n ENFERMEDADES_FAMILIARES = 11,\n CIRUGIAS = 12,\n HABITOS = 13\n}\n","
\n \n\n \n \n\n \n \n
\n \n \n \t\t\t\n
\n \n \n \n \n \n \n \n
\n \n
\n \n
\n
\n \n
\n
\n
\n\n
\n\n \n \n \n \n \n \n \n \n
\n \n \n \n \n {{item.attention.iniciales}}\n \n
\n {{item.attention.titulo}}\n {{ 'shared.clinicHistory.attentionHistory.' + item.attention.claveSubtitulo | translate:locale.language }}\n \n \n \n
\n \n \n \n\n \n
\n
\n {{basicConceptGrouped.titulo}}: \n {{basicConceptGrouped.descripcion}}\n
\n
\n \n
\n
\n {{fileConcept.nombreConcepto}}\n {{fileConcept.nombreDocumento}}\n
\n
\n
\n
\n\n \n \n {{ 'shared.clinicHistory.attentionHistory.viewMore' | translate:locale.language | uppercase }}\n {{ 'shared.clinicHistory.attentionHistory.viewLess' | translate:locale.language | uppercase }}\n \n \n
\n {{'shared.clinicHistory.attentionHistory.conclusionConceptsTitle' | translate:locale.language }}\n
\n {{conclusionConceptGrouped.titulo}}\n
\n
\n

{{conclusionConcept.descripcion}}

\n
\n
\n
\n
\n \n
\n
\n {{fileConclusionConcept.nombreConcepto}}\n {{fileConclusionConcept.nombreDocumento}}\n
\n
\n\n
\n
\n
\n
\n
\n\n \n \n
\n
{{ 'shared.clinicHistory.attentionHistory.emptyStateMessage1' | translate:locale.language }}
\n
{{ 'shared.clinicHistory.attentionHistory.emptyStateMessage2' | translate:locale.language }}
\n
\n
\n
\n
","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { ClinicHistoryService } from 'src/app/core/services/clinic-history.service';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { GroupConcept } from 'src/app/shared/enums/group-concept.enum';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { AttentionGroupItem, ClinicHistoryItem } from 'src/app/shared/models/clinic-history/attention-history.model';\nimport { ClinicHistory } from 'src/app/shared/models/clinic-history/clinic-history.model';\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\nimport { FileViewerDialogComponent } from '../../dialogs/file-viewer-dialog/file-viewer-dialog.component';\nimport { FileViewerDto, FileViewerItemDto } from '../../file-viewer/file-viewer.component';\nimport { TimelineWrapperItem, TimelineWrapperItemType, TimelineWrapperSkeletonItem } from '../../timeline-list/timeline-list.component';\n\n@Component({\n selector: 'app-attention-history',\n templateUrl: './attention-history.component.html',\n styleUrls: ['./attention-history.component.css']\n})\n@ComponentLookup('AttentionHistoryComponent')\nexport class AttentionHistoryComponent implements OnInit, IControlComponent {\n data: FormComponentData;\n\n timelineAttentions: TimelineAttentionHistory[] = [];\n skeletonItems: TimelineWrapperSkeletonItem[] = [new TimelineWrapperSkeletonItem(), new TimelineWrapperSkeletonItem()];\n loading = true;\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private messageBusService: MessageBusService,\n private clinicHistoryService: ClinicHistoryService,\n private baseService: BaseService,\n public dialog: MatDialog\n ) { }\n\n ngOnInit(): void {\n\n this.messageBusService.onSendClinicHistory().subscribe(message =>{\n this.createTimelineAttentions(message.clinicHistory);\n this.loading = false;\n });\n }\n\n createTimelineAttentions(history: ClinicHistory){\n let dtos: AttentionHistoryViewDTO[] = [];\n let conclusionGroup = [GroupConcept.PLAN, GroupConcept.PRESCRIPCION_MEDICA, GroupConcept.LABORATORIOS];\n\n // For each attention wil will create a card\n history.historialAtenciones.forEach(attention => { \n\n var dto = new AttentionHistoryViewDTO(); \n\n dto.fecha = attention.contactoClinico.fechaContacto;\n dto.avatarUrl = attention.contactoClinico.avatarResponsableServicio;\n dto.titulo = attention.contactoClinico.nombreResponsableServicio; //TODO agregar especialidad\n\n // If this is a virtual attention that was cancelled it will not contain a co_responsable\n if (!dto.titulo) { \n dto.titulo = \"Centro de atención integral de salud SURA\";\n dto.avatarUrl = \"assets/images/sura/logo-sura-simple.png\";\n }\n\n if (!dto.avatarUrl) {\n let avatarInitialsObject = this.baseService.getAvatarInitialObject(attention.contactoClinico.idResponsableServicio, dto.titulo);\n\n dto.iniciales = avatarInitialsObject.initials;\n dto.colorIniciales = avatarInitialsObject.color;\n }\n\n dto.claveSubtitulo = attention.contactoClinico.idTipoSolicitud == 53 || attention.contactoClinico.idTipoSolicitud == 54\n ? 'virtualConsultation'\n : 'faceToFaceConsultation';\n\n\n // Get conclusion items\n let conclusionItems = this.clinicHistoryService.getClinicHistoryItemsByGroup(attention.atenciones, conclusionGroup);\n \n // Get all items that are NOT conclusions\n let basicItems = this.clinicHistoryService.getClinicHistoryItemsByExcludedGroup(attention.atenciones, conclusionGroup);\n\n // Map to UI objects\n dto.conceptosConclusiones = conclusionItems.map(i => new AttentionHistoryItemViewDTO(i));\n dto.conceptosBasicos = basicItems.map(i => new AttentionHistoryItemViewDTO(i)); \n dto.existenConclusiones = conclusionItems.length > 0; \n\n dtos.push(dto); \n });\n\n this.timelineAttentions = dtos.map(dto=> new TimelineAttentionHistory(dto));\n }\n\n getClassPreviewFile(concept: ClinicHistoryItem): string {\n return this.clinicHistoryService.getClassPreviewFile(concept.extensionDocumento);\n }\n\n getPreviewFileUrl(concept: ClinicHistoryItem): string {\n return this.clinicHistoryService.getPreviewFileUrl(concept.extensionDocumento, concept.ubicacionWebDocumento);\n }\n\n onFileClick(item: AttentionHistoryItemViewDTO, file: ClinicHistoryItem) {\n let dialogData = new DialogData();\n let viewerDto = new FileViewerDto(); \n \n viewerDto.selectedFileId = file.idDocumento;\n viewerDto.files = this.getConsultationDocumentAsViewerItems(item); \n\n dialogData.data = viewerDto;\n\n const dialogRef = this.dialog.open(FileViewerDialogComponent, {\n panelClass: 'file-viewer-dialog',\n data: dialogData\n });\n }\n\n getConsultationDocumentAsViewerItems(item: AttentionHistoryItemViewDTO): FileViewerItemDto[] {\n let result = item.documentos.map(d => {\n let fileDto = new FileViewerItemDto();\n\n fileDto.fileId = d.idDocumento;\n fileDto.fileUrl = d.ubicacionWebDocumento;\n fileDto.amazonBucketName = d.nombreBucketAmazon;\n fileDto.fileExtension = d.extensionDocumento;\n fileDto.webUrl = d.ubicacionWebDocumento;\n\n fileDto.createdAt = d.fechaRegistro;\n fileDto.title = d.nombreDocumento;\n fileDto.description = d.descripcion;\n\n return fileDto;\n });\n\n return result;\n }\n}\n\nexport class TimelineAttentionHistory implements TimelineWrapperItem { \n attention : AttentionHistoryViewDTO;\n viewMore: boolean;\n\n constructor(attention : AttentionHistoryViewDTO) {\n this.attention = attention;\n }\n\n getItemType(): TimelineWrapperItemType{\n return TimelineWrapperItemType.DOT;\n }\n \n getGroupKey() : number {\n return new Date(this.attention.fecha).getFullYear();\n }\n\n getDate() : Date {\n return new Date(this.attention.fecha);\n }\n\n showTime():boolean{\n return false;\n }\n\n showDate():boolean{\n return true;\n }\n\n onClickLinkViewMore(){\n this.viewMore = !this.viewMore;\n }\n}\n\nexport class AttentionHistoryViewDTO{\n claveSubtitulo: string;\n avatarUrl: string;\n titulo: string;\n iniciales: string;\n colorIniciales: string;\n fecha: Date;\n existenConclusiones: boolean;\n\n conceptosBasicos: AttentionHistoryItemViewDTO[]; \n conceptosConclusiones: AttentionHistoryItemViewDTO[]; \n}\n\nexport class AttentionHistoryItemViewDTO{\n titulo: string;\n descripcion: string;\n conceptos: ClinicHistoryItem[];\n documentos: ClinicHistoryItem[];\n tieneConceptosBasicos: boolean;\n tieneDocumentos: boolean;\n\n constructor (group: AttentionGroupItem){\n this.titulo = group.nombreTipoConcepto; \n this.conceptos = group.items.filter(c => c.idDocumento == 0);\n this.documentos = group.items.filter(c => c.idDocumento > 0);\n this.descripcion = this.conceptos.map(c => c.descripcion.replace(\"::\", \":\")).join(', ');\n this.tieneConceptosBasicos = this.conceptos.length > 0;\n this.tieneDocumentos = this.documentos.length > 0;\n }\n}","
\n
\n \n \n \n
\n \n \n
\n \n {{ item.titulo }}\n
\n
\n {{ 'shared.clinicHistory.medicines.text2' | translate:locale.language }}\n {{ item.responsable }}\n
\n
\n {{ conceptGrouped.titulo }}\n
\n
\n \n {{ concept.nombreConcepto }}\n : {{ concept.valorConcepto }}\n
\n
\n
\n
\n \n
\n
\n {{fileConcept.nombreConcepto}}\n {{fileConcept.nombreDocumento}}\n
\n
\n
\n
\n
\n
\n
\n\n
\n
{{ 'shared.clinicHistory.medicines.text3' | translate:locale.language }}
\n
{{ 'shared.clinicHistory.medicines.text4' | translate:locale.language }}
\n
\n
\n","import { Inject, OnDestroy } from '@angular/core';\nimport { Component, OnInit } from '@angular/core';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { ClinicHistoryService } from 'src/app/core/services/clinic-history.service';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { GroupConcept } from 'src/app/shared/enums/group-concept.enum';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { AttentionGroupItem, AttentionHistory, ClinicHistoryItem } from 'src/app/shared/models/clinic-history/attention-history.model';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\n\n@Component({\n selector: 'app-medicines',\n templateUrl: './medicines.component.html',\n styleUrls: ['./medicines.component.css']\n})\n@ComponentLookup('MedicinesComponent')\nexport class MedicinesComponent implements OnInit, OnDestroy, IControlComponent {\n data: FormComponentData;\n\n attentions: AttentionHistory[] = [];\n items: MedicinesViewDTO[] = [];\n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private messageBusService: MessageBusService,\n private clinicHistoryService: ClinicHistoryService\n ) { }\n\n ngOnInit(): void {\n this.messageBusService.onSendClinicHistory()\n .subscribe(message =>{\n this.createViewDto(message.clinicHistory.historialAtenciones);\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n createViewDto(atenciones: AttentionHistory[]){\n\n let atencionesLaboratorios = this.clinicHistoryService.getAttentionsByGroup(atenciones, GroupConcept.PRESCRIPCION_MEDICA);\n\n atencionesLaboratorios.forEach(attention =>{\n\n let dto = new MedicinesViewDTO();\n\n dto.titulo = attention.contactoClinico.asunto;\n dto.fecha = attention.contactoClinico.fechaContacto;\n dto.responsable = attention.contactoClinico.nombreResponsableServicio;\n\n dto.conceptosMedicamentos = attention.atenciones.map(a => new MedicinesItemViewDTO(a));\n\n this.items.push(dto);\n });\n } \n\n getClassPreviewFile(concept: ClinicHistoryItem): string {\n return this.clinicHistoryService.getClassPreviewFile(concept.extensionDocumento);\n }\n\n getPreviewFileUrl(concept: ClinicHistoryItem): string {\n let url = concept.nombreBucketAmazon ? concept.nombreBucketAmazon : concept.ubicacionWebDocumento;\n\n return this.clinicHistoryService.getPreviewFileUrl(concept.extensionDocumento, url);\n }\n\n}\n\nexport class MedicinesViewDTO{\n titulo: string;\n fecha: Date;\n responsable: string;\n conceptosMedicamentos: MedicinesItemViewDTO[];\n}\n\nexport class MedicinesItemViewDTO {\n titulo: string;\n conceptos: ClinicHistoryItem[];\n documentos: ClinicHistoryItem[];\n tieneConceptos: boolean;\n tieneDocumentos: boolean;\n\n constructor (group: AttentionGroupItem){\n this.titulo = group.nombreTipoConcepto; \n this.conceptos = group.items.filter(c => c.idDocumento == 0);\n this.documentos = group.items.filter(c => c.idDocumento > 0);\n this.tieneConceptos = this.conceptos.length > 0;\n this.tieneDocumentos = this.documentos.length > 0;\n }\n}\n","
\n
\n \n \n \n {{item.titulo}}\n \n \n
\n {{concept.nombreConcepto}} \n {{concept.valorConcepto}}\n
\n
\n
\n
\n
\n
\n
{{ 'shared.clinicHistory.medicalHistory.text2' | translate:locale.language }}
\n
\n
","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { GroupConcept } from 'src/app/shared/enums/group-concept.enum';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { ClinicHistoryItem } from 'src/app/shared/models/clinic-history/attention-history.model';\nimport { MedicalHistory } from 'src/app/shared/models/clinic-history/medical-history.model';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\n\n@Component({\n selector: 'app-medical-history',\n templateUrl: './medical-history.component.html',\n styleUrls: ['./medical-history.component.css']\n})\n@ComponentLookup('MedicalHistoryComponent')\nexport class MedicalHistoryComponent implements OnInit, OnDestroy, IControlComponent {\n data: FormComponentData;\n items: MedicalHistoryViewDTO[] = [];\n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private messageBusService: MessageBusService\n ) { }\n\n ngOnInit(): void {\n this.messageBusService.onSendClinicHistory().subscribe(message =>{\n this.items = message.clinicHistory.antecedentes.map(a => new MedicalHistoryViewDTO(a));\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n\nexport class MedicalHistoryViewDTO {\n id: number;\n titulo: string;\n icono: string;\n conceptos: ClinicHistoryItem[];\n\n constructor(group: MedicalHistory){\n this.id = group.idTipoConcepto;\n this.titulo = group.nombreTipoConcepto;\n this.icono = this.getIconNameByGroup(group.agrupadores);\n this.conceptos = group.items;\n }\n\n getIconNameByGroup(groupArray: number[]):string {\n let iconname = 'phr-iconset-laboratorios';\n\n if(groupArray.filter(a => a == GroupConcept.ALERGIAS).length > 0){\n iconname = \"phr-iconset-polen\";\n } else if(groupArray.filter(a => a == GroupConcept.VACUNAS).length > 0){\n iconname = \"phr-iconset-vacuna\";\n } else if(groupArray.filter(a => a == GroupConcept.ENFERMEDADES).length > 0){\n iconname = \"phr-iconset-termometro\";\n } else if(groupArray.filter(a => a == GroupConcept.ENFERMEDADES_FAMILIARES).length > 0){\n iconname = \"phr-iconset-adn\";\n } else if(groupArray.filter(a => a == GroupConcept.CIRUGIAS).length > 0){\n iconname = \"phr-iconset-bisturi\";\n } else if(groupArray.filter(a => a == GroupConcept.HABITOS).length > 0){\n iconname = \"phr-iconset-apple\";\n }\n\n return iconname;\n }\n}\n","
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n clear\r\n {{displayName(option)}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {{displayName(option)}}\r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n
","import { Component, ElementRef, EventEmitter, Inject, Input, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\n\r\n@Component({\r\n selector: 'autocomplete-multiple-selection',\r\n templateUrl: './autocomplete-multiple-selection.component.html',\r\n styleUrls: ['./autocomplete-multiple-selection.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n })\r\n export class AutocompleteMultipleSelectionComponent implements OnInit { \r\n _selectedOptions: any[]; \r\n searchInputCtrl = new FormControl(); \r\n\r\n @Input() placeholder: string; \r\n @Input() cssClass: string; \r\n @Input() filteredOptions: any[];\r\n @Input() selectedOptions: any[];\r\n @Input() displayName: (option: any) => string; \r\n\r\n @Output() onFilter = new EventEmitter();\r\n @Output() onSelectionChanged = new EventEmitter();\r\n\r\n @ViewChild('searchInput') searchInput: ElementRef;\r\n @ViewChild('auto') matAutocomplete: MatAutocomplete;\r\n @ViewChild(MatAutocompleteTrigger) trigger: MatAutocompleteTrigger;\r\n \r\n constructor( \r\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\r\n }\r\n\r\n ngOnInit(): void { \r\n this._selectedOptions = this.selectedOptions? this.selectedOptions : [];\r\n\r\n // On search\r\n this.searchInputCtrl.valueChanges.subscribe(t => {\r\n if (typeof(t) == \"string\") {\r\n this.onFilter.emit(t); \r\n }\r\n });\r\n }\r\n\r\n removeOption(option: any) {\r\n const index = this._selectedOptions.indexOf(option, 0);\r\n\r\n if (index > -1) {\r\n this._selectedOptions.splice(index, 1); \r\n\r\n this.onSelectionChanged.emit(this._selectedOptions);\r\n\r\n // When we remove an item lets update the filter list so the item we removed apears on the results\r\n this.onFilter.emit(\"\");\r\n }\r\n }\r\n \r\n selected(event: MatAutocompleteSelectedEvent): void { \r\n this._selectedOptions.push(event.option.value);\r\n \r\n this.searchInputCtrl.setValue(\"\");\r\n\r\n this.onSelectionChanged.emit(this._selectedOptions);\r\n \r\n // Keep panel open after selection\r\n setTimeout(() => {\r\n this.trigger.openPanel()\r\n }, 50);\r\n }\r\n\r\n autocompleteOpened():void {\r\n // Update the list each time it open\r\n this.onFilter.emit(\"\"); \r\n }\r\n\r\n autocompleteClosed() {\r\n \r\n }\r\n } ","
\n
\n \n \n
\n
\n\n \n
\n

{{'shared.clinicHistory.shareDialog.title2' | translate:locale.language }}

\n
\n \n
\n \n {{ area.nombre | i18nText:locale.language }}\n \n \n {{'shared.clinicHistory.shareDialog.text5' | translate:locale.language }}\n \n
\n \n {{'shared.clinicHistory.shareDialog.text6' | translate:locale.language }} \n
\n
\n
\n
\n
\n\n \n
\n

{{'shared.clinicHistory.shareDialog.title3'| translate:locale.language}}

\n\n
\n \n \n \n {{'shared.clinicHistory.shareDialog.text4'| translate:locale.language}}\n \n \n \n \n \n \n \n
\n {{'shared.clinicHistory.shareDialog.dateRangeHelperText'| translate:locale.language}}\n
\n\n
\n \n
\n \n
\n
\n {{'shared.clinicHistory.shareDialog.specialtiesHelperText'| translate:locale.language}}\n
\n
\n\n
\n
\n\n
\n
\n
\n \n {{'shared.clinicHistory.shareDialog.text1'| translate:locale.language}}\n
\n
\n {{'shared.clinicHistory.shareDialog.link1Text1'| translate:locale.language}}\n {{'shared.clinicHistory.shareDialog.link1Text2'| translate:locale.language}}\n
\n
\n\n \n
\n\n \n \n \n \n
\n
\n\n \n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { ClinicHistory } from 'src/app/shared/models/clinic-history/clinic-history.model';\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\nimport * as moment from 'moment';\nimport { ClinicHistoryService } from 'src/app/core/services/clinic-history.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\nimport { GoogleAnalyticsService } from 'src/app/core/services/google-analytics.service';\n\n@Component({\n selector: 'app-share-dialog',\n templateUrl: './share-dialog.component.html',\n styleUrls: ['./share-dialog.component.css']\n})\nexport class ShareDialogComponent implements OnInit { \n shareDialogData: ShareDialogData;\n allAreasSelected: boolean = false;\n currentView: HcShareView = HcShareView.FilterItems;\n viewEnum = HcShareView;\n clinicHistory: ClinicHistory; \n filters: AttentionFilters;\n loading = false;\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\n private userService: UserService,\n private clinicHistoryService: ClinicHistoryService,\n private baseService: BaseService,\n private googleAnalyticsService: GoogleAnalyticsService,\n private mdDialogRef: MatDialogRef \n ) { \n this.shareDialogData = JSON.parse(data.message);\n\n // By Default all areas will be checked\n this.shareDialogData.areas.forEach(a => a.check = true);\n\n this.clinicHistory = data.data; \n }\n\n ngOnInit(): void {\n this.currentView = HcShareView.SelectItems;\n\n this.filters = new AttentionFilters();\n\n this.loadDoctordata();\n }\n\n loadDoctordata() {\n var data : any = {};\n\n for (let index = 0; index < this.clinicHistory.historialAtenciones.length; index++) {\n const contact = this.clinicHistory.historialAtenciones[index].contactoClinico;\n\n if (!data.hasOwnProperty(contact.idResponsableServicio))\n data[contact.idResponsableServicio] = new DoctorData(contact.idResponsableServicio, contact.nombreResponsableServicio); \n else if (!data[contact.idResponsableServicio].name && contact.nombreResponsableServicio) \n data[contact.idResponsableServicio].name = contact.nombreResponsableServicio;\n }\n\n this.filters.initDoctorData(Object.keys(data).map(key => data[key]));\n } \n\n public cancel() {\n this.closeDialog(false); \n }\n\n public close() {\n this.closeDialog(false); \n }\n\n private closeDialog(value:any) {\n this.mdDialogRef.close(value);\n } \n\n optionHasFilters(value: number) {\n return value == 1; // For not only \"Attention will have filters\"\n }\n\n onBackClick() {\n this.currentView = HcShareView.SelectItems;\n }\n\n onFilterClick(value: number) {\n if (value == 1)\n this.currentView = HcShareView.FilterItems;\n }\n\n confirmFilters() {\n this.currentView = HcShareView.SelectItems;\n }\n\n shareButtonEnabled() {\n return this.shareDialogData.areas.filter(a => a.check).length > 0;\n } \n\n public someAreaSelected(){\n if (this.shareDialogData == null || this.shareDialogData.areas == null) {\n return false;\n }\n return this.shareDialogData.areas.filter(t => t.check).length > 0 && !this.allAreasSelected;\n }\n\n filterDoctors(searchText: string) {\n return this.filters.filterDoctors(searchText);\n } \n\n getDoctorDisplayName(doctor: DoctorData) {\n return doctor.name;\n }\n\n onDoctorSelectionChanged(selectedDoctors: DoctorData[]) {\n this.filters.setSelectedDoctors(selectedDoctors); \n }\n\n getSummary(filter: AttentionFilters) {\n var result = \"\"; \n\n if (filter.startDate) {\n let startDate = this.baseService.getBasicDateFormat(new Date(filter.startDate));\n result += startDate;\n }\n\n if (filter.endDate) {\n let endDate = this.baseService.getBasicDateFormat(new Date(filter.endDate));\n result += result? (\" - \" + endDate) : endDate;\n } \n\n let selectedDocs = filter.getSelectedDoctors();\n\n if (selectedDocs.length > 0) {\n result += result? (\"
\" + selectedDocs.map(d => d.name).join(\", \")) : selectedDocs.map(d => d.name).join(\", \");\n }\n\n return result;\n }\n\n share() {\n let model: any = {};\n\n // Sections\n let selectedSections = this.shareDialogData.areas.filter(a => a.check);\n\n if (selectedSections.length > 0)\n model.Secciones = selectedSections.map(s => s.valor);\n\n // Filters\n if (!this.filters.areEmpty()) { \n if (this.filters.startDate)\n model.FechaIncio = this.filters.startDate;\n if (this.filters.endDate)\n model.FechaFin = this.filters.endDate;\n \n let selectedDocs = this.filters.getSelectedDoctors();\n if (selectedDocs.length > 0)\n model.IdsResponsablesServicios = selectedDocs.map(d => d.id);\n }\n\n // User\n this.userService.getUserPersonLoggedIn().subscribe(p => {\n if (p) {\n model.IdPaciente = p.id;\n\n console.log(model);\n this.loading = true;\n\n this.clinicHistoryService.getClinicHistoryPdf(model).subscribe((data) => {\n\n this.googleAnalyticsService.sendEventDownloadClinicHistory();\n\n let blob = new Blob([data], {type: 'application/pdf'});\n \n var downloadURL = window.URL.createObjectURL(data);\n var link = document.createElement('a');\n link.href = downloadURL;\n link.download = this.getDownloadFileName(p);\n\n link.click(); \n\n this.loading = false;\n this.close();\n },\n (error => {\n console.error(\"Error getting pdf\");\n\n this.loading = false;\n this.close();\n }));\n } \n \n }); \n }\n\n getDownloadFileName(user: UserPerson) {\n let name = \"Historia clínica - \" + this.capitalize(user.nombre) + \" \" + this.capitalize(user.apellido) + \" - \";\n let now = moment(new Date());\n\n // Ej: Historia clínica - Juan Pérez - 23/feb/2022 3:44 PM.pdf\n\n name += now.format(\"DD_MMM_YYYY_hh_mm_\") + now.format(\"a\").toUpperCase();\n\n return name + \".pdf\";\n }\n\n capitalize = function(str: string) {\n str = str.toLowerCase();\n const arr = str.split(\" \");\n\n for (var i = 0; i < arr.length; i++) {\n arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1);\n }\n\n return arr.join(\" \");\n }\n}\n\nexport enum HcShareView {\n SelectItems,\n FilterItems,\n Finished\n}\n\nexport class ShareDialogData{\n areas:AreaShareDialogData[]\n}\nexport class AreaShareDialogData{\n nombre: string;\n valor: number;\n check: boolean;\n}\n\nexport class DoctorData {\n name: string;\n id: number;\n checked: boolean;\n\n constructor(id: number, name: string) {\n this.name = name;\n this.id = id;\n }\n\n getIdentifier() {\n return this.id.toString();\n }\n\n getDisplayName() {\n return this.name;\n }\n}\n\nexport class AttentionFilters {\n startDate: string;\n endDate: string;\n\n doctors: DoctorData[];\n filteredDoctors : DoctorData[];\n selectedDoctors : DoctorData[]; \n\n constructor() {\n this.doctors = [];\n this.filteredDoctors = [];\n this.selectedDoctors = [];\n }\n\n initDoctorData(doctors: DoctorData[]) {\n this.doctors = doctors;\n this.filteredDoctors = doctors; \n\n this.addAllDoctorsSelection();\n }\n\n addAllDoctorsSelection() {\n this.selectedDoctors = [new DoctorData(-1, \"Todos\")]; \n }\n\n removeAllDoctorsSelection() {\n this.selectedDoctors = this.selectedDoctors.filter(d => d.id > 0); \n }\n\n getSelectedDoctors() {\n return this.selectedDoctors.filter(d => d.id > 0);\n }\n\n setSelectedDoctors(selectedDoctors : DoctorData[]) {\n this.selectedDoctors = selectedDoctors;\n\n if (selectedDoctors.length == 0)\n this.addAllDoctorsSelection();\n else if (selectedDoctors.length > 1)\n this.removeAllDoctorsSelection();\n }\n\n areEmpty() {\n return !this.startDate && this.getSelectedDoctors().length == 0;\n }\n\n clear() {\n this.startDate = undefined as any;\n this.endDate = undefined as any;\n this.filteredDoctors = this.doctors;\n this.addAllDoctorsSelection();\n }\n\n filterDoctors(searchText: string) {\n searchText = searchText.toLowerCase();\n let selectedIds = this.selectedDoctors.map(d => d.id); \n\n this.filteredDoctors = this.doctors.filter(d => d.id > 0 && d.name.toLowerCase().indexOf(searchText) == 0 && selectedIds.indexOf(d.id) == -1);\n } \n} ","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { ClinicHistory } from 'src/app/shared/models/clinic-history/clinic-history.model';\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\nimport { ShareDialogComponent } from '../share-dialog/share-dialog.component';\n\n@Component({\n selector: 'app-clinic-history-share',\n templateUrl: './clinic-history-share.component.html',\n styleUrls: ['./clinic-history-share.component.css']\n})\n@ComponentLookup('ClinicHistoryShareComponent')\nexport class ClinicHistoryShareComponent implements OnInit, IControlComponent {\n data: FormComponentData;\n clinicHistory: ClinicHistory;\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private messageBusService: MessageBusService,\n public dialog: MatDialog\n ) { }\n\n ngOnInit(): void {\n this.messageBusService.onSendClinicHistory().subscribe(message =>{\n this.clinicHistory = message.clinicHistory;\n });\n }\n\n public onClickShareButton(){\n let dialogData = new DialogData();\n\n dialogData.message = this.data.valor;\n dialogData.data = this.clinicHistory;\n\n const dialogRef = this.dialog.open(ShareDialogComponent, { data: dialogData, panelClass: \"common-dialog-container\", width: '680px', height: '600px' }); \n }\n}\n","
\n \n \n
\n","
\n
\n \n \n \n
\n \n \n
\n \n {{ item.titulo }}\n
\n
\n {{ 'shared.clinicHistory.studiesLaboratories.text2' | translate:locale.language }}\n {{ item.responsable }}\n
\n
\n {{ conceptGrouped.titulo }}\n
\n
\n {{ concept.nombreConcepto }}: \n {{ concept.valorConcepto }}\n
\n
\n
\n
\n \n
\n
\n {{fileConcept.nombreConcepto}}\n {{fileConcept.nombreDocumento}}\n
\n
\n
\n
\n
\n
\n
\n\n
\n
{{ 'shared.clinicHistory.studiesLaboratories.text3' | translate:locale.language }}
\n
{{ 'shared.clinicHistory.studiesLaboratories.text4' | translate:locale.language }}
\n
\n
","import { Inject, OnDestroy } from '@angular/core';\nimport { Component, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { ClinicHistoryService } from 'src/app/core/services/clinic-history.service';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { GroupConcept } from 'src/app/shared/enums/group-concept.enum';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { AttentionGroupItem, AttentionHistory, ClinicHistoryItem } from 'src/app/shared/models/clinic-history/attention-history.model';\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\nimport { FileViewerDialogComponent } from '../../dialogs/file-viewer-dialog/file-viewer-dialog.component';\nimport { FileViewerDto, FileViewerItemDto } from '../../file-viewer/file-viewer.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-studies-laboratories',\n templateUrl: './studies-laboratories.component.html',\n styleUrls: ['./studies-laboratories.component.css']\n})\n@ComponentLookup('StudiesLaboratoriesComponent')\nexport class StudiesLaboratoriesComponent implements OnInit, OnDestroy, IControlComponent {\n data: FormComponentData;\n\n items: StudiesLaboratoriesViewDTO[] = [];\n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private messageBusService: MessageBusService,\n public dialog: MatDialog,\n private clinicHistoryService: ClinicHistoryService\n ) { }\n\n ngOnInit(): void {\n this.messageBusService.onSendClinicHistory()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(message =>{\n this.createViewDto(message.clinicHistory.historialAtenciones);\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n createViewDto(atenciones: AttentionHistory[]){\n\n let atencionesLaboratorios = this.clinicHistoryService.getAttentionsByGroup(atenciones, GroupConcept.LABORATORIOS);\n\n atencionesLaboratorios.forEach(attention => {\n\n let dto = new StudiesLaboratoriesViewDTO();\n\n dto.titulo = attention.contactoClinico.asunto;\n dto.fecha = attention.contactoClinico.fechaContacto;\n dto.responsable = attention.contactoClinico.nombreResponsableServicio;\n\n dto.conceptosLaboratorios = attention.atenciones.map(a => new StudiesLaboratoriesItemViewDTO(a));\n\n this.items.push(dto);\n });\n }\n\n getClassPreviewFile(concept: ClinicHistoryItem): string {\n return this.clinicHistoryService.getClassPreviewFile(concept.extensionDocumento);\n }\n\n getPreviewFileUrl(concept: ClinicHistoryItem): string {\n return this.clinicHistoryService.getPreviewFileUrl(concept.extensionDocumento, concept.ubicacionWebDocumento);\n }\n\n onFileClick(item: StudiesLaboratoriesItemViewDTO, file: ClinicHistoryItem) {\n let dialogData = new DialogData();\n let viewerDto = new FileViewerDto(); \n \n viewerDto.selectedFileId = file.idDocumento;\n viewerDto.files = this.getConsultationDocumentAsViewerItems(item); \n\n dialogData.data = viewerDto;\n\n const dialogRef = this.dialog.open(FileViewerDialogComponent, {\n panelClass: 'file-viewer-dialog',\n data: dialogData\n });\n }\n\n getConsultationDocumentAsViewerItems(item: StudiesLaboratoriesItemViewDTO): FileViewerItemDto[] {\n let result = item.documentos.map(d => {\n let fileDto = new FileViewerItemDto();\n\n fileDto.fileId = d.idDocumento;\n fileDto.fileUrl = d.ubicacionWebDocumento;\n fileDto.amazonBucketName = d.nombreBucketAmazon;\n fileDto.fileExtension = d.extensionDocumento;\n fileDto.webUrl = d.ubicacionWebDocumento;\n\n fileDto.createdAt = d.fechaRegistro;\n fileDto.title = d.nombreDocumento;\n fileDto.description = d.descripcion;\n\n return fileDto;\n });\n\n return result;\n }\n}\n\nexport class StudiesLaboratoriesViewDTO{\n titulo: string;\n fecha: Date;\n responsable: string;\n conceptosLaboratorios: StudiesLaboratoriesItemViewDTO[];\n}\n\nexport class StudiesLaboratoriesItemViewDTO {\n titulo: string;\n conceptos: ClinicHistoryItem[];\n documentos: ClinicHistoryItem[];\n tieneConceptos: boolean;\n tieneDocumentos: boolean;\n\n constructor (group: AttentionGroupItem){\n this.titulo = group.nombreTipoConcepto;\n this.conceptos = group.items.filter(c => c.idDocumento == 0);\n this.documentos = group.items.filter(c => c.idDocumento > 0);\n this.tieneConceptos = this.conceptos.length > 0;\n this.tieneDocumentos = this.documentos.length > 0;\n }\n}\n","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\nimport { MenuMobileComponent } from '../../dialogs/menu-mobile/menu-mobile.component';\n\n@Component({\n selector: 'app-header-mapfre-panama',\n templateUrl: './header-mapfre-panama.component.html',\n styleUrls: ['./header-mapfre-panama.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('HeaderMapfrePanamaComponent')\nexport class HeaderMapfrePanamaComponent implements OnInit, IControlComponent {\n data: FormComponentData;\n\n routeClassName: string = '';\n \n constructor(\n public dialog: MatDialog,\n private router: Router) {\n\n this.router.events.subscribe(()=>{\n this.initRouteClassName();\n\n });\n }\n \n ngOnInit(): void { \n \n }\n\n openMenuMobile(){\n const dialogRef = this.dialog.open(MenuMobileComponent, {\n panelClass: 'menu-mobile',\n width:\"338px\",\n height: \"100%\",\n position: { left: \"0px\"}\n });\n }\n\n private initRouteClassName(){\n this.routeClassName = this.router.url.split('/')[1];\n }\n}\n","
\n \n \n \n\n \n \n \n
\n
\n \n \n
","export enum ClassConcept {\n PROCEDIMIENTO = 1,\n DIAGNOSTICO = 2,\n HALLAZGO = 3,\n SINTOMA = 4,\n ESPECIALIDAD = 5,\n AREAS_DE_ENFOQUE = 6,\n MISCELANEO = 7,\n ASEGURADORA = 8,\n ENFOQUE_POBLACION = 9,\n IDIOMA = 10,\n RED_MEDICA = 11,\n ATRIBUTOS_ENTIDAD_SALUD = 12,\n CENTROS_ATENCION = 13,\n SERVICIOS_ENTIDAD_SALUD = 14\n}\n","export class SearchQsParametersModel{\r\n t:string;\r\n filtros:string;\r\n idC: string;\r\n idTc: string;\r\n}\r\n\r\nexport class SearchQsParamMapModel{\r\n param1:string;\r\n param2:string;\r\n param3:string;\r\n param4:string;\r\n param5:string;\r\n}","
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n\n \n\n
\n \n
\n\n
\n \n {{result.descripcion}}\n
\n
\n
\n
\n\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n
\n \n \n
\n
\n
\n
\n
\n
\n \n
\n\n \n
\n
\n
","import { Component, ElementRef, Inject, Input, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { ActivatedRoute } from '@angular/router';\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\nimport { of, Subject, zip } from 'rxjs';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { debounceTime, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { DoctorService } from 'src/app/core/services/doctors.service';\nimport { UtilsService } from 'src/app/core/services/utils.service';\nimport { ClassConcept } from 'src/app/shared/enums/class-concept.enum';\nimport { DoctorSearchResult } from 'src/app/shared/models/cdr/doctor-search-result.model';\nimport { PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\nimport { ControlComponentClassnameMessage, MessageBusService, ProviderSearchMessage } from 'src/app/core/services/message-bus.service';\nimport { TerritorialDivisionsService } from 'src/app/core/services/territorial-divisions.service';\nimport { TerritorialDivision } from 'src/app/shared/models/systems/territorial-division.model';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { ConceptDefaultModel } from 'src/app/shared/models/search-results/concept-default.model';\nimport { LocationDefaultModel } from 'src/app/shared/models/search-results/location-default.model';\nimport { SearchQsParamMapModel, SearchQsParametersModel } from 'src/app/shared/models/search-results/search-parameters.model';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { DOCUMENT } from '@angular/common';\nimport { PublicProfileAvatarComponentModel } from '../../public-profile-avatar/public-profile-avatar.component';\n\n@Component({\n selector: 'app-search-providers',\n templateUrl: './search-providers.component.html',\n styleUrls: ['./search-providers.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('SearchProvidersComponent')\nexport class SearchProvidersComponent implements OnInit, OnDestroy, IControlComponent {\n data: any;\n\n @Input() model: SearchProvidersComponentConfiguration;\n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n companyName: string = \"\";\n language: string;\n\n autocompleteOpen:boolean = false;\n loadingSearchProvider: boolean = false;\n searchProviderCtrl = new FormControl();\n filteredResults$: Observable;\n filteredResultsCount:number;\n providerSelected: DoctorSearchResult | null;\n\n highlightValue: string;\n\n locationAutocompleteOpen:boolean = false;\n loadingSearchLocation: boolean = false;\n searchLocationCtrl = new FormControl();\n filteredLocationResults$: Observable;\n filteredLocationResultsCount:number;\n locationObjectSelected: LocationSearchResultItem | null;\n locationLevels: string = \"2,3\";\n\n cityText:string;\n stateText:string;\n countryText:string;\n cityDefaultText:string;\n stateDefaultText:string;\n\n removingSelection:boolean = false;\n\n @ViewChild('searchInput') searchInput: ElementRef;\n @ViewChild('auto') matAutocomplete: MatAutocomplete;\n @ViewChild('searchInput', { read:MatAutocompleteTrigger }) autocompleteProviderTrigger: MatAutocompleteTrigger;\n\n @ViewChild('searchLocationInput') searchLocationInput: ElementRef;\n @ViewChild('autoLocation') matAutocompleteLocation: MatAutocomplete;\n @ViewChild('searchLocationInput', { read:MatAutocompleteTrigger }) autocompleteLocationTrigger: MatAutocompleteTrigger; \n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private baseService: BaseService,\n private layoutService: LayoutService,\n private utilsService: UtilsService,\n private doctorService: DoctorService, \n private route: ActivatedRoute,\n private messageBusService: MessageBusService,\n private territorialDivisionsService: TerritorialDivisionsService,\n private publicProfileService: PublicProfileService,\n private translation: L10nTranslationService,\n @Inject(DOCUMENT) private document: Document) {\n }\n\n ngOnInit(): void {\n this.document.body.classList.add('search-provider-v1');\n\n this.companyName = this.baseService.getCliniwebDirectoryCompanyName();\n this.language = this.baseService.getLanguage();\n\n this.parseControlData();\n\n this.initFromParams();\n\n this.configSearchProviders();\n\n this.configSearchLocations();\n \n this.translation.onChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe({\n next: () => {\n this.cityText = this.translation.translate('city');\n this.stateText = this.translation.translate('province');\n this.countryText = this.translation.translate('country');\n this.cityDefaultText = this.translation.translate('shared.searchResults.searchProviders.mostWantedCities');\n this.stateDefaultText = this.translation.translate('shared.searchResults.searchProviders.mostWantedProvinces');\n }\n });\n\n this.sendControlComponentClassname();\n }\n\n ngOnDestroy():void{\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n initFromParams(){\n let _paramMap$ = this.route.paramMap;\n let _queryParams$ = this.route.queryParamMap;\n\n zip(_paramMap$, _queryParams$)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(results =>{\n let _paramMap = new SearchQsParamMapModel();\n\n _paramMap.param1 = results[0].get('param1') || '';\n _paramMap.param2 = results[0].get('param2') || '';\n _paramMap.param3 = results[0].get('param3') || '';\n _paramMap.param4 = results[0].get('param4') || '';\n _paramMap.param5 = results[0].get('param5') || '';\n\n let _qsParams = new SearchQsParametersModel();\n \n _qsParams.t = results[1].get('t') || '';\n _qsParams.filtros = results[1].get('filtros') || '';\n\n this.populateDropdownByParams(_paramMap, _qsParams);\n\n }, error=>{\n console.log('error');\n });\n }\n\n getPlaceholderProvider(){\n return this.model && this.model.placeholderProvider \n ? this.layoutService.getTextByLanguage(this.model.placeholderProvider, this.locale.language)\n : '';\n }\n\n getPlaceholderLocation(){\n return this.model && this.model.placeholderLocation \n ? this.layoutService.getTextByLanguage(this.model.placeholderLocation, this.locale.language)\n : '';\n }\n\n private sendControlComponentClassname(){\n let message = new ControlComponentClassnameMessage();\n\n message.conponentName = 'SearchProvidersComponent';\n message.classname = 'search-provider-v1';\n\n this.messageBusService.controlComponentClassname(message);\n }\n \n private parseControlData(){\n if(this.data && this.data.valor){\n try {\n this.model = new SearchProvidersComponentConfiguration(JSON.parse(this.data.valor));\n } catch (ex) {} \n } \n }\n\n private populateDropdownByParams(paramMap:SearchQsParamMapModel, qsParams: SearchQsParametersModel){\n if(paramMap.param1){\n let _locationObjectSelected = new LocationSearchResultItem();\n\n if(paramMap.param1 == \"texto\"){\n this.searchProviderCtrl.setValue({ nombre: qsParams.t });\n\n // carga de dropdown localidad\n if(paramMap.param4){\n _locationObjectSelected.url = `${paramMap.param2}/${paramMap.param3}/${paramMap.param4}`;\n _locationObjectSelected.nombre = paramMap.param4.replace(/-/g, ' ');\n }\n else if(paramMap.param3){\n _locationObjectSelected.url = `${paramMap.param2}/${paramMap.param3}`;\n _locationObjectSelected.nombre = paramMap.param3.replace(/-/g, ' ');\n }\n else if(paramMap.param2){\n _locationObjectSelected.url = `${paramMap.param2}`;\n _locationObjectSelected.nombre = paramMap.param2.replace(/-/g, ' ');\n }\n }\n // caso de que se selecciono localidad y el dropdown de proveedores no.\n else if(paramMap.param1 == \"todos\"){\n if(paramMap.param4){\n _locationObjectSelected.url = `${paramMap.param2}/${paramMap.param3}/${paramMap.param4}`;\n _locationObjectSelected.nombre = paramMap.param4.replace(/-/g, ' ');\n }\n else if(paramMap.param3){\n _locationObjectSelected.url = `${paramMap.param2}/${paramMap.param3}`;\n _locationObjectSelected.nombre = paramMap.param3.replace(/-/g, ' ');\n }\n else{\n _locationObjectSelected.url = `${paramMap.param2}`;\n _locationObjectSelected.nombre = paramMap.param2.replace(/-/g, ' ');\n } \n }\n else {\n this.providerSelected = new DoctorSearchResult();\n this.providerSelected.nombre = paramMap.param2.replace(/-/g, ' ');\n this.providerSelected.url = `/${paramMap.param1}/${paramMap.param2}`;\n\n this.searchProviderCtrl.setValue(this.providerSelected);\n\n // carga de dropdown localidad\n if(paramMap.param5){\n _locationObjectSelected.url = `${paramMap.param3}/${paramMap.param4}/${paramMap.param5}`;\n _locationObjectSelected.nombre = paramMap.param5.replace(/-/g, ' ');\n }\n else if(paramMap.param4) {\n _locationObjectSelected.url = `${paramMap.param3}/${paramMap.param4}`;\n _locationObjectSelected.nombre = paramMap.param4.replace(/-/g, ' ');\n }\n else if(paramMap.param3){\n _locationObjectSelected.url = `${paramMap.param3}`;\n _locationObjectSelected.nombre = paramMap.param3.replace(/-/g, ' ');\n }\n }\n\n if(this.model.locationDefault && qsParams && qsParams.filtros){\n let conceptIds = qsParams.filtros.split(',').map(Number);\n let conceptSelected = this.model.locationDefault.seccion3?.find(c=> conceptIds.includes(c.id));\n\n if(conceptSelected){\n _locationObjectSelected = new LocationSearchResultItem();\n _locationObjectSelected.id = conceptSelected.id;\n _locationObjectSelected.nombre = this.layoutService.getTextByLanguage(conceptSelected.nombre, this.locale.language);\n }\n }\n\n if(_locationObjectSelected.nombre){\n this.locationObjectSelected = _locationObjectSelected;\n this.searchLocationCtrl.setValue(this.locationObjectSelected);\n }\n }\n }\n\n configSearchProviders(){\n this.filteredResults$ = this.searchProviderCtrl.valueChanges\n .pipe(\n tap(()=>{ \n this.loadingSearchProvider = true;\n }),\n debounceTime(300),\n startWith(''),\n switchMap(value => \n this.filterProviders(value)\n .pipe(\n map(results => {\n this.loadingSearchProvider = false;\n\n this.highlightValue = value;\n\n this.filteredResultsCount = results.length;\n \n return this.groupProviderResults(results);\n })\n )\n )\n );\n }\n\n configSearchLocations(){\n if(this.model.hideLocationAutocomplete)\n return;\n\n if(this.model.locationDefault){\n this.locationLevels = this.model.locationDefault.niveles; \n }\n\n if(this.model.comboLocation){\n this.filteredLocationResults$ = this.searchLocationCtrl.valueChanges\n .pipe(\n tap(()=>{ \n this.loadingSearchLocation = true;\n }),\n debounceTime(300),\n startWith(''),\n switchMap(value => {\n\n let options = this.filterDefaultLocations(value);\n\n this.loadingSearchLocation = false;\n this.highlightValue = value;\n this.filteredLocationResultsCount = options.length;\n\n return of(options);\n })\n );\n }\n else{\n\n this.filteredLocationResults$ = this.searchLocationCtrl.valueChanges\n .pipe(\n tap(()=>{ \n this.loadingSearchLocation = true;\n }),\n debounceTime(300),\n startWith(''),\n switchMap(value =>\n this.filterLocations(value)\n .pipe(\n map(results => {\n this.loadingSearchLocation = false;\n\n this.highlightValue = value;\n\n this.filteredLocationResultsCount = results.length;\n\n return results;\n })\n )\n )\n );\n }\n }\n\n filterDefaultLocations(text:string):LocationSearchResultGroup[]{\n\n let optionsGrouped = this.getLocationSearchGroupByDefault();\n\n if(text){\n\n optionsGrouped = optionsGrouped.filter(og => og.results.filter(r => r.nombre.toLowerCase().includes(text.toLowerCase())).length > 0);\n\n optionsGrouped.forEach(og => {\n og.results = og.results.filter(r => r.nombre.toLowerCase().includes(text.toLowerCase()));\n });\n\n return optionsGrouped;\n }\n else{\n return optionsGrouped;\n }\n }\n\n filterProviders(value:string):Observable {\n if (value)\n value = value.trim(); \n \n if(!this.autocompleteOpen)\n return of([]);\n\n if((!value || value == '') && this.model.profilesDefault.length > 0){\n return of(this.getProfilesDefault());\n }\n else{\n let _profileSearchTypes = this.model.profileTypes.split(\",\").map(pt => +pt);\n\n return this.doctorService.searchDoctors(this.locale.language, value, this.companyName, _profileSearchTypes);\n }\n }\n\n filterLocations(value:string):Observable{\n if (value)\n value = value.trim(); \n\n if(!this.locationAutocompleteOpen)\n return of([]);\n\n if((!value || value == '') && this.model.locationDefault != null){\n return of(this.getLocationSearchGroupByDefault());\n }\n else{\n return this.getLocationsByLevels(value);\n }\n }\n\n removeSearchProviderSelected(){\n this.removingSelection = true;\n\n this.searchProviderCtrl.reset('');\n this.searchInput.nativeElement.value = '';\n this.providerSelected = null;\n\n if(this.model.profilesDefault.length > 0) {\n setTimeout(()=>{\n this.autocompleteOpen = true;\n this.autocompleteProviderTrigger.openPanel();\n this.autocompleteProviderTrigger._onChange('');\n this.autocompleteProviderTrigger.updatePosition();\n }, 100);\n }\n\n setTimeout(() => {\n this.removingSelection = false;\n }, 100);\n\n this.fireSearchEvent();\n }\n\n removeSearchLocationSelected(){\n this.removingSelection = true;\n\n this.searchLocationCtrl.reset('');\n this.searchLocationInput.nativeElement.value = '';\n this.locationObjectSelected = null;\n\n if(this.model.locationDefault != null) {\n setTimeout(()=>{\n this.locationAutocompleteOpen = true;\n this.autocompleteLocationTrigger.openPanel();\n this.autocompleteLocationTrigger._onChange('');\n this.autocompleteLocationTrigger.updatePosition();\n }, 100);\n }\n\n setTimeout(() => {\n this.removingSelection = false;\n }, 100);\n\n this.fireSearchEvent();\n }\n\n groupProviderResults(results: DoctorSearchResult[]): DoctorSearchResultGroup[]{\n let _resultGroup:DoctorSearchResultGroup[] = [];\n\n let _resultsGrouped = this.utilsService.groupBy(results, sd => sd.claseId);\n\n _resultsGrouped.forEach((value: DoctorSearchResult[], key: number)=>{\n let resultGroupItem = new DoctorSearchResultGroup();\n\n resultGroupItem.classId = key;\n resultGroupItem.className = this.getOptgroupLabelProvider(value[0].clase);\n resultGroupItem.results = value;\n\n _resultGroup.push(resultGroupItem);\n });\n\n return _resultGroup;\n }\n\n getOptgroupLabelProvider(text:string){\n let optgroupFocusAreaText:string = this.translation.translate('shared.searchResults.searchProviders.optgroupFocusArea');\n\n return text.toLocaleLowerCase() == optgroupFocusAreaText.toLocaleLowerCase() \n ? this.translation.translate('shared.searchResults.searchProviders.optgroupExpertIn')\n : text;\n }\n\n profileSelected(event: MatAutocompleteSelectedEvent): void {\n this.loadingSearchProvider = false;\n\n this.removeClassnameSearchOpenedToBody();\n\n let _optionSelected:DoctorSearchResult = event.option.value;\n\n let _clase = _optionSelected.clase.toLowerCase();\n\n if(_clase == 'doctor' || _clase == 'proveedor'){\n let url = this.publicProfileService.getPublicProfileUrl(_optionSelected.url);\n \n this.publicProfileService.openPublicProfile(url);\n }\n else {\n this.providerSelected = _optionSelected;\n \n if(this.model.hideLocationAutocomplete){\n this.fireSearchEvent();\n }\n else{\n if(!this.isExtremeMobile()){\n setTimeout(()=>{\n this.autocompleteLocationTrigger.openPanel();\n console.log('this.searchLocationInput.nativeElement.focus();')\n this.searchLocationInput.nativeElement.focus();\n }, 100);\n }\n \n if(this.locationObjectSelected){\n this.fireSearchEvent();\n }\n }\n }\n }\n\n isExtremeMobile() {\n return window.innerWidth < 600;\n }\n\n locationSelected(event: MatAutocompleteSelectedEvent): void {\n this.loadingSearchLocation = false;\n\n let _optionSelected:LocationSearchResultItem = event.option.value;\n\n this.locationObjectSelected = _optionSelected;\n\n this.fireSearchEvent();\n this.closeAutocompleteLocationpanel();\n }\n\n autoCompleteProviderDisplayWith(item: DoctorSearchResult){\n return item \n ? item.nombre \n : \"\";\n }\n\n autoCompleteLocationDisplayWith(item: TerritorialDivision){\n return item \n ? item.nombre \n : \"\";\n }\n\n onKeydownInputSearch($event: KeyboardEvent){\n if($event.key !== 'Enter'){\n this.providerSelected = null;\n }\n }\n\n onKeydownInputLocationSearch($event: KeyboardEvent){\n if($event.key !== 'Enter'){\n this.locationObjectSelected = null;\n }\n }\n\n addClassnameSearchOpenedToBody(){\n this.document.body.classList.add('search-v1-opened');\n }\n\n removeClassnameSearchOpenedToBody(){\n this.document.body.classList.remove('search-v1-opened');\n }\n\n onFocusInputSearch(){\n this.autocompleteOpen = true;\n\n // ejecutar la busqueda del autocomplete si el input tiene un texto\n if(this.searchInput.nativeElement.value){\n this.autocompleteProviderTrigger._onChange(this.searchInput.nativeElement.value);\n }\n // si no tiene texto y valores por defecto, se agrega un timeout para que reposicione el dropdown\n else if(this.model.profilesDefault.length > 0) {\n \n setTimeout(()=>{\n this.autocompleteProviderTrigger._onChange('');\n this.autocompleteProviderTrigger.updatePosition();\n }, 100);\n }\n else{\n this.addClassnameSearchOpenedToBody();\n }\n }\n\n onFocusInputLocationSearch(){\n this.locationAutocompleteOpen = true;\n\n // ejecutar la busqueda del autocomplete si el input tiene un texto\n if(this.searchLocationInput.nativeElement.value){\n this.autocompleteLocationTrigger._onChange(this.searchLocationInput.nativeElement.value);\n }\n // si no tiene texto y valores por defecto, se agrega un timeout para que reposicione el dropdown\n else if(this.model.locationDefault != null) {\n setTimeout(()=>{\n this.autocompleteLocationTrigger._onChange('');\n this.autocompleteLocationTrigger.updatePosition();\n }, 100);\n }\n setTimeout(() => {\n if (this.isExtremeMobile() && this.locationAutocompleteOpen && !this.matAutocompleteLocation.isOpen)\n this.autocompleteLocationTrigger.openPanel();\n }, 100);\n }\n\n onBlurInputSearch(){\n if(!this.locationAutocompleteOpen)\n this.removeClassnameSearchOpenedToBody();\n \n if(!this.isExtremeMobile())\n this.autocompleteOpen = false;\n\n if(!this.searchInput.nativeElement.value){\n this.searchProviderCtrl.setValue(null);\n this.providerSelected = null;\n }\n }\n\n onBlurInputLocationSearch(){\n if(!this.autocompleteOpen)\n this.removeClassnameSearchOpenedToBody();\n\n if(!this.isExtremeMobile())\n this.locationAutocompleteOpen = false;\n\n if(!this.searchLocationInput.nativeElement.value){\n this.searchLocationCtrl.setValue(null);\n this.locationObjectSelected = null;\n }\n }\n\n showingCancelSearchProvider(){\n return this.isExtremeMobile() && this.autocompleteOpen;\n }\n\n onCancelSearchProvider(){\n this.autocompleteOpen = false;\n\n this.autocompleteProviderTrigger.closePanel();\n\n this.searchInput.nativeElement.disabled = true;\n setTimeout(() => this.searchInput.nativeElement.disabled = false, 100);\n\n this.removeClassnameSearchOpenedToBody();\n\n if(this.model.profilesDefault.length == 0 || this.filteredResultsCount == 0)\n event?.stopPropagation();\n }\n\n showingCancelSearchLocation(){\n return this.isExtremeMobile() && this.locationAutocompleteOpen;\n }\n\n onCancelSearchLocation(){ \n this.closeAutocompleteLocationpanel();\n if(this.model.locationDefault == null || this.filteredLocationResultsCount == 0)\n event?.stopPropagation();\n }\n\n private closeAutocompleteLocationpanel(): void {\n this.removeClassnameSearchOpenedToBody();\n\n this.locationAutocompleteOpen = false;\n this.searchLocationInput.nativeElement.disabled = true;\n setTimeout(() => this.searchLocationInput.nativeElement.disabled = false, 100);\n }\n\n autocompleteProfileOpened():void{\n this.autocompleteOpen = true;\n\n this.addClassnameSearchOpenedToBody();\n }\n\n autocompleteClosed() {\n this.removeClassnameSearchOpenedToBody();\n\n if(this.isExtremeMobile() && this.removingSelection)\n return;\n\n this.autocompleteOpen = false;\n }\n\n autocompleteLocationOpened():void{\n this.locationAutocompleteOpen = true;\n\n this.addClassnameSearchOpenedToBody();\n }\n\n autocompleteLocationClosed() {\n this.removeClassnameSearchOpenedToBody();\n\n if(this.isExtremeMobile() && this.removingSelection)\n return;\n\n //this.locationAutocompleteOpen = false;\n }\n\n\n showIconDropdownOption(item:DoctorSearchResult){\n return item.claseId == ClassConcept.ESPECIALIDAD\n || item.claseId == ClassConcept.DIAGNOSTICO\n || item.claseId == ClassConcept.AREAS_DE_ENFOQUE\n || item.claseId == ClassConcept.PROCEDIMIENTO;\n }\n\n getIconClassNameDropdownOption(item:DoctorSearchResult){\n let iconClassName = 'phr-iconset-';\n\n switch(item.claseId){\n case ClassConcept.ESPECIALIDAD:\n iconClassName += 'estetoscopio';\n break;\n case ClassConcept.DIAGNOSTICO:\n iconClassName += 'info-general2';\n break;\n case ClassConcept.AREAS_DE_ENFOQUE:\n iconClassName += 'medal';\n break;\n case ClassConcept.PROCEDIMIENTO:\n iconClassName += 'procedimientos';\n break;\n default:\n break;\n }\n\n return iconClassName;\n }\n\n showAvatarDropdownOption(item:DoctorSearchResult){\n return item.claseId == 0;\n }\n\n showDescriptionDropdownOption(item:DoctorSearchResult){\n return item.claseId == 0;\n }\n\n isDoctor(item:DoctorSearchResult) {\n return item.tipoPerfilPublico == PublicProfileType.Doctor;\n }\n\n getProfileTypeIconClassName(item:DoctorSearchResult){\n\n let profileType = item.tipoPerfilPublico;\n let className: string = 'phr-iconset-';\n\n switch(profileType){\n case PublicProfileType.Doctor:\n default:\n className += 'estetoscopio';\n break;\n case PublicProfileType.Farmacia:\n className += 'farmacia';\n break;\n case PublicProfileType.Clinica:\n className += 'hospital';\n break;\n case PublicProfileType.Fisioterapia:\n className += 'fisioterapia';\n break;\n case PublicProfileType.Laboratorio:\n className += 'laboratorios';\n break;\n case PublicProfileType.CentroDeImagenes:\n className += 'imagenologia';\n break; \n case PublicProfileType.ServiciosOdontologicos:\n className += 'odontologia';\n break;\n case PublicProfileType.Opticas:\n className += 'open-eye';\n break;\n }\n\n return className;\n }\n\n\n onClickSearchButton(){\n this.fireSearchEvent();\n }\n\n private getProfilesDefault(){\n return (this.model.profilesDefault && this.model.profilesDefault.length > 0)\n ? this.model.profilesDefault.map(cd => {\n let doctorSearchResult = new DoctorSearchResult();\n doctorSearchResult.id = cd.id;\n doctorSearchResult.claseId = cd.claseId;\n doctorSearchResult.clase = this.layoutService.getTextByLanguage(cd.clase, this.locale.language);\n doctorSearchResult.nombre = this.layoutService.getTextByLanguage(cd.nombre, this.locale.language);\n doctorSearchResult.descripcion = this.layoutService.getTextByLanguage(cd.descripcion, this.locale.language);\n doctorSearchResult.url = cd.url;\n doctorSearchResult.urlImagen = cd.urlImagen;\n\n return doctorSearchResult;\n })\n : [];\n }\n\n private fireSearchEvent(){\n this.searchInput.nativeElement.value = this.searchInput.nativeElement.value.trim();\n\n let _searchText = this.searchInput.nativeElement.value;\n let _providerSearchMessage = new ProviderSearchMessage();\n\n if(this.providerSelected){\n _providerSearchMessage.conceptNav = this.providerSelected.url;\n _providerSearchMessage.conceptId = this.providerSelected.id;\n _providerSearchMessage.conceptClaseId = this.providerSelected.claseId;\n }\n else {\n _providerSearchMessage.searchText = _searchText;\n }\n\n if(this.locationObjectSelected){\n if(this.locationObjectSelected.url){\n _providerSearchMessage.territorialDivisionIdentification = this.locationObjectSelected.url;\n }\n else {\n _providerSearchMessage.filtros = this.locationObjectSelected.id.toString();\n }\n }\n else{\n this.searchLocationCtrl.reset();\n }\n\n this.messageBusService.providerSearch(_providerSearchMessage);\n }\n\n private getLocationSearchGroupByDefault():LocationSearchResultGroup[]{\n let _resultGroup:LocationSearchResultGroup[] = [];\n\n // SECCION 1\n let _section1Grouped = this.model.locationDefault.seccion1 && this.model.locationDefault.seccion1.length > 0 \n ? this.utilsService.groupBy(this.model.locationDefault.seccion1, sd => sd.nivel)\n : new Map();\n\n _section1Grouped.forEach((value: TerritorialDivision[], key: number)=>{\n let resultGroupItem = new LocationSearchResultGroup();\n resultGroupItem.id = key;\n resultGroupItem.displayName = this.getLocationDisplayNameFromLevelDefault(key);\n\n resultGroupItem.results = value.map(td => { \n return {\n id: td.id, \n nombre: this.layoutService.getTextByLanguage(td.nombreCanonico, this.locale.language),\n url: td.identificador, \n icono: td.paisISO == 'PA' ? 'phr-iconset-panama' : 'phr-iconset-suraplace'\n };\n });\n\n _resultGroup.push(resultGroupItem);\n });\n\n // SECCION 2\n let _section2Grouped = this.model.locationDefault.seccion2 && this.model.locationDefault.seccion2.length > 0 \n ? this.utilsService.groupBy(this.model.locationDefault.seccion2, sd => sd.nivel)\n : new Map();\n\n _section2Grouped.forEach((value: TerritorialDivision[], key: number)=>{\n let resultGroupItem = new LocationSearchResultGroup();\n resultGroupItem.id = key;\n resultGroupItem.displayName = this.getLocationDisplayNameFromLevelDefault(key);\n\n resultGroupItem.results = value.map(td => { \n return {\n id: td.id,\n nombre: this.layoutService.getTextByLanguage(td.nombreCanonico, this.locale.language),\n url: td.identificador,\n icono: 'phr-iconset-suraplace' \n };\n });\n\n _resultGroup.push(resultGroupItem);\n });\n\n // SECCION 3\n let _section3Grouped = this.model.locationDefault.seccion3 && this.model.locationDefault.seccion3.length > 0 \n ? this.utilsService.groupBy(this.model.locationDefault.seccion3, sd => sd.claseId)\n : new Map();\n\n _section3Grouped.forEach((value: ConceptDefaultModel[], key: number)=>{\n let resultGroupItem = new LocationSearchResultGroup();\n resultGroupItem.id = key;\n resultGroupItem.displayName = this.layoutService.getTextByLanguage(value[0].clase, this.locale.language);\n\n resultGroupItem.results = value.map(td => { \n return {\n id: td.id,\n nombre: this.layoutService.getTextByLanguage(td.nombre, this.locale.language),\n url: \"\",\n icono: 'phr-iconset-hospital'\n };\n });\n\n _resultGroup.push(resultGroupItem);\n });\n\n return _resultGroup;\n }\n\n private getLocationsByLevels(value:string):Observable{\n return this.territorialDivisionsService.getByLevels(this.language, value, this.locationLevels).pipe(map((results:TerritorialDivision[])=>{\n let _resultGroup:LocationSearchResultGroup[] = [];\n let _territorialDivisionGrouped = this.utilsService.groupBy(results, sd => sd.nivel);\n\n _territorialDivisionGrouped.forEach((value: TerritorialDivision[], key: number)=>{\n let resultGroupItem = new LocationSearchResultGroup();\n resultGroupItem.id = key;\n resultGroupItem.displayName = this.getLocationDisplayNameFromLevel(key);\n \n resultGroupItem.results = value.map(td => { \n return {id: td.id, nombre: td.nombreCanonico, url: td.identificador, icono: 'phr-iconset-suraplace' };\n });\n \n _resultGroup.push(resultGroupItem);\n });\n\n return _resultGroup;\n }));\n }\n\n private getLocationDisplayNameFromLevel(level: number) {\n return level == 1 ? this.countryText : (level == 2 ? this.stateText : this.cityText);\n }\n\n private getLocationDisplayNameFromLevelDefault(level: number) {\n return level == 1 ? \"\" : (level == 2 ? this.stateDefaultText : this.cityDefaultText);\n }\n\n getAvatarModel(item:DoctorSearchResult) : PublicProfileAvatarComponentModel {\n var avatarModel = new PublicProfileAvatarComponentModel();\n\n avatarModel.personId = item.idPersona;\n avatarModel.avatarUrl = item.urlImagen;\n avatarModel.fullName = item.nombre;\n avatarModel.sex = item.sexo;\n avatarModel.profileType = item.tipoPerfilPublico; \n avatarModel.useAvatarPadding = false;\n\n return avatarModel;\n }\n\n showCloseIcon(){\n return this.providerSelected\n || (this.searchInput \n && this.searchInput.nativeElement \n && this.searchInput.nativeElement.value);\n }\n}\n\nexport class SearchProvidersComponentConfiguration{\n profileTypes:string;\n profilesDefault: ConceptDefaultModel[] = [];\n placeholderProvider: string;\n placeholderLocation: string;\n locationDefault:LocationDefaultModel;\n hideLocationAutocomplete:boolean = false;\n comboLocation:boolean = false;\n\n constructor(obj: SearchProvidersComponentConfiguration);\n constructor(obj?:any){\n this.profileTypes = obj && obj.profileTypes || '';\n this.profilesDefault = obj && obj.profilesDefault || [];\n this.placeholderProvider = obj && obj.placeholderProvider || '';\n this.placeholderLocation = obj && obj.placeholderLocation || '';\n this.locationDefault = obj && obj.locationDefault || null;\n this.hideLocationAutocomplete = obj && obj.hideLocationAutocomplete || false;\n this.comboLocation = obj && obj.comboLocation || false;\n } \n}\n\nexport class DoctorSearchResultGroup {\n classId: number;\n className: string;\n results: DoctorSearchResult[];\n}\n\nexport class LocationSearchResultGroup {\n id: number;\n displayName: string;\n results: LocationSearchResultItem[];\n}\n\nexport class LocationSearchResultItem {\n id: number;\n nombre: string;\n url: string;\n icono?: string;\n}","import { Component, HostListener, Inject, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { DirectorySearchTitle } from 'src/app/shared/interfaces/directory-search-title';\n\n@Component({\n selector: 'app-search-result-title',\n templateUrl: './search-result-title.component.html',\n styleUrls: ['./search-result-title.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SearchResultTitleComponent implements OnChanges {\n\n @Input() nombreFormulario: string;\n texto1 = 'Doctores';\n texto2 = '';\n textoPrep = '';\n texto3 = '';\n private title: DirectorySearchTitle = {aseguradora: '', id: 0, lugar: '', perfilBusqueda: '', preposicion: ''};\n private texto1Tamanios: {[key: string]: number} = {'600':40, '800':36, '1000':40, '2560':50};\n private texto2Tamanios: {[key: string]: number} = {'600':12, '800':10, '1000':12, '2560':18};\n private texto3Tamanios: {[key: string]: number} = {'600':34, '800':30, '1000':34, '2560':40};\n\n constructor(@Inject(L10N_LOCALE) public locale: L10nLocale) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.nombreFormulario) {\n this.title.perfilBusqueda = (JSON.parse(this.nombreFormulario) as Array<{lenguaje: string, texto: string}>)\n .find(x => x.lenguaje == this.locale.language)?.texto ?? '';\n }\n }\n\n setTitle(arg: DirectorySearchTitle): void {\n this.title = arg;\n this.textoPrep = arg.preposicion;\n this.windowResize()\n }\n\n @HostListener('window:resize', ['$event'])\n private windowResizeEvent(_?: Event) {\n this.windowResize();\n }\n\n private windowResize() {\n const width = window.innerWidth;\n this.texto1 = this.truncar(this.texto1Tamanios, width, this.title.perfilBusqueda);\n this.texto2 = this.truncar(this.texto2Tamanios, width, this.title.aseguradora);\n this.texto3 = this.truncar(this.texto3Tamanios, width, this.title.lugar);\n }\n\n private truncar(arg0: {[key: string]: number}, arg1: number, arg2: string): string {\n const listKeys = Object.keys(arg0).filter(x => arg1 <= parseInt(x));\n const breakpoint = parseInt(listKeys[0]);\n const maxWidth = arg0[breakpoint] - 1;\n const ellipsis = arg2.length > maxWidth;\n return `${arg2.slice(0, maxWidth).trim()}${ellipsis ? '...' : ''}`;\n }\n\n}\n","
\n \n {{texto1}} {{(texto2 ? 'de ' + texto2 : '')}} {{texto3 ? textoPrep + ' ' + texto3 : ''}}\n
","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MessageBusService, ProviderSearchMessage } from 'src/app/core/services/message-bus.service';\nimport { PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { ProviderFilterModel } from '../provider-filters-content/provider-filters-content.component';\n\n@Component({\n selector: 'app-provider-filters-dialog',\n templateUrl: './provider-filters-dialog.component.html',\n styleUrls: ['./provider-filters-dialog.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ProviderFiltersDialogComponent implements OnInit {\n\n constructor(\n private messageBusService: MessageBusService,\n @Inject(MAT_DIALOG_DATA) public data: ProviderFiltersDialogComponentData,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n ) { }\n\n ngOnInit(): void {\n }\n\n clearFilters(){\n this.messageBusService.clearProviderFilters();\n }\n}\n\nexport class ProviderFiltersDialogComponentData{\n filterModel: ProviderFilterModel;\n publicProfileTypes:PublicProfileType[] ;\n providerSearchMessage: ProviderSearchMessage;\n}\n\n\n","
\n
\n

{{'shared.searchResults.providerFiltersDialog.title' | translate:locale.language }}

\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n","
\n \n \n
","import { Component, HostListener, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { MessageBusService, ProviderSearchMessage } from 'src/app/core/services/message-bus.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ProviderFiltersDialogComponent, ProviderFiltersDialogComponentData } from '../provider-filters-dialog/provider-filters-dialog.component';\nimport { Observable, Subject, forkJoin, of } from 'rxjs';\nimport { catchError, map, takeUntil } from 'rxjs/operators';\nimport { ProfileFilterSearchResult, ProfileFilterSearchResultConcept } from 'src/app/shared/models/people/profile-filter-search-result.model';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { TextLanguage } from 'src/app/shared/models/people/text-language.model';\nimport { DirectoryFiltersItemType } from 'src/app/shared/models/systems/directory.model';\n\n@Component({\n selector: 'app-provider-filters-content',\n templateUrl: './provider-filters-content.component.html',\n styleUrls: ['./provider-filters-content.component.css']\n})\nexport class ProviderFiltersContentComponent implements OnInit, OnChanges, OnDestroy {\n\n private ngUnsubscribe = new Subject();\n private onChanges = new Subject();\n\n filterModel: ProviderFilterModel;\n publicProfileTypes:PublicProfileType[] = [PublicProfileType.Doctor];\n\n show: boolean = false;\n isMobile:boolean = false;\n mdDialogRef: MatDialogRef;\n isDialogOpened: boolean = false;\n\n loading:boolean = false;\n\n selectedConcepts:ProfileFilterSearchResultConcept [] = [];\n\n @Input() profileTypes:string;\n @Input() providerSearchMessage: ProviderSearchMessage;\n\n constructor(\n private baseService: BaseService,\n private dialog: MatDialog,\n private messageBusService: MessageBusService,\n private publicProfileService: PublicProfileService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnInit(): void {\n this.isMobile = window.innerWidth <= 800;\n\n if(this.profileTypes)\n this.publicProfileTypes = this.profileTypes.split(',').map(pt => +pt);\n\n this.getDirectoryFilters();\n\n this.messageBusService.onOpenProviderFilters()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(()=>{\n this.openDialog();\n });\n\n this.onChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data:SimpleChanges)=>{\n this.onChangesInputs();\n });\n \n this.messageBusService.onClearProviderFilters()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(()=>{\n this.filterModel.clear();\n });\n\n this.preloadSelectedFilters();\n\n this.messageBusService.onLocaleChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(message =>{\n // Re load filtros \n setTimeout(() => {\n window.location.reload();\n }, 500);\n });\n }\n\n ngOnDestroy():void{\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.onChanges.next(changes);\n }\n\n openDialog(){\n\n this.preloadSelectedFilters();\n\n let dataDialog = new ProviderFiltersDialogComponentData();\n \n dataDialog.filterModel = this.filterModel;\n dataDialog.providerSearchMessage = this.providerSearchMessage;\n dataDialog.publicProfileTypes = this.publicProfileTypes;\n\n this.mdDialogRef = this.dialog.open(ProviderFiltersDialogComponent, \n { \n data: dataDialog,\n panelClass: ['provider-filters-dialog', 'provider-filters-dialog-in']\n });\n\n this.isDialogOpened = true;\n\n this.mdDialogRef.afterClosed().subscribe(accepted => {\n this.isDialogOpened = false;\n\n this.getSelectedFilters();\n });\n }\n\n getSelectedFilters(){\n this.loading = false;\n\n this.selectedConcepts = this.filterModel.getSelectedConceptsObject();\n\n this.messageBusService.providerFiltersCount(this.selectedConcepts.length);\n }\n\n removeFilter(concept:ProfileFilterSearchResultConcept){\n\n this.filterModel.remove(concept.cc);\n\n let conceptIds = this.providerSearchMessage.filtros.split(',');\n\n this.providerSearchMessage.filtros = conceptIds.filter(c=> +c != concept.cc).join(',');\n\n this.messageBusService.providerSearch(this.providerSearchMessage);\n\n this.getSelectedFilters();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.isMobile = event.target.innerWidth <= 800;\n\n if(!this.isMobile && this.mdDialogRef){\n this.mdDialogRef.close();\n }\n }\n\n private getDirectoryFilters() {\n this.filterModel = new ProviderFilterModel();\n let directory = this.baseService.getDirectory();\n\n if (directory && directory.filtros) {\n let filtersObj = JSON.parse(directory.filtros);\n let directoryFilters = this.baseService.parseObject(filtersObj); \n\n // Find the filter for this provider\n let provider = directoryFilters.providers.find(p => this.publicProfileTypes.includes(p.type));\n\n if (provider) {\n this.filterModel.loadFromModel(provider.filters); \n \n this.show = true;\n }\n }\n }\n\n private preloadSelectedFilters(){\n if(!this.providerSearchMessage.filtros)\n return;\n\n this.loading = true;\n\n let filters = this.providerSearchMessage.filtros.split(',').map(f=> +f);\n\n let loadFiltersArray$:Observable[] = [];\n\n this.filterModel.items.forEach(item => {\n\n if(item.isDropdown()){\n loadFiltersArray$.push(this.loadFilters(item, filters));\n }\n else{\n item.active = filters.filter(f=> f == item.clinicConceptId).length > 0;\n }\n });\n\n if(loadFiltersArray$.length > 0){\n forkJoin(loadFiltersArray$)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result =>{\n this.getSelectedFilters();\n });\n }\n else{\n this.getSelectedFilters();\n }\n\n }\n \n private loadFilters(item: ProviderFilterModelItem, prefilters:number[] = []) {\n let searchText = this.providerSearchMessage.searchText;\n let conceptType = \"\";\n let concept = \"\";\n\n let filtersString = this.getFiltersIds().join(',');\n\n let accountName = this.baseService.getCliniwebDirectoryCompanyName();\n let accountId = this.baseService.getCliniwebDirectoryCompanyId();\n let locationCompanyIds = this.baseService.getCliniwebDirectoryLocationCompanyIds(); \n\n let location = this.baseService.getLocationFromIdentifier(this.providerSearchMessage.territorialDivisionIdentification);\n\n if (!accountName)\n accountName = this.baseService.getCompanyName();\n\n if (this.providerSearchMessage.conceptNav) {\n // Some time the navigation contains '/' like: '/especialidad/cardiologia' in those cases filter the empty strings after split\n let parts = this.providerSearchMessage.conceptNav.split(\"/\").filter(e => e);\n conceptType = parts[0];\n concept = parts[1];\n }\n\n item.loading = true;\n\n return this.publicProfileService.getPublicProfileFilters(\n this.baseService.getLanguage(),\n conceptType,\n searchText, \n concept,\n filtersString,\n accountName,\n location.country,\n location.state,\n location.city,\n item.clinicConceptType,\n this.publicProfileTypes,\n accountId,\n locationCompanyIds,\n this.providerSearchMessage.conceptId,\n this.providerSearchMessage.conceptClaseId\n ).pipe(\n map((result:ProfileFilterSearchResult[]) =>{\n let resultItem = result[0];\n\n if (resultItem) {\n // Mark the items as loaded\n item.loadOption(resultItem.conceptos, prefilters);\n }\n\n item.loading = false;\n\n return true;\n }),\n catchError((err) => {\n this.baseService.handleServiceError(err, \"Error getting profile filters\"); \n return of(false);\n })\n );\n }\n\n private getFiltersIds(){\n let filterByParams = this.providerSearchMessage.filtros \n ? this.providerSearchMessage.filtros.split(',').map(f => +f)\n : [];\n\n let filterSelected = this.filterModel.getSelectedConcepts();\n\n let filterIds = filterByParams.concat(filterSelected);\n\n filterIds = filterIds.filter((item, index)=> { return (filterIds.indexOf(item) == index)});\n\n return filterIds;\n }\n\n private onChangesInputs(){\n this.filterModel.clear();\n\n if(this.providerSearchMessage.filtros){ \n // si hay filtros en el mensaje es por un aseguradora seleccionada\n \n this.loading = true;\n\n let filters = this.providerSearchMessage.filtros.split(',').map(f=> +f);\n let insuranceFilter = this.filterModel.items.find(i=> i.type == DirectoryFiltersItemType.Aseguradora);\n\n if(insuranceFilter){\n this.loadFilters(insuranceFilter, filters)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result =>{\n this.getSelectedFilters();\n });\n } \n }\n else{\n this.getSelectedFilters();\n }\n }\n}\n\nexport class ProviderFilterModel{\n controlId:number = 1;\n loaded = false;\n items: ProviderFilterModelItem[];\n\n loadFromModel(filters: DirectoryFiltersItemsModel[]){\n this.items = [];\n\n let favoriteFilter = filters.find(f => f.tipo == DirectoryFiltersItemType.RedFavorita);\n\n filters.map(f => {\n let item = new ProviderFilterModelItem();\n item.loadFromModel(f, this.controlId);\n\n // se completa el campo para excluirlo del filtro que no es favorito y que es del mismo tipo de concepto\n item.favoriteFilterId = favoriteFilter && favoriteFilter.idClaseConceptoClinico == item.clinicConceptType \n ? favoriteFilter.idConceptoClinico \n : 0;\n\n this.controlId++;\n\n this.items.push(item);\n });\n\n this.loaded = true;\n }\n\n getSelectedConcepts() {\n let selectedList:number[] = [];\n\n if(this.items){\n this.items.forEach(item => {\n let conceptIds = item.getSelectedConceptIds();\n selectedList = selectedList.concat(conceptIds);\n });\n }\n\n return selectedList;\n }\n\n getSelectedConceptsObject(){\n let selectedList:ProfileFilterSearchResultConcept[] = [];\n\n if(this.items){\n this.items.forEach(item => {\n let concepts = item.getSelectedConcepts();\n selectedList = selectedList.concat(concepts);\n });\n }\n\n return selectedList;\n }\n\n clear() {\n if (this.items)\n this.items.map(i => i.clear());\n }\n\n remove(conceptId:number){\n this.items.forEach(item=> {\n if(item.isDropdown() && item.selectedConcepts.find(sc=>sc.cc == conceptId) || item.clinicConceptId == conceptId){\n item.remove(conceptId);\n }\n });\n }\n}\n\nexport class ProviderFilterModelItem {\n controlId:number = 0;\n name: TextLanguage[];\n showInputSearch: boolean;\n type: DirectoryFiltersItemType;\n clinicConceptType:number = 0;\n clinicConceptId:number = 0;\n concepts: ProfileFilterSearchResultConcept[] = [];\n filteredConcepts: Observable;\n loading:boolean;\n loaded:boolean; \n active:boolean;\n selectedConcepts: ProfileFilterSearchResultConcept [] = [];\n favoriteFilterId: number;\n hideOnDesktop: boolean;\n singleSelection: boolean;\n groups: DirectoryFiltersGroupModel[];\n viewConfig: DirectoryFiltersViewConfig;\n\n optionsSubj = new Subject();\n\n loadFromModel(item: DirectoryFiltersItemsModel, controlId:number) {\n this.controlId = controlId;\n this.name = item.nombreClaseConceptoClinico;\n this.showInputSearch = item.mostrarInputSearch;\n this.type = item.tipo;\n this.clinicConceptType = item.idClaseConceptoClinico;\n this.clinicConceptId = item.idConceptoClinico;\n this.hideOnDesktop = item.ocultarEnDesktop;\n this.singleSelection = item.seleccionSimple;\n this.groups = item.grupos;\n this.viewConfig = item.configuracionVista;\n }\n\n isDropdown() {\n return this.clinicConceptId <= 0;\n }\n\n isFavoriteFilter(){\n return this.type == DirectoryFiltersItemType.RedFavorita;\n }\n\n needToLoadOptions() {\n return this.isDropdown() && !this.loaded;\n }\n\n needToFireSearchOnClick() {\n return !this.isDropdown();\n }\n\n clear() {\n this.loaded = false;\n this.active = false;\n this.selectedConcepts = [];\n this.optionsSubj.next([]);\n }\n\n remove(conceptId:number){\n this.loaded = false;\n this.active = false;\n this.selectedConcepts = this.selectedConcepts.filter(selectedConcept=> selectedConcept.cc != conceptId);\n this.optionsSubj.next(this.selectedConcepts);\n }\n\n getSelectedConceptIds(): number[] {\n return this.isDropdown() && this.selectedConcepts.length > 0\n ? this.selectedConcepts.map(c => c.cc)\n : (!this.isDropdown() && this.active)\n ? [this.clinicConceptId]\n : [];\n }\n\n getSelectedConcepts(): ProfileFilterSearchResultConcept[]{\n return this.isDropdown() && this.selectedConcepts.length > 0\n ? this.selectedConcepts\n : (!this.isDropdown() && this.active)\n ? [{cc: this.clinicConceptId, n_cc: JSON.stringify(this.name)} as ProfileFilterSearchResultConcept ]\n : [];\n }\n\n loadOption(options: ProfileFilterSearchResultConcept[], prefilters: number[] = []) {\n this.concepts = this.favoriteFilterId > 0 \n ? options.filter(op => op.cc != this.favoriteFilterId)\n : options; \n \n this.loaded = true;\n\n if(prefilters.length > 0){\n\n prefilters.forEach(pf => {\n let concept = this.concepts.find(c => c.cc == pf);\n\n if(concept && this.selectedConcepts.filter(sc=> sc.cc === concept?.cc).length == 0)\n this.selectedConcepts.push(concept);\n });\n }\n\n // Refresh observer\n this.optionsSubj.next(this.concepts);\n }\n\n onClick() {\n // Chip\n if (!this.isDropdown())\n this.active = !this.active; \n // Dropdown\n else {\n \n }\n }\n\n getIconClass() {\n let iconClass = \"\";\n\n switch (this.type) {\n case DirectoryFiltersItemType.RedFavorita:\n iconClass = \"phr-iconset-fav\";\n break;\n case DirectoryFiltersItemType.RedesSura:\n iconClass = \"phr-iconset-shield\";\n break;\n case DirectoryFiltersItemType.Especialidad:\n iconClass = \"phr-iconset-estetoscopio\";\n break;\n case DirectoryFiltersItemType.AreaEnfoque:\n iconClass = \"phr-iconset-PHR-card\";\n break;\n case DirectoryFiltersItemType.Diagnostico:\n iconClass = \"phr-iconset-illness\";\n break;\n case DirectoryFiltersItemType.Procedimiento:\n iconClass = \"phr-iconset-procedimientos\";\n break;\n case DirectoryFiltersItemType.Teleconsulta:\n iconClass = \"phr-iconset-video-consulta\";\n break;\n case DirectoryFiltersItemType.SedeSura:\n iconClass = \"phr-iconset-place\";\n break;\n case DirectoryFiltersItemType.Abierto24Hrs:\n iconClass = \"phr-iconset-clock\";\n break;\n case DirectoryFiltersItemType.Delivery:\n iconClass = \"phr-iconset-delivery\";\n break;\n case DirectoryFiltersItemType.TipoCentroImagenes:\n iconClass = \"phr-iconset-imagenologia\";\n break;\n case DirectoryFiltersItemType.Urgencias:\n iconClass = \"phr-iconset-urgencia\";\n break;\n case DirectoryFiltersItemType.Hospitalizacion:\n iconClass = \"phr-iconset-suero\";\n break;\n case DirectoryFiltersItemType.Cirugia:\n iconClass = \"phr-iconset-bisturi\";\n break;\n case DirectoryFiltersItemType.LugarAtencion:\n iconClass = \"phr-iconset-hospital\";\n break;\n case DirectoryFiltersItemType.AgendamientoEnLinea:\n iconClass = \"phr-iconset-suradate\";\n break;\n case DirectoryFiltersItemType.Aseguradora:\n iconClass = \"phr-iconset-aseguradora2\";\n break; \n default:\n break;\n }\n\n return iconClass;\n }\n\n getOptionsObserver() {\n return this.optionsSubj.asObservable();\n }\n\n filterOptions = (searchText: any) => {\n // When an option is selected, here we receive the complete object instead of the search string \n if (searchText && searchText.id)\n searchText = searchText.n_cc;\n\n const filterValue = searchText.toLowerCase();\n\n return this.concepts.filter(c => c.n_cc.toLowerCase().indexOf(filterValue) === 0);\n }\n\n getDisplayName = (option: ProfileFilterSearchResultConcept) => {\n if (!option)\n return \"\";\n\n return this.singleSelection\n ? `${option.n_cc}`\n : `${option.n_cc} (${option.num})`;\n }\n\n getDisplayTitleName = (option: ProfileFilterSearchResultConcept) => {\n if (!option)\n return \"\";\n \n return option.n_cc;\n }\n\n getSelectedOptionDisplayName = (option: ProfileFilterSearchResultConcept) => {\n let displayValue = '';\n if(this.selectedConcepts.length > 0){\n this.selectedConcepts.forEach((concept, index) => {\n if (index === 0) {\n displayValue = concept.n_cc;\n } else {\n displayValue += ', ' + concept.n_cc;\n }\n });\n }\n \n return displayValue;\n }\n\n selectOption(option: ProfileFilterSearchResultConcept) {\n this.selectedConcepts.push(option);\n }\n}\n\nexport class DirectoryFiltersModel {\n providers: DirectoryFiltersNetworkModel[];\n}\n\nexport class DirectoryFiltersNetworkModel {\n type: PublicProfileType;\n searchProviderTypes: PublicProfileType[];\n filters: DirectoryFiltersItemsModel[];\n}\n\nexport class DirectoryFiltersItemsModel {\n tipo: DirectoryFiltersItemType;\n idConceptoClinico: number;\n idClaseConceptoClinico: number;\n nombreClaseConceptoClinico: TextLanguage[];\n mostrarInputSearch:boolean;\n ocultarEnDesktop: boolean = false;\n seleccionSimple:boolean;\n grupos: DirectoryFiltersGroupModel[];\n configuracionVista: DirectoryFiltersViewConfig;\n}\n\nexport class DirectoryFiltersGroupModel {\n idsConceptosClinicos: number[];\n tituloGrupo: TextLanguage[];\n tooltip: TextLanguage[];\n}\n\nexport class DirectoryFiltersViewConfig {\n usarIcono: boolean;\n claseCssIcono: string;\n}","\n
\n \n \n
\n\n \n \n
\n\n
\n \n \n \n \n {{getLocationTabTitle(location)}}\n \n \n
\n\n \n \n \n
\n
\n
\n
\n
\n
\n
\n","import { Component, Inject, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { PublicProfileDetailType } from 'src/app/shared/models/people/profile-detail.model';\nimport { ProfileLocationResultModel, ProfileResultModel, PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\nimport { TextLanguage } from 'src/app/shared/models/people/text-language.model';\n\n@Component({\n selector: 'app-provider-card',\n templateUrl: './provider-card.component.html',\n styleUrls: ['./provider-card.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ProviderCardComponent implements OnInit, OnDestroy {\n\n provider: ProfileResultModel;\n @Input() set profile(provider: ProfileResultModel) {\n this.provider = provider; \n }\n @Input() locations: ProfileLocationResultModel[] = [];\n\n locationSelected: ProfileLocationResultModel | null;\n\n socialNetworksList:SocialNetworkDto[] = [];\n socialNetworksLoaded:boolean = false;\n socialNetworksLoading:boolean = false;\n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n constructor(\n private translation: L10nTranslationService,\n private profileService: PublicProfileService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnInit(): void {\n this.locationSelected = this.locations.length > 0 ? this.locations[0] : null;\n }\n\n ngOnDestroy():void{\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n goToProfile($event:Event) {\n $event.preventDefault();\n $event.stopPropagation();\n\n let url = this.profileService.getPublicProfileUrl(this.provider.rutaNavegacion); \n\n switch(this.provider.tipoPerfil) {\n case PublicProfileType.Doctor:\n case PublicProfileType.Farmacia: \n case PublicProfileType.Clinica:\n case PublicProfileType.Fisioterapia: \n case PublicProfileType.Laboratorio:\n case PublicProfileType.CentroDeImagenes:\n case PublicProfileType.ServiciosOdontologicos:\n case PublicProfileType.Opticas:\n case PublicProfileType.ClinicasDeAtencionPrimaria:\n default:\n url = `/${url}`;\n break;\n }\n\n this.profileService.openPublicProfile(url);\n }\n\n locationTrackBy(index : number, item: ProfileLocationResultModel){\n return item.id; \n }\n\n getLocationTabTitle(location:ProfileLocationResultModel) {\n let isTeleconsultation = location.teleconsulta == \"S\";\n\n let textTitle = isTeleconsultation\n ? this.translation.translate(\"shared.searchResults.providerCard.labelTabVirtualLocation\", this.locale.language)\n : this.isDoctorProfile()\n ? this.translation.translate(\"shared.searchResults.providerCard.labelTabLocationDoctor\", this.locale.language)\n : this.translation.translate(\"shared.searchResults.providerCard.labelTabLocation\", this.locale.language);\n \n let i = isTeleconsultation\n ? this.locations.filter(l => l.teleconsulta == \"S\").indexOf(location)\n : this.locations.filter(l => l.teleconsulta != \"S\").indexOf(location);\n\n return this.locations.length > 1\n ? `${textTitle} ${i + 1 }`\n : textTitle;\n }\n\n isDoctorProfile(){\n return this.provider.tipoPerfil == PublicProfileType.Doctor;\n }\n\n isClinicProfile(){\n return this.provider.tipoPerfil == PublicProfileType.Clinica;\n }\n\n getWebsiteUrl() {\n let url = this.provider.sitioWeb;\n\n if (!url.startsWith(\"http\"))\n url = \"http://\" + url;\n\n return url;\n }\n\n loadSocialNetworks() {\n this.socialNetworksLoading = true;\n this.profileService.getProfileDetails(\n this.provider.id,\n PublicProfileDetailType.SocialNetworks)\n .subscribe(data => {\n this.socialNetworksLoaded = true;\n this.socialNetworksLoading = false;\n\n if(!data || data.length == 0){\n return;\n }\n\n this.socialNetworksList = data.map(sn => {\n let dto = new SocialNetworkDto();\n\n dto.networkType = sn.idObjetoDetalle;\n dto.url = sn.objetoDetalle;\n dto.iconClassName = this.getSocialNetworkIconClassName(sn.idObjetoDetalle);\n dto.text = this.getOptionTextSocialNetwork(sn.idObjetoDetalle);\n\n return dto;\n });\n });\n }\n\n getSocialNetworkIconClassName(networkType:number){\n let iconClassName = 'phr-iconset-';\n\n switch (networkType) {\n // Facebook\n case 24:\n iconClassName += \"facebook\";\n break;\n // Twitter\n case 25:\n iconClassName += \"twitter\";\n break;\n // Youtube\n case 26:\n iconClassName += \"youtube\";\n break;\n // Linkedin\n case 27:\n iconClassName += \"linked-in\";\n break;\n // Instagram\n case 28:\n iconClassName += \"instagram\";\n break;\n }\n\n return iconClassName;\n }\n\n getOptionTextSocialNetwork(networkType:number){ \n switch (networkType) {\n // Facebook\n case 24:\n return \"Facebook\";\n // Twitter\n case 25:\n return \"Twitter\";\n // Youtube\n case 26:\n return \"Youtube\";\n // Linkedin\n case 27:\n return \"Linkedin\";\n // Instagram\n case 28:\n return \"Instagram\";\n default:\n return \"\";\n }\n }\n\n setLocationSelected(tabEvent:MatTabChangeEvent) { \n this.locationSelected = this.locations[tabEvent.index];\n }\n}\n\nexport class SocialNetworkDto{\n networkType: number;\n url: string;\n iconClassName: string;\n text: string;\n}\n\nexport class FeatureConceptDto{\n text: TextLanguage[];\n iconClassName: string;\n}","
\n \n\n
\n \n
\n \n \n
\n \n \n \n
\n {{subtitle | i18nText:locale.language}}\n
\n
\n {{description | i18nText:locale.language}}\n {{ 'shared.searchResults.results.viewMore' | translate:locale.language }}\n
\n
\n \n
\n \n \n
\n
\n {{providersResult.cantidadTotalResulados}} {{ 'shared.searchResults.results.text1' | translate:locale.language }}\n
\n
\n\n \n
\n \n
\n
\n \n
\n \n\n
\n \n {{'shared.searchResults.results.emptyText1' | translate:locale.language }}\n {{'shared.searchResults.results.emptyText2' | translate:locale.language }}\n
\n\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
","import { Component, HostListener, Inject, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { Observable, Subject, Subscription, zip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { MessageBusService, ProviderSearchMessage } from 'src/app/core/services/message-bus.service';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\nimport { ProfileResultModel, ProfileSearchResultsModel, PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\nimport { TextLanguage } from 'src/app/shared/models/people/text-language.model';\nimport { environment } from 'src/environments/environment';\nimport { DOCUMENT, Location } from '@angular/common';\nimport { SearchQsParamMapModel, SearchQsParametersModel } from 'src/app/shared/models/search-results/search-parameters.model';\nimport { DirectoryService } from 'src/app/core/services/directory.service';\nimport { TerritorialDivision } from 'src/app/shared/models/systems/territorial-division.model';\nimport { TerritorialDivisionsService } from 'src/app/core/services/territorial-divisions.service';\nimport { SearchResultTitleComponent } from '../search-result-title/search-result-title.component';\nimport { UtilsService } from 'src/app/core/services/utils.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\n\n@Component({\n selector: 'app-search-results',\n templateUrl: './search-results.component.html',\n styleUrls: ['./search-results.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('SearchResultsComponent')\nexport class SearchResultsComponent implements OnInit, OnDestroy, IControlComponent {\n @ViewChild(SearchResultTitleComponent) private searchResultTitleComponent: SearchResultTitleComponent;\n data: FormComponentData;\n anchoPerfilBusqueda = 0;\n language:string;\n subtitle: TextLanguage[];\n description: TextLanguage[];\n showFullDescription: boolean = false;\n fullDescription: TextLanguage[];\n profileTypes: string;\n profileTypesArray:PublicProfileType[] = [];\n\n providerSearchMessage:ProviderSearchMessage = new ProviderSearchMessage();\n\n accountName:string;\n accountId: number;\n locationCompanyIds: string; \n pageSize:number = 0;\n pageNumber:number = 1;\n disableScroll:boolean = false;\n seed:string = \"\";\n loadingInitialResults = false;\n showDivider:boolean = false;\n loadingResults:boolean = false;\n\n providersResult: ProfileSearchResultsModel;\n\n componentData: SearchResultsComponentData;\n\n private paramMap: SearchQsParamMapModel;\n private qsParams: SearchQsParametersModel;\n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n private doSearchProfilesSubscribe:Subscription;\n\n private searchCountry: TerritorialDivision | null;\n\n constructor(\n private baseService: BaseService,\n private publicProfileService: PublicProfileService,\n private route: ActivatedRoute,\n private router: Router,\n private location: Location,\n private messageBusService: MessageBusService,\n private directoryService: DirectoryService,\n private territorialDivisionService: TerritorialDivisionsService,\n @Inject(DOCUMENT) private document: Document,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private utilsService: UtilsService,\n private layoutService: LayoutService) {\n\n this.language = this.locale.language;\n \n this.messageBusService.onScrollTopBody()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((scrollTop: number)=>{\n this.showDivider = scrollTop > 110;\n });\n\n // Subscribe to new search event\n this.messageBusService.onProviderSearch()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(message => {\n\n this.resetSearch();\n\n this.providerSearchMessage = message;\n\n this.updateRoute();\n\n this.searchProviders();\n });\n\n this.messageBusService.onLocaleChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(message =>{\n this.language = message.language;\n\n this.resetSearch();\n\n this.searchProviders();\n });\n\n }\n\n ngOnInit(): void {\n this.layoutService.addClassToBody('search-results');\n\n this.accountName = this.baseService.getCliniwebDirectoryCompanyName();\n this.accountId = this.baseService.getCliniwebDirectoryCompanyId();\n this.locationCompanyIds = this.baseService.getCliniwebDirectoryLocationCompanyIds();\n this.seed = this.baseService.getSearchSeed();\n this.pageSize = environment.searchProfilesPageSize;\n\n this.setSearchCountryByCountryApp();\n\n this.parseControlData();\n\n this.initRouteConfig();\n\n this.messageBusService.onSendTerritorialDivisionCountry()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg=>{\n\n this.setSearchCountry(msg.country);\n this.searchProviders();\n }); \n\n let containerEl = window.document.getElementsByTagName(\"html\")[0]; \n this.utilsService.scrollToWithAnimation(containerEl, 0);\n\n // There are some cases in which the user navigate back to this page from login and header is not visible\n if (!this.layoutService.isHeaderVisible()) {\n \n setTimeout(() => {\n this.messageBusService.showHeader();\n this.messageBusService.showAnonymousMenu();\n }, 500);\n }\n }\n\n ngOnDestroy():void{\n this.layoutService.removeClassToBody('search-results');\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n initRouteConfig(){\n let _paramMap$ = this.route.paramMap;\n let _queryParams$ = this.route.queryParamMap;\n\n zip(_paramMap$, _queryParams$)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(results =>{\n\n this.paramMap = new SearchQsParamMapModel();\n\n this.paramMap.param1 = results[0].get('param1') || '';\n this.paramMap.param2 = results[0].get('param2') || '';\n this.paramMap.param3 = results[0].get('param3') || '';\n this.paramMap.param4 = results[0].get('param4') || '';\n this.paramMap.param5 = results[0].get('param5') || '';\n\n this.qsParams = new SearchQsParametersModel();\n \n this.qsParams.t = results[1].get('t') || '';\n this.qsParams.filtros = results[1].get('filtros') || '';\n this.qsParams.idC = results[1].get('idC') || \"\";\n this.qsParams.idTc = results[1].get('idTc') || '';\n\n this.fireSearchByParams();\n }, error=>{\n console.log('error');\n });\n }\n\n fireSearchByParams(){ \n if(this.paramMap.param1){\n // busqueda por texto\n if(this.paramMap.param1 == \"texto\" || this.paramMap.param1 == \"todos\"){\n\n if(this.paramMap.param1 == \"texto\")\n this.providerSearchMessage.searchText = this.qsParams.t;\n\n // la ruta contiene division territorial\n if(this.paramMap.param2){\n let _id = this.paramMap.param2;\n\n if(this.paramMap.param3)\n _id +=`/${this.paramMap.param3}`;\n\n if(this.paramMap.param4)\n _id +=`/${this.paramMap.param4}`;\n\n this.providerSearchMessage.territorialDivisionIdentification = _id;\n }\n }\n // busqueda por tipo_concepto/concepto\n else { \n this.providerSearchMessage.conceptNav = `/${this.paramMap.param1}/${this.paramMap.param2}`;\n this.providerSearchMessage.conceptId = this.qsParams.idC? parseInt(this.qsParams.idC) : 0;\n this.providerSearchMessage.conceptClaseId = this.qsParams.idTc? parseInt(this.qsParams.idTc) : 0; \n\n // la ruta contiene division territorial\n if(this.paramMap.param3){\n let _id = this.paramMap.param3;\n\n if(this.paramMap.param4)\n _id +=`/${this.paramMap.param4}`;\n\n if(this.paramMap.param5)\n _id +=`/${this.paramMap.param5}`;\n\n this.providerSearchMessage.territorialDivisionIdentification = _id;\n } \n }\n }\n\n this.providerSearchMessage.filtros = this.qsParams.filtros;\n \n this.searchProviders();\n }\n\n updateRoute(){\n // clear\n this.paramMap.param1 = '';\n this.paramMap.param2 = '';\n this.paramMap.param3 = '';\n this.paramMap.param4 = '';\n this.paramMap.param5 = '';\n this.qsParams.t = '';\n this.qsParams.filtros = '';\n\n // busqueda por texto\n if(this.providerSearchMessage.searchText){\n this.paramMap.param1 = 'texto';\n\n this.qsParams.t = this.providerSearchMessage.searchText;\n }\n // busqueda por concepto\n else if(this.providerSearchMessage.conceptNav){\n\n let conceptNavArray = this.providerSearchMessage.conceptNav.split('/');\n\n this.paramMap.param1 = conceptNavArray[1];\n this.paramMap.param2 = conceptNavArray[2];\n }\n else{\n this.paramMap.param1 = 'todos';\n }\n\n if(this.providerSearchMessage.territorialDivisionIdentification){\n\n let tdArray = this.providerSearchMessage.territorialDivisionIdentification.split('/');\n\n if(this.paramMap.param2){\n this.paramMap.param3 = tdArray[0];\n this.paramMap.param4 = tdArray[1] ?? '';\n this.paramMap.param5 = tdArray[2] ?? '';\n }\n else{\n this.paramMap.param2 = tdArray[0];\n this.paramMap.param3 = tdArray[1] ?? '';\n this.paramMap.param4 = tdArray[2] ?? '';\n }\n }\n\n this.qsParams.filtros = this.providerSearchMessage.filtros;\n \n let url = `${this.baseService.getLanguage()}/${this.router.url.split('/')[1]}/${this.paramMap.param1}`;\n url += this.paramMap.param2 ? `/${this.paramMap.param2}` : '';\n url += this.paramMap.param3 ? `/${this.paramMap.param3}` : '';\n url += this.paramMap.param4 ? `/${this.paramMap.param4}` : '';\n url += this.paramMap.param5 ? `/${this.paramMap.param5}` : '';\n\n let qs = this.qsParams.t ? `t=${this.qsParams.t}` : '';\n qs += this.qsParams.filtros\n ? qs\n ? `&filtros=${this.qsParams.filtros}`\n : `filtros=${this.qsParams.filtros}`\n : '';\n \n if (this.providerSearchMessage.conceptId > 0) {\n this.qsParams.idC = this.providerSearchMessage.conceptId.toString();\n this.qsParams.idTc = this.providerSearchMessage.conceptClaseId.toString();\n\n if (qs)\n qs += \"&\";\n qs += (\"idC=\" + this.providerSearchMessage.conceptId);\n qs += (\"&idTc=\" + this.providerSearchMessage.conceptClaseId);\n }\n\n this.location.go(url, qs); \n }\n\n searchProviders(){\n this.getTitleText();\n\n this.loadingInitialResults = true;\n\n if(this.doSearchProfilesSubscribe){\n this.doSearchProfilesSubscribe.unsubscribe();\n }\n \n this.doSearchProfilesSubscribe = this.doSearchProfiles()\n .subscribe(result => {\n this.providersResult = result;\n\n this.loadingInitialResults = false;\n },\n error => {\n this.baseService.handleServiceError(error, \"Error getting profiles\"); \n });\n }\n\n resetSearch() { \n this.pageNumber = 1;\n this.disableScroll = false;\n }\n\n onScrollDown() {\n this.loadMoreProfiles();\n }\n\n @HostListener('window:scroll', ['$event'])\n handleScroll(event: Event) {\n const windowHeight = window.innerHeight;\n const documentHeight = document.documentElement.scrollHeight;\n const scrollPosition = window.scrollY || window.pageYOffset || document.body.scrollTop + (document.documentElement && document.documentElement.scrollTop || 0);\n\n // Verifica si el usuario ha llegado al final del scroll\n if (scrollPosition + windowHeight >= documentHeight && window.innerWidth <= 800) {\n // El usuario ha llegado al final del scroll, ejecuta tu m�todo aqu�\n this.loadMoreProfiles();\n }\n }\n\n loadMoreProfiles() {\n // all profiles has been loaded\n if(this.providersResult.cantidadTotalResulados == this.providersResult.perfiles.length)\n return;\n\n // Increase page number\n this.pageNumber = this.pageNumber + 1;\n this.loadingResults = true;\n\n this.doSearchProfiles()\n .subscribe(result => {\n\n this.loadingResults = false;\n \n if (result && result.perfiles && result.perfiles.length > 0) {\n\n // Add all the new profiles\n result.perfiles.map(p => this.providersResult.perfiles.push(p));\n \n // Join all locations\n for(let i=0; i < result.localidades.length; i++) {\n let exists = this.providersResult.localidades.find(l => l.id == result.localidades[i].id);\n\n if (!exists)\n this.providersResult.localidades.push(result.localidades[i]);\n }\n\n if (result.perfiles.length < this.pageSize)\n this.disableScroll = true;\n } \n else \n this.disableScroll = true;\n },\n error => {\n this.baseService.handleServiceError(error, \"Error getting profiles\"); \n });\n }\n\n showResults(){\n return this.providersResult && this.providersResult.perfiles && this.providersResult.perfiles.length > 0;\n }\n\n showEmptyState(){\n return !this.loadingInitialResults \n && this.providersResult \n && this.providersResult.perfiles \n && this.providersResult.perfiles.length == 0;\n }\n\n providerTrackBy(index : number, item: ProfileResultModel){\n return item.id; \n }\n\n getProfileTypeIconClassName(){\n\n let profileType = this.profileTypesArray[0];\n let className: string = 'phr-iconset-';\n\n switch(profileType){\n case PublicProfileType.Doctor:\n default:\n className += 'estetoscopio';\n break;\n case PublicProfileType.Farmacia:\n className += 'farmacia';\n break;\n case PublicProfileType.Clinica:\n className += 'hospital';\n break;\n case PublicProfileType.Fisioterapia:\n className += 'fisioterapia';\n break;\n case PublicProfileType.Laboratorio:\n className += 'laboratorios';\n break;\n case PublicProfileType.CentroDeImagenes:\n className += 'imagenologia';\n break; \n case PublicProfileType.ServiciosOdontologicos:\n className += 'odontologia';\n break;\n case PublicProfileType.Opticas:\n className += 'open-eye';\n break;\n case PublicProfileType.ClinicasDeAtencionPrimaria:\n className += 'clinic';\n break;\n case PublicProfileType.Todos:\n className += 'todos';\n break;\n }\n\n return className;\n }\n\n getLocationsByProvider(provider: ProfileResultModel){\n return this.providersResult.localidades.filter(l => l.idPersona == provider.idPersona);\n }\n\n onShowFullDescription(){\n this.showFullDescription = true;\n }\n\n getTitleText(){\n\n let territorialDivisionIdentification = this.providerSearchMessage.territorialDivisionIdentification\n ? this.providerSearchMessage.territorialDivisionIdentification\n : this.searchCountry\n ? this.searchCountry.identificador\n : '';\n\n this.directoryService.getSearchTitle(\n this.language,\n this.profileTypesArray[0],\n this.providerSearchMessage.searchText,\n this.providerSearchMessage.conceptClaseId,\n this.providerSearchMessage.conceptId,\n territorialDivisionIdentification,\n this.providerSearchMessage.filtros)\n .subscribe(x => {\n do {\n this.searchResultTitleComponent?.setTitle(x);\n } while(!this.searchResultTitleComponent);\n }\n , error => {\n this.baseService.handleServiceError(error, \"Error getting profiles\"); \n });\n }\n\n private getAllProfileTypes(){\n // se filtra el tipo de perfil sede sura porque si se deja no lista las clinicas\n return Object.values(PublicProfileType).filter((v) => !isNaN(Number(v))).map((p) => Number(p));\n };\n\n private parseControlData(){\n if(this.data && this.data.valor){\n try {\n this.componentData = this.baseService.parseObject(JSON.parse(this.data.valor));\n\n this.profileTypes = this.componentData.tipos ? this.componentData.tipos : \"1\";\n\n this.profileTypesArray = this.profileTypes.split(\",\").map(pt => +pt);\n\n if(this.profileTypesArray.length == 1 && this.profileTypesArray[0] == PublicProfileType.Todos){\n this.profileTypesArray = this.getAllProfileTypes();\n this.profileTypes = this.profileTypesArray.join(',');\n }\n\n // subtitulo de la pagina\n this.subtitle = this.componentData.subtitulo;\n\n // decripcion\n this.description = this.componentData.descripcion;\n\n // descripcion detallada\n this.fullDescription = this.componentData.descripcionDetallada;\n\n } catch (ex) {} \n } \n } \n\n private getFiltersString(){\n\n let filters:number[] = [];\n\n if(this.providerSearchMessage.filtros){\n filters = filters.concat(this.providerSearchMessage.filtros.split(',').map(f => +f));\n }\n\n filters = filters.filter((item, index)=> { return (filters.indexOf(item) == index)});\n\n return filters.length > 0 ? filters.join(',') : '';\n }\n\n private doSearchProfiles(): Observable{\n let _results$:Observable;\n let filters = this.getFiltersString();\n let location = this.baseService.getLocationFromIdentifier(this.providerSearchMessage.territorialDivisionIdentification);\n\n if(!location.country && this.searchCountry){\n location.country = this.searchCountry.identificador;\n }\n\n // Search text\n if (!this.providerSearchMessage.conceptNav) {\n let text = this.providerSearchMessage.searchText;\n\n if (!text)\n text = \"{-1}\";\n\n _results$ = this.publicProfileService.searchProfileByText(\n this.seed, \n this.language, \n text, \n filters, \n this.accountName,\n this.pageNumber, \n this.pageSize, \n location.country, \n location.state, \n location.city, \n this.profileTypesArray,\n this.accountId,\n this.locationCompanyIds);\n }\n // Concept search\n else {\n _results$ = this.publicProfileService.searchProfileByConcept(\n this.seed,\n this.language,\n this.providerSearchMessage.conceptNav, \n filters,\n this.accountName,\n this.pageNumber,\n this.pageSize,\n location.country,\n location.state,\n location.city,\n this.profileTypesArray,\n this.accountId,\n this.locationCompanyIds,\n this.providerSearchMessage.conceptId,\n this.providerSearchMessage.conceptClaseId);\n }\n\n return _results$;\n }\n\n private setSearchCountry(country:TerritorialDivision){\n let availableCountries = this.territorialDivisionService.getAvailableCountries();\n\n if(country.idPais != 9 && country.idPais != 1 && availableCountries.find(c=> c.idPais == country?.idPais)){\n this.searchCountry = country;\n this.providerSearchMessage.countryIdentification = country.identificador;\n }\n else{\n this.searchCountry = null;\n this.providerSearchMessage.countryIdentification = '';\n }\n }\n\n private setSearchCountryByCountryApp(){\n this.territorialDivisionService.getCountryApp().subscribe(countryApp=>{\n if(countryApp && countryApp.territorialDivision){\n this.setSearchCountry(countryApp.territorialDivision)\n }\n });\n }\n}\n\nexport class SearchResultsComponentData {\n tipos: string;\n subtitulo: TextLanguage[];\n descripcion: TextLanguage[];\n descripcionDetallada: TextLanguage[];\n}","","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { delay, map, startWith, takeUntil, withLatestFrom } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\r\nimport { FloatingComponentsMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { ContainerType } from 'src/app/shared/enums/container-type.enum';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\n\r\n@Component({\r\n selector: 'app-unlicensed-menu',\r\n templateUrl: './unlicensed-menu.component.html',\r\n styleUrls: ['./unlicensed-menu.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n })\r\n export class UnlicensedMenuComponent implements OnDestroy, OnInit {\r\n showAnonymousMenu: Observable;\r\n private ngUnsubscribe = new Subject();\r\n\r\n showLogout: boolean = false;\r\n \r\n constructor( \r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private messageBusService: MessageBusService,\r\n private translation: L10nTranslationService,\r\n private dialogRef: MatDialog,\r\n private authService: AuthService,\r\n private router: Router,\r\n private appStorageService: AppStorageService,\r\n ) {\r\n const onShowSignupLoginHeaderMenu = this.messageBusService.onShowSignupLoginHeaderMenu();\r\n this.showAnonymousMenu = this.messageBusService.onHideAnonymousMenu()\r\n .pipe(takeUntil(this.ngUnsubscribe), map(() => false), startWith(true), withLatestFrom(onShowSignupLoginHeaderMenu), map(x => x[0] && x[1]), delay(100));\r\n\r\n this.showLogout = this.authService.isLoggedIn();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.messageBusService.onLoginCompleted()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(msg => {\r\n this.showLogout = true;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n onViewAppointmentsClick(): void {\r\n var cliniwebPhrLink = environment.cliniwebPhrUrl;\r\n \r\n window.open(cliniwebPhrLink + \"/mis-citas\", '_blank'); \r\n }\r\n\r\n onCliniwebForPatientsClick(): void {\r\n let cliniwebUrl = environment.cliniwebUrl + \"##comoFuncionaPacientes\";\r\n \r\n window.open(cliniwebUrl, '_blank');\r\n }\r\n\r\n goToPortal(): void {\r\n let portalUrl = environment.portalUrl; \r\n\r\n window.open(portalUrl, '_blank');\r\n }\r\n \r\n goToPortalPublicProfilePage(): void {\r\n let portalUrl = environment.portalUrl + \"perfiles\"; \r\n \r\n window.open(portalUrl, '_blank');\r\n }\r\n\r\n onCliniwebForDoctorsClick(): void {\r\n let cliniwebUrl = environment.cliniwebUrl + \"Doctor##comoFuncionaDoctores\";\r\n\r\n window.open(cliniwebUrl, '_blank');\r\n }\r\n\r\n onCliniwebLogoutClick(): void{\r\n let dialogData = new DialogData();\r\n \r\n dialogData.title = this.translation.translate(\"shared.profileMenu.text13\"); \r\n dialogData.confirmText = this.translation.translate(\"shared.profileMenu.text14\"); \r\n dialogData.showHeaderIcon = false;\r\n //dialogData.headerIconClass = \"phr-iconset-info\"; \r\n dialogData.showCancelButton = true;\r\n dialogData.cancelText = this.translation.translate(\"shared.profileMenu.text15\");\r\n \r\n const dialogRef = this.dialogRef.open(ConfirmDialogComponent, {\r\n data: dialogData,\r\n panelClass: ['cliniweb-theme-dialog', 'confirm-logout-dialog', 'confirm-logout-animation-in']\r\n });\r\n \r\n dialogRef.afterClosed().subscribe(accepted => { \r\n if (accepted) {\r\n this.appStorageService.removeSessionItem(STORAGE.SIGNUP_WORKFLOW_VERIFICATION_TYPE);\r\n this.removeFloatingComponentToHeader();\r\n this.authService.logout();\r\n\r\n this.router.navigate(['/welcome/login'], {queryParams: { homeUrl: '/'}});\r\n }\r\n });\r\n }\r\n\r\n removeFloatingComponentToHeader(){\r\n let message = new FloatingComponentsMessage();\r\n let dummyComponentData = new FormComponentData();\r\n dummyComponentData.contenedor = ContainerType.HEADER;\r\n \r\n message.componentsData = [dummyComponentData];\r\n \r\n this.messageBusService.sendFloatingComponents(message);\r\n }\r\n}","
\n \n \n \n\n \n \n\n \n \n\n \n
\n\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\nimport { MenuMobileComponent } from '../../dialogs/menu-mobile/menu-mobile.component';\nimport { BaseService } from 'src/app/core/services/base.service';\n\n@Component({\n selector: 'app-header-town-center',\n templateUrl: './header-town-center.component.html',\n styleUrls: ['./header-town-center.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('HeaderTownCenterComponent')\nexport class HeaderTownCenterComponent implements OnInit, IControlComponent {\n data: FormComponentData;\n\n routeClassName: string = '';\n isLicensedCompany: boolean = true;\n loading: boolean = true;\n \n constructor(\n public dialog: MatDialog,\n private router: Router,\n private baseService: BaseService) {\n\n this.router.events.subscribe(()=>{\n this.initRouteClassName();\n\n });\n }\n\n ngOnInit(): void {\n this.baseService.isLicensedCompany().subscribe(hasLicenses => {\n this.isLicensedCompany = hasLicenses;\n\n this.loading = false;\n },\n error => {\n \n });\n }\n \n openMenuMobile(){\n const dialogRef = this.dialog.open(MenuMobileComponent, {\n panelClass: 'menu-mobile',\n width:\"338px\",\n height: \"100%\",\n position: { left: \"0px\"}\n });\n }\n\n private initRouteClassName(){\n this.routeClassName = this.router.url.split('/')[1];\n }\n\n}\n","
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Location } from \"@angular/common\";\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { MenuMobileComponent } from '../../dialogs/menu-mobile/menu-mobile.component';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\n\r\n@Component({\r\n selector: 'app-header-hospital-paitilla',\r\n templateUrl: './header-hospital-paitilla.component.html',\r\n styleUrls: ['./header-hospital-paitilla.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('HeaderHospitalPaitillaComponent')\r\nexport class HeaderHospitalPaitillaComponent implements OnInit, IControlComponent {\r\n data: FormComponentData;\r\n\r\n routeClassName: string = '';\r\n isLicensedCompany: boolean = true;\r\n loading: boolean = true;\r\n \r\n constructor(\r\n private location: Location,\r\n public dialog: MatDialog,\r\n private router: Router,\r\n private baseService: BaseService) {\r\n\r\n this.router.events.subscribe(()=>{\r\n this.initRouteClassName();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.baseService.isLicensedCompany().subscribe(hasLicenses => {\r\n this.isLicensedCompany = hasLicenses;\r\n\r\n this.loading = false;\r\n });\r\n }\r\n \r\n openMenuMobile(){\r\n const dialogRef = this.dialog.open(MenuMobileComponent, {\r\n panelClass: 'menu-mobile',\r\n width:\"338px\",\r\n height: \"100%\",\r\n position: { left: \"0px\"}\r\n });\r\n }\r\n\r\n navigateToCompany(){\r\n window.location.href = this.baseService.getUrlCompany();\r\n }\r\n\r\n gotoBack(){\r\n this.location.back();\r\n }\r\n\r\n private initRouteClassName(){\r\n this.routeClassName = this.router.url.split('/')[1];\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Location } from \"@angular/common\";\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { MenuMobileComponent } from '../../dialogs/menu-mobile/menu-mobile.component';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\n\r\n@Component({\r\n selector: 'app-header-chsf-phr',\r\n templateUrl: './header-chsf-phr.component.html',\r\n styleUrls: ['./header-chsf-phr.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('HeaderChsfPhrComponent')\r\nexport class HeaderChsfPhrComponent implements OnInit, IControlComponent {\r\n data: FormComponentData;\r\n\r\n routeClassName: string = '';\r\n isLicensedCompany: boolean = true;\r\n loading: boolean = true;\r\n \r\n constructor(\r\n private location: Location,\r\n public dialog: MatDialog,\r\n private router: Router,\r\n private baseService: BaseService) {\r\n\r\n this.router.events.subscribe(()=>{\r\n this.initRouteClassName();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.baseService.isLicensedCompany().subscribe(hasLicenses => {\r\n this.isLicensedCompany = hasLicenses;\r\n\r\n this.loading = false;\r\n });\r\n }\r\n \r\n openMenuMobile(){\r\n const dialogRef = this.dialog.open(MenuMobileComponent, {\r\n panelClass: 'menu-mobile',\r\n width:\"338px\",\r\n height: \"100%\",\r\n position: { left: \"0px\"}\r\n });\r\n }\r\n\r\n navigateToCompany(){\r\n window.location.href = this.baseService.getUrlCompany();\r\n }\r\n\r\n gotoBack(){\r\n this.location.back();\r\n }\r\n\r\n private initRouteClassName(){\r\n this.routeClassName = this.router.url.split('/')[1];\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Location } from \"@angular/common\";\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { MenuMobileComponent } from '../../dialogs/menu-mobile/menu-mobile.component';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\n\r\n@Component({\r\n selector: 'app-header-chpanamericano-phr',\r\n templateUrl: './header-chpanamericano-phr.component.html',\r\n styleUrls: ['./header-chpanamericano-phr.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('HeaderChpanamericanoPhrComponent')\r\nexport class HeaderChpanamericanoPhrComponent implements OnInit, IControlComponent {\r\n data: FormComponentData;\r\n\r\n routeClassName: string = '';\r\n isLicensedCompany: boolean = true;\r\n loading: boolean = true;\r\n \r\n constructor(\r\n private location: Location,\r\n public dialog: MatDialog,\r\n private router: Router,\r\n private baseService: BaseService) {\r\n\r\n this.router.events.subscribe(()=>{\r\n this.initRouteClassName();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.baseService.isLicensedCompany().subscribe(hasLicenses => {\r\n this.isLicensedCompany = hasLicenses;\r\n\r\n this.loading = false;\r\n });\r\n }\r\n \r\n openMenuMobile(){\r\n const dialogRef = this.dialog.open(MenuMobileComponent, {\r\n panelClass: 'menu-mobile',\r\n width:\"338px\",\r\n height: \"100%\",\r\n position: { left: \"0px\"}\r\n });\r\n }\r\n\r\n navigateToCompany(){\r\n window.location.href = this.baseService.getUrlCompany();\r\n }\r\n\r\n gotoBack(){\r\n this.location.back();\r\n }\r\n\r\n private initRouteClassName(){\r\n this.routeClassName = this.router.url.split('/')[1];\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Location } from \"@angular/common\";\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { MenuMobileComponent } from '../../dialogs/menu-mobile/menu-mobile.component';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\n\r\n@Component({\r\n selector: 'app-header-hsantafe-phr',\r\n templateUrl: './header-hsantafe-phr.component.html',\r\n styleUrls: ['./header-hsantafe-phr.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('HeaderHsantafePhrComponent')\r\nexport class HeaderHsantafePhrComponent implements OnInit, IControlComponent {\r\n data: FormComponentData;\r\n\r\n routeClassName: string = '';\r\n isLicensedCompany: boolean = true;\r\n loading: boolean = true;\r\n \r\n constructor(\r\n private location: Location,\r\n public dialog: MatDialog,\r\n private router: Router,\r\n private baseService: BaseService) {\r\n\r\n this.router.events.subscribe(()=>{\r\n this.initRouteClassName();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.baseService.isLicensedCompany().subscribe(hasLicenses => {\r\n this.isLicensedCompany = hasLicenses;\r\n\r\n this.loading = false;\r\n });\r\n }\r\n \r\n openMenuMobile(){\r\n const dialogRef = this.dialog.open(MenuMobileComponent, {\r\n panelClass: 'menu-mobile',\r\n width:\"338px\",\r\n height: \"100%\",\r\n position: { left: \"0px\"}\r\n });\r\n }\r\n\r\n navigateToCompany(){\r\n window.location.href = this.baseService.getUrlCompany();\r\n }\r\n\r\n gotoBack(){\r\n this.location.back();\r\n }\r\n\r\n private initRouteClassName(){\r\n this.routeClassName = this.router.url.split('/')[1];\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Location } from \"@angular/common\";\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { MenuMobileComponent } from '../../dialogs/menu-mobile/menu-mobile.component';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\n\r\n@Component({\r\n selector: 'app-header-pacifica-salud-phr',\r\n templateUrl: './header-pacifica-salud-phr.component.html',\r\n styleUrls: ['./header-pacifica-salud-phr.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('HeaderPacificaSaludPhrComponent')\r\nexport class HeaderPacificaSaludPhrComponent implements OnInit, IControlComponent {\r\n data: FormComponentData;\r\n\r\n routeClassName: string = '';\r\n isLicensedCompany: boolean = true;\r\n loading: boolean = true;\r\n \r\n constructor(\r\n private location: Location,\r\n public dialog: MatDialog,\r\n private router: Router,\r\n private baseService: BaseService) {\r\n\r\n this.router.events.subscribe(()=>{\r\n this.initRouteClassName();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.baseService.isLicensedCompany().subscribe(hasLicenses => {\r\n this.isLicensedCompany = hasLicenses;\r\n\r\n this.loading = false;\r\n });\r\n }\r\n \r\n openMenuMobile(){\r\n const dialogRef = this.dialog.open(MenuMobileComponent, {\r\n panelClass: 'menu-mobile',\r\n width:\"338px\",\r\n height: \"100%\",\r\n position: { left: \"0px\"}\r\n });\r\n }\r\n\r\n navigateToCompany(){\r\n window.location.href = this.baseService.getUrlCompany();\r\n }\r\n\r\n gotoBack(){\r\n this.location.back();\r\n }\r\n\r\n private initRouteClassName(){\r\n this.routeClassName = this.router.url.split('/')[1];\r\n }\r\n}\r\n","export class Workflow {\n id: number;\n nombre: string;\n nombreComponente: string;\n tipo: number;\n idEmpresa?: number;\n idResponsableServicio?: number;\n items: WorkflowItem[];\n}\n\nexport class WorkflowItem {\n id: number;\n idFlujoTrabajo: number;\n numeroPaso: number;\n idAreaSistema: number;\n valor: string;\n nombreClaseItem: string;\n}\n\nexport class WorkflowItemData{\n endWorkflow: boolean;\n data: any;\n\n constructor();\n constructor(obj:WorkflowItemData);\n constructor(obj?: any){\n this.endWorkflow = obj && obj.endWorkflow ? obj.endWorkflow : false;\n }\n}","
\n \n \n \n
","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'app-workflow-progress-bar',\n templateUrl: './workflow-progress-bar.component.html',\n styleUrls: ['./workflow-progress-bar.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class WorkflowProgressBarComponent implements OnInit {\n\n @Input() model: WorkflowProgressBarComponentData;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n\nexport class WorkflowProgressBarComponentData {\n show: boolean;\n showButtonBack: boolean;\n showButtonClose: boolean;\n showProgressBar: boolean;\n percentComplete: number = 0;\n backFn: any;\n closeFn: any;\n}","export enum WorkflowStepName {\r\n PATIENT_VERIFICATION = 'PATIENT_VERIFICATION',\r\n AUTHENTICATION = 'AUTHENTICATION',\r\n SELECT_PATIENT_APPOINTMENT_CHECKOUT = 'SELECT_PATIENT_APPOINTMENT_CHECKOUT',\r\n PATIENT_FORM_APPOINTMENT_CHECKOUT = 'PATIENT_FORM_APPOINTMENT_CHECKOUT',\r\n SELECT_PATIENT_RELATIONSHIP_APPOINTMENT_CHECKOUT = 'SELECT_PATIENT_RELATIONSHIP_APPOINTMENT_CHECKOUT',\r\n PATIENT_CONTACT_FORM_APPOINTMENT_CHECKOUT = 'PATIENT_CONTACT_FORM_APPOINTMENT_CHECKOUT',\r\n SUMMARY_APPOINTMENT_CHECKOUT = 'SUMMARY_APPOINTMENT_CHECKOUT',\r\n SUMMARY_MEDICAL_ORDER = 'SUMMARY_MEDICAL_ORDER',\r\n PAYMENT_AMOUNT = 'PAYMENT_AMOUNT',\r\n PAYMENT_FORM = 'PAYMENT_FORM',\r\n SELECT_COUNTRY = \"SELECT_COUNTRY\",\r\n SELECT_PATIENT_RELATIONSHIP = 'SELECT_PATIENT_RELATIONSHIP',\r\n CREATE_PATIENT_RELATIONSHIP = 'CREATE_PATIENT_RELATIONSHIP'\r\n}","import { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { Observable, Subject, of } from \"rxjs\";\r\nimport { IStepFlow } from \"src/app/shared/interfaces/step-flow\";\r\nimport { ComponentDataSetMessage, FlowStepCompletedMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\r\nimport { takeUntil } from \"rxjs/operators\";\r\nimport { IWorkflowDataState } from \"src/app/shared/interfaces/workflow-data-state\";\r\nimport { WorkflowItem } from \"../../systems/workflow.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport abstract class BaseStep implements IStepFlow, OnDestroy {\r\n item: WorkflowItem;\r\n stateData: T;\r\n \r\n showHeader: boolean;\r\n showButtonBack: boolean;\r\n showProgressBar: boolean;\r\n showButtonClose: boolean;\r\n\r\n withoutFooter: boolean;\r\n\r\n attached: boolean = false;\r\n\r\n protected ngUnsubscribe = new Subject();\r\n formConfigurationData: { [componentName: string]: any; };\r\n\r\n constructor(\r\n protected messageBusService: MessageBusService,\r\n ){\r\n } \r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n \r\n onBeforeFormLoad(): Observable {\r\n this.formConfigurationData = this.buildComponentConfigurationData();\r\n\r\n this.attachToComponentEvents();\r\n\r\n return of(undefined);\r\n }\r\n\r\n setItem(item: WorkflowItem): void {\r\n this.item = item;\r\n }\r\n\r\n private attachToComponentEvents() {\r\n if(this.attached)\r\n return;\r\n\r\n this.messageBusService.onSendComponentDataSetMessage()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(message => {\r\n if(this.messageForThisStep(message)){\r\n this.handleComponentSetDataMessage(message);\r\n\r\n // Send message to workflow to check if step is completed\r\n this.sendFlowStepCompletedMessage();\r\n }\r\n });\r\n\r\n this.attached = true;\r\n } \r\n\r\n private sendFlowStepCompletedMessage(){\r\n let message = new FlowStepCompletedMessage();\r\n message.state = this.stateData; \r\n\r\n this.messageBusService.sendFlowStepCompleted(message);\r\n }\r\n\r\n /**\r\n * Handle components dataSet message. This message will be send by component when the component model if fully set\r\n * The message will contain the componentName (the component that generate the message) and the model of the component with the data.\r\n */\r\n protected abstract handleComponentSetDataMessage(message: ComponentDataSetMessage) : void;\r\n \r\n /*\r\n * Create base configuration data for each component\r\n * Return a dictionary where the key is the componentName and value is the component model\r\n */\r\n protected abstract buildComponentConfigurationData() : { [componentName: string]: any; };\r\n\r\n protected abstract messageForThisStep(message: ComponentDataSetMessage): boolean;\r\n\r\n abstract setState(stateData: IWorkflowDataState): void;\r\n abstract isCompleted(): Observable;\r\n abstract showStepInActionBack(): boolean;\r\n abstract showStep(): boolean;\r\n}","import { SignupWorkflowVerificationType } from \"src/app/shared/enums/signup-workflow-verification.enum\";\r\nimport { PublicProfile } from \"../../people/public-profile.model\";\r\n\r\nexport class AuthenticationDataModel{\r\n idVerificacion: string;\r\n idTipoSolicitud: number;\r\n idUsuario: number;\r\n doctorAvatarUrl: string; \r\n configData: AuthenticationComponentData;\r\n profile: PublicProfile;\r\n}\r\n\r\nexport class AuthenticationComponentData{ \r\n showCliniwebSection: boolean;\r\n signupWorkflowVerificationType: SignupWorkflowVerificationType;\r\n workflowType: number;\r\n }","import { Injectable } from \"@angular/core\";\nimport { Observable, of } from \"rxjs\";\nimport { catchError, map, switchMap } from \"rxjs/operators\";\nimport { AuthService } from \"src/app/core/services/auth.service\";\nimport { UserService } from \"src/app/core/services/user.service\";\nimport { UserPerson } from \"../../people/user-person.model\";\nimport { WorkflowItem, WorkflowItemData } from \"../../systems/workflow.model\";\nimport { BaseStep } from \"./base-step.model\";\nimport { ComponentDataSetMessage, MessageBusService, ServiceErrorMessage, WorkflowStateUpdateMessage } from \"src/app/core/services/message-bus.service\";\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\nimport { AuthenticationDataModel } from \"../models/authentication-data.model\";\nimport { IWorkflowDataState } from \"src/app/shared/interfaces/workflow-data-state\";\nimport { WorkflowService } from \"src/app/core/services/workflow.service\";\nimport { BaseService } from \"src/app/core/services/base.service\";\nimport { PublicProfile } from \"../../people/public-profile.model\";\n\n@Injectable({\n providedIn: 'root',\n })\nexport class AuthenticationStep extends BaseStep {\n constructor(\n private authService: AuthService,\n private userService: UserService,\n protected messageBusService: MessageBusService, \n private workflowService: WorkflowService,\n private baseService: BaseService\n ) {\n super(messageBusService);\n\n this.showHeader = true;\n this.showProgressBar = true;\n this.showButtonClose = true;\n\n this.withoutFooter = true;\n }\n\n setItem(item: WorkflowItem): void {\n this.item = item;\n }\n\n setState(stateData: any): void {\n this.stateData = this.workflowService.getWorkflowDataState();\n }\n\n isCompleted():Observable{\n return this.authService.isLoggedInFull().pipe(\n switchMap((isLoggedIn)=>{\n\n return (!isLoggedIn)\n ? of(isLoggedIn)\n : this.completeUserDateState().pipe(\n map((result)=>{\n\n // If the user is logged in when the workflow started the auth step will be completed and \n // the auth component will not be loadded. Bacause of this we need to send a message to the \n // workflow with the state date updated\n let msg = new WorkflowStateUpdateMessage();\n msg.state = this.stateData;\n\n this.messageBusService.onWorkflowStateUpdateMessage(msg);\n\n return result;\n }));\n }));\n }\n\n showStepInActionBack(): boolean {\n return true;\n }\n\n showStep(): boolean {\n return true;\n }\n\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage) {\n if (message.componentName == ComponentName.AUTHENTICATION){\n\n let user = message.data as UserPerson;\n\n this.stateData.setUserData(user);\n this.stateData.setEmmiterPersonId(user.id);\n }\n }\n\n protected buildComponentConfigurationData() : { [componentName: string]: any; } {\n let formConfigurationData : { [componentName: string]: any; } = {};\n \n formConfigurationData[ComponentName.AUTHENTICATION] = this.getAuthenticationDataModel();\n\n return formConfigurationData;\n }\n\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\n return message.componentName == ComponentName.AUTHENTICATION;\n }\n\n private getAuthenticationDataModel(): AuthenticationDataModel{\n let dataModel = new AuthenticationDataModel();\n\n dataModel.idVerificacion = this.stateData.getIdVerificacion();\n dataModel.idTipoSolicitud = this.stateData.getIdTipoSolicitud();\n dataModel.idUsuario = this.stateData.getUserId();\n dataModel.doctorAvatarUrl = this.stateData.getDoctorAvatarUrl();\n dataModel.profile = this.stateData.getPublicProfile();\n\n if (this.item.valor) { \n let stepItemData = this.baseService.parseObjectDeep(JSON.parse(this.item.valor));\n\n if (stepItemData.data)\n dataModel.configData = stepItemData.data;\n }\n\n return dataModel;\n }\n\n private completeUserDateState():Observable { \n return this.userService.getUserPersonLoggedIn()\n .pipe(\n map((userPerson: UserPerson | null)=>{\n if(userPerson){\n this.stateData.setUserData(userPerson);\n this.stateData.setEmmiterPersonId(userPerson.id);\n\n return true;\n }\n else{\n return false;\n }\n }),\n catchError(error=>{\n this.messageBusService.serviceError(new ServiceErrorMessage(\"Error getting user logged in\"));\n return of(false);\n }));\n }\n}\n\nexport interface IAuthenticationWorkflowState{\n getIdVerificacion(): string;\n getDoctorAvatarUrl():string;\n getUserId():number;\n getPublicProfile():PublicProfile;\n getIdTipoSolicitud(): number;\n\n setUserData(userPerson: UserPerson): void;\n setEmmiterPersonId(personId: number):void;\n setPublicProfile(profile: PublicProfile):void;\n}\n","import { Injectable } from \"@angular/core\";\r\nimport { BaseStep } from \"./base-step.model\";\r\nimport { IWorkflowDataState } from \"src/app/shared/interfaces/workflow-data-state\";\r\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\r\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\r\nimport { TerritorialDivision } from \"../../systems/territorial-division.model\";\r\nimport { WorkflowItem } from \"../../systems/workflow.model\";\r\nimport { WorkflowService } from \"src/app/core/services/workflow.service\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { TerritorialDivisionsService } from \"src/app/core/services/territorial-divisions.service\";\r\nimport { UserService } from \"src/app/core/services/user.service\";\r\nimport { switchMap } from \"rxjs/operators\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SelectCountryStep extends BaseStep {\r\n constructor(\r\n private userService: UserService,\r\n private territorialDivisionService: TerritorialDivisionsService,\r\n private workflowService: WorkflowService,\r\n protected messageBusService: MessageBusService,\r\n ) {\r\n super(messageBusService);\r\n\r\n this.showHeader = true;\r\n this.showProgressBar = true;\r\n this.showButtonClose = true;\r\n\r\n this.withoutFooter = true;\r\n }\r\n \r\n setItem(item: WorkflowItem): void {\r\n this.item = item;\r\n }\r\n\r\n setState(stateData: any): void {\r\n this.stateData = this.workflowService.getWorkflowDataState();\r\n }\r\n\r\n isCompleted():Observable{\r\n return this.countrySelected();\r\n }\r\n\r\n showStepInActionBack(): boolean {\r\n return true;\r\n }\r\n\r\n showStep(): boolean {\r\n return true;\r\n }\r\n\r\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage) {\r\n if (message.componentName == ComponentName.SELECT_COUNTRY){\r\n\r\n let country = message.data as TerritorialDivision;\r\n\r\n this.stateData.setCountry(country);\r\n }\r\n }\r\n\r\n protected buildComponentConfigurationData() : { [componentName: string]: any; } {\r\n let formConfigurationData : { [componentName: string]: any; } = {};\r\n \r\n formConfigurationData[ComponentName.SELECT_COUNTRY] = this.getCountryDataModel();\r\n\r\n return formConfigurationData;\r\n }\r\n\r\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\r\n return message.componentName == ComponentName.SELECT_COUNTRY;\r\n }\r\n\r\n private countrySelected(): Observable{\r\n\r\n let countryId = this.stateData.getCountryId();\r\n\r\n if(countryId == 9){\r\n return this.userService.getUserCountry()\r\n .pipe(switchMap((country: TerritorialDivision | null)=>{\r\n if(country){\r\n this.stateData.setCountry(country);\r\n \r\n return of(true);\r\n }\r\n else{\r\n return of(false);\r\n } \r\n }));\r\n }else{\r\n let availableCountries = this.territorialDivisionService.getAvailableCountries();\r\n\r\n let condition = countryId > 0 && availableCountries.filter(c=>c.idPais == countryId).length > 0;\r\n \r\n return of(condition);\r\n }\r\n }\r\n\r\n private getCountryDataModel(): TerritorialDivision | undefined{\r\n let countryId = this.stateData.getCountryId();\r\n\r\n let availableCountries = this.territorialDivisionService.getAvailableCountries();\r\n\r\n return availableCountries.find(c => c.idPais == countryId);\r\n }\r\n}\r\n\r\nexport interface ISelectCountryWorkflowState{\r\n getCountryId():number;\r\n setCountry(country: TerritorialDivision):void;\r\n}","import { AppointmentInfoDataModel } from \"./appointment-info-data.model\";\r\n\r\nexport class SelectPatientDataModel{\r\n relationship: number = 0;\r\n appointmentInfo: AppointmentInfoDataModel;\r\n\r\n user: PersonDataModel;\r\n patientSelected: PersonDataModel;\r\n}\r\n\r\nexport class PersonDataModel {\r\n id: number = 0;\r\n firstname: string;\r\n lastname: string;\r\n avatar: string;\r\n gender: string;\r\n email: string;\r\n cellPhone: string;\r\n birthDate: Date;\r\n identityPersonValidationStateId: number;\r\n}","import { Injectable } from \"@angular/core\";\nimport { Observable, of } from \"rxjs\";\nimport { WorkflowItem } from \"../../systems/workflow.model\";\nimport { OnlineAppointmentCliniwebState } from \"../states/online-appointment-cliniweb-state.model\";\nimport { AppointmentInfoDataModel } from \"../models/appointment-info-data.model\";\nimport { BaseStep } from \"./base-step.model\";\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\nimport { PersonDataModel, SelectPatientDataModel } from \"../models/select-patient-data.model\";\nimport { RequestingPatient, RequestingUser } from \"../../process/base-request.model\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SelectPatientAppointmentCheckoutStep extends BaseStep {\n\n constructor(protected messageBusService: MessageBusService){\n super(messageBusService);\n \n this.showHeader = true;\n this.showButtonBack = true;\n this.showProgressBar = true;\n this.showButtonClose = true;\n }\n\n setItem(item: WorkflowItem): void {\n this.item = item;\n }\n\n setState(stateData: any): void {\n this.stateData = new OnlineAppointmentCliniwebState(stateData);\n }\n\n isCompleted():Observable{\n return of(this.relationshipSelected());\n }\n\n showStepInActionBack(): boolean {\n return true;\n }\n \n showStep(): boolean {\n return true;\n }\n \n protected handleComponentSetDataMessage(message: ComponentDataSetMessage) {\n if (message.componentName == ComponentName.SELECT_PATIENT){\n\n let _dataModel = message.data as SelectPatientDataModel;\n\n this.stateData.setPatientDataInitiallyIncomplete(false);\n\n if(_dataModel.patientSelected && _dataModel.patientSelected.id > 0){\n this.stateData.setPatient(_dataModel.patientSelected);\n this.stateData.setPatientRelationship(_dataModel.relationship);\n this.stateData.setDependentsFlow();\n }\n else{\n this.stateData.setPatient(new PersonDataModel());\n this.stateData.setRelationship(_dataModel.relationship);\n }\n }\n }\n\n protected buildComponentConfigurationData() : { [componentName: string]: any; } {\n let formConfigurationData : { [componentName: string]: any; } = {};\n \n formConfigurationData[ComponentName.SELECT_PATIENT] = this.getSelectPatientDataModel();\n\n return formConfigurationData;\n }\n\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\n return message.componentName == ComponentName.SELECT_PATIENT;\n }\n\n private getSelectPatientDataModel():SelectPatientDataModel{\n let dataModel = new SelectPatientDataModel();\n\n dataModel.appointmentInfo = this.stateData.getAppointmentInfo();\n dataModel.relationship = this.stateData.getRelationship();\n\n let requestingUser = this.stateData.getRequestingUser();\n\n dataModel.user = new PersonDataModel();\n dataModel.user.id = requestingUser.id;\n dataModel.user.email = requestingUser.username;\n dataModel.user.firstname = requestingUser.nombre;\n dataModel.user.lastname = requestingUser.apellido;\n dataModel.user.gender = requestingUser.sexo;\n dataModel.user.avatar = requestingUser.urlAvatar;\n\n if(requestingUser.fechaNacimiento)\n dataModel.user.birthDate = requestingUser.fechaNacimiento;\n\n let requestingPatient = this.stateData.getRequestingPatient();\n\n if(requestingPatient){\n dataModel.patientSelected = new PersonDataModel();\n dataModel.patientSelected.id = requestingPatient.id;\n dataModel.patientSelected.firstname = requestingPatient.nombre;\n dataModel.patientSelected.lastname = requestingPatient.apellido;\n dataModel.patientSelected.email = requestingPatient.email;\n dataModel.patientSelected.gender = requestingPatient.sexo;\n \n if(requestingPatient.fechaNacimiento)\n dataModel.patientSelected.birthDate = requestingPatient.fechaNacimiento;\n }\n\n return dataModel;\n }\n\n private relationshipSelected():boolean{\n let relationship = this.stateData.getRelationship();\n\n if(relationship == 1){\n let userId = this.stateData.getUserId();\n\n this.stateData.setPatientId(userId);\n }\n\n return relationship > 0;\n }\n}\n\nexport interface ISelectPatientAppointmentCheckoutWorkflowState{\n getAppointmentInfo():AppointmentInfoDataModel;\n getRelationship(): number;\n\n getRequestingPatient():RequestingPatient;\n getRequestingUser():RequestingUser;\n\n setRelationship(relationshipType:number):void;\n setPatientRelationship(patientRelationshipType: number):void;\n setPatient(patient:PersonDataModel):void;\n setPatientId(patientId: number): void;\n setDependentsFlow():void\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, of } from \"rxjs\";\nimport { WorkflowItem } from \"../../systems/workflow.model\";\nimport { OnlineAppointmentCliniwebState } from \"../states/online-appointment-cliniweb-state.model\";\nimport { AppointmentInfoDataModel } from \"../models/appointment-info-data.model\";\nimport { PatientFormAppointmentDataModel } from \"../models/patient-form-appointment-data.model\";\nimport { BaseStep } from \"./base-step.model\";\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\nimport { RequestingPatient } from \"../../process/base-request.model\";\nimport { StateType } from \"src/app/shared/enums/state-type.enum\";\nimport CommonTypesHelper from \"src/app/shared/helpers/common-types-helper\";\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PatientFormAppointmentCheckoutStep extends BaseStep {\n\n constructor(protected messageBusService: MessageBusService){\n super(messageBusService);\n \n this.showHeader = true;\n this.showButtonBack = true;\n this.showProgressBar = true;\n this.showButtonClose = true;\n }\n \n setItem(item: WorkflowItem): void {\n this.item = item;\n }\n\n setState(stateData: any): void {\n this.stateData = new OnlineAppointmentCliniwebState(stateData);\n }\n\n isCompleted(): Observable {\n let isCompleted = this.patientFormDataCompleted();\n\n if (!isCompleted) {\n this.stateData.setPatientDataInitiallyIncomplete(true);\n }\n\n return of(isCompleted);\n }\n\n showStepInActionBack(): boolean {\n let patient = this.stateData.getRequestingPatient();\n let isDependentsFlow = this.stateData.isDependentsFlow();\n let patientDataInitiallyIncomplete = this.stateData.getPatientDataInitiallyIncomplete();\n\n return patient.id == 0 || patientDataInitiallyIncomplete; \n }\n \n showStep(): boolean {\n let patient = this.stateData.getRequestingPatient();\n let isDependentsFlow = this.stateData.isDependentsFlow();\n\n return patient.id == 0 || !isDependentsFlow;\n }\n\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage) {\n if (message.componentName == ComponentName.PATIENT_FORM_APPOINTMENT){\n this.stateData.setPatientFormData(message.data);\n }\n }\n\n protected buildComponentConfigurationData() : { [componentName: string]: any; } {\n let formConfigurationData : { [componentName: string]: any; } = {};\n \n formConfigurationData[ComponentName.PATIENT_FORM_APPOINTMENT] = this.stateData.getPatientFormData();\n\n return formConfigurationData;\n }\n\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\n return message.componentName == ComponentName.PATIENT_FORM_APPOINTMENT;\n }\n\n private patientFormDataCompleted():boolean{\n let patientData = this.stateData.getPatientFormData();\n\n let containsGender = CommonTypesHelper.stringHasValue(patientData.gender);\n let isBirthdateValid = CommonTypesHelper.dateHasValue(patientData.birthdate);\n\n if (patientData.firstname && patientData.lastname && isBirthdateValid && containsGender)\n return true;\n else\n return false;\n }\n}\n\nexport interface IPatientFormAppointmentCheckoutWorkflowState{\n getAppointmentInfo():AppointmentInfoDataModel;\n getRelationship(): number;\n getPatientFormData():PatientFormAppointmentDataModel;\n setPatientFormData(data:PatientFormAppointmentDataModel):void;\n getRequestingPatient():RequestingPatient;\n isDependentsFlow():boolean;\n setPatientDataInitiallyIncomplete(incomplete: boolean):void;\n getPatientDataInitiallyIncomplete():boolean;\n}\n","import { AppointmentInfoDataModel } from \"./appointment-info-data.model\";\r\n\r\nexport class SelectPatientRelationshipDataModel{\r\n patientRelationship: number = 0;\r\n appointmentInfo: AppointmentInfoDataModel;\r\n patientName: string;\r\n}","import { Injectable } from \"@angular/core\";\nimport { Observable, of } from \"rxjs\";\nimport { RequestingPatient, SenderPatientRelationship } from \"../../process/base-request.model\";\nimport { WorkflowItem } from \"../../systems/workflow.model\";\nimport { OnlineAppointmentCliniwebState } from \"../states/online-appointment-cliniweb-state.model\";\nimport { AppointmentInfoDataModel } from \"../models/appointment-info-data.model\";\nimport { BaseStep } from \"./base-step.model\";\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\nimport { SelectPatientRelationshipDataModel } from \"../models/select-patient-relationship-data.model\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SelectPatientRelationshipAppointmentCheckoutStep extends BaseStep {\n\n constructor(protected messageBusService: MessageBusService){\n super(messageBusService);\n\n this.showHeader = true;\n this.showButtonBack = true;\n this.showProgressBar = true;\n this.showButtonClose = true;\n }\n\n setItem(item: WorkflowItem): void {\n this.item = item;\n }\n\n setState(stateData: any): void {\n this.stateData = new OnlineAppointmentCliniwebState(stateData);\n }\n\n isCompleted(): Observable {\n let patientRelationship = this.stateData.getPatientRelationship();\n\n return of(patientRelationship != SenderPatientRelationship.DESCONOCIDO);\n }\n\n showStepInActionBack(): boolean {\n let patientRelationship = this.stateData.getPatientRelationship();\n\n let patient = this.stateData.getRequestingPatient();\n\n return patient.id == 0 && patientRelationship != SenderPatientRelationship.USUARIO;\n }\n\n showStep(): boolean {\n let patientRelationship = this.stateData.getPatientRelationship();\n\n let patient = this.stateData.getRequestingPatient();\n\n return patient.id == 0 && patientRelationship != SenderPatientRelationship.USUARIO;\n }\n\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage) {\n if (message.componentName == ComponentName.SELECT_PATIENT_RELATIONSHIP_APPOINTMENT){\n this.stateData.setPatientRelationship(message.data.patientRelationship);\n }\n }\n\n protected buildComponentConfigurationData() : { [componentName: string]: any; } {\n let formConfigurationData : { [componentName: string]: any; } = {};\n \n formConfigurationData[ComponentName.SELECT_PATIENT_RELATIONSHIP_APPOINTMENT] = this.getSelectPatientRelationshipDataModel();\n\n return formConfigurationData;\n }\n\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\n return message.componentName == ComponentName.SELECT_PATIENT_RELATIONSHIP_APPOINTMENT;\n }\n\n private getSelectPatientRelationshipDataModel():SelectPatientRelationshipDataModel{\n let dataModel = new SelectPatientRelationshipDataModel();\n\n dataModel.appointmentInfo = this.stateData.getAppointmentInfo();\n dataModel.patientRelationship = this.stateData.getPatientRelationship();\n dataModel.patientName = this.stateData.getPatientName();\n\n return dataModel;\n }\n\n \n}\n\nexport interface ISelectPatientRelationshipAppointmentCheckoutWorkflowState{\n getAppointmentInfo():AppointmentInfoDataModel;\n getPatientRelationship(): number; \n getPatientName():string;\n getRequestingPatient():RequestingPatient;\n\n setPatientRelationship(patientRelationshipType:number):void;\n}\n","import { AppointmentInfoDataModel } from \"./appointment-info-data.model\";\r\n\r\nexport class PatientContactFormDataModel{\r\n appointmentInfo: AppointmentInfoDataModel;\r\n patientRelationship: number;\r\n userPhone: string;\r\n patientName: string;\r\n patientPhone: string;\r\n patientEmail: string;\r\n contactType: number = 0;\r\n}","import { Injectable } from \"@angular/core\";\nimport { Observable, of } from \"rxjs\";\nimport { IStepFlow } from \"../../../interfaces/step-flow\";\nimport { WorkflowItem } from \"../../systems/workflow.model\";\nimport { OnlineAppointmentCliniwebState } from \"../states/online-appointment-cliniweb-state.model\";\nimport { AppointmentInfoDataModel } from \"../models/appointment-info-data.model\";\nimport { BaseStep } from \"./base-step.model\";\nimport { ComponentDataSetMessage, MessageBusService, ServiceErrorMessage } from \"src/app/core/services/message-bus.service\";\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\nimport { PatientContactFormDataModel } from \"../models/patient-contact-form-data.model\";\nimport { UserService } from \"src/app/core/services/user.service\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PatientContactFormAppointmentCheckoutStep extends BaseStep {\n\n constructor(\n protected messageBusService: MessageBusService,\n private userService: UserService\n ){\n super(messageBusService);\n \n this.showHeader = true;\n this.showButtonBack = true;\n this.showProgressBar = true;\n this.showButtonClose = true;\n }\n\n setItem(item: WorkflowItem): void {\n this.item = item;\n }\n\n setState(stateData: any): void {\n this.stateData = new OnlineAppointmentCliniwebState(stateData);\n }\n\n isCompleted(): Observable {\n let contactType = this.stateData.getContactType();\n\n switch(contactType){\n case 0:\n default:\n return of(false);\n case 1:\n let userPhone = this.stateData.getUserPhone();\n return of(userPhone ? true : false);\n case 2:\n let patientPhone = this.stateData.getPatientPhone();\n let patientEmail = this.stateData.getPatientEmail();\n \n return of((patientPhone && patientEmail) ? true : false);\n }\n }\n\n showStepInActionBack(): boolean {\n return true;\n }\n \n showStep(): boolean {\n return true;\n }\n\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage) {\n if (message.componentName == ComponentName.PATIENT_CONTACT_FORM){\n\n let dataModel = message.data as PatientContactFormDataModel;\n\n this.stateData.setContactType(dataModel.contactType);\n\n if(dataModel.contactType == 1){\n this.stateData.setUserPhone(dataModel.userPhone);\n this.stateData.setPatientPhone(dataModel.userPhone);\n this.updateUserPhoneNumberLoggedIn(dataModel.userPhone);\n }\n else{\n this.stateData.setPatientPhone(dataModel.patientPhone);\n this.stateData.setPatientEmail(dataModel.patientEmail);\n }\n }\n }\n\n protected buildComponentConfigurationData() : { [componentName: string]: any; } {\n let formConfigurationData : { [componentName: string]: any; } = {};\n \n formConfigurationData[ComponentName.PATIENT_CONTACT_FORM] = this.getPatientContactFormDataModel();\n\n return formConfigurationData;\n }\n\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\n return message.componentName == ComponentName.PATIENT_CONTACT_FORM;\n }\n\n private getPatientContactFormDataModel(): PatientContactFormDataModel{\n let dataModel = new PatientContactFormDataModel();\n\n dataModel.appointmentInfo = this.stateData.getAppointmentInfo();\n dataModel.patientRelationship = this.stateData.getPatientRelationship();\n dataModel.userPhone = this.stateData.getUserPhone();\n dataModel.patientName = this.stateData.getPatientName();\n dataModel.patientPhone = this.stateData.getPatientPhone();\n dataModel.patientEmail = this.stateData.getPatientEmail();\n dataModel.contactType = this.stateData.getContactType();\n\n return dataModel;\n }\n\n private updateUserPhoneNumberLoggedIn(phoneNumber: string){\n this.userService.getUserPersonLoggedIn()\n .subscribe(user=>{ \n if(user){\n user.numeroTelCelular = phoneNumber;\n this.userService.updateUserLoggedIn(user);\n }\n },\n error=>{\n this.messageBusService.serviceError(new ServiceErrorMessage(\"Error getting user logged in\"));\n });\n }\n}\n\nexport interface IPatientContactFormAppointmentCheckoutWorkflowState{\n getAppointmentInfo():AppointmentInfoDataModel;\n getPatientName():string;\n getUserPhone():string; \n getPatientPhone(): string; \n getPatientEmail():string; \n getContactType():number; \n\n setUserPhone(userPhone:string):void;\n setPatientPhone(patientPhone:string):void;\n setPatientEmail(patientEmail:string):void;\n setContactType(contactType: number):void;\n}","import { Injectable } from \"@angular/core\";\nimport { Observable, of } from \"rxjs\";\nimport { WorkflowItem } from \"../../systems/workflow.model\";\nimport { AppointmentSummaryDataModel } from \"../models/appointment-summary-data.model\";\nimport { OnlineAppointmentCliniwebState } from \"../states/online-appointment-cliniweb-state.model\";\nimport { AppointmentInfoDataModel } from \"../models/appointment-info-data.model\";\nimport { BaseStep } from \"./base-step.model\";\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SummaryAppointmentCheckoutStep extends BaseStep {\n\n constructor(protected messageBusService: MessageBusService){\n super(messageBusService);\n this.showHeader = false;\n }\n\n setItem(item: WorkflowItem): void {\n this.item = item;\n }\n\n setState(stateData: any): void {\n this.stateData = new OnlineAppointmentCliniwebState(stateData);\n }\n\n isCompleted(): Observable {\n return of(false);\n }\n\n showStepInActionBack(): boolean {\n return true;\n }\n\n showStep(): boolean {\n return true;\n }\n\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage) {\n if (message.componentName == ComponentName.SUMMARY_APPOINTMENT){\n }\n }\n\n protected buildComponentConfigurationData() : { [componentName: string]: any; } {\n let formConfigurationData : { [componentName: string]: any; } = {};\n \n formConfigurationData[ComponentName.SUMMARY_APPOINTMENT] = this.stateData.getAppointmentSummary();\n\n return formConfigurationData;\n }\n\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\n return message.componentName == ComponentName.SUMMARY_APPOINTMENT;\n }\n}\n\nexport interface ISummaryAppointmentCheckoutWorkflowState{\n getAppointmentInfo():AppointmentInfoDataModel;\n getAppointmentSummary(): AppointmentSummaryDataModel;\n}\n","
\r\n \r\n \r\n
\r\n
{{ 'shared.payment.text1' | translate:locale.language }}
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n {{model.targetUserName}}\r\n
\r\n
\r\n\r\n \r\n
\r\n
$
\r\n \r\n
\r\n
USD
\r\n
\r\n {{ 'shared.payment.text24' | translate:locale.language }} \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
","import { Component, ElementRef, Inject, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { CustomCurrencyPipe } from '../../pipes/custom-currency.pipe';\r\nimport { ComponentName } from '../../enums/component-name.enum';\r\nimport { PublicProfileAvatarComponentModel } from '../public-profile-avatar/public-profile-avatar.component';\r\nimport { PublicProfile } from '../../models/people/public-profile.model';\r\nimport { UtilsService } from 'src/app/core/services/utils.service';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-payment-amount',\r\n templateUrl: './payment-amount.component.html',\r\n styleUrls: ['./payment-amount.component.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [CustomCurrencyPipe]\r\n })\r\n @ComponentLookup(ComponentName.PAYMENT_AMOUNT)\r\n export class PaymentAmountComponent implements OnInit, OnDestroy, IControlComponent {\r\n \r\n data: FormComponentData; \r\n model: PaymentAmountComponentDataModel = new PaymentAmountComponentDataModel(); \r\n state: any;\r\n invalidInput = false;\r\n avatarModel: PublicProfileAvatarComponentModel;\r\n @ViewChild('amountInputEl') amountInputEl: ElementRef;\r\n\r\n constructor(\r\n protected messageBusService: MessageBusService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n protected baseService: BaseService,\r\n private currencyPipe : CustomCurrencyPipe,\r\n private utilsService: UtilsService,\r\n @Inject(DOCUMENT) private document: Document\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadDataModel();\r\n\r\n this.sendComponentFinishLoadingMessage();\r\n\r\n setTimeout(() => {\r\n if (this.amountInputEl && this.amountInputEl.nativeElement)\r\n this.amountInputEl.nativeElement.click();\r\n this.amountInputEl.nativeElement.focus();\r\n }, 100); \r\n }\r\n \r\n ngOnDestroy(): void {\r\n \r\n } \r\n\r\n sendComponentFinishLoadingMessage(){\r\n if (!this.data)\r\n return;\r\n\r\n let event = new ComponentFinishLoadingMessage();\r\n \r\n event.idFormulario = this.data.idFormulario;\r\n event.idControl = this.data.idControlPadre;\r\n \r\n this.messageBusService.componentFinishLoading(event); \r\n }\r\n \r\n private loadDataModel() {\r\n if (this.data && this.data.configurationData) {\r\n this.model = this.data.configurationData as PaymentAmountComponentDataModel; \r\n \r\n if (this.model.publicProfile) {\r\n this.avatarModel = new PublicProfileAvatarComponentModel();\r\n this.avatarModel.personId = this.model.publicProfile.id;\r\n this.avatarModel.avatarUrl = this.model.publicProfile.ubicacionFoto;\r\n this.avatarModel.fullName = this.model.publicProfile.nombrePersona;\r\n this.avatarModel.sex = this.model.publicProfile.sexo;\r\n this.avatarModel.profileType = this.model.publicProfile.tipoPerfil;\r\n }\r\n } \r\n }\r\n \r\n /*********************** Payment amount input methods **********************************/\r\n\r\n onAmountInputClick(event: any) {\r\n // Move cursor if the user already type something\r\n if (event.target.value && event.target.value != \"0.00\")\r\n event.target.selectionStart = event.target.selectionEnd = event.target.value.length;\r\n else \r\n event.target.selectionStart = event.target.selectionEnd = 0;\r\n\r\n // Scroll top\r\n setTimeout(() => {\r\n let container = document.body.classList.contains('route-dialog-opened') \r\n ? this.document.getElementsByClassName(\"route-dialog-content\")[0]\r\n : this.document.getElementsByClassName(\"body-container\")[0];\r\n\r\n let el = this.document.getElementsByClassName(\"payment-input\")[0] as Element; \r\n\r\n this.utilsService.scrollToElementWithAnimation(container, el);\r\n }, 100);\r\n }\r\n\r\n onAmountInputKeyup(element: any) {\r\n //console.log(element);\r\n //console.log(\"Old value: \" + element.target.value); \r\n\r\n element.preventDefault();\r\n element.stopPropagation();\r\n\r\n // Enter\r\n if (element.keyCode == 13)\r\n return;\r\n\r\n if (!element.target.value)\r\n element.target.value = \"0.00\";\r\n \r\n let currentValue = element.target.value + element.key;\r\n let newChar = currentValue.substring(currentValue.length - 1);\r\n let amount: string | null; \r\n\r\n // If the new character is a number or backspace\r\n if (element.keyCode == 8 || /\\d/.test(newChar)) {\r\n // Replace all commas\r\n currentValue = currentValue.replace(\",\", \"\");\r\n \r\n // We need to insert the number at the end and move the comma one place\r\n let number = parseFloat(currentValue);\r\n\r\n // In some cases if you type fast we can get this event with 2 or 3 inserted digits\r\n // In those cases we want to move the comma by the number of decimal less 2\r\n // For example 0.0023 will move decimal 2 positions to get 0.23\r\n let multiplier = Math.pow(10, this.countDecimals(number) - 2);\r\n\r\n // In case the user enter '0' and 10 ^ 0 = 1\r\n if (multiplier < 10)\r\n multiplier = 10;\r\n\r\n // If the new character is a backspace move the comma to the left\r\n if (element.keyCode == 8)\r\n number = (number / 10);\r\n else\r\n number = (number * multiplier);\r\n\r\n // Truncate number to 2 digits\r\n number = Math.round(number * 100) / 100;\r\n\r\n amount = this.currencyPipe.transform(number.toFixed(2), 'USD','','1.2-2','en-US');\r\n }\r\n else {\r\n amount = this.currencyPipe.transform(element.target.value, 'USD','','1.2-2','en-US');\r\n } \r\n\r\n if (!amount)\r\n amount = \"0.00\";\r\n\r\n this.model.paymentAmount = amount;\r\n\r\n // Set value to input and move cursor\r\n element.target.value = amount;\r\n element.target.selectionStart = element.target.selectionEnd = amount.length;\r\n\r\n //console.log(\"New value: \" + amount);\r\n }\r\n \r\n validateInputNumber(): boolean {\r\n let amount = parseFloat(this.model.paymentAmount.replace(/,/g, \"\"));\r\n\r\n return (amount >= 1 && amount <= 10000);\r\n }\r\n\r\n onNextClick() {\r\n if (!this.validateInputNumber()) {\r\n this.invalidInput = true;\r\n return;\r\n }\r\n else \r\n this.invalidInput = false;\r\n \r\n let payAmount = parseFloat(this.model.paymentAmount);\r\n\r\n if (payAmount) {\r\n let message = new ComponentDataSetMessage();\r\n message.componentName = ComponentName.PAYMENT_AMOUNT;\r\n message.data = this.model.paymentAmount;\r\n\r\n this.messageBusService.onComponentDataSetMessage(message); \r\n }\r\n } \r\n\r\n private countDecimals = function (number: number) {\r\n if(Math.floor(number) === number) return 0;\r\n return number.toString().split(\".\")[1].length || 0; \r\n } \r\n }\r\n\r\n export class PaymentAmountComponentDataModel {\r\n targetUserName: string = \"\";\r\n targetUserAvatarUrl: string = \"\";\r\n\r\n userName: string = \"\";\r\n specialty: string = \"\";\r\n paymentAmount: string = \"0.00\";\r\n publicProfile: PublicProfile;\r\n }\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { OnlinePaymentWorkflowState } from \"../../states/online-payment-workflow-state.model\";\r\nimport { PaymentAmountComponentDataModel } from \"src/app/shared/components/payment-amount/payment-amount.component\";\r\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\r\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\r\nimport { BaseStep } from \"../base-step.model\";\r\nimport { PublicProfile } from \"../../../people/public-profile.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PaymentAmountStep extends BaseStep {\r\n \r\n constructor(\r\n protected messageBusService: MessageBusService,\r\n ){ \r\n super(messageBusService);\r\n \r\n this.showHeader = true;\r\n this.showProgressBar = true;\r\n this.showButtonClose = true;\r\n } \r\n\r\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage) {\r\n if (message.componentName == ComponentName.PAYMENT_AMOUNT)\r\n this.stateData.setAmount(message.data); \r\n } \r\n\r\n protected buildComponentConfigurationData() : { [componentName: string]: any; } {\r\n let formConfigurationData : { [componentName: string]: any; } = {};\r\n \r\n formConfigurationData[ComponentName.PAYMENT_AMOUNT] = this.getPaymentAmountComponentData();\r\n\r\n return formConfigurationData;\r\n }\r\n\r\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\r\n return message.componentName == ComponentName.PAYMENT_AMOUNT;\r\n }\r\n\r\n private getPaymentAmountComponentData() {\r\n var data = new PaymentAmountComponentDataModel();\r\n\r\n data.targetUserName = this.stateData.getTargetUsername();\r\n data.targetUserAvatarUrl = this.stateData.getTargetUrlAvatar();\r\n data.specialty = this.stateData.getTargetSpecialty();\r\n data.userName = this.stateData.getUserName();\r\n data.paymentAmount = this.stateData.getAmount();\r\n data.publicProfile = this.stateData.getPublicProfile();\r\n\r\n return data;\r\n } \r\n\r\n setState(stateData: any): void {\r\n this.stateData = new OnlinePaymentWorkflowState(stateData);\r\n }\r\n\r\n isCompleted(): Observable {\r\n return of(this.stateData && this.stateData.getAmount() != \"0.00\");\r\n }\r\n\r\n showStepInActionBack(): boolean {\r\n return true;\r\n }\r\n\r\n showStep(): boolean {\r\n return true;\r\n }\r\n}\r\n\r\nexport interface IPaymentAmountWorkflowState{\r\n getTargetUrlAvatar():string;\r\n getTargetUsername():string;\r\n getTargetSpecialty():string;\r\n getUserName():string;\r\n getAmount():string;\r\n getPublicProfile(): PublicProfile;\r\n\r\n setAmount(amount: string):void;\r\n setPublicProfile(profile: PublicProfile):void;\r\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'intlTelInputPlaceholder'\n})\nexport class IntlTelInputPlaceholderPipe implements PipeTransform {\n\n transform(value: any): unknown {\n if(value){\n return value.placeHolder.substring(value.dialCode.length + 1, value.placeHolder.length);\n }\n else{\n return '';\n }\n }\n\n}\n","
\r\n \r\n\r\n \r\n
\r\n
{{ 'shared.payment.text4' | translate:locale.language }}
\r\n
{{ 'shared.payment.text27' | translate:locale.language }}
\r\n
{{profileName}}
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n {{ 'shared.payment.text5' | translate:locale.language }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n {{creditCardLastFourDigits}}\r\n\r\n \r\n\r\n \r\n\r\n
\r\n {{ 'shared.payment.text9' | translate:locale.language }}\r\n {{ 'shared.payment.text10' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.payment.text11' | translate:locale.language }}\r\n {{ 'shared.payment.text12' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.payment.text13' | translate:locale.language }}\r\n {{ 'shared.payment.text14' | translate:locale.language }}\r\n
\r\n
\r\n\r\n
\r\n \r\n {{ 'shared.payment.text7' | translate:locale.language }}\r\n \r\n {{ 'shared.payment.text15' | translate:locale.language }}\r\n {{ 'shared.payment.text25' | translate:locale.language }}\r\n \r\n
\r\n
\r\n \r\n {{ 'shared.payment.text8' | translate:locale.language }}\r\n \r\n \r\n {{ 'shared.payment.text16' | translate:locale.language }}\r\n {{ 'shared.payment.text17' | translate:locale.language }}\r\n \r\n
\r\n \r\n
\r\n
\r\n
{{ 'shared.payment.text18' | translate:locale.language }}
\r\n {{ 'shared.payment.text19' | translate:locale.language }}\r\n
\r\n
\r\n
\r\n {{ 'shared.payment.text20' | translate:locale.language }}\r\n {{ 'shared.payment.text21' | translate:locale.language }}
\r\n {{ 'shared.payment.text22' | translate:locale.language }}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{ 'shared.payment.text28' | translate:locale.language }}
\r\n
\r\n {{profileName}}.\r\n {{profileSpecialty}}\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n {{ 'shared.payment.text18' | translate:locale.language }}\r\n {{ 'shared.payment.text19' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.payment.text20' | translate:locale.language }}\r\n {{ 'shared.payment.text21' | translate:locale.language }}\r\n {{ 'shared.payment.text22' | translate:locale.language }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n","import { Component, ElementRef, Inject, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { CreditCardFormatDirective, CreditCardValidators } from 'angular-cc-library';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { CustomCurrencyPipe } from '../../pipes/custom-currency.pipe';\r\nimport { ComponentName } from '../../enums/component-name.enum';\r\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\r\nimport { LegalAgreementsRouteDialogModel } from '../dialogs/route-dialog/route-dialog.component';\r\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { PublicProfile } from '../../models/people/public-profile.model';\r\n\r\n@Component({\r\n selector: 'app-payment',\r\n templateUrl: './payment.component.html',\r\n styleUrls: ['./payment.component.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [CustomCurrencyPipe]\r\n })\r\n @ComponentLookup(ComponentName.PAYMENT_FORM)\r\n export class PaymentComponent implements OnInit, OnDestroy, IControlComponent {\r\n \r\n data: FormComponentData; \r\n paymentForm: FormGroup; \r\n paymentAmount: string = \"0.0\";\r\n creditCardLastFourDigits: string = \"\";\r\n creditCardType: string = \"\";\r\n creditCardTypeSubscribe: boolean = false;\r\n creditCardOwnerName: string; \r\n cvcFocus: boolean = false;\r\n phoneNumber: string;\r\n formSubmitted: boolean = false;\r\n creditCardNumberFocus: boolean = false;\r\n profileName: string;\r\n profileSpecialty: string;\r\n \r\n @ViewChild('creditCardNumber') creditCardNumberEl: ElementRef;\r\n @ViewChild('creditCardExpiration') creditCardExpirationEl: ElementRef;\r\n @ViewChild('creditCardCvc') creditCardCvcEl: ElementRef;\r\n\r\n constructor(\r\n protected messageBusService: MessageBusService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n protected baseService: BaseService,\r\n private breakpointObserver : BreakpointObserver,\r\n private formBuilder: FormBuilder,\r\n private routeDialogService: RouteDialogService,\r\n @Inject(DOCUMENT) private document: Document\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.document.body.classList.add('payment-form');\r\n\r\n this.paymentForm = this.formBuilder.group({\r\n creditCardControl: ['', [CreditCardValidators.validateCCNumber]],\r\n expirationDateControl: ['', [CreditCardValidators.validateExpDate]],\r\n cvcControl: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(4)]],\r\n fullNameControl: ['', Validators.required],\r\n phoneNumberControl: ['', Validators.required] \r\n });\r\n\r\n this.loadFromModel();\r\n\r\n this.sendComponentFinishLoadingMessage();\r\n\r\n setTimeout(() => {\r\n this.creditCardNumberEl.nativeElement.focus();\r\n }, 500); \r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.document.body.classList.remove('payment-form');\r\n }\r\n\r\n sendComponentFinishLoadingMessage(){\r\n if (!this.data)\r\n return;\r\n\r\n let event = new ComponentFinishLoadingMessage();\r\n \r\n event.idFormulario = this.data.idFormulario;\r\n event.idControl = this.data.idControlPadre;\r\n \r\n this.messageBusService.componentFinishLoading(event); \r\n }\r\n\r\n loadFromModel() {\r\n if (this.data && this.data.configurationData) {\r\n let model = this.data.configurationData as PaymentComponentData;\r\n\r\n if (model.publicProfile) {\r\n this.profileName = model.publicProfile.nombrePersona;\r\n this.profileSpecialty = model.publicProfile.especialidades.map(s => s.objetoDetalle).join(\", \");\r\n } \r\n\r\n if (model.creditCardNumber) {\r\n let cardExp = model.creditCardExpMonth + \"/\" + model.creditCardExpYear\r\n\r\n this.setControlValue(ControlNames.CardNumber, model.creditCardNumber);\r\n this.setControlValue(ControlNames.CardExpirationDate, cardExp);\r\n this.setControlValue(ControlNames.CardCvc, model.creditCardCvc);\r\n } \r\n\r\n if (model.creditCardFullName)\r\n this.setControlValue(ControlNames.FullName, model.creditCardFullName);\r\n\r\n if (model.phoneNumber)\r\n this.setControlValue(ControlNames.PhoneNumber, model.phoneNumber); \r\n\r\n this.paymentAmount = model.amount;\r\n } \r\n }\r\n\r\n /************************* Form control methods ********************************/ \r\n\r\n getControl(controlName: string) {\r\n return this.paymentForm.controls[controlName];\r\n }\r\n isControlInvalid(controlName: string) {\r\n let control = this.getControl(controlName);\r\n\r\n // First check if the form is submitted or control is dirty\r\n if (!this.formSubmitted && !control.touched)\r\n return false;\r\n\r\n return control.invalid;\r\n }\r\n controlHasError(controlName: string, errorName: string) {\r\n return this.getControl(controlName).hasError(errorName);\r\n }\r\n getControlValue(controlName: string) {\r\n return this.getControl(controlName).value;\r\n }\r\n setControlValue(controlName: string, value: string) {\r\n this.getControl(controlName).setValue(value);\r\n }\r\n \r\n /*********************** Credit card input methods **********************************/\r\n \r\n onCreditCardNumberFocus(element: CreditCardFormatDirective) {\r\n this.creditCardNumberFocus = true;\r\n \r\n if (!this.creditCardTypeSubscribe) {\r\n this.creditCardTypeSubscribe = true;\r\n\r\n element.resolvedScheme$.subscribe(creditCardType => {\r\n if (creditCardType && creditCardType != 'unknown')\r\n this.creditCardType = creditCardType.toUpperCase();\r\n else \r\n this.creditCardType = \"\";\r\n });\r\n }\r\n }\r\n\r\n onCreditCardNumberBlur() {\r\n this.creditCardNumberFocus = false;\r\n }\r\n\r\n onCreditCardNumberKeyup(event: any) { \r\n let el = event.target;\r\n\r\n let creditCardNumber = this.getControlValue(ControlNames.CardNumber);\r\n let isCursorAtEnd = (el.selectionStart == creditCardNumber.length);\r\n\r\n this.creditCardLastFourDigits = creditCardNumber.substring(creditCardNumber.length - 4);\r\n\r\n // If credit card number is valid and user is at the end of the input let move to expiration date\r\n if (!this.getControl(ControlNames.CardNumber).invalid && isCursorAtEnd) {\r\n this.creditCardExpirationEl.nativeElement.focus();\r\n }\r\n }\r\n\r\n isCreditCardExpirationValid(forceValidation: boolean = false) {\r\n let control = this.getControl(ControlNames.CardExpirationDate);\r\n\r\n // First check if the form is submitted or control is dirty\r\n if (!forceValidation && !this.formSubmitted && !control.touched)\r\n return true;\r\n\r\n let dateStr = control.value;\r\n\r\n if (!dateStr)\r\n return false;\r\n \r\n var expParts = dateStr.split(\"/\");\r\n\r\n if (!expParts[0] || !expParts[1])\r\n return false;\r\n\r\n expParts[0] = expParts[0].trim();\r\n expParts[1] = expParts[1].trim();\r\n\r\n let now = new Date();\r\n let expYear = parseInt(now.getFullYear().toString().substring(0, 2) + expParts[1]);\r\n let expDate = new Date(expYear, expParts[0] - 1, 1).getTime();\r\n\r\n return now.getTime() < expDate;\r\n }\r\n\r\n onCreditCardExpirationKeyup() {\r\n var expValue = this.getControlValue(ControlNames.CardExpirationDate);\r\n var expEl = this.creditCardExpirationEl.nativeElement;\r\n\r\n let isCursorAtEnd = (expEl.selectionStart == expValue.length);\r\n\r\n if (isCursorAtEnd && this.isCreditCardExpirationValid(true)) {\r\n this.creditCardCvcEl.nativeElement.focus();\r\n }\r\n }\r\n\r\n onCvcFocus() {\r\n this.cvcFocus = true;\r\n }\r\n onCvcBlur() {\r\n this.cvcFocus = false;\r\n }\r\n onCreditCardSecretKeyup(event: any) {\r\n \r\n }\r\n\r\n onMobileLastFourDigitsClick() {\r\n this.creditCardNumberFocus = true;\r\n this.creditCardNumberEl.nativeElement.focus();\r\n }\r\n\r\n /*********************** Buttons methods **********************************/ \r\n\r\n onPayClick() {\r\n this.paymentForm.markAllAsTouched();\r\n this.formSubmitted = true;\r\n\r\n if (!this.paymentForm.valid || !this.isCreditCardExpirationValid(true))\r\n return;\r\n\r\n let creditCardExpiration = this.getControlValue(ControlNames.CardExpirationDate); \r\n let payAmount = parseFloat(this.paymentAmount);\r\n let expirationParts = creditCardExpiration.split(\"/\").map((p: string) => p.trim());\r\n\r\n // Build out model\r\n let model = new PaymentComponentData();\r\n \r\n model.amount = this.paymentAmount;\r\n model.creditCardType = this.creditCardType;\r\n model.creditCardNumber = this.getControlValue(ControlNames.CardNumber).replace(/\\s/g, \"\");\r\n model.creditCardExpMonth = expirationParts[0];\r\n model.creditCardExpYear = expirationParts[1];\r\n model.creditCardCvc = this.getControlValue(ControlNames.CardCvc);\r\n model.creditCardFullName = this.getControlValue(ControlNames.FullName);\r\n model.phoneNumber = this.getControlValue(ControlNames.PhoneNumber);\r\n \r\n // Format full name\r\n let regEx = /^\\s*([a-zA-Z]{2,25})\\s+([a-zA-Z]{2,25}([a-zA-Z]|\\s)*)$/;\r\n let match = model.creditCardFullName.match(regEx);\r\n\r\n if (!match || match.length < 3)\r\n return;\r\n\r\n model.creditCardFullName = match[1] + \" \" + match[2].trim().replace(/\\s+/, \" \");\r\n\r\n // Send message indicating that the model was completed\r\n let message = new ComponentDataSetMessage();\r\n \r\n message.componentName = ComponentName.PAYMENT_FORM;\r\n message.data = model;\r\n\r\n this.messageBusService.onComponentDataSetMessage(message);\r\n }\r\n\r\n openDialogLegalAgreements(): void {\r\n const routeDialogModel = new LegalAgreementsRouteDialogModel();\r\n routeDialogModel.route = 'terminos-y-condiciones';\r\n this.routeDialogService.openDialog(routeDialogModel);\r\n }\r\n\r\n isMobile(): boolean {\r\n return this.breakpointObserver.isMatched([Breakpoints.Handset, Breakpoints.Tablet]);\r\n }\r\n\r\n }\r\n\r\n export class PaymentComponentData {\r\n creditCardType: string;\r\n creditCardNumber: string;\r\n creditCardExpMonth: string;\r\n creditCardExpYear: string;\r\n creditCardCvc: string;\r\n creditCardFullName: string;\r\n phoneNumber: string;\r\n amount: string;\r\n\r\n publicProfile: PublicProfile;\r\n }\r\n\r\n export enum ControlNames {\r\n CardNumber = \"creditCardControl\",\r\n CardExpirationDate = \"expirationDateControl\",\r\n CardCvc = \"cvcControl\",\r\n FullName = \"fullNameControl\",\r\n PhoneNumber = \"phoneNumberControl\"\r\n }","import { Injectable } from \"@angular/core\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { WorkflowItem } from \"../../../systems/workflow.model\";\r\nimport { OnlinePaymentWorkflowState } from \"../../states/online-payment-workflow-state.model\";\r\nimport { BaseStep } from \"../base-step.model\";\r\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\r\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\r\nimport { PaymentComponentData } from \"src/app/shared/components/payment/payment.component\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PaymentFormStep extends BaseStep {\r\n \r\n constructor(\r\n protected messageBusService: MessageBusService,\r\n ){ \r\n super(messageBusService);\r\n \r\n this.showHeader = true;\r\n this.showProgressBar = true;\r\n this.showButtonBack = true;\r\n this.showButtonClose = true;\r\n } \r\n\r\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage) {\r\n if (message.componentName == ComponentName.PAYMENT_FORM) {\r\n let model = message.data as PaymentComponentData;\r\n\r\n if (model) {\r\n this.stateData.setCreditCardType(model.creditCardType);\r\n this.stateData.setCreditCardNumber(model.creditCardNumber);\r\n this.stateData.setCreditCardExpirationMonth(model.creditCardExpMonth);\r\n this.stateData.setCreditCardExpirationYear(model.creditCardExpYear);\r\n this.stateData.setCreditCardCvc(model.creditCardCvc);\r\n this.stateData.setCreditCardFullName(model.creditCardFullName);\r\n this.stateData.setPhoneNumber(model.phoneNumber); \r\n }\r\n }\r\n } \r\n\r\n protected buildComponentConfigurationData() : { [componentName: string]: any; } {\r\n let formConfigurationData : { [componentName: string]: any; } = {};\r\n \r\n formConfigurationData[ComponentName.PAYMENT_FORM] = this.getPaymenComponentData();\r\n\r\n return formConfigurationData;\r\n }\r\n\r\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\r\n return message.componentName == ComponentName.PAYMENT_FORM;\r\n }\r\n\r\n private getPaymenComponentData() {\r\n var data = new PaymentComponentData();\r\n\r\n data.amount = this.stateData.getAmount();\r\n data.creditCardNumber = this.stateData.getCreditCardNumber();\r\n data.creditCardExpMonth = this.stateData.getCreditCardExpirationMonth();\r\n data.creditCardExpYear = this.stateData.getCreditCardExpirationYear();\r\n data.creditCardFullName = this.stateData.getCreditCardFullName();\r\n data.phoneNumber = this.stateData.getPhoneNumber(); \r\n data.publicProfile = this.stateData.getPublicProfile(); \r\n\r\n return data;\r\n } \r\n\r\n setItem(item: WorkflowItem): void {\r\n this.item = item;\r\n }\r\n\r\n setState(stateData: any): void {\r\n this.stateData = new OnlinePaymentWorkflowState(stateData);\r\n }\r\n\r\n isCompleted(): Observable {\r\n let result = (\r\n this.stateData\r\n && !this.isNullOrEmpty(this.stateData.getCreditCardNumber())\r\n && !this.isNullOrEmpty(this.stateData.getCreditCardExpirationMonth())\r\n && !this.isNullOrEmpty(this.stateData.getCreditCardExpirationYear())\r\n && !this.isNullOrEmpty(this.stateData.getCreditCardCvc())\r\n && !this.isNullOrEmpty(this.stateData.getCreditCardFullName())\r\n && !this.isNullOrEmpty(this.stateData.getPhoneNumber())\r\n );\r\n\r\n return of(result);\r\n }\r\n\r\n showStepInActionBack(): boolean {\r\n return true;\r\n }\r\n\r\n showStep(): boolean {\r\n return true;\r\n }\r\n\r\n private isNullOrEmpty(str: string) {\r\n return str == null || str == undefined || str == \"\";\r\n }\r\n}\r\n\r\nexport interface IPaymentWorkflowState { \r\n getAmount():string;\r\n\r\n setCreditCardType(cardType: string) : void;\r\n\r\n getCreditCardNumber() : string;\r\n setCreditCardNumber(cardNumber: string) : void;\r\n\r\n getCreditCardExpirationMonth() : string;\r\n setCreditCardExpirationMonth(expMonth: string) : void;\r\n getCreditCardExpirationYear() : string;\r\n setCreditCardExpirationYear(expYear: string) : void;\r\n\r\n getCreditCardCvc() : string;\r\n setCreditCardCvc(cvc: string) : void;\r\n\r\n getCreditCardFullName() : string;\r\n setCreditCardFullName(fullName: string) : void;\r\n\r\n getPhoneNumber() : string;\r\n setPhoneNumber(fullName: string) : void;\r\n}","import { IWorkflowDataState } from \"src/app/shared/interfaces/workflow-data-state\";\r\nimport { BaseStep } from \"./base-step.model\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\r\nimport { WorkflowService } from \"src/app/core/services/workflow.service\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\r\nimport { PatientVerificationDataModel } from \"../models/patient-verification-data.model\";\r\nimport { WorkflowItemData } from \"../../systems/workflow.model\";\r\nimport { BaseService } from \"src/app/core/services/base.service\";\r\nimport { PublicProfile } from \"../../people/public-profile.model\";\r\nimport { AuthService } from \"src/app/core/services/auth.service\";\r\nimport { switchMap } from \"rxjs/operators\";\r\nimport { Relation } from \"../../people/relation.model\";\r\nimport { PatientService } from \"src/app/core/services/patient.service\";\r\nimport { PatientVerificationResponse } from \"src/app/shared/interfaces/patient-verification-response\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PatientVerificationStep extends BaseStep {\r\n\r\n constructor(\r\n private patientService: PatientService,\r\n private authService: AuthService,\r\n protected messageBusService: MessageBusService, \r\n private baseService: BaseService,\r\n private workflowService: WorkflowService\r\n ) {\r\n super(messageBusService);\r\n this.showHeader = true;\r\n this.showProgressBar = true;\r\n this.showButtonClose = true;\r\n this.withoutFooter = true;\r\n }\r\n\r\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage): void {\r\n if (message.componentName == ComponentName.PATIENT_VERIFICATION){\r\n\r\n const data = message.data as PatientVerificationResponse;\r\n\r\n this.stateData.setPatientEmail(data.emailPaciente);\r\n this.stateData.setPatientValid(data.isValid);\r\n this.stateData.setPosition(this.stateData.getPosition() + 1);\r\n }\r\n }\r\n\r\n protected buildComponentConfigurationData(): { [componentName: string]: any; } {\r\n const formConfigurationData : { [componentName: string]: any; } = {};\r\n \r\n formConfigurationData[ComponentName.PATIENT_VERIFICATION] = this.getDataModel();\r\n\r\n return formConfigurationData;\r\n }\r\n\r\n private getDataModel(): PatientVerificationDataModel {\r\n let dataModel = new PatientVerificationDataModel();\r\n\r\n dataModel.idVerificacion = this.stateData.getIdVerificacion();;\r\n dataModel.nombrePaciente = this.stateData.getPatientName();\r\n dataModel.profile = this.stateData.getPublicProfile();\r\n\r\n if (this.item.valor) { \r\n let stepItemData = this.baseService.parseObjectDeep(JSON.parse(this.item.valor));\r\n\r\n if (stepItemData.data) dataModel.configData = stepItemData.data;\r\n }\r\n\r\n return dataModel;\r\n }\r\n\r\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\r\n return message.componentName == ComponentName.PATIENT_VERIFICATION;\r\n }\r\n\r\n setState(stateData: IWorkflowDataState): void {\r\n this.stateData = this.workflowService.getWorkflowDataState();\r\n }\r\n\r\n isCompleted(): Observable {\r\n return this.authService.isLoggedInFull().pipe(\r\n switchMap((isLoggedIn)=>{\r\n const userId = this.stateData.getUserPhrId();\r\n const patientId = this.stateData.getPatientId();\r\n\r\n return userId > 0\r\n ? of(true)\r\n : isLoggedIn && patientId > 0\r\n ? this.containsRelations()\r\n : of(this.stateData.getPatientValid());\r\n }));\r\n }\r\n\r\n showStepInActionBack(): boolean {\r\n return true;\r\n }\r\n \r\n showStep(): boolean {\r\n return true;\r\n }\r\n\r\n containsRelations(): Observable{\r\n let relations = this.stateData.getRelations();\r\n\r\n if(relations){\r\n if(relations.length > 0){\r\n return of(true);\r\n }\r\n else{\r\n return of(this.stateData.getPatientValid());\r\n }\r\n }\r\n else{\r\n return this.patientService.getRelations(this.stateData.getPatientId()).pipe(\r\n switchMap((relations)=>{\r\n if(relations.length > 0){\r\n this.stateData.setRelations(relations);\r\n return of(true);\r\n }\r\n else{\r\n return of(this.stateData.getPatientValid());\r\n }\r\n }));\r\n }\r\n }\r\n}\r\n\r\nexport interface IPatientVerificationStep {\r\n\r\n getIdVerificacion(): string;\r\n getUserPhrId(): number;\r\n getPatientId(): number;\r\n getPatientName(): string;\r\n getPatientEmail(): string;\r\n getPatientValid(): boolean;\r\n getPublicProfile(): PublicProfile;\r\n getRelations(): Relation[];\r\n\r\n setPatientName(nombrePaciente: string): void;\r\n setPatientEmail(patientEmail: string): void;\r\n setPatientValid(valid: boolean): void;\r\n setRelations(relations: Relation[]): void;\r\n}","import { IWorkflowDataState } from \"src/app/shared/interfaces/workflow-data-state\";\r\nimport { BaseStep } from \"../base-step.model\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\r\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\r\nimport { BaseService } from \"src/app/core/services/base.service\";\r\nimport { WorkflowService } from \"src/app/core/services/workflow.service\";\r\nimport { WorkflowItemData } from \"../../../systems/workflow.model\";\r\nimport { PatientVerificationDataModel } from \"../../models/patient-verification-data.model\";\r\nimport { PublicProfile } from \"../../../people/public-profile.model\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SummaryMedicalOrderStep extends BaseStep {\r\n\r\n constructor(protected messageBusService: MessageBusService, private baseService: BaseService, private workflowService: WorkflowService) {\r\n super(messageBusService);\r\n this.showHeader = false;\r\n this.showProgressBar = true;\r\n this.showButtonClose = true;\r\n this.withoutFooter = true;\r\n }\r\n\r\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage): void {\r\n }\r\n protected buildComponentConfigurationData(): { [componentName: string]: any; } {\r\n const formConfigurationData : { [componentName: string]: any; } = {};\r\n \r\n formConfigurationData[ComponentName.SUMMARY_MEDICAL_ORDER] = this.getDataModel();\r\n\r\n return formConfigurationData;\r\n }\r\n\r\n private getDataModel(): PatientVerificationDataModel {\r\n let dataModel = new PatientVerificationDataModel();\r\n\r\n dataModel.idVerificacion = this.stateData.getIdVerificacion();\r\n dataModel.idPaciente = this.stateData.getPatientId();\r\n dataModel.nombrePaciente = this.stateData.getPatientName();\r\n dataModel.profile = this.stateData.getPublicProfile();\r\n\r\n if (this.item.valor) { \r\n let stepItemData = this.baseService.parseObjectDeep(JSON.parse(this.item.valor));\r\n\r\n if (stepItemData.data) dataModel.configData = stepItemData.data;\r\n }\r\n\r\n return dataModel;\r\n }\r\n\r\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\r\n return message.componentName == ComponentName.SUMMARY_MEDICAL_ORDER;\r\n }\r\n setState(stateData: IWorkflowDataState): void {\r\n this.stateData = this.workflowService.getWorkflowDataState();;\r\n }\r\n isCompleted(): Observable {\r\n return of(false);\r\n }\r\n showStepInActionBack(): boolean {\r\n return true;\r\n }\r\n showStep(): boolean {\r\n return true;\r\n }\r\n}\r\n\r\nexport interface ISummaryMedicalOrderWorkflowState {\r\n getIdVerificacion(): string;\r\n getUserId():number;\r\n getPublicProfile(): PublicProfile;\r\n getPatientName(): string;\r\n getPatientId(): number;\r\n\r\n setEmmiterPersonId(personId: number):void;\r\n}\r\n","export class SelectPatientRelationshipModel{\r\n patientRelationship: number = 0;\r\n patientIdRelationship: number = 0;\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { BaseStep } from \"./base-step.model\";\r\nimport { IWorkflowDataState } from \"src/app/shared/interfaces/workflow-data-state\";\r\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { WorkflowService } from \"src/app/core/services/workflow.service\";\r\nimport { WorkflowItem } from \"../../systems/workflow.model\";\r\nimport { PatientService } from \"src/app/core/services/patient.service\";\r\nimport { Relation } from \"../../people/relation.model\";\r\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\r\nimport { SelectPatientRelationshipModel } from \"../models/select-patient-relationship.model\";\r\nimport { map, switchMap } from \"rxjs/operators\";\r\nimport { Dependent } from \"../../people/dependent.model\";\r\nimport { UserService } from \"src/app/core/services/user.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n })\r\nexport class SelectPatientRelationshipStep extends BaseStep {\r\n constructor(\r\n protected messageBusService: MessageBusService,\r\n private workflowService: WorkflowService,\r\n private userService: UserService\r\n ){\r\n super(messageBusService);\r\n\r\n this.showHeader = true;\r\n this.showButtonBack = false;\r\n this.showProgressBar = true;\r\n this.showButtonClose = true;\r\n }\r\n\r\n setItem(item: WorkflowItem): void {\r\n this.item = item;\r\n }\r\n\r\n setState(stateData: any): void {\r\n this.stateData = this.workflowService.getWorkflowDataState();\r\n }\r\n\r\n isCompleted(): Observable {\r\n return this.containsDependents().pipe(map((containsDependents: boolean)=>{\r\n return !containsDependents || this.stateData.getPatientRelationship() > 0 || this.stateData.getUserPhrId() > 0;\r\n }));\r\n }\r\n\r\n showStepInActionBack(): boolean {\r\n return true;\r\n }\r\n \r\n showStep(): boolean {\r\n return true;\r\n }\r\n\r\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage) {\r\n if (message.componentName == ComponentName.SELECT_PATIENT_RELATIONSHIP){\r\n this.stateData.setPatientIdRelationship(message.data.patientIdRelationship);\r\n this.stateData.setPatientRelationship(message.data.patientRelationship);\r\n }\r\n }\r\n \r\n protected buildComponentConfigurationData() : { [componentName: string]: any; } {\r\n let formConfigurationData : { [componentName: string]: any; } = {};\r\n \r\n formConfigurationData[ComponentName.SELECT_PATIENT_RELATIONSHIP] = this.getSelectPatientRelationshipModel();\r\n\r\n return formConfigurationData;\r\n }\r\n\r\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\r\n return message.componentName == ComponentName.SELECT_PATIENT_RELATIONSHIP;\r\n }\r\n\r\n containsDependents(): Observable{\r\n let dependents = this.stateData.getDependents();\r\n\r\n if(dependents){\r\n return of(dependents.length > 0);\r\n }\r\n else{\r\n return this.userService.getUserDependents().pipe(\r\n switchMap((dependents)=>{\r\n if(dependents.length > 0){\r\n this.stateData.setDependents(dependents);\r\n return of(true);\r\n }\r\n else{\r\n return of(false);\r\n }\r\n }));\r\n }\r\n }\r\n\r\n private getSelectPatientRelationshipModel():SelectPatientRelationshipModel{\r\n let dataModel = new SelectPatientRelationshipModel();\r\n\r\n dataModel.patientRelationship = this.stateData.getPatientRelationship();\r\n dataModel.patientIdRelationship = this.stateData.getPatientIdRelationship();\r\n\r\n return dataModel;\r\n }\r\n}\r\n\r\nexport interface ISelectPatientRelationshipWorkflowState{\r\n getUserPhrId(): number;\r\n getDependents(): Dependent[];\r\n getPatientRelationship(): number;\r\n getPatientIdRelationship(): number;\r\n\r\n setDependents(dependents: Dependent[]): void;\r\n setPatientRelationship(patientRelationshipType:number):void;\r\n setPatientIdRelationship(patientId:number):void;\r\n}","export class CreatePatientRelationshipDataModel{\r\n patientRelationship: number = 0;\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { BaseStep } from \"./base-step.model\";\r\nimport { IWorkflowDataState } from \"src/app/shared/interfaces/workflow-data-state\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { ComponentDataSetMessage, MessageBusService } from \"src/app/core/services/message-bus.service\";\r\nimport { WorkflowService } from \"src/app/core/services/workflow.service\";\r\nimport { SenderPatientRelationship } from \"../../process/base-request.model\";\r\nimport { WorkflowItem } from \"../../systems/workflow.model\";\r\nimport { ComponentName } from \"src/app/shared/enums/component-name.enum\";\r\nimport { CreatePatientRelationshipDataModel } from \"../models/create-patient-relationship-data.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n })\r\nexport class CreatePatientRelationshipStep extends BaseStep{\r\n constructor(\r\n protected messageBusService: MessageBusService,\r\n private workflowService: WorkflowService\r\n ){\r\n super(messageBusService);\r\n\r\n this.showHeader = true;\r\n this.showButtonBack = false;\r\n this.showProgressBar = true;\r\n this.showButtonClose = true;\r\n }\r\n\r\n setItem(item: WorkflowItem): void {\r\n this.item = item;\r\n }\r\n\r\n setState(stateData: any): void {\r\n this.stateData = this.workflowService.getWorkflowDataState();\r\n }\r\n\r\n isCompleted(): Observable {\r\n this.showButtonBack = this.stateData.getPatientRelationship() == SenderPatientRelationship.OTRO;\r\n\r\n const isUser = this.stateData.getUserPhrId() > 0 && this.stateData.getPatientRelationship() == SenderPatientRelationship.USUARIO;\r\n\r\n return of(isUser || this.patientRelationshipSelected());\r\n }\r\n\r\n showStepInActionBack(): boolean {\r\n return true;\r\n }\r\n \r\n showStep(): boolean {\r\n return true;\r\n }\r\n\r\n protected handleComponentSetDataMessage(message: ComponentDataSetMessage): void {\r\n if (message.componentName == ComponentName.CREATE_PATIENT_RELATIONSHIP){\r\n this.stateData.setPatientRelationship(message.data.patientRelationship);\r\n\r\n if(message.data.patientRelationship == SenderPatientRelationship.USUARIO){\r\n this.stateData.setPatientIdRelationship(this.stateData.getUserId());\r\n }\r\n }\r\n }\r\n protected buildComponentConfigurationData(): { [componentName: string]: any; } {\r\n let formConfigurationData : { [componentName: string]: any; } = {};\r\n \r\n formConfigurationData[ComponentName.CREATE_PATIENT_RELATIONSHIP] = this.getCreatePatientRelationshipModel();\r\n\r\n return formConfigurationData;\r\n }\r\n \r\n protected messageForThisStep(message: ComponentDataSetMessage): boolean {\r\n return message.componentName == ComponentName.CREATE_PATIENT_RELATIONSHIP;\r\n }\r\n\r\n private patientRelationshipSelected():boolean{\r\n\r\n let patientRelationship = this.stateData.getPatientRelationship();\r\n\r\n return patientRelationship > 0 && patientRelationship != SenderPatientRelationship.OTRO;\r\n }\r\n\r\n private getCreatePatientRelationshipModel():CreatePatientRelationshipDataModel{\r\n let dataModel = new CreatePatientRelationshipDataModel();\r\n\r\n dataModel.patientRelationship = this.stateData.getPatientRelationship();\r\n\r\n return dataModel;\r\n }\r\n}\r\n\r\nexport interface ICreatePatientRelationshipWorkflowState{\r\n getUserId(): number;\r\n getUserPhrId(): number;\r\n getPatientRelationship(): number;\r\n setPatientRelationship(patientRelationshipType:number):void;\r\n setPatientIdRelationship(patientId:number):void;\r\n}","import { Injectable } from '@angular/core';\r\nimport { IStepFlow } from 'src/app/shared/interfaces/step-flow';\r\nimport { IWorkflowDataState } from 'src/app/shared/interfaces/workflow-data-state';\r\nimport { WorkflowItem } from 'src/app/shared/models/systems/workflow.model';\r\nimport { AuthenticationStep } from 'src/app/shared/models/workflow/steps/authentication-step.model';\r\nimport { SelectPatientAppointmentCheckoutStep } from 'src/app/shared/models/workflow/steps/select-patient-appointment-checkout-step.model';\r\nimport { HttpBaseService } from './http-base-service';\r\nimport { PatientFormAppointmentCheckoutStep } from 'src/app/shared/models/workflow/steps/patient-form-appointment-checkout-step.model';\r\nimport { SelectPatientRelationshipAppointmentCheckoutStep } from 'src/app/shared/models/workflow/steps/select-patient-relationship-appointment-checkout-step.model';\r\nimport { PatientContactFormAppointmentCheckoutStep } from 'src/app/shared/models/workflow/steps/patient-contact-form-appointment-checkout-step.model';\r\nimport { WorkflowStepName } from 'src/app/shared/enums/workflow-step-name.enum';\r\nimport { SummaryAppointmentCheckoutStep } from 'src/app/shared/models/workflow/steps/summary-appointment-checkout-step.model';\r\nimport { PaymentAmountStep } from 'src/app/shared/models/workflow/steps/payment/payment-amount-step.model';\r\nimport { PaymentFormStep } from 'src/app/shared/models/workflow/steps/payment/payment-form-step.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { SelectCountryStep } from 'src/app/shared/models/workflow/steps/select-country-step.model';\r\nimport { PatientVerificationStep } from 'src/app/shared/models/workflow/steps/patient-verification-step.model';\r\nimport { SummaryMedicalOrderStep } from 'src/app/shared/models/workflow/steps/medical-orders/summary-medical-order-step.model';\r\nimport { SelectPatientRelationshipStep } from 'src/app/shared/models/workflow/steps/select-patient-relationship-step.model';\r\nimport { CreatePatientRelationshipStep } from 'src/app/shared/models/workflow/steps/create-patient-relationship-step.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WorkflowStepService {\r\n\r\n encryptSessionData = environment.encryptLocalStorage;\r\n\r\n constructor(\r\n private authenticationStep: AuthenticationStep,\r\n private selectCountryStep: SelectCountryStep,\r\n private selectPatientAppointmentCheckoutStep: SelectPatientAppointmentCheckoutStep,\r\n private patientFormAppointmentCheckoutStep: PatientFormAppointmentCheckoutStep,\r\n private selectPatientRelationshipAppointmentCheckoutStep: SelectPatientRelationshipAppointmentCheckoutStep,\r\n private patientContactFormAppointmentCheckoutStep: PatientContactFormAppointmentCheckoutStep,\r\n private summaryAppointmentCheckoutStep: SummaryAppointmentCheckoutStep,\r\n private paymentAmountStep: PaymentAmountStep,\r\n private paymentFormStep: PaymentFormStep,\r\n private patientVerificationStep: PatientVerificationStep,\r\n private summaryMedicalOrderStep: SummaryMedicalOrderStep,\r\n private selectPatientRelationshipStep: SelectPatientRelationshipStep,\r\n private createPatientRelationshipStep: CreatePatientRelationshipStep\r\n ) { \r\n\r\n }\r\n\r\n createSteps(items: WorkflowItem[], state: IWorkflowDataState): IStepFlow[]{\r\n\r\n let steps: IStepFlow[] = [];\r\n\r\n items.forEach(item=>{\r\n\r\n switch(item.nombreClaseItem){\r\n case WorkflowStepName.PATIENT_VERIFICATION:\r\n this.patientVerificationStep.setItem(item);\r\n this.patientVerificationStep.setState(state);\r\n steps.push(this.patientVerificationStep);\r\n break;\r\n case WorkflowStepName.AUTHENTICATION:\r\n this.authenticationStep.setItem(item);\r\n this.authenticationStep.setState(state);\r\n steps.push(this.authenticationStep);\r\n break;\r\n case WorkflowStepName.SELECT_COUNTRY:\r\n this.selectCountryStep.setItem(item);\r\n this.selectCountryStep.setState(state);\r\n steps.push(this.selectCountryStep);\r\n break; \r\n case WorkflowStepName.SELECT_PATIENT_APPOINTMENT_CHECKOUT:\r\n this.selectPatientAppointmentCheckoutStep.setItem(item);\r\n this.selectPatientAppointmentCheckoutStep.setState(state);\r\n steps.push(this.selectPatientAppointmentCheckoutStep);\r\n break;\r\n case WorkflowStepName.PATIENT_FORM_APPOINTMENT_CHECKOUT:\r\n this.patientFormAppointmentCheckoutStep.setItem(item);\r\n this.patientFormAppointmentCheckoutStep.setState(state);\r\n steps.push(this.patientFormAppointmentCheckoutStep);\r\n break;\r\n case WorkflowStepName.SELECT_PATIENT_RELATIONSHIP_APPOINTMENT_CHECKOUT:\r\n this.selectPatientRelationshipAppointmentCheckoutStep.setItem(item);\r\n this.selectPatientRelationshipAppointmentCheckoutStep.setState(state);\r\n steps.push(this.selectPatientRelationshipAppointmentCheckoutStep);\r\n break;\r\n case WorkflowStepName.PATIENT_CONTACT_FORM_APPOINTMENT_CHECKOUT:\r\n this.patientContactFormAppointmentCheckoutStep.setItem(item);\r\n this.patientContactFormAppointmentCheckoutStep.setState(state);\r\n steps.push(this.patientContactFormAppointmentCheckoutStep);\r\n break;\r\n case WorkflowStepName.SUMMARY_APPOINTMENT_CHECKOUT:\r\n this.summaryAppointmentCheckoutStep.setItem(item);\r\n this.summaryAppointmentCheckoutStep.setState(state);\r\n steps.push(this.summaryAppointmentCheckoutStep);\r\n break;\r\n case WorkflowStepName.SUMMARY_MEDICAL_ORDER:\r\n this.summaryMedicalOrderStep.setItem(item);\r\n this.summaryMedicalOrderStep.setState(state);\r\n steps.push(this.summaryMedicalOrderStep);\r\n break;\r\n case WorkflowStepName.PAYMENT_AMOUNT:\r\n this.paymentAmountStep.setItem(item);\r\n this.paymentAmountStep.setState(state);\r\n steps.push(this.paymentAmountStep);\r\n break;\r\n case WorkflowStepName.PAYMENT_FORM:\r\n this.paymentFormStep.setItem(item);\r\n this.paymentFormStep.setState(state);\r\n steps.push(this.paymentFormStep);\r\n break;\r\n case WorkflowStepName.SELECT_PATIENT_RELATIONSHIP:\r\n this.selectPatientRelationshipStep.setItem(item);\r\n this.selectPatientRelationshipStep.setState(state);\r\n steps.push(this.selectPatientRelationshipStep);\r\n break;\r\n case WorkflowStepName.CREATE_PATIENT_RELATIONSHIP:\r\n this.createPatientRelationshipStep.setItem(item);\r\n this.createPatientRelationshipStep.setState(state);\r\n steps.push(this.createPatientRelationshipStep);\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n return steps;\r\n } \r\n}\r\n","import { Component, Inject, OnDestroy } from '@angular/core';\nimport { Observable, of, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MessageBusService, WorkflowDataMessage } from 'src/app/core/services/message-bus.service';\nimport { WorkflowService } from 'src/app/core/services/workflow.service';\nimport { IWorkflowComponent } from 'src/app/shared/interfaces/workflow-component';\nimport { IStepFlow } from 'src/app/shared/interfaces/step-flow';\nimport { Workflow, WorkflowItemData } from 'src/app/shared/models/systems/workflow.model';\nimport { WorkflowProgressBarComponentData } from '../workflow-progress-bar/workflow-progress-bar.component';\nimport { IWorkflowDataState } from 'src/app/shared/interfaces/workflow-data-state';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { WorkflowStepService } from 'src/app/core/services/workflow-step.service';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { BaseRequestModel } from 'src/app/shared/models/process/base-request.model';\nimport { DOCUMENT, Location } from '@angular/common';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { error } from 'jquery';\n\n@Component({\n selector: 'app-base-workflow',\n template: '',\n styleUrls: ['./base-workflow.component.css']\n})\nexport class BaseWorkflowComponent implements IWorkflowComponent, OnDestroy {\n protected ngUnsubscribe = new Subject();\n\n model: Workflow;\n data: any;\n \n stepIndex: number = 0;\n progressBarModel: WorkflowProgressBarComponentData = new WorkflowProgressBarComponentData();\n\n workflowMessage: WorkflowDataMessage;\n\n currentStep: IStepFlow;\n steps: Array = [];\n state: IWorkflowDataState;\n backToFlowStep: boolean = false;\n validationStepCompletedDisabled: boolean = false;\n\n checkingStep:boolean;\n\n formConfigurationData: {[componentName: string] : any; };\n\n constructor(\n protected location: Location,\n protected route: ActivatedRoute,\n protected baseService: BaseService,\n protected messageBusService: MessageBusService,\n protected publicProfileService: PublicProfileService,\n protected workflowService: WorkflowService,\n protected workflowStepService: WorkflowStepService,\n @Inject(DOCUMENT) protected document: Document\n ){\n\n this.messageBusService.onSendWorkflowStateUpdateMessage()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(message=>{\n this.state = message.state;\n\n this.workflowService.setWorkflowDataState(this.state);\n });\n\n this.messageBusService.onSendFlowStepCompleted()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(message=>{\n if(message.state){\n this.state = message.state;\n\n this.workflowService.setWorkflowDataState(this.state);\n }\n \n this.flowStepCompleted();\n });\n\n this.messageBusService.onCloseWorkFlowRequest()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(args => this.closeWorkflow(args));\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n init(){\n this.steps = this.workflowStepService.createSteps(this.model.items, this.state);\n\n this.loadStep();\n\n this.route.queryParams\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.closeWorkflowIfQueryParamExists.bind(this));\n }\n\n private closeWorkflowIfQueryParamExists(args: Params): void {\n const cerrar = args['close'] === 'true';\n if (cerrar) {\n const currentUrl: string = this.location.path();\n const urlWithoutQueryParams = currentUrl.split('?')[0];\n\n this.location.replaceState(urlWithoutQueryParams);\n\n\n setTimeout(() => {\n this.closeWorkflow(); \n }, 100);\n \n }\n }\n\n protected getPublicProfileUrl(state: BaseRequestModel): string {\n return this.publicProfileService.getPublicProfileUrl(state.nicknameResponsableServicioDestino ?? '');\n }\n\n loadStep() {\n let currentStep = this.steps[this.stepIndex];\n currentStep.setState(this.state);\n\n // Once current step is set the form will be loaded, so before that we call step method to do any prior form setup\n currentStep.onBeforeFormLoad().subscribe(() => {\n this.formConfigurationData = currentStep.formConfigurationData;\n\n this._loadStep();\n });\n }\n\n private _loadStep() {\n this.currentStep = this.steps[this.stepIndex];\n this.currentStep.setState(this.state);\n\n if(this.backToFlowStep){\n if(this.currentStep.showStepInActionBack()){\n this.backToFlowStep = false;\n\n this.validationStepCompletedDisabled = true;\n\n this.buildProgressBarModel();\n this.configFooter();\n }\n else{\n this.onBackFlowStep();\n }\n }\n else if(this.validationStepCompletedDisabled){\n\n if(!this.currentStep.showStep()){\n this.doFlowStepCompleted();\n }\n\n this.buildProgressBarModel();\n this.configFooter();\n }\n else{\n this.checkingStep = true;\n this.currentStep.isCompleted()\n .subscribe((result:boolean)=>{ \n if(result){\n this.doFlowStepCompleted();\n }\n\n this.checkingStep = false;\n\n this.buildProgressBarModel();\n this.configFooter();\n });\n }\n }\n\n loadNextStep(){\n this.stepIndex++;\n\n if(this.model.items.length > this.stepIndex){\n this.loadStep();\n } \n }\n\n flowStepCompleted(){\n this.currentStep.setState(this.state); \n\n this.currentStep.isCompleted()\n .subscribe((result:boolean)=>{\n if(result){\n // When the user completes a step, always set this flag to false\n this.validationStepCompletedDisabled = false;\n this.doFlowStepCompleted(true);\n }\n else{\n console.log(\"flow step completed error\")\n this.loadStep();\n }\n });\n }\n\n doFlowStepCompleted(updateState: boolean = false){\n this.workflowService.setWorkflowDataState(this.state);\n\n let stepItemData = new WorkflowItemData(JSON.parse(this.currentStep.item.valor));\n\n if(stepItemData && stepItemData.endWorkflow){\n this.completeWorkflowStateData()\n .subscribe(\n (a)=>{\n if(this.model.items.length > this.stepIndex)\n this.loadNextStep();\n },\n error => {\n this.baseService.handleServiceError(error, \"Error completing flow\");\n });\n }\n else if(updateState) {\n this.updateWorkflowStateData()\n .subscribe(\n (a)=>{\n this.loadNextStep();\n },\n error =>{\n this.baseService.handleServiceError(error, \"Error completing flow step\");\n });\n }\n else{\n this.loadNextStep();\n }\n }\n\n showWorkflowContent():boolean{\n return this.currentStep && !this.checkingStep;\n }\n\n getIdAreaSistema():number{\n return this.currentStep ? this.currentStep.item.idAreaSistema : -1;\n }\n\n buildProgressBarModel(){\n\n this.progressBarModel.show = this.currentStep.showHeader;\n this.progressBarModel.showButtonBack = this.currentStep.showButtonBack;\n this.progressBarModel.showButtonClose = this.currentStep.showButtonClose;\n this.progressBarModel.showProgressBar = this.currentStep.showProgressBar;\n\n // TODO replace with a defined value at each step\n this.progressBarModel.percentComplete = this.calculateProgressBarProgress(this.model.items.length, this.stepIndex);\n\n this.progressBarModel.backFn = this.onBackFlowStep.bind(this);\n }\n\n calculateProgressBarProgress(workflowStepsCount: number, currentStepIndex: number) {\n return (100 / workflowStepsCount) * (currentStepIndex + 1);\n }\n\n configFooter(){\n if(this.currentStep.withoutFooter){\n this.document.body.classList.add('step-without-footer');\n }\n else{\n this.document.body.classList.remove('step-without-footer');\n }\n }\n\n onBackFlowStep(){\n this.stepIndex--;\n this.backToFlowStep = true;\n this.loadStep();\n }\n\n setPercentComplete(percentage: number){\n this.progressBarModel.percentComplete = percentage;\n }\n\n completeWorkflowStateData():Observable{\n // override in the particular workflow component\n return of();\n }\n\n updateWorkflowStateData():Observable{\n // override in the particular workflow component\n return of(); \n }\n\n closeWorkflow(args?: any): void {\n // override in the particular workflow component\n }\n}","","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { DialogData } from '../../models/dialog-data.model';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmDialogComponent } from '../dialogs/confirm-dialog/confirm-dialog.component';\nimport { Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-logout-bar',\n templateUrl: './logout-bar.component.html',\n styleUrls: ['./logout-bar.component.css']\n})\nexport class LogoutBarComponent implements OnInit, OnDestroy {\n\n show: boolean = false;\n profileImg: string;\n profileName: string;\n\n private ngUnsubscribe = new Subject();\n\n @Input()closeFn: any;\n \n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private authService: AuthService,\n private userService: UserService,\n private appStoreService: AppStorageService,\n private translation: L10nTranslationService,\n private dialog: MatDialog,\n private router: Router\n ) { }\n\n ngOnInit(): void {\n let existsTokenInSession = this.appStoreService.getItemSession(STORAGE.TOKEN) ? true : false;\n\n if(!existsTokenInSession){\n this.authService.isLoggedInFull()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((result:boolean)=>{\n if(result){\n this.userService.getUserPersonLoggedIn()\n .subscribe((user)=>{\n if(user){\n this.show = true;\n\n this.profileImg = user.ubicacionLogo;\n this.profileName = user.nombre;\n }\n });\n }\n });\n }\n else{\n this.show = false;\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onClick(){\n let dialogData = new DialogData();\n dialogData.title = this.translation.translate(\"shared.logoutDialog.title\", { name: this.profileName });\n dialogData.confirmText = this.translation.translate(\"shared.logoutDialog.confirmText\"); \n dialogData.cancelText = this.translation.translate(\"shared.logoutDialog.cancelText\");\n dialogData.showHeaderIcon = false;\n dialogData.showCancelButton = true;\n dialogData.id = 'confirm-logout-dialog';\n dialogData.animationIn = 'confirm-logout-animation-in';\n dialogData.animationOut = 'confirm-logout-animation-out';\n\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\n data: dialogData,\n panelClass: ['confirm-logout-dialog', 'confirm-logout-animation-in']\n });\n\n dialogRef.afterClosed().subscribe(accepted => {\n\n if(accepted){\n this.closeFn();\n\n this.show = false;\n }\n });\n }\n}","
\n \n \n \n
\n \n
\n
\n
\n \n
\n\n\n\n","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, switchMap, takeUntil } from 'rxjs/operators';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { MessageBusService, ServiceErrorMessage } from 'src/app/core/services/message-bus.service';\nimport { WorkflowService } from 'src/app/core/services/workflow.service';\nimport { WorkflowLookup } from 'src/app/shared/decorators/workflow-lookup.decorator';\nimport { OnlineAppointmentRequest } from 'src/app/shared/models/process/online-appointment-request.model';\nimport { AppointmentCheckout } from 'src/app/shared/models/workflow/models/appointment-checkout.model';\nimport { OnlineAppointmentCliniwebState } from 'src/app/shared/models/workflow/states/online-appointment-cliniweb-state.model';\nimport { BaseWorkflowComponent } from '../base-workflow/base-workflow.component';\nimport { DOCUMENT, Location } from '@angular/common';\nimport { OnlineAppointmentStatus } from 'src/app/shared/enums/online-appointment-status.enum';\nimport { WorkflowStepService } from 'src/app/core/services/workflow-step.service';\nimport { StatesRequestVerifyDataModel } from '../../states-request-verify/states-request-verify.component';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { RouteDialogType } from '../../dialogs/route-dialog/route-dialog.component';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { CompanyModel } from 'src/app/shared/models/systems/company.model';\n\n@Component({\n selector: 'app-online-appointment-cliniweb',\n templateUrl: './online-appointment-cliniweb.component.html',\n styleUrls: [\n '../base-workflow/base-workflow.component.css',\n './online-appointment-cliniweb.component.css'\n ],\n encapsulation: ViewEncapsulation.None\n})\n@WorkflowLookup('OnlineAppointmentCliniwebComponent')\nexport class OnlineAppointmentCliniwebComponent extends BaseWorkflowComponent implements OnInit { \n state: OnlineAppointmentCliniwebState = new OnlineAppointmentCliniwebState();\n\n showState:boolean = false;\n onlineAppointmentStatus: OnlineAppointmentStatus;\n statesRequestVerifyDataModel: StatesRequestVerifyDataModel;\n activatingAccount: boolean;\n\n logoutFn: any;\n\n constructor(\n protected route: ActivatedRoute,\n private router: Router,\n protected location: Location,\n private appointmentService: AppointmentService,\n private userService: UserService,\n private translation: L10nTranslationService,\n private dialog: MatDialog,\n protected publicProfileService: PublicProfileService,\n private routeDialogService: RouteDialogService,\n private authService: AuthService,\n protected baseService: BaseService,\n protected messageBusService: MessageBusService,\n protected workflowService: WorkflowService,\n protected workflowStepService: WorkflowStepService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private appStorageService: AppStorageService,\n @Inject(DOCUMENT) protected document: Document\n ){\n super(\n location,\n route,\n baseService, \n messageBusService, \n publicProfileService, \n workflowService, \n workflowStepService, \n document);\n\n this.logoutFn = this.logout.bind(this);\n }\n \n ngOnInit() {\n if(this.data && this.data.idVerificacion){\n this.checkOnlineAppointmentStatus();\n } else{\n this.startWorkflow();\n }\n }\n\n logout() {\n this.authService.logout();\n\n this.stepIndex = 0;\n this.loadStep(); \n }\n\n checkOnlineAppointmentStatus(){\n this.appointmentService.getStatus(this.data.idVerificacion).subscribe({\n next: this.getStatusNext.bind(this), \n error: _ => this.messageBusService.serviceError(new ServiceErrorMessage(\"Error getting request status\"))\n });\n }\n\n private getStatusNext(status: OnlineAppointmentStatus): void {\n this.onlineAppointmentStatus = status;\n\n if (this.onlineAppointmentStatus == OnlineAppointmentStatus.POR_COMPLETAR) {\n this.showState = false;\n this.startWorkflow();\n }\n else if (this.onlineAppointmentStatus == OnlineAppointmentStatus.USUARIO_POR_REGISTRAR) {\n this.showState = false;\n\n this.activatingAccount = true;\n\n this.userConfirmation().subscribe(this.userConfirmationNext.bind(this));\n }\n else if(this.onlineAppointmentStatus == OnlineAppointmentStatus.COMPLETADA) {\n this.authService.isLoggedInFull().pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.isLoggedInFullNext.bind(this));\n }\n else{\n this.configStatusView();\n this.showState = true;\n }\n }\n\n private userConfirmationNext(result: boolean): void {\n if (result) {\n this.configStatusView();\n this.showState = true;\n } else{\n this.messageBusService.serviceError(new ServiceErrorMessage(\"Error confirming user\"));\n }\n setTimeout(() => this.activatingAccount = false, 500);\n }\n\n private isLoggedInFullNext(isLoggedIn: boolean): void {\n if (isLoggedIn) {\n this.stepIndex = this.model.items.length - 1;\n this.startWorkflow();\n } else{\n this.router.navigate(['welcome', 'login'], { queryParams: { returnUrl: this.router.routerState.snapshot.url } });\n } \n }\n\n configStatusView(): void {\n this.statesRequestVerifyDataModel = new StatesRequestVerifyDataModel();\n\n this.statesRequestVerifyDataModel.companyLogoUrl = 'assets/images/cliniweb/logo-cliniweb-phr.svg';\n this.statesRequestVerifyDataModel.mainImageUrl = 'assets/images/cliniweb/Campana.gif';\n this.statesRequestVerifyDataModel.showActionButton = true;\n this.statesRequestVerifyDataModel.showHomeButton = false;\n\n switch(this.onlineAppointmentStatus){\n case OnlineAppointmentStatus.USUARIO_POR_REGISTRAR:\n this.statesRequestVerifyDataModel.buttonActionFn = this.continueWithAppointment.bind(this);\n this.statesRequestVerifyDataModel.buttonTextRefI18n = 'shared.statesRequestVerify.continueWithAppointment';\n this.statesRequestVerifyDataModel.textRefI18n = 'shared.statesRequestVerify.accountActivatedInCliniweb';\n break;\n case OnlineAppointmentStatus.COMPLETADA:\n this.statesRequestVerifyDataModel.buttonActionFn = this.gotoAppointments.bind(this);\n this.statesRequestVerifyDataModel.buttonTextRefI18n = 'shared.statesRequestVerify.gotoAppointments';\n this.statesRequestVerifyDataModel.textRefI18n = 'shared.statesRequestVerify.scheduledAppointment';\n break;\n case OnlineAppointmentStatus.VENCIDA:\n this.statesRequestVerifyDataModel.buttonActionFn = this.gotoSignup.bind(this);\n this.statesRequestVerifyDataModel.buttonTextRefI18n = 'shared.statesRequestVerify.gotoSignup';\n this.statesRequestVerifyDataModel.textRefI18n = 'shared.statesRequestVerify.expiredAppointment';\n this.statesRequestVerifyDataModel.textDescriptionRefI18n = 'shared.statesRequestVerify.expiredAppointmentDescription';\n break;\n }\n }\n\n private userConfirmation():Observable{\n return this.userService.postConfirmation(this.data.idVerificacion)\n .pipe(\n map((response)=>{\n return response.success;\n }),\n catchError((err) => {\n return of(false);\n })\n );\n }\n\n continueWithAppointment(){\n this.showState = false;\n\n this.startWorkflow();\n }\n\n gotoAppointments(){\n this.router.navigate(['mis-citas']);\n }\n\n gotoSignup(){\n this.router.navigate(['signup']);\n }\n\n\n startWorkflow(){\n this.workflowService.setWorkflowTypeActive(STORAGE.ONLINE_APPOINTMENT_CLINIWEB_STATE);\n\n this.getState().subscribe((state:OnlineAppointmentCliniwebState)=>{\n\n if(!state){\n //TODO analizar agregar una vista que informe al usuario que no hay datos de la cita, con el link al home\n this.onlineAppointmentStatus = OnlineAppointmentStatus.VENCIDA;\n\n this.configStatusView();\n this.showState = true;\n }\n\n this.state = state;\n this.workflowService.setWorkflowDataState(this.state);\n\n this.init();\n });\n\n this.progressBarModel.closeFn = this.closeWorkflow.bind(this);\n }\n\n getState():Observable{\n \n if(this.data){\n return this.getStateByAppointmentCheckout(this.data); \n }\n else {\n let bootstrapState = this.appStorageService.getItemSession(STORAGE.ONLINE_APPOINTMENT_CLINIWEB_BOOTSTRAP_STATE) as AppointmentCheckout;\n\n if(bootstrapState){\n this.data = bootstrapState;\n\n this.appStorageService.removeSessionItem(STORAGE.ONLINE_APPOINTMENT_CLINIWEB_BOOTSTRAP_STATE);\n \n return this.getStateByAppointmentCheckout(this.data);\n }\n else {\n return of(this.workflowService.getWorkflowDataState() as OnlineAppointmentCliniwebState);\n }\n } \n }\n\n getStateByAppointmentCheckout(appointmentCheckout: AppointmentCheckout):Observable{\n let _state:OnlineAppointmentCliniwebState = new OnlineAppointmentCliniwebState();\n\n // If we do not get the state from localstorage first we will loose the request data from the state\n _state = this.workflowService.getWorkflowDataState(STORAGE.ONLINE_APPOINTMENT_CLINIWEB_STATE);\n\n if (!_state)\n _state = new OnlineAppointmentCliniwebState(); \n\n if(appointmentCheckout.idVerificacion){\n return this.appointmentService.getOnlineAppointmentRequest(appointmentCheckout.idVerificacion)\n .pipe(\n map((request:OnlineAppointmentRequest)=>{ \n _state.onlineAppointmentRequest = request;\n _state.setPublicProfile(request.profile);\n \n if (_state.request && _state.request.etapasSolicitud && _state.request.etapasSolicitud.length > 0) {\n _state.request.etapasSolicitud[0].idEstado = _state.onlineAppointmentRequest.idEstado;\n _state.request.etapasSolicitud[0].nombreEstado = _state.onlineAppointmentRequest.nombreEstado;\n }\n\n _state.idVerificacion = appointmentCheckout.idVerificacion;\n\n return _state;\n }),\n catchError((err) => {\n this.baseService.handleServiceError(err, \"Error getting online appointment request\");\n\n this.router.navigate(['/not-found']);\n\n return of(_state);\n })\n );\n }\n else{\n let _onlineAppointmentRequest = new OnlineAppointmentRequest();\n\n _onlineAppointmentRequest.fechaInicio = appointmentCheckout.fechaInicio;\n _onlineAppointmentRequest.fechaFin = appointmentCheckout.fechaFin;\n _onlineAppointmentRequest.idResponsableServicioDestino = appointmentCheckout.idResponsableServicio;\n _onlineAppointmentRequest.nombreResponsableServicioDestino = appointmentCheckout.nombreResponsableServicio;\n _onlineAppointmentRequest.urlAvatarResponsableServicioDestino = appointmentCheckout.urlAvatarResponsableServicio;\n _onlineAppointmentRequest.nicknameResponsableServicioDestino = appointmentCheckout.nickname;\n _onlineAppointmentRequest.especialidadResponsableServicioDestino = appointmentCheckout.especialidadResponsableServicio;\n\n _onlineAppointmentRequest.perfilPublico = appointmentCheckout.perfilPublico; \n\n _onlineAppointmentRequest.idLocalidad = appointmentCheckout.idLocalidad;\n _onlineAppointmentRequest.nombreLocalidad = appointmentCheckout.nombreLocalidad;\n _onlineAppointmentRequest.direccionLocalidad = appointmentCheckout.direccionLocalidad;\n _onlineAppointmentRequest.coordenadasLocalidad = appointmentCheckout.coordenadasLocalidad;\n _onlineAppointmentRequest.telefonoLocalidad = appointmentCheckout.telefonoLocalidad;\n _onlineAppointmentRequest.teleconsulta = appointmentCheckout.teleconsulta;\n _onlineAppointmentRequest.idEmpresaDestino = appointmentCheckout.idEmpresa;\n _onlineAppointmentRequest.checkoutUrl = window.location.origin + '/citas/checkout/'; \n _onlineAppointmentRequest.localizacion = this.locale.language;\n\n return this.baseService.getCompanyByLicense()\n .pipe(switchMap((company:CompanyModel)=>{\n _onlineAppointmentRequest.idEmpresaOrigen = company.id;\n _onlineAppointmentRequest.nombreEmpresaOrigen = company.name;\n\n _state.onlineAppointmentRequest = _onlineAppointmentRequest;\n _state.idVerificacion = '';\n\n return of(_state);\n }), \n catchError((err) => {\n this.baseService.handleServiceError(err, \"Error getting online appointment request\");\n return of(_state);\n }));\n }\n }\n \n closeWorkflow(){\n\n if(this.state && this.state.idVerificacion){\n let dialogData = new DialogData();\n dialogData.title = this.translation.translate(\"shared.appointmentCancelDialog.title\");\n dialogData.message = this.translation.translate(\"shared.appointmentCancelDialog.message\");\n dialogData.confirmText = this.translation.translate(\"shared.appointmentCancelDialog.confirmText\"); \n dialogData.cancelText = this.translation.translate(\"shared.appointmentCancelDialog.cancelText\");\n dialogData.showHeaderIcon = false;\n dialogData.showCancelButton = true;\n dialogData.loadLicense = true;\n \n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\n data: dialogData,\n panelClass: 'cancel-appointment-dialog'\n });\n \n dialogRef.afterClosed().subscribe(accepted => {\n \n if(accepted){\n this.onCloseWorkflow();\n }\n });\n }\n else{\n this.onCloseWorkflow();\n }\n }\n\n onCloseWorkflow(){\n this.messageBusService.showHeader();\n\n this.workflowService.removeWorkflowData(STORAGE.ONLINE_APPOINTMENT_CLINIWEB);\n this.appStorageService.removeSessionItem(STORAGE.ONLINE_APPOINTMENT_CLINIWEB_BOOTSTRAP_STATE);\n\n if(this.routeDialogService.isOpen(RouteDialogType.APPOINTMENT)){\n this.routeDialogService.closeDialog(RouteDialogType.APPOINTMENT);\n }\n else{\n const url = this.getPublicProfileUrl(this.state.onlineAppointmentRequest);\n \n this.router.navigate([url]);\n }\n }\n\n updateWorkflowStateData():Observable{ \n if(this.state.idVerificacion){\n return this.appointmentService.updateOnlineAppointmentRequest(\n this.state.idVerificacion,\n this.state.onlineAppointmentRequest)\n .pipe(map((id:number)=>{\n this.state.onlineAppointmentRequest.id = id;\n this.workflowService.setWorkflowDataState(this.state);\n }),\n catchError(err=>{\n this.baseService.handleServiceError(err, \"Error updating online appointment request\");\n return of();\n }));\n }\n else{\n return this.appointmentService.createOnlineAppointmentRequest(this.state.onlineAppointmentRequest)\n .pipe(map((idVerificacion:string)=>{\n this.state.idVerificacion = idVerificacion;\n this.workflowService.setWorkflowDataState(this.state);\n\n //this.location.go(`${this.baseService.getLanguage() + this.router.url}/${idVerificacion}`);\n this.router.navigate([`${this.baseService.getLanguage() + this.router.url}/${idVerificacion}`]);\n }),\n catchError(err=>{\n this.baseService.handleServiceError(err, \"Error creating online appointment request\");\n return of();\n }));\n }\n }\n\n completeWorkflowStateData():Observable{\n return this.appointmentService.confirmOnlineAppointmentRequest(\n this.state.idVerificacion,\n this.state.onlineAppointmentRequest)\n .pipe(map((request:any)=>{\n this.state.request = request;\n this.workflowService.setWorkflowDataState(this.state);\n \n this.userService.getUserPersonLoggedInFromService().subscribe(\n usr => {},\n error => {\n this.baseService.handleServiceError(error, \"Error getting user person logged in\");\n });\n }));\n }\n\n toCompleteStatus(){\n return this.onlineAppointmentStatus == OnlineAppointmentStatus.POR_COMPLETAR;\n }\n\n completedStatus(){\n return this.onlineAppointmentStatus == OnlineAppointmentStatus.COMPLETADA;\n }\n\n expiredStatus(){\n return this.onlineAppointmentStatus == OnlineAppointmentStatus.VENCIDA;\n }\n}","
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, HostListener, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\n\r\n@Component({\r\n selector: 'app-loading-dialog',\r\n templateUrl: './loading-dialog.component.html',\r\n styleUrls: ['./loading-dialog.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class LoadingDialogComponent implements OnInit {\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\r\n private mdDialogRef: MatDialogRef\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public cancel() {\r\n this.close(false);\r\n }\r\n\r\n public close(value:any) {\r\n this.mdDialogRef.close(value);\r\n }\r\n\r\n public confirm() {\r\n this.close(true);\r\n }\r\n \r\n @HostListener(\"keydown.esc\") \r\n public onEsc() {\r\n this.close(false);\r\n }\r\n}","
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map, switchMap, takeUntil } from 'rxjs/operators';\r\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { MessageBusService, ServiceErrorMessage } from 'src/app/core/services/message-bus.service';\r\nimport { WorkflowService } from 'src/app/core/services/workflow.service';\r\nimport { WorkflowLookup } from 'src/app/shared/decorators/workflow-lookup.decorator';\r\nimport { BaseWorkflowComponent } from '../base-workflow/base-workflow.component';\r\nimport { OnlinePaymentWorkflowState } from 'src/app/shared/models/workflow/states/online-payment-workflow-state.model';\r\nimport { OnlinePaymentRequest } from 'src/app/shared/models/process/online-payment-request.model';\r\nimport { OnlinePaymentModel } from 'src/app/shared/models/workflow/models/online-payment.model';\r\nimport { PaymentService } from 'src/app/core/services/payment-service';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { LoadingDialogComponent } from '../../dialogs/loading-dialog/loading-dialog.component';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { WorkflowStepService } from 'src/app/core/services/workflow-step.service';\r\nimport { NotificacionType } from 'src/app/shared/enums/notification-type.enum';\r\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\r\nimport { HttpResponseModel } from 'src/app/shared/models/http-response-model';\r\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { RouteDialogType } from '../../dialogs/route-dialog/route-dialog.component';\r\nimport { CompanyModel } from 'src/app/shared/models/systems/company.model';\r\nimport { DOCUMENT, Location } from '@angular/common';\r\nimport { StatesRequestVerifyDataModel } from '../../states-request-verify/states-request-verify.component';\r\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\r\nimport { OnlineAppointmentStatus } from 'src/app/shared/enums/online-appointment-status.enum';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-online-payment-workflow',\r\n templateUrl: './online-payment-workflow.component.html',\r\n styleUrls: [\r\n '../base-workflow/base-workflow.component.css',\r\n './online-payment-workflow.component.css'\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@WorkflowLookup('OnlinePaymentWorkflowComponent')\r\nexport class OnlinePaymentWorkflowComponent extends BaseWorkflowComponent implements OnInit { \r\n state: OnlinePaymentWorkflowState = new OnlinePaymentWorkflowState();\r\n\r\n // Model passed by payment module to workflow\r\n sourceModel: OnlinePaymentModel;\r\n\r\n savingDialogRef: MatDialogRef;\r\n\r\n showState:boolean = false;\r\n statesRequestVerifyDataModel: StatesRequestVerifyDataModel;\r\n activatingAccount: boolean;\r\n onlineAppointmentStatus: OnlineAppointmentStatus;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected location: Location,\r\n private router: Router,\r\n private paymentService: PaymentService,\r\n private translation: L10nTranslationService,\r\n private dialog: MatDialog,\r\n protected publicProfileService: PublicProfileService,\r\n private routeDialogService: RouteDialogService,\r\n private appStorageService: AppStorageService,\r\n protected baseService: BaseService,\r\n protected messageBusService: MessageBusService,\r\n protected workflowService: WorkflowService,\r\n protected workflowStepService: WorkflowStepService, \r\n private appointmentService: AppointmentService,\r\n private userService: UserService,\r\n private authService: AuthService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n @Inject(DOCUMENT) protected document: Document\r\n ){\r\n super(location, route, baseService, messageBusService, publicProfileService, workflowService, workflowStepService, document);\r\n }\r\n \r\n ngOnInit() {\r\n if (this.data)\r\n this.sourceModel = this.data as OnlinePaymentModel;\r\n\r\n if(this.data && this.data.idVerificacion){\r\n this.checkOnlineAppointmentStatus();\r\n }\r\n else{\r\n this.startWorkflow();\r\n }\r\n }\r\n\r\n checkOnlineAppointmentStatus(){\r\n this.appointmentService.getStatus(this.data.idVerificacion).subscribe({\r\n next: this.getStatusNext.bind(this),\r\n error: _ => this.messageBusService.serviceError(new ServiceErrorMessage(\"Error getting request status\"))\r\n });\r\n }\r\n\r\n private getStatusNext(status: OnlineAppointmentStatus): void {\r\n this.onlineAppointmentStatus = status;\r\n\r\n if(this.onlineAppointmentStatus == OnlineAppointmentStatus.POR_COMPLETAR){\r\n this.showState = false;\r\n this.startWorkflow();\r\n }\r\n else if(this.onlineAppointmentStatus == OnlineAppointmentStatus.USUARIO_POR_REGISTRAR){\r\n this.showState = false;\r\n\r\n this.activatingAccount = true;\r\n\r\n this.userConfirmation().subscribe(this.userConfirmationNext.bind(this));\r\n }\r\n else if(this.onlineAppointmentStatus == OnlineAppointmentStatus.COMPLETADA) {\r\n this.authService.isLoggedInFull().pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.isLoggedInFull.bind(this));\r\n }\r\n else{\r\n this.configStatusView();\r\n this.showState = true;\r\n }\r\n }\r\n\r\n private userConfirmationNext(result : boolean): void {\r\n setTimeout(() => this.activatingAccount = false, 500);\r\n\r\n if (result) {\r\n this.configStatusView();\r\n this.showState = true;\r\n }\r\n else {\r\n this.messageBusService.serviceError(new ServiceErrorMessage(\"Error confirming user\"));\r\n }\r\n }\r\n\r\n private isLoggedInFull(isLoggedIn: boolean): void {\r\n if( isLoggedIn) {\r\n this.stepIndex = this.model.items.length - 1;\r\n this.startWorkflow();\r\n }\r\n else {\r\n this.router.navigate(['welcome', 'login'], { queryParams: { returnUrl: this.router.routerState.snapshot.url } });\r\n } \r\n }\r\n\r\n private userConfirmation():Observable{\r\n return this.userService.postConfirmation(this.data.idVerificacion)\r\n .pipe(\r\n map((response)=>{\r\n return response.success;\r\n }),\r\n catchError((err) => {\r\n return of(false);\r\n })\r\n );\r\n }\r\n\r\n configStatusView(){\r\n this.statesRequestVerifyDataModel = new StatesRequestVerifyDataModel();\r\n\r\n this.statesRequestVerifyDataModel.companyLogoUrl = 'assets/images/cliniweb/logo-cliniweb-phr.svg';\r\n this.statesRequestVerifyDataModel.mainImageUrl = 'assets/images/cliniweb/Campana.gif';\r\n this.statesRequestVerifyDataModel.showActionButton = true;\r\n this.statesRequestVerifyDataModel.showHomeButton = false;\r\n\r\n switch(this.onlineAppointmentStatus){\r\n case OnlineAppointmentStatus.USUARIO_POR_REGISTRAR:\r\n this.statesRequestVerifyDataModel.buttonActionFn = this.continueWithPayment.bind(this);\r\n this.statesRequestVerifyDataModel.buttonTextRefI18n = 'shared.statesRequestVerify.continueWithPayment';\r\n this.statesRequestVerifyDataModel.textRefI18n = 'shared.statesRequestVerify.accountActivatedInCliniweb';\r\n break;\r\n case OnlineAppointmentStatus.COMPLETADA:\r\n this.statesRequestVerifyDataModel.buttonActionFn = this.gotoHome.bind(this);\r\n this.statesRequestVerifyDataModel.buttonTextRefI18n = 'shared.statesRequestVerify.buttonHomeText';\r\n this.statesRequestVerifyDataModel.textRefI18n = 'shared.statesRequestVerify.scheduledAppointment';\r\n break;\r\n case OnlineAppointmentStatus.VENCIDA:\r\n this.statesRequestVerifyDataModel.buttonActionFn = this.gotoSignup.bind(this);\r\n this.statesRequestVerifyDataModel.buttonTextRefI18n = 'shared.statesRequestVerify.gotoSignup';\r\n this.statesRequestVerifyDataModel.textRefI18n = 'shared.statesRequestVerify.expiredAppointment';\r\n this.statesRequestVerifyDataModel.textDescriptionRefI18n = 'shared.statesRequestVerify.expiredAppointmentDescription';\r\n break;\r\n }\r\n }\r\n\r\n \r\n continueWithPayment(){\r\n this.showState = false;\r\n\r\n this.startWorkflow();\r\n }\r\n\r\n gotoHome(){\r\n this.router.navigate(['/']);\r\n }\r\n\r\n gotoSignup(){\r\n this.router.navigate(['signup']);\r\n }\r\n\r\n startWorkflow(){\r\n // Set this workflow as active\r\n this.workflowService.setWorkflowTypeActive(STORAGE.ONLINE_PAYMENT_WORKFLOW_STATE);\r\n\r\n // Get state\r\n this.getState().subscribe((state:OnlinePaymentWorkflowState)=>{\r\n this.state = state;\r\n\r\n this.workflowService.setWorkflowDataState(this.state);\r\n this.init();\r\n });\r\n\r\n this.progressBarModel.closeFn = this.closeWorkflow.bind(this);\r\n }\r\n\r\n // Override base function\r\n calculateProgressBarProgress(workflowStepsCount: number, currentStepIndex: number) {\r\n // If the user is on the last step\r\n /*if (currentStepIndex == (workflowStepsCount - 1))\r\n return 96;*/\r\n \r\n if (currentStepIndex == (workflowStepsCount - 2))\r\n return 55;\r\n \r\n return (100 / workflowStepsCount) * (currentStepIndex + 1);\r\n }\r\n\r\n getState() : Observable {\r\n var state = this.workflowService.getWorkflowDataState() as OnlinePaymentWorkflowState; \r\n let bootstrapState = this.appStorageService.getItemSession(STORAGE.ONLINE_PAYMENT_WORKFLOW_BOOTSTRAP_STATE) as OnlinePaymentModel;\r\n\r\n // First alway get it from idSolicitudPorVerificar\r\n if (this.sourceModel && this.sourceModel.idVerificacion) {\r\n console.log(\"Get state from request\");\r\n return this.getStateFromRequest(this.sourceModel.idVerificacion);\r\n }\r\n // Build it from source model\r\n else if (this.sourceModel) {\r\n console.log(\"Build state from request\");\r\n return this.buildStateFromModel(this.sourceModel);\r\n }\r\n // Get it from browser storage\r\n else if (state) {\r\n console.log(\"Get state from local storage\");\r\n return of(state);\r\n } \r\n else if (bootstrapState) {\r\n console.log(\"Build state from session storage bootstrap\");\r\n this.sourceModel = bootstrapState;\r\n\r\n this.appStorageService.removeSessionItem(STORAGE.ONLINE_PAYMENT_WORKFLOW_BOOTSTRAP_STATE);\r\n\r\n return this.buildStateFromModel(this.sourceModel);\r\n }\r\n else {\r\n // This can happend if the user left the tab open with the workflow\r\n // When session expire the session variable with the workflow state will disappear\r\n // Go back to home\r\n this.router.navigate(['/']);\r\n throw \"State expired\";\r\n } \r\n }\r\n\r\n getStateFromRequest(requestId: string) : Observable {\r\n let state : OnlinePaymentWorkflowState;\r\n \r\n // If we do not get the state from localstorage first we will loose the request data from the state\r\n state = this.workflowService.getWorkflowDataState(STORAGE.ONLINE_PAYMENT_WORKFLOW_STATE);\r\n\r\n if (!state)\r\n state = new OnlinePaymentWorkflowState();\r\n\r\n return this.paymentService.getOnlinePaymentRequest(requestId)\r\n .pipe(\r\n map((request:OnlinePaymentRequest) => {\r\n state.requestModel = request;\r\n state.idVerificacion = requestId;\r\n \r\n state.setPublicProfile(request.profile);\r\n\r\n return state;\r\n }),\r\n catchError((err) => {\r\n this.baseService.handleServiceError(err, \"Error getting online payment request\");\r\n\r\n this.router.navigate(['/not-found']);\r\n\r\n return of(state);\r\n })\r\n );\r\n }\r\n\r\n buildStateFromModel(sourceModel: OnlinePaymentModel) : Observable {\r\n let state = new OnlinePaymentWorkflowState();\r\n let onlinePaymentRequest = new OnlinePaymentRequest();\r\n\r\n onlinePaymentRequest.idResponsableServicioDestino = sourceModel.idResponsableServicio;\r\n onlinePaymentRequest.nombreResponsableServicioDestino = sourceModel.nombreResponsableServicio;\r\n onlinePaymentRequest.urlAvatarResponsableServicioDestino = sourceModel.urlAvatarResponsableServicio;\r\n onlinePaymentRequest.nicknameResponsableServicioDestino = sourceModel.nickname;\r\n onlinePaymentRequest.especialidadResponsableServicioDestino = sourceModel.especialidadResponsableServicio; \r\n onlinePaymentRequest.idEmpresaDestino = sourceModel.idEmpresa;\r\n onlinePaymentRequest.checkoutUrl = window.location.origin + '/pagos/checkout/'; \r\n onlinePaymentRequest.localizacion = this.locale.language;\r\n onlinePaymentRequest.emailResponsableServicio = sourceModel.emailResponsableServicio; \r\n onlinePaymentRequest.idEmpresaResponsableServicio = sourceModel.idEmpresaResponsableServicio;\r\n\r\n onlinePaymentRequest.perfilPublico = sourceModel.perfilPublico;\r\n\r\n return this.baseService.getCompanyByLicense()\r\n .pipe(switchMap((company:CompanyModel)=>{\r\n onlinePaymentRequest.idEmpresaOrigen = company.id;\r\n onlinePaymentRequest.nombreEmpresaOrigen = company.name;\r\n\r\n state.requestModel = onlinePaymentRequest;\r\n state.idVerificacion = '';\r\n\r\n return of(state);\r\n }), \r\n catchError((err) => {\r\n this.baseService.handleServiceError(err, \"Error getting online appointment request\");\r\n return of(state);\r\n }));\r\n } \r\n \r\n closeWorkflow() {\r\n\r\n // Only show the message if the user is logged in\r\n if (this.state && this.state.getUserId() > 0) {\r\n\r\n let dialogData = new DialogData();\r\n dialogData.title = this.translation.translate(\"shared.paymentCancelDialog.title\");\r\n dialogData.message = this.translation.translate(\"shared.paymentCancelDialog.message\");\r\n dialogData.confirmText = this.translation.translate(\"shared.paymentCancelDialog.confirmText\"); \r\n dialogData.cancelText = this.translation.translate(\"shared.paymentCancelDialog.cancelText\");\r\n dialogData.showHeaderIcon = false;\r\n dialogData.showCancelButton = true;\r\n dialogData.loadLicense = true;\r\n\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n data: dialogData,\r\n panelClass: 'cancel-appointment-dialog'\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(accepted => {\r\n\r\n if(accepted){\r\n this._closeWorkflow();\r\n }\r\n });\r\n }\r\n else {\r\n this._closeWorkflow();\r\n } \r\n }\r\n\r\n private _closeWorkflow() {\r\n this.messageBusService.showHeader();\r\n\r\n this.workflowCleanup();\r\n\r\n if(this.routeDialogService.isOpen(RouteDialogType.PAYMENT)){\r\n this.routeDialogService.closeDialog(RouteDialogType.PAYMENT);\r\n }\r\n else{\r\n let url = this.getPublicProfileUrl(this.state.requestModel); \r\n \r\n this.router.navigate([url]);\r\n }\r\n }\r\n\r\n updateWorkflowStateData():Observable{ \r\n \r\n // If we have a created request lets update it\r\n if(this.state.idVerificacion) {\r\n return this.paymentService.updateOnlinePaymentRequest(\r\n this.state.idVerificacion,\r\n this.state.requestModel)\r\n .pipe(map((id:number)=>{\r\n this.state.requestModel.id = id;\r\n this.workflowService.setWorkflowDataState(this.state);\r\n }),\r\n catchError(err=>{\r\n this.baseService.handleServiceError(err, \"Error updating online payment request\");\r\n return of();\r\n }));\r\n }\r\n else{\r\n return of(void 0);\r\n\r\n /*return this.paymentService.createOnlinePaymentRequest(this.state.requestModel)\r\n .pipe(map((idVerificacion:string)=>{\r\n this.state.idVerificacion = idVerificacion;\r\n this.workflowService.setWorkflowDataState(this.state);\r\n\r\n this.location.go(`${this.baseService.getLanguage() + this.router.url}/${idVerificacion}`);\r\n }));*/\r\n }\r\n }\r\n\r\n completeWorkflowStateData():Observable{\r\n this.sendLoadingMessage(); \r\n\r\n // Check if we have a SolicitudPorVerificar created\r\n // In case the user was logged in for example the request will not be created at this point\r\n if (this.state.idVerificacion) {\r\n return this.confirmRequest();\r\n }\r\n else {\r\n // Create initial request\r\n return this.createInitilRequest()\r\n .pipe(switchMap(() => {\r\n\r\n // Confirm request\r\n return this.confirmRequest(); \r\n })\r\n ); \r\n }\r\n }\r\n\r\n createInitilRequest() : Observable { \r\n this.state.requestModel.tipoNotificacion = NotificacionType.ACTIVAR_CUENTA_PARA_PAGO_EN_LINEA;\r\n\r\n return this.paymentService.createOnlinePaymentRequest(this.state.requestModel)\r\n .pipe(map((idVerificacion: string) => {\r\n this.state.idVerificacion = idVerificacion;\r\n this.state.requestModel.codigoVerificacion = idVerificacion;\r\n this.workflowService.setWorkflowDataState(this.state, STORAGE.ONLINE_PAYMENT_WORKFLOW_STATE); \r\n }),\r\n catchError((err) => {\r\n console.log('There was an error creating the request');\r\n this.baseService.handleServiceError(err, \"Error creating online payment request\");\r\n return of(void 0);\r\n }) \r\n );\r\n }\r\n\r\n confirmRequest() : Observable{\r\n return this.paymentService.confirmOnlinePaymentRequest(\r\n this.state.idVerificacion, this.state.requestModel)\r\n .pipe(\r\n map((request:OnlinePaymentRequest)=>{\r\n this.state.requestModel = request;\r\n this.workflowService.setWorkflowDataState(this.state);\r\n\r\n this.sendCompletedMessage(); \r\n }),\r\n catchError((err) => {\r\n console.log('There was an error processing the request');\r\n console.log(err);\r\n\r\n this.sendErrorMessage();\r\n\r\n return of(void 0);\r\n }) \r\n );\r\n }\r\n\r\n workflowCleanup() {\r\n this.workflowService.removeWorkflowData(STORAGE.ONLINE_PAYMENT_WORKFLOW_STATE);\r\n this.appStorageService.removeSessionItem(STORAGE.ONLINE_PAYMENT_WORKFLOW_BOOTSTRAP_STATE);\r\n }\r\n\r\n clearCreditCardData() {\r\n this.state.setCreditCardNumber(\"\");\r\n this.state.setCreditCardCvc(\"\");\r\n \r\n this.workflowService.setWorkflowDataState(this.state, STORAGE.ONLINE_PAYMENT_WORKFLOW_STATE);\r\n }\r\n\r\n sendLoadingMessage() { \r\n let data = new DialogData();\r\n \r\n data.title = \"\";\r\n data.description = \"Realizando pago\";\r\n data.showHeaderIcon = false;\r\n data.loading = true;\r\n data.showCancelButton = false;\r\n data.showConfirmButton = false;\r\n data.confirmText = \"\";\r\n data.headerIconClass = \"phr-iconset-state-ok\";\r\n\r\n let dialogRef = this.dialog.open(LoadingDialogComponent, { \r\n panelClass: 'loading-dialog',\r\n data: data,\r\n disableClose: true\r\n });\r\n \r\n this.savingDialogRef = dialogRef;\r\n }\r\n\r\n sendCompletedMessage() { \r\n this.savingDialogRef.close();\r\n \r\n let data = new DialogData();\r\n \r\n data.title = \"Pago aprobado\";\r\n data.description = \"Enviamos el detalle del cargo a tu correo\";\r\n data.showHeaderIcon = true;\r\n data.loading = false;\r\n data.showCancelButton = false;\r\n data.showConfirmButton = true;\r\n data.confirmText = \"Listo\";\r\n data.headerIconClass = \"phr-iconset-ok-circle\"; \r\n\r\n let dialogRef = this.dialog.open(LoadingDialogComponent, { \r\n panelClass: 'loading-dialog',\r\n data: data,\r\n disableClose: true\r\n });\r\n \r\n dialogRef.afterClosed().subscribe(accepted => { \r\n let publicProfileIdentifier = this.state.requestModel.nicknameResponsableServicioDestino;\r\n \r\n // Clean up\r\n this.workflowCleanup(); \r\n\r\n if (this.routeDialogService.isOpen(RouteDialogType.PAYMENT))\r\n this.routeDialogService.closeDialog(RouteDialogType.PAYMENT);\r\n else \r\n this.router.navigate(['perfil/' + publicProfileIdentifier]);\r\n });\r\n }\r\n\r\n sendErrorMessage() {\r\n this.clearCreditCardData();\r\n\r\n this.savingDialogRef.close();\r\n \r\n let data = new DialogData();\r\n \r\n data.title = \"Upssss\";\r\n data.description = \"Hubo un problema al procesar el pago\";\r\n data.showHeaderIcon = true;\r\n data.loading = false;\r\n data.showCancelButton = false;\r\n data.showConfirmButton = true;\r\n data.confirmText = \"Listo\";\r\n data.headerIconClass = \"phr-iconset-error\"; \r\n\r\n let dialogRef = this.dialog.open(LoadingDialogComponent, { \r\n panelClass: 'loading-dialog',\r\n data: data,\r\n disableClose: true\r\n });\r\n \r\n dialogRef.afterClosed().subscribe(accepted => { \r\n let publicProfileIdentifier = this.state.requestModel.nicknameResponsableServicioDestino;\r\n\r\n\r\n });\r\n }\r\n}","import { Component, HostBinding, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-cola-goblo-dialogo',\n templateUrl: './cola-goblo-dialogo.component.html',\n styleUrls: ['./cola-goblo-dialogo.component.css']\n})\nexport class ColaGobloDialogoComponent implements OnInit {\n\n @HostBinding('style.width') width = '100%';\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\r\n \"cola-globo-dialogo\"\r\n
\r\n
","\n
\n
\n \n
\n \n
\n \n
\n
\n \n
\n
{{avatarModel.fullName}}
\n
\n
\n \n
\n \n {{ 'shared.authentication.separator' | translate:locale.language }}\n \n
\n \n
\n \n\n
\n {{ 'shared.authentication.loginText' | translate:locale.language }} \n {{ 'shared.authentication.loginLinkText' | translate:locale.language }}\n
\n
\n {{ 'shared.authentication.termsText' | translate:locale.language }} \n \n {{ 'shared.authentication.termsLink' | translate:locale.language }}\n {{ 'shared.authentication.and' | translate:locale.language }} \n {{ 'shared.authentication.privacyLink' | translate:locale.language }}\n \n
\n
\n
\n\n","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, LoginCompletedMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { FormComponentData } from '../../models/people/form-control.model';\nimport { RequestingUser } from '../../models/process/base-request.model';\nimport { UserPerson } from '../../models/people/user-person.model';\nimport { ComponentName } from '../../enums/component-name.enum';\nimport { AuthenticationComponentData, AuthenticationDataModel } from '../../models/workflow/models/authentication-data.model';\nimport { PublicProfileAvatarComponentModel } from '../public-profile-avatar/public-profile-avatar.component';\nimport { OAuthFlowType, OAuthSourceType, TokenState } from '../../models/token.model';\nimport { WorkflowService } from 'src/app/core/services/workflow.service';\nimport { AuthOidcService } from 'src/app/core/services/auth-oidc.service';\nimport { LegalAgreementType } from '../../enums/legal-agreements-type.enum';\n\n@Component({\n selector: 'app-authentication',\n templateUrl: './authentication.component.html',\n styleUrls: ['./authentication.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('AuthenticationComponent')\nexport class AuthenticationComponent implements IControlComponent, OnInit, OnDestroy {\n data: FormComponentData;\n componentData: AuthenticationComponentData;\n \n model: AuthenticationDataModel = new AuthenticationDataModel();\n\n private ngUnsubscribe = new Subject();\n loading:boolean = false;\n loadingGoogle: boolean = false;\n requestingUser:RequestingUser;\n isCliniweb: boolean;\n avatarModel: PublicProfileAvatarComponentModel;\n\n titleTextRefence: string;\n\n unlicensed:boolean;\n\n alreadyLoggedIn: boolean;\n\n constructor(\n private router: Router,\n private baseService: BaseService,\n private authService: AuthService,\n private userService: UserService,\n private appStorageService: AppStorageService,\n private messageBusService: MessageBusService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private workflowService: WorkflowService,\n private authOidcService: AuthOidcService\n ) {\n }\n\n ngOnInit(): void {\n this.parseControlData();\n\n this.init();\n\n this.sendComponentFinishLoadingMessage();\n\n this.isCliniweb = this.baseService.isCliniwebCompany();\n\n if(this.isCliniweb){\n this.unlicensed = false;\n this.titleTextRefence = this.getTitleTextReference();\n }\n else{\n this.baseService.isLicensedCompany()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result=>{\n this.unlicensed = !result;\n\n this.titleTextRefence = this.getTitleTextReference();\n });\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n redirectToSignup(): void {\n\n this.appStorageService.setItemSession(STORAGE.SIGNUP_WORKFLOW_VERIFICATION_TYPE, this.componentData.signupWorkflowVerificationType);\n this.router.navigate(\n ['signup/checkin'],\n { \n queryParams: {\n returnUrl: this.router.routerState.snapshot.url.split('?')[0],\n closeUrl: this.router.routerState.snapshot.url.split('?')[0] + '?close=true'\n }\n });\n }\n\n redirectToLogin(): void {\n this.router.navigate(['login'], { queryParams: { returnUrl: this.router.routerState.snapshot.url.split('?')[0] } });\n }\n\n loginByGoogle(){\n this.loadingGoogle = true;\n\n let oidcModel: TokenState;\n let workflowType = this.workflowService.getWorkflowTypeActive();\n\n if (workflowType) {\n oidcModel = this.workflowService.getTokenStateFromWorkflow();\n }\n else {\n oidcModel = new TokenState();\n }\n\n oidcModel.returnUrl = this.router.url;\n oidcModel.flowType = OAuthFlowType.Login;\n oidcModel.sourceType = OAuthSourceType.Google;\n\n let stringState = JSON.stringify(oidcModel);\n\n this.authOidcService.startAuthentication(stringState);\n }\n\n openTermsDialog(){\n this.baseService.openLegalAgreementsDialog(LegalAgreementType.TERMINOS_CONDICIONES);\n }\n\n openPrivacyDialog(){\n this.baseService.openLegalAgreementsDialog(LegalAgreementType.POLITICA_PRIVACIDAD);\n }\n\n onAppointmentKnowMoreClick() {\n if(this.unlicensed){\n this.baseService.openLearnMoreDialog();\n }\n }\n\n private init() {\n this.authService.isLoggedInFull().pipe(takeUntil(this.ngUnsubscribe)).subscribe({\n next: this.isLoggedInFull.bind(this),\n error: error => this.baseService.handleServiceError(error, \"Error getting user logged in\")\n });\n }\n\n private isLoggedInFull(isLoggedIn: boolean): void {\n if(isLoggedIn){\n this.alreadyLoggedIn = true;\n // If we do not use a timeout the sendComponentFinishLoadingMessage will be send at the same time the worflow is loading\n // this will make the workflow advance two steps (beacuse it gets the step completed when it is already moving to next step).\n setTimeout(() => {\n this.getUserPersonLoggedIn();\n }, 1000); \n }\n else if (this.model.idVerificacion){\n const workflowTypeActive: string = this.workflowService.getWorkflowTypeActive();\n const condicion = workflowTypeActive == STORAGE.MEDICAL_ORDER_WORKFLOW_STATE || workflowTypeActive == STORAGE.GROWTH_CURVES_WORKFLOW_STATE;\n if (this.model.idUsuario <= 0 && !condicion) {\n this.completeAuthentication();\n }\n }\n }\n\n private completeAuthentication() {\n this.loading = true;\n\n this.userService.postConfirmation(this.model.idVerificacion)\n .subscribe({next:(response) => {\n if(response.success) {\n this.getUserPersonLoggedIn();\n }\n else{\n setTimeout(() => this.loading = false, 500);\n this.baseService.handleServiceError(response.message, \"user confirmation error\");\n }\n },\n error: error => {\n this.loading = false;\n this.baseService.handleServiceError(error, \"user confirmation error\");\n }\n });\n } \n\n private parseControlData(){\n this.loading = true;\n\n if (this.data && this.data.configurationData) {\n this.model = this.data.configurationData as AuthenticationDataModel;\n this.componentData = this.model.configData; \n\n this.avatarModel = new PublicProfileAvatarComponentModel();\n this.avatarModel.personId = this.model.profile.id;\n this.avatarModel.avatarUrl = this.model.profile.ubicacionFoto;\n this.avatarModel.fullName = this.model.profile.nombrePersona;\n this.avatarModel.sex = this.model.profile.sexo;\n this.avatarModel.profileType = this.model.profile.tipoPerfil;\n }\n\n this.loading = false;\n }\n\n private getTitleTextReference(){\n let textReference:string = '';\n\n if(!this.componentData?.workflowType)\n return textReference;\n\n textReference = this.selectTitleTextByWorkFlowTyope();\n\n if(this.unlicensed)\n textReference += '_unlicensed';\n\n return textReference;\n }\n\n private selectTitleTextByWorkFlowTyope(): string {\n let textReference = 'shared.authentication.appointmentText';\n \n switch(this.componentData.workflowType){\n case 1:\n textReference = 'shared.authentication.appointmentText';\n break;\n case 2:\n textReference = 'shared.authentication.paymentText';\n break;\n case 3:\n textReference = 'shared.authentication.medicalOrderText';\n break;\n case 4:\n textReference = 'shared.authentication.growthChartText';\n }\n\n return textReference;\n }\n\n private sendComponentFinishLoadingMessage(){\n let event = new ComponentFinishLoadingMessage();\n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n }\n\n private onGetUserPersonLoggedIn(user:UserPerson){\n this.messageBusService.loginCompleted(new LoginCompletedMessage(user));\n\n let message = new ComponentDataSetMessage();\n message.componentName = ComponentName.AUTHENTICATION;\n message.data = user;\n\n this.messageBusService.onComponentDataSetMessage(message); \n }\n\n private getUserPersonLoggedIn(){\n this.loading = true;\n this.userService.getUserPersonLoggedIn()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(user => {\n this.loading = false;\n\n if (user)\n this.onGetUserPersonLoggedIn(user);\n },\n error=>{\n this.baseService.handleServiceError(error, \"Error creating online payment request\");\n });\n }\n}\n\n","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { AppointmentInfoDataModel } from 'src/app/shared/models/workflow/models/appointment-info-data.model';\n\n@Component({\n selector: 'app-appointment-info-dialog',\n templateUrl: './appointment-info-dialog.component.html',\n styleUrls: ['./appointment-info-dialog.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AppointmentInfoDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: AppointmentInfoDataModel,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnInit(): void {\n }\n\n onClose(){\n this.dialogRef.close();\n }\n}\n","
\n
\n

{{ 'shared.appointmentInfoDialog.title' | translate:locale.language }}

\n \n
\n
\n \n
\n
","\n
\n \n \n
\n \n {{model.user.firstname}}, \n {{ 'shared.selectPatientAppointmentCheckout.title' | translate:locale.language }}\n {{ 'shared.selectPatientAppointmentCheckout.title2' | translate:locale.language }}\n \n\n
\n\n \n
\n \n \n {{'shared.selectPatientAppointmentCheckout.radioOption1' | translate:locale.language}}\n \n \n \n {{'shared.selectPatientAppointmentCheckout.radioOption2' | translate:locale.language}}\n \n \n
\n {{'shared.selectPatientAppointmentCheckout.selectRadioValidation' | translate:locale.language}}\n
\n
\n\n \n
\n \n \n \n {{ model.user.firstname }}\n {{'shared.selectPatientAppointmentCheckout.userRelationship' | translate:locale.language}}\n \n \n \n {{dependent.nombre}}\n {{getRelationshipText(dependent)}}\n \n \n \n {{'shared.selectPatientAppointmentCheckout.otherText' | translate:locale.language}}\n {{'shared.selectPatientAppointmentCheckout.otherDescription' | translate:locale.language}}\n \n \n
\n\n \n
\n
\n {{ model.appointmentInfo.appointmentDate | date:'d MMM, h:mm a': 'UTC': language }}\n \n {{ model.appointmentInfo.attentionPlaceName }}\n \n
\n \n
\n\n \n
\n
\n
","import { Component, HostListener, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { FormComponentData } from '../../models/people/form-control.model';\nimport { PersonDataModel, SelectPatientDataModel } from '../../models/workflow/models/select-patient-data.model';\nimport { ComponentName } from '../../enums/component-name.enum';\nimport { Dependent } from '../../models/people/dependent.model';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { UtilsService } from 'src/app/core/services/utils.service';\nimport { SenderPatientRelationship } from '../../models/process/base-request.model';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AppointmentInfoDialogComponent } from '../dialogs/appointment-info-dialog/appointment-info-dialog.component';\nimport { BaseService } from 'src/app/core/services/base.service';\n\n@Component({\n selector: 'app-select-patient-appointment-checkout',\n templateUrl: './select-patient-appointment-checkout.component.html',\n styleUrls: ['./select-patient-appointment-checkout.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('SelectPatientAppointmentCheckoutComponent')\nexport class SelectPatientAppointmentCheckoutComponent implements IControlComponent, OnInit, OnDestroy {\n data: FormComponentData;\n language: string;\n\n model: SelectPatientDataModel = new SelectPatientDataModel();\n showAppointmentInfo: boolean;\n patientRelationshipTypeForm:FormGroup;\n showForm:boolean = false;\n showInitialView:boolean = false;\n loading: boolean = false; \n dependents: Dependent[] = [];\n private ngUnsubscribe = new Subject();\n formSubmitted: boolean = false;\n\n constructor(\n private baseService: BaseService,\n private dialog: MatDialog,\n private formBuilder: FormBuilder,\n private messageBusService: MessageBusService,\n private userService: UserService,\n private utilsService: UtilsService,\n private translation: L10nTranslationService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) {\n this.language = locale.dateLanguage ?? 'es-AR';\n }\n \n ngOnInit(): void {\n this.loadDataModel();\n\n this.userService.getUserDependents()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((dependents:Dependent[]) =>{\n this.dependents = dependents;\n\n // Order by age desc\n this.dependents = this.dependents.sort((d1: Dependent, d2: Dependent) => {\n let getTime = (date: Date) => {return date != null ? new Date(date).getTime() : 0;};\n \n return getTime(d1.fechaNacimiento) - getTime(d2.fechaNacimiento);\n });\n\n // let exampleDependent = new Dependent();\n // exampleDependent.id = 5871197;\n // exampleDependent.nombre = 'test';\n // exampleDependent.apellido = 'local';\n // exampleDependent.sexo = 'M';\n // exampleDependent.fechaNacimiento = new Date();\n // exampleDependent.tipoRelacion = 295;\n\n // this.dependents = [exampleDependent];\n\n this.showInitialView = this.dependents.length == 0;\n\n this.loadForm();\n\n this.sendComponentFinishLoadingMessage(); \n },\n error=>{\n this.baseService.handleServiceError(error, \"Error getting user dependents\");\n }\n );\n\n this.showAppointmentInfo = window.innerWidth > 799;\n }\n\n ngOnDestroy():void{\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n loadForm(){\n let _relationshipStringValue;\n\n if(this.showInitialView){\n _relationshipStringValue = this.model.relationship > 0 \n ? this.model.relationship.toString() \n : '';\n }\n else{\n _relationshipStringValue = this.model.patientSelected\n ? this.model.patientSelected.id > 0\n ? this.model.patientSelected.id.toString()\n : '2'\n : this.model.user.id.toString();\n\n this.model.relationship = +_relationshipStringValue;\n }\n\n this.patientRelationshipTypeForm = this.formBuilder.group(\n {\n relationship: [_relationshipStringValue, [Validators.required]]\n }\n );\n\n this.showForm = true;\n }\n\n sendComponentFinishLoadingMessage(){\n let event = new ComponentFinishLoadingMessage();\n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n }\n\n getControl(controlName: string) {\n return this.patientRelationshipTypeForm.controls[controlName];\n }\n\n isControlInvalid(controlName: string) {\n let control = this.getControl(controlName);\n\n // First check if the form is submitted or control is dirty\n if (!this.formSubmitted && !control.touched)\n return false;\n\n return control.invalid;\n }\n\n onClickContinue(){\n this.formSubmitted = true;\n \n if (this.patientRelationshipTypeForm.invalid) {\n return;\n }\n\n this.loading = true;\n\n let _valueSelected = +(this.patientRelationshipTypeForm.controls.relationship.value);\n\n if(this.showInitialView){\n this.model.patientSelected = new PersonDataModel();\n this.model.relationship = _valueSelected;\n\n this.userService.getUserPersonLoggedInFromService()\n .subscribe(u => {\n // updates necessary fields.\n if (u?.nombre)\n this.model.user.firstname = u.nombre;\n\n if (u?.apellido)\n this.model.user.lastname = u.apellido;\n\n if (u?.fechaNacimiento)\n this.model.user.birthDate = u.fechaNacimiento;\n\n if (u?.sexo)\n this.model.user.gender = u.sexo;\n\n this.continueFlow();\n },\n error=>{\n this.baseService.handleServiceError(error, \"Error getting user logged in\");\n });\n }\n else {\n let _dependentSelected = this.dependents.find(d=> d.idPersona == _valueSelected);\n\n // a dependent has been selected\n if(_dependentSelected){ \n this.model.patientSelected = new PersonDataModel();\n\n this.model.patientSelected.id = _dependentSelected.idPersona;\n this.model.patientSelected.firstname = _dependentSelected.nombre;\n this.model.patientSelected.lastname = _dependentSelected.apellido;\n this.model.patientSelected.avatar = _dependentSelected.ubicacionLogo;\n this.model.patientSelected.birthDate = _dependentSelected.fechaNacimiento;\n this.model.patientSelected.gender = _dependentSelected.sexo;\n this.model.patientSelected.email = _dependentSelected.emailParticular;\n this.model.patientSelected.cellPhone = _dependentSelected.numeroTelCelular;\n\n this.model.relationship = _dependentSelected.tipoRelacion;\n this.continueFlow();\n\n } else if (this.model.user.id == _valueSelected) {\n // the user has been selected\n this.userService.getUserPersonLoggedInFromService()\n .subscribe(u => {\n // updates necessary fields.\n if (u?.nombre)\n this.model.user.firstname = u.nombre;\n\n if (u?.apellido)\n this.model.user.lastname = u.apellido;\n\n if (u?.fechaNacimiento)\n this.model.user.birthDate = u.fechaNacimiento;\n\n if (u?.sexo)\n this.model.user.gender = u.sexo;\n \n this.model.patientSelected = this.model.user;\n this.model.relationship = SenderPatientRelationship.USUARIO;\n this.continueFlow();\n },\n error=>{\n this.baseService.handleServiceError(error, \"Error getting user logged in\");\n }); \n }\n // someone else has been selected\n else {\n this.model.patientSelected = new PersonDataModel();\n\n this.model.relationship = _valueSelected;\n this.continueFlow();\n }\n }\n\n \n }\n\n continueFlow() {\n let message = new ComponentDataSetMessage();\n message.componentName = ComponentName.SELECT_PATIENT;\n\n message.data = this.model;\n\n this.messageBusService.onComponentDataSetMessage(message); \n }\n\n buttonDisabled():boolean{\n return this.patientRelationshipTypeForm.invalid;\n }\n\n getUserAvatar(user: PersonDataModel){ \n return user.avatar\n ? user.avatar\n : this.utilsService.getPersonDefaultAvatarUrl(user.birthDate, user.gender);\n }\n\n getDependentAvatar(dependent: Dependent){\n return dependent.ubicacionLogo\n ? dependent.ubicacionLogo\n : this.utilsService.getPersonDefaultAvatarUrl(dependent.fechaNacimiento, dependent.sexo);\n }\n\n getRelationshipText(dependent: Dependent){\n return this.translation.translate(`shared.selectPatientAppointmentCheckout.relationship_${dependent.tipoRelacion}_${dependent.sexo}`);\n }\n\n openAppointmentInfoDialog(){\n this.dialog.open(AppointmentInfoDialogComponent, { \n panelClass: ['appointment-info-dialog', 'appointment-info-animation-in'],\n data: this.model.appointmentInfo\n });\n }\n\n private loadDataModel() {\n if (this.data && this.data.configurationData) {\n this.model = this.data.configurationData as SelectPatientDataModel; \n } \n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.showAppointmentInfo = event.target.innerWidth > 799;\n }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\n/**\r\n * Valida que el valor del control no tenga espacios en blanco al inicio ni al final.\r\n * \r\n * Valida que contenga letras acentuadas tanto en mayusculas como minúsculas\r\n * \r\n * MCWNG-6194: Permite que exista hasta un espacio en blanco al inicio y/o al final.\r\n * @param allowSpaces Si es false, no permite ninguna espacio en blanco al inicio ni al final. Default: false\r\n * @returns ValidatorFn\r\n */\r\nexport function ValidatePersonName(allowSpaces = false): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n let regex = /^[A-Za-zÁÉÍÓÚÑáéíóúñ0-9']+(?: [A-Za-zÁÉÍÓÚÑáéíóúñ0-9']+)*$/;\r\n if (allowSpaces) regex = /^( ?)[A-Za-zÁÉÍÓÚÑáéíóúñ0-9']+(?: [A-Za-zÁÉÍÓÚÑáéíóúñ0-9']+)*( ?)$/;\r\n const validacion: boolean = regex.test(control.value);\r\n return validacion ? null : { whitespace: true };\r\n }\r\n}\r\n","import { AbstractControl } from '@angular/forms';\r\nimport CommonTypesHelper from '../helpers/common-types-helper';\r\n\r\nexport function ValidateGender(control: AbstractControl) {\r\n const validacion: boolean = CommonTypesHelper.stringHasValue(control.value);\r\n return validacion ? null : { whitespace: true };\r\n}","
\n \n \n
\n {{ 'shared.patientFormAppointmentCheckout.title' + model.relationship | translate:locale.language }}\n \n \n
\n
\n \n {{ 'formfield.firstname' | translate:locale.language }}\n \n \n {{'validation.firstnameRequired' | translate:locale.language}}\n \n \n \n {{ 'formfield.lastname' | translate:locale.language }}\n \n \n {{'validation.lastnameRequired' | translate:locale.language}}\n \n \n \n
\n {{ 'formfield.gender' | translate:locale.language }}\n \n \n \n {{'formfield.gender1' | translate:locale.language}}\n \n \n \n {{'formfield.gender2' | translate:locale.language}}\n \n \n \n {{'validation.genderRequired' | translate:locale.language}}\n \n
\n
\n\n \n
\n
\n {{ model.appointmentInfo.appointmentDate | date:'d MMM, h:mm a': 'UTC': language }}\n \n {{ model.appointmentInfo.attentionPlaceName }}\n \n
\n \n
\n
\n
\n
","import { Component, HostListener, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { FormComponentData } from '../../models/people/form-control.model';\nimport { PatientFormAppointmentDataModel } from '../../models/workflow/models/patient-form-appointment-data.model';\nimport { ComponentName } from '../../enums/component-name.enum';\nimport { ValidatePersonName } from '../../validators/person-name.validator';\nimport { StateType } from '../../enums/state-type.enum';\nimport CommonTypesHelper from '../../helpers/common-types-helper';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AppointmentInfoDialogComponent } from '../dialogs/appointment-info-dialog/appointment-info-dialog.component';\nimport { ValidateGender } from '../../validators/gender.validator';\n\n@Component({\n selector: 'app-patient-form-appointment-checkout',\n templateUrl: './patient-form-appointment-checkout.component.html',\n styleUrls: ['./patient-form-appointment-checkout.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('PatientFormAppointmentCheckoutComponent')\nexport class PatientFormAppointmentCheckoutComponent implements IControlComponent, OnInit {\n data: FormComponentData;\n model: PatientFormAppointmentDataModel = new PatientFormAppointmentDataModel();\n\n language: string;\n patientForm: FormGroup;\n showAppointmentInfo: boolean;\n state: any;\n\n minDate: Date;\n maxDate: Date;\n\n formSubmitted: boolean = false;\n loading: boolean = false;\n\n constructor(\n private dialog: MatDialog,\n private formBuilder: FormBuilder,\n private messageBusService: MessageBusService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) {\n this.language = locale.dateLanguage ?? 'es-AR';\n\n const currentYear = new Date().getFullYear();\n this.minDate = new Date(currentYear - 120, 0, 1);\n this.maxDate = new Date();\n\n this.patientForm = this.formBuilder.group(\n {\n firstname: [this.model.firstname, [Validators.required, ValidatePersonName(true)]],\n lastname: [this.model.lastname, [Validators.required, ValidatePersonName(true)]],\n birthdate: [this.model.birthdate, [Validators.required]],\n gender: [this.model.gender, [Validators.required, ValidateGender]]\n }\n );\n }\n \n ngOnInit(): void {\n this.loadDataModel();\n this.loadForm();\n this.sendComponentFinishLoadingMessage();\n\n this.showAppointmentInfo = window.innerWidth > 799;\n }\n\n loadForm(){\n if (this.model.identityPersonValidationStateId == StateType.SinValidar) {\n this.patientForm.get('firstname')?.setValue(undefined);\n this.patientForm.get('lastname')?.setValue(undefined);\n this.patientForm.get('birthdate')?.setValue(undefined);\n this.patientForm.get('gender')?.setValue(undefined);\n } else {\n this.patientForm.get('firstname')?.setValue(this.model.firstname);\n this.patientForm.get('lastname')?.setValue(this.model.lastname);\n this.patientForm.get('birthdate')?.setValue(this.model.birthdate);\n this.patientForm.get('gender')?.setValue(this.model.gender);\n }\n }\n\n sendComponentFinishLoadingMessage(){\n let event = new ComponentFinishLoadingMessage();\n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event);\n }\n\n onClickContinue(){\n this.patientForm.markAllAsTouched();\n this.formSubmitted = true;\n\n // stop here if form is invalid\n if (this.patientForm.invalid) {\n return;\n }\n\n this.loading = true;\n\n this.updateModel();\n\n let message = new ComponentDataSetMessage();\n message.componentName = ComponentName.PATIENT_FORM_APPOINTMENT;\n message.data = this.model;\n\n this.messageBusService.onComponentDataSetMessage(message); \n }\n\n updateModel(){\n this.model.firstname = this.patientForm.controls.firstname.value.trim();\n this.model.lastname = this.patientForm.controls.lastname.value.trim();\n this.model.birthdate = this.patientForm.controls.birthdate.value;\n this.model.gender = this.patientForm.controls.gender.value;\n\n if (this.model.firstname && this.model.lastname) {\n this.model.identityPersonValidationStateId = StateType.NombreYApellidoValidados;\n\n if (CommonTypesHelper.dateHasValue(this.model.birthdate) && CommonTypesHelper.stringHasValue(this.model.gender)) {\n this.model.identityPersonValidationStateId = StateType.NombreApellidoSexoFechaNacimientoValidados;\n }\n }\n }\n\n getControl(controlName: string) {\n return this.patientForm.controls[controlName];\n }\n \n isControlInvalid(controlName: string) {\n let control = this.getControl(controlName);\n\n // First check if the form is submitted or control is dirty\n if (!this.formSubmitted && !control.touched)\n return false;\n\n return control.invalid;\n }\n\n getBirthdateControl():FormControl | null{\n return this.patientForm.get('birthdate') \n ? this.patientForm.get('birthdate') as FormControl \n : null;\n }\n\n openAppointmentInfoDialog(){\n this.dialog.open(AppointmentInfoDialogComponent, { \n panelClass: ['appointment-info-dialog', 'appointment-info-animation-in'],\n data: this.model.appointmentInfo\n });\n }\n\n private loadDataModel() {\n if (this.data && this.data.configurationData) {\n this.model = this.data.configurationData as PatientFormAppointmentDataModel; \n } \n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.showAppointmentInfo = event.target.innerWidth > 799;\n }\n}","
\n \n \n
\n {{ 'shared.selectPatientRelationshipAppointmentCheckout.title' | translate:locale.language: { name: model.patientName } }}\n\n
\n
\n \n {{ 'shared.selectPatientRelationshipAppointmentCheckout.defaultOption' | translate:locale.language }} \n \n \n {{ 'shared.selectPatientRelationshipAppointmentCheckout.option1' | translate:locale.language }}\n {{ 'shared.selectPatientRelationshipAppointmentCheckout.option2' | translate:locale.language }}\n {{ 'shared.selectPatientRelationshipAppointmentCheckout.option3' | translate:locale.language }}\n\n {{ 'shared.selectPatientRelationshipAppointmentCheckout.option4' | translate:locale.language }}\n {{ 'shared.selectPatientRelationshipAppointmentCheckout.option5' | translate:locale.language }}\n {{ 'shared.selectPatientRelationshipAppointmentCheckout.option6' | translate:locale.language }}\n {{ 'shared.selectPatientRelationshipAppointmentCheckout.option7' | translate:locale.language }}\n \n \n {{ 'shared.selectPatientRelationshipAppointmentCheckout.text1' | translate:locale.language }}\n \n \n
\n
\n
\n {{ model.appointmentInfo.appointmentDate | date:'d MMM, h:mm a': 'UTC': language }}\n \n {{ model.appointmentInfo.attentionPlaceName }}\n \n
\n \n
\n
\n
\n
\n","import { Component, HostListener, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { FormComponentData } from '../../models/people/form-control.model';\nimport { SenderPatientRelationship } from '../../models/process/base-request.model';\nimport { SelectPatientRelationshipDataModel } from '../../models/workflow/models/select-patient-relationship-data.model';\nimport { ComponentName } from '../../enums/component-name.enum';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AppointmentInfoDialogComponent } from '../dialogs/appointment-info-dialog/appointment-info-dialog.component';\n\n@Component({\n selector: 'app-select-patient-relationship-appointment-checkout',\n templateUrl: './select-patient-relationship-appointment-checkout.component.html',\n styleUrls: ['./select-patient-relationship-appointment-checkout.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('SelectPatientRelationshipAppointmentCheckoutComponent')\nexport class SelectPatientRelationshipAppointmentCheckoutComponent implements IControlComponent,OnInit {\n data: FormComponentData;\n\n model:SelectPatientRelationshipDataModel = new SelectPatientRelationshipDataModel();\n\n language: string;\n patientRelationshipForm: FormGroup;\n showAppointmentInfo: boolean;\n\n loading: boolean = false;\n formSubmitted: boolean = false;\n\n constructor(\n private dialog: MatDialog,\n private formBuilder: FormBuilder,\n private messageBusService: MessageBusService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) {\n this.language = locale.dateLanguage ?? 'es-AR';\n }\n \n ngOnInit(): void {\n this.loadDataModel();\n \n this.loadForm();\n\n this.sendComponentFinishLoadingMessage();\n \n this.showAppointmentInfo = window.innerWidth > 799;\n }\n\n getControl(controlName: string) {\n return this.patientRelationshipForm.controls[controlName];\n }\n \n isControlInvalid(controlName: string) {\n let control = this.getControl(controlName);\n\n // First check if the form is submitted or control is dirty\n if (!this.formSubmitted && !control.touched)\n return false;\n\n return control.invalid;\n }\n \n loadForm(){\n this.patientRelationshipForm = this.formBuilder.group(\n {\n patientRelationship: ['', [Validators.required]]\n }\n );\n\n if (this.model.patientRelationship && this.model.patientRelationship != 9)\n this.patientRelationshipForm.controls.patientRelationship.setValue(this.model.patientRelationship.toString());\n }\n\n sendComponentFinishLoadingMessage(){\n let event = new ComponentFinishLoadingMessage();\n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n }\n\n onClickContinue(){\n\n this.formSubmitted = true;\n\n if (this.patientRelationshipForm.invalid || this.patientRelationshipForm.controls.patientRelationship.value == SenderPatientRelationship.DESCONOCIDO) {\n return;\n }\n\n this.loading = true;\n\n this.model.patientRelationship = +(this.patientRelationshipForm.controls.patientRelationship.value);\n\n let message = new ComponentDataSetMessage();\n message.componentName = ComponentName.SELECT_PATIENT_RELATIONSHIP_APPOINTMENT;\n message.data = this.model;\n\n this.messageBusService.onComponentDataSetMessage(message); \n }\n\n openAppointmentInfoDialog(){\n this.dialog.open(AppointmentInfoDialogComponent, { \n panelClass: ['appointment-info-dialog', 'appointment-info-animation-in'],\n data: this.model.appointmentInfo\n });\n }\n\n buttonDisabled():boolean{\n return this.patientRelationshipForm.controls.patientRelationship.value == SenderPatientRelationship.DESCONOCIDO;\n }\n\n private loadDataModel() {\n if (this.data && this.data.configurationData) {\n this.model = this.data.configurationData as SelectPatientRelationshipDataModel; \n } \n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.showAppointmentInfo = event.target.innerWidth > 799;\n }\n}","import { Injectable, NgZone } from '@angular/core';\nimport { fromEvent, merge, Observable, of } from 'rxjs';\nimport { map, startWith, distinctUntilChanged } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class KeyboardService {\n private visualViewportSizeChangedSubject = new Observable();\n private keyboardOpenSubject = new Observable();\n\n constructor(private zone: NgZone) {\n this.initKeyboardDetection();\n }\n\n private initKeyboardDetection() {\n this.zone.runOutsideAngular(() => {\n\n this.visualViewportSizeChangedSubject = window.visualViewport \n ? fromEvent(window.visualViewport, 'resize').pipe(\n map(() => this.isKeyboardOpen()),\n startWith(this.isKeyboardOpen()),\n distinctUntilChanged()\n )\n : of(false);\n \n const focus$ = fromEvent(window, 'focusin').pipe(map(this.isKeyboardOpen.bind(this)));\n const blur$ = fromEvent(window, 'focusout').pipe(\n map(() => this.isKeyboardClosed()),\n startWith(this.isKeyboardOpen()),\n distinctUntilChanged()\n );\n\n this.keyboardOpenSubject = merge(this.visualViewportSizeChangedSubject, focus$, blur$);\n });\n }\n\n private isKeyboardOpen(): boolean {\n const visualViewport = window.visualViewport;\n return visualViewport != null && visualViewport.height < window.innerHeight;\n }\n\n private isKeyboardClosed(): boolean {\n const visualViewport = window.visualViewport;\n return visualViewport != null && visualViewport.height === window.innerHeight;\n }\n\n getVisualViewportSizeChangedObservable(): Observable {\n return this.visualViewportSizeChangedSubject;\n }\n\n getKeyboardOpenObservable(): Observable {\n return this.keyboardOpenSubject;\n }\n}","
\n \n \n
\n \n \n {{ 'shared.patientContactFormAppointmentCheckout.title1' | translate:locale.language }}\n \n \n {{ 'shared.patientContactFormAppointmentCheckout.title2' | translate:locale.language: { name: model.patientName } }}\n \n \n
\n
\n \n \n {{'shared.patientContactFormAppointmentCheckout.radioOption1' | translate:locale.language}}\n \n \n \n
\n \n {{ 'shared.patientContactFormAppointmentCheckout.phoneText' | translate:locale.language }}\n \n \n \n {{ 'shared.patientContactFormAppointmentCheckout.fieldRequiredText' | translate:locale.language }}\n \n \n {{ 'shared.patientContactFormAppointmentCheckout.invalidFormat' | translate:locale.language }}\n \n \n
\n \n \n {{'shared.patientContactFormAppointmentCheckout.radioOption2' | translate:locale.language: { name: model.patientName } }}\n \n \n \n
\n \n {{ 'shared.patientContactFormAppointmentCheckout.phoneText' | translate:locale.language }}\n \n \n \n {{ 'shared.patientContactFormAppointmentCheckout.fieldRequiredText' | translate:locale.language }}\n \n \n {{ 'shared.patientContactFormAppointmentCheckout.invalidFormat' | translate:locale.language }}\n \n \n \n {{ 'shared.patientContactFormAppointmentCheckout.emailText' | translate:locale.language }}\n \n \n {{ 'shared.patientContactFormAppointmentCheckout.fieldRequiredText' | translate:locale.language }}\n \n \n {{ 'shared.patientContactFormAppointmentCheckout.invalidFormat' | translate:locale.language }}\n \n \n
\n
\n
\n
\n
\n {{ model.appointmentInfo.appointmentDate | date:'d MMM, h:mm a': 'UTC': language }}\n \n {{ model.appointmentInfo.attentionPlaceName }}\n \n
\n
\n Cita para {{model.patientName}} ({{getRelationship() | translate:locale.language}})\n
\n \n
\n
\n
\n
\n","import { AfterViewInit, Component, ElementRef, HostListener, Inject, OnDestroy, OnInit, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { FormComponentData } from '../../models/people/form-control.model';\nimport { SenderPatientRelationship } from '../../models/process/base-request.model';\nimport { PatientContactFormDataModel } from '../../models/workflow/models/patient-contact-form-data.model';\nimport { ComponentName } from '../../enums/component-name.enum';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AppointmentInfoDialogComponent } from '../dialogs/appointment-info-dialog/appointment-info-dialog.component';\nimport { CustomEmailValidator } from '../../validators/custom-email.validator';\nimport { DOCUMENT } from '@angular/common';\nimport { KeyboardService } from 'src/app/core/services/keyboard.service';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n\n@Component({\n selector: 'app-patient-contact-form-appointment-checkout',\n templateUrl: './patient-contact-form-appointment-checkout.component.html',\n styleUrls: ['./patient-contact-form-appointment-checkout.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('PatientContactFormAppointmentCheckoutComponent')\nexport class PatientContactFormAppointmentCheckoutComponent implements IControlComponent, OnInit, AfterViewInit, OnDestroy {\n data: FormComponentData;\n model: PatientContactFormDataModel = new PatientContactFormDataModel();\n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n language: string;\n patientContactForm: FormGroup;\n showAppointmentInfo: boolean;\n userPatientMode: boolean;\n formSubmitted: boolean = false;\n loading: boolean = false;\n\n @ViewChild('userPhone', { read: ElementRef }) userPhone: ElementRef;\n @ViewChild('patientPhone', { read: ElementRef }) patientPhone: ElementRef;\n\n constructor(\n private dialog: MatDialog,\n private formBuilder: FormBuilder,\n private messageBusService: MessageBusService,\n private userService: UserService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n @Inject(DOCUMENT) public document: Document,\n private renderer: Renderer2,\n private keyboardService: KeyboardService\n ) {\n this.language = locale.dateLanguage ?? 'es-AR';\n }\n \n ngOnInit(): void {\n this.loadDataModel();\n \n this.loadForm();\n\n this.sendComponentFinishLoadingMessage();\n \n this.showAppointmentInfo = window.innerWidth > 799;\n\n this.userPatientMode = this.model.patientRelationship == SenderPatientRelationship.USUARIO;\n\n this.keyboardService.getKeyboardOpenObservable()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(isOpen=>{\n\n if(this.userPatientMode){\n this.onChangeHeightContainer();\n } \n });\n }\n\n ngOnDestroy():void{\n if(window.innerWidth < 800){\n console.log('onChangeHeightContainer executed !');\n let container = this.document.getElementsByClassName('online-appointment-container');\n\n if(container.length > 0 && window.visualViewport){\n\n this.renderer.setStyle(container[0], 'height', `100dvh`);\n }\n }\n\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngAfterViewInit(){\n // if(this.userPatientMode){\n // const userTelInputElement: HTMLInputElement = this.userPhone.nativeElement;\n // const userInputElement = userTelInputElement.getElementsByTagName('input')[0];\n \n // userInputElement.addEventListener('focus', this.onChangeHeightContainer.bind(this));\n // userInputElement.addEventListener('blur', this.onChangeHeightContainer.bind(this));\n // }\n }\n\n loadForm(){\n\n this.model.contactType = this.model.contactType == 0 ? 1 : this.model.contactType;\n\n this.patientContactForm = this.formBuilder.group(\n {\n contactRadio:[ this.model.contactType.toString() ],\n userPhone: [this.model.userPhone, [this.requiredIfValidator(()=> this.patientContactForm.get('contactRadio')?.value == '1')]], \n patientPhone: [this.model.patientPhone, [this.requiredIfValidator(()=> this.patientContactForm.get('contactRadio')?.value == '2')]],\n patientEmail: [this.model.patientEmail, [\n this.requiredIfValidator(()=> this.patientContactForm.get('contactRadio')?.value == '2'),\n CustomEmailValidator\n ]],\n }\n );\n\n this.patientContactForm.get('contactRadio')?.valueChanges\n .subscribe(value => {\n this.patientContactForm.get('userPhone')?.updateValueAndValidity();\n this.patientContactForm.get('patientPhone')?.updateValueAndValidity();\n this.patientContactForm.get('patientEmail')?.updateValueAndValidity();\n }); \n }\n\n sendComponentFinishLoadingMessage(){\n let event = new ComponentFinishLoadingMessage();\n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.showAppointmentInfo = event.target.innerWidth > 799;\n }\n \n onChangeHeightContainer(){\n setTimeout(() => {\n if(window.innerWidth < 800){\n console.log('onChangeHeightContainer executed !');\n let container = this.document.getElementsByClassName('online-appointment-container');\n\n if(container.length > 0 && window.visualViewport){\n\n this.renderer.setStyle(container[0], 'height', `${window.visualViewport.height}px`);\n }\n }\n }, 100);\n }\n\n onClickFinish(){\n // stop here if form is invalid\n if (this.patientContactForm.invalid) {\n return;\n }\n\n this.loading = true;\n\n this.updateModel();\n\n let message = new ComponentDataSetMessage();\n message.componentName = ComponentName.PATIENT_CONTACT_FORM;\n message.data = this.model;\n\n this.messageBusService.onComponentDataSetMessage(message); \n }\n\n buttonDisabled():boolean{\n return this.patientContactForm.invalid;\n }\n\n getControl(controlName: string) {\n return this.patientContactForm.controls[controlName];\n }\n\n isControlInvalid(controlName: string) {\n let control = this.getControl(controlName);\n\n if(this.formSubmitted || control.touched)\n return control.invalid;\n\n return false;\n }\n\n controlHasError(controlName: string, errorName: string) {\n return this.getControl(controlName).hasError(errorName);\n }\n\n getControlValue(controlName: string) {\n return this.getControl(controlName).value;\n }\n\n updateModel(){ \n this.model.contactType = +(this.patientContactForm.controls.contactRadio.value);\n\n if(this.model.contactType == 1) {\n this.model.userPhone = this.patientContactForm.controls.userPhone.value;\n }\n else {\n this.model.patientPhone = this.patientContactForm.controls.patientPhone.value;\n this.model.patientEmail = this.patientContactForm.controls.patientEmail.value;\n }\n\n // refresh user in cache\n this.userService.getUserPersonLoggedInFromService();\n }\n\n getRelationship(): string {\n const condicion = this.model.patientRelationship === SenderPatientRelationship.USUARIO;\n const condicionSexoPaciente = this.model.appointmentInfo.patientGender == `${SenderPatientRelationship.DESCONOCIDO}`;\n const me = 'shared.selectPatientAppointmentCheckout.userRelationship';\n const relantionship = 'shared.appointmentInfoCheckout.relationship_';\n const patientGender = condicionSexoPaciente ? 'M' : this.model.appointmentInfo.patientGender;\n return condicion ? me : `${relantionship}${this.model.patientRelationship}_${patientGender}`;\n }\n\n openAppointmentInfoDialog(){\n this.dialog.open(AppointmentInfoDialogComponent, { \n panelClass: ['appointment-info-dialog', 'appointment-info-animation-in'],\n data: this.model.appointmentInfo\n });\n }\n\n private requiredIfValidator(predicate: any) {\n return ((formControl:AbstractControl) => {\n if (!formControl.parent) {\n return null;\n }\n if (predicate()) {\n return Validators.required(formControl); \n }\n return null;\n })\n }\n\n private loadDataModel() {\n if (this.data && this.data.configurationData) {\n this.model = this.data.configurationData as PatientContactFormDataModel; \n } \n }\n}\n","
\n \n \n {{'shared.publicProfileHeader.linkText' | translate:locale.language}}\n \n \n \n\n \n
\n
\n \n
\n {{publicProfileMenuModel.profile.nombrePersona}}\n \n \n \n \n
\n
","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { RouteDialogHeaderModel } from '../../../dialogs/route-dialog/route-dialog.component';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { Router } from '@angular/router';\nimport { HeaderComponentPublicProfileMenuModel } from '../../header/header.component';\nimport { MessageBusService, PublicProfileActionMessage } from 'src/app/core/services/message-bus.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-public-profile-header',\n templateUrl: './public-profile-header.component.html',\n styleUrls: ['./public-profile-header.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('PublicProfileHeaderComponent')\nexport class PublicProfileHeaderComponent implements OnInit, IControlComponent, OnDestroy {\n data: RouteDialogHeaderModel;\n urlPublicProfile: string;\n publicProfileMenuModel: HeaderComponentPublicProfileMenuModel;\n private ngUnsubscribe = new Subject();\n \n constructor(\n private router: Router,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private messageBusService: MessageBusService) { }\n\n ngOnInit(): void {\n this.urlPublicProfile = this.data.dialogModel.route;\n\n this.messageBusService.onPublicProfileHeaderVisibilityChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message)=> {\n if (!message.fromRouteDialog)\n return;\n\n this.publicProfileMenuModel = new HeaderComponentPublicProfileMenuModel();\n this.publicProfileMenuModel.headerVisible = message.headerVisible;\n this.publicProfileMenuModel.profile = message.profile;\n this.publicProfileMenuModel.avatarModel = message.publicProfileAvatarComponentModel;\n this.publicProfileMenuModel.avatarModel.useAvatarPadding = message.headerVisible;\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onCloseClick(){\n this.data.closeFn();\n }\n\n gotoPayment() {\n this.messageBusService.sendPublicProfileAction(new PublicProfileActionMessage(true, false));\n }\n\n onAppointmentBtnClick() {\n this.messageBusService.sendPublicProfileAction(new PublicProfileActionMessage(false, true));\n }\n}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { RouteDialogHeaderModel } from '../../../dialogs/route-dialog/route-dialog.component';\n\n@Component({\n selector: 'app-default-header',\n templateUrl: './default-header.component.html',\n styleUrls: ['./default-header.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('DefaultHeaderComponent')\nexport class DefaultHeaderComponent implements OnInit, IControlComponent {\n\n constructor() { }\n data: RouteDialogHeaderModel;\n\n ngOnInit(): void {}\n\n onCloseClick(){\n this.data.closeFn();\n }\n\n}\n","
\n \n
","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { RouteDialogHeaderModel } from '../../../dialogs/route-dialog/route-dialog.component';\r\nimport { MessageBusService, NavigationBackMessage } from 'src/app/core/services/message-bus.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-default-back-header',\r\n templateUrl: './default-back-header.component.html',\r\n styleUrls: ['./default-back-header.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('DefaultBackHeaderComponent')\r\nexport class DefaultBackHeaderComponent implements OnInit, IControlComponent, OnDestroy {\r\n\r\n private ngUnsubscribe = new Subject();\r\n\r\n constructor(\r\n private messageBusService: MessageBusService \r\n ) { }\r\n data: RouteDialogHeaderModel;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n onBackClick(){\r\n let dialogType = this.data.dialogModel.id;\r\n\r\n this.messageBusService.navigateBack(new NavigationBackMessage(dialogType));\r\n } \r\n}","
\r\n \r\n \r\n \r\n
","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { RouteDialogHeaderModel } from '../../../dialogs/route-dialog/route-dialog.component';\r\nimport { MessageBusService, NavigationBackMessage } from 'src/app/core/services/message-bus.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\r\n\r\n@Component({\r\n selector: 'app-default-back-with-link-header',\r\n templateUrl: './default-back-with-link-header.component.html',\r\n styleUrls: ['./default-back-with-link-header.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('DefaultBackWithLinkHeaderComponent')\r\nexport class DefaultBackWithLinkHeaderComponent implements OnInit, IControlComponent, OnDestroy {\r\n\r\n private ngUnsubscribe = new Subject();\r\n\r\n constructor(\r\n private messageBusService: MessageBusService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale\r\n ) { }\r\n data: RouteDialogHeaderModel;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n onBackClick(){\r\n let dialogId = this.data.dialogModel.id;\r\n\r\n this.messageBusService.navigateBack(new NavigationBackMessage(dialogId));\r\n }\r\n\r\n onOpenInNewWindow() {\r\n let url = window.location.href;\r\n\r\n window.open(url, \"_blank\");\r\n }\r\n}","","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\n\r\n@Component({\r\n selector: 'app-cliniweb-medical-appointments-linkbox',\r\n templateUrl: './cliniweb-medical-appointments-linkbox.component.html',\r\n styleUrls: ['./cliniweb-medical-appointments-linkbox.component.css']\r\n})\r\n@ComponentLookup('CliniwebMedicalAppointmentsLinkboxComponent')\r\nexport class CliniwebMedicalAppointmentsLinkboxComponent implements OnInit, IControlComponent {\r\n data: FormComponentData;\r\n\r\n constructor(\r\n private router: Router,\r\n private baseService: BaseService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n \r\n onLinkClick(){\r\n //let path = this.baseService.getRouteLinkByArea(3459);\r\n this.router.navigate(['/mis-citas']);\r\n }\r\n}","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { SystemAreas } from 'src/app/shared/enums/system-areas.enum';\nimport { FormComponentData, FormControl, FormControlComponent } from 'src/app/shared/models/people/form-control.model';\nimport { Form } from 'src/app/shared/models/people/form.model';\nimport { SearchProvidersConfiguration } from 'src/app/shared/models/search-results/search-providers-configuration.model';\nimport { LayoutService } from './layout.service';\nimport { FloatingComponentsMessage, MessageBusService } from './message-bus.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SearchProvidersService {\n\n constructor(\n private layoutService: LayoutService, \n private messageBusService: MessageBusService\n ) { }\n\n searchProviderComponentName= 'SearchProvidersV2Component';\n systemArea = SystemAreas.BUSCAR_PERFILES_PUBLICOS;\n\n openSearch(systemArea?: number){\n\n if(systemArea)\n this.systemArea = systemArea;\n\n this.getControlConfig().subscribe(config=>{\n if(config){\n let message = new FloatingComponentsMessage();\n \n message.componentsData = config;\n \n this.messageBusService.sendFloatingComponents(message);\n }\n });\n }\n\n getControlConfig(){\n\n return this.layoutService.getForm(this.systemArea)\n .pipe(map(\n (form:Form)=>{\n\n if(!form) return;\n let searchControl = form.controles.map(c=> { return new FormControl(c) });\n \n let searchComponent:FormControlComponent[] = [];\n\n searchControl.forEach(sc => {\n searchComponent = searchComponent.concat(sc.componentes); \n });\n\n let componentsData = searchComponent.map(c=> this.getComponentData(form, c));\n\n return componentsData.filter(d => d.nombreComponente == this.searchProviderComponentName);\n }));\n\n }\n\n getComponentData(form:Form , component:FormControlComponent): FormComponentData{\n let componentData = new FormComponentData();\n componentData.nombreComponente = component.nombre;\n componentData.contenedor = component.contenedor;\n componentData.valor = component.valor;\n componentData.idControlPadre = component.idControl;\n componentData.idFormulario = form.id;\n componentData.nombreFormulario = form.nombre;\n\n return componentData; \n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { SearchProvidersService } from 'src/app/core/services/search-providers.service';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\n\r\n@Component({\r\n selector: 'app-cliniweb-book-appointment-linkbox',\r\n templateUrl: './cliniweb-book-appointment-linkbox.component.html',\r\n styleUrls: ['./cliniweb-book-appointment-linkbox.component.css']\r\n})\r\n@ComponentLookup('CliniwebBookAppointmentLinkboxComponent')\r\nexport class CliniwebBookAppointmentLinkboxComponent implements OnInit, IControlComponent {\r\n data: FormComponentData;\r\n\r\n constructor(\r\n private router: Router,\r\n private baseService: BaseService,\r\n private searchProvidersService: SearchProvidersService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n \r\n onLinkClick(){\r\n this.searchProvidersService.openSearch();\r\n }\r\n}","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
","
\r\n \r\n \r\n \r\n {{ 'shared.latestDoctors.text1' | translate:locale.language }}\r\n \r\n \r\n \r\n \r\n
0\">\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {{ doctor.nombreResponsableServicio }}\r\n
\r\n
\r\n {{ doctor.especialidadResponsableServicio }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{ 'shared.latestDoctors.text4' | translate:locale.language }}\r\n
\r\n
\r\n
 
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n {{ 'shared.latestDoctors.text2' | translate:locale.language }}\r\n \r\n \r\n {{ 'shared.latestDoctors.text3' | translate:locale.language }} \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, HostListener, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\r\nimport { AppointmentDoctor } from '../../models/people/appointment-doctor';\r\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { SearchProvidersService } from 'src/app/core/services/search-providers.service';\r\nimport { PublicProfileAvatarComponentModel } from '../public-profile-avatar/public-profile-avatar.component';\r\nimport { PublicProfileType } from '../../models/people/profile-search-results.model';\r\n\r\n@Component({\r\n selector: 'app-latest-doctors',\r\n templateUrl: './latest-doctors.component.html',\r\n styleUrls: ['./latest-doctors.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('LatestDoctorsComponent')\r\nexport class LatestDoctorsComponent implements OnInit, IControlComponent, OnDestroy {\r\n data: FormComponentData;\r\n qs: any = null;\r\n private _latestDoctors: AppointmentDoctor[];\r\n finishedLoading: boolean = false;\r\n private currentMaxDoctorsToShow = 3;\r\n private maxDoctorsToShow = 5;\r\n private ngUnsubscribe = new Subject();\r\n get latestDoctors(): AppointmentDoctor[] { return this._latestDoctors.filter((_, i) => i < this.currentMaxDoctorsToShow);}\r\n\r\n constructor(\r\n private router: Router,\r\n private route : ActivatedRoute,\r\n private baseService: BaseService,\r\n private publicProfileService: PublicProfileService,\r\n private appointmentService: AppointmentService, \r\n private messageBusService: MessageBusService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private searchProvidersService: SearchProvidersService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n // Get QS parameters\r\n this.route.queryParams\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(params => {\r\n this.qs = params;\r\n });\r\n\r\n this.getLatestDoctors();\r\n\r\n this.messageBusService.onAppointmentChangeReceived()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(\r\n appointments => {\r\n if (appointments.doctores && appointments.doctores.length > this.currentMaxDoctorsToShow) {\r\n this._latestDoctors = appointments.doctores.slice(0, this.currentMaxDoctorsToShow);\r\n } else {\r\n this._latestDoctors = appointments.doctores;\r\n }\r\n },\r\n error => { this.baseService.handleServiceError(error, \"Error getting latest doctors\") } \r\n );\r\n this.onResize();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n \r\n getLatestDoctors() {\r\n this.appointmentService.getLatestDoctors(this.locale.language, this.maxDoctorsToShow)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(\r\n doctors => {\r\n this._latestDoctors = doctors;\r\n\r\n this._latestDoctors.forEach(d => {\r\n let avatarInitialsObject = this.baseService.getAvatarInitialObject(d.idResponsableServicio, d.nombreResponsableServicio);\r\n d.iniciales = avatarInitialsObject.initials;\r\n });\r\n this.finishedLoading = true;\r\n },\r\n error => { this.baseService.handleServiceError(error, \"Error getting latest doctors\"); }\r\n ); \r\n }\r\n\r\n getMissingDoctorCount(): number[] {\r\n return Array.from({length: this.currentMaxDoctorsToShow - this.latestDoctors.length}, (_, index) => index);\r\n }\r\n\r\n onDoctorClick(doctor : AppointmentDoctor) { \r\n let url = this.publicProfileService.getPublicProfileUrl(doctor.identificadorPerfilPublico);\r\n this.publicProfileService.openPublicProfile(url);\r\n }\r\n\r\n onOtherClick() { \r\n this.searchProvidersService.openSearch();\r\n }\r\n\r\n onNavigateToAppointmentClick(){\r\n //this.router.navigate(['/mis-citas']);\r\n this.searchProvidersService.openSearch();\r\n }\r\n\r\n @HostListener('window:resize', [])\r\n onResize(): void {\r\n this.currentMaxDoctorsToShow = window.innerWidth < 800 ? 5 : 3;\r\n }\r\n\r\n getAvatarModel(item:AppointmentDoctor) : PublicProfileAvatarComponentModel {\r\n var avatarModel = new PublicProfileAvatarComponentModel();\r\n\r\n avatarModel.personId = item.idResponsableServicio;\r\n avatarModel.avatarUrl = item.urlAvatarResponsableServicio;\r\n avatarModel.fullName = item.nombreResponsableServicio;\r\n avatarModel.sex = item.sexoResponsableServicio;\r\n avatarModel.profileType = PublicProfileType.Doctor;\r\n\r\n return avatarModel;\r\n }\r\n\r\n}","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\n\r\n@Component({\r\n selector: 'app-most-common-specialties',\r\n templateUrl: './most-common-specialties.component.html',\r\n styleUrls: ['./most-common-specialties.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('MostCommonSpecialtiesComponent')\r\nexport class MostCommonSpecialtiesComponent implements OnInit, IControlComponent {\r\n data: FormComponentData;\r\n\r\n constructor(\r\n private router: Router,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n \r\n onDentistClick() {\r\n this.router.navigate([\"/doctores/especialidad/odontologia\"], {queryParams: {idC: 47, idTc: 5 }} );\r\n }\r\n\r\n onNutritionClick() {\r\n this.router.navigate([\"/doctores/especialidad/nutricion\"], {queryParams: {idC: 46, idTc: 5 }} );\r\n }\r\n\r\n onGynecologyClick() {\r\n this.router.navigate([\"/doctores/especialidad/ginecologia\"], {queryParams: {idC: 28, idTc: 5 }} );\r\n }\r\n\r\n onPediatricsClick() { \r\n this.router.navigate([\"/doctores/especialidad/pediatria\"], {queryParams: {idC: 58, idTc: 5 }} );\r\n }\r\n}","
\r\n \r\n \r\n \r\n \r\n {{ 'shared.mostCommonSpecialties.text1' | translate:locale.language }}\r\n \r\n \r\n {{ 'shared.mostCommonSpecialties.text2' | translate:locale.language }}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{ 'shared.mostCommonSpecialties.text3' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.mostCommonSpecialties.text4' | translate:locale.language }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{ 'shared.mostCommonSpecialties.text5' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.mostCommonSpecialties.text6' | translate:locale.language }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{ 'shared.mostCommonSpecialties.text7' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.mostCommonSpecialties.text8' | translate:locale.language }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{ 'shared.mostCommonSpecialties.text9' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.mostCommonSpecialties.text10' | translate:locale.language }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","
\r\n \r\n \r\n \r\n \r\n {{ 'shared.healthAllies.text1' | translate:locale.language }}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \"ally.title\r\n
\r\n {{ ally.title | translate:locale.language }}\r\n {{ ally.subTitle | translate:locale.language }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\n\r\n@Component({\r\n selector: 'app-health-allies',\r\n templateUrl: './health-allies.component.html',\r\n styleUrls: ['./health-allies.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('HealthAlliesComponent')\r\nexport class HealthAlliesComponent implements OnInit, IControlComponent {\r\n\r\n healthAllies = [\r\n {\r\n \"id\": 3195,\r\n \"logo\": \"assets/images/logos/assa.png\",\r\n \"title\": \"shared.healthAllies.text4\",\r\n \"subTitle\": \"shared.healthAllies.text9\"\r\n },\r\n {\r\n \"id\": 20142,\r\n \"logo\": \"assets/images/logos/sura.png\",\r\n \"title\": \"shared.healthAllies.text3\",\r\n \"subTitle\": \"shared.healthAllies.text9\"\r\n },\r\n {\r\n \"id\": 3205,\r\n \"logo\": \"assets/images/logos/mapfre.png\",\r\n \"title\": \"shared.healthAllies.text2\",\r\n \"subTitle\": \"shared.healthAllies.text9\"\r\n },\r\n {\r\n \"id\": 61090,\r\n \"logo\": \"assets/images/logos/CMC.png\",\r\n \"title\": \"shared.healthAllies.text13\",\r\n \"subTitle\": \"shared.healthAllies.text11\"\r\n },\r\n {\r\n \"id\": 61092,\r\n \"logo\": \"assets/images/logos/HChiriqui.png\",\r\n \"title\": \"shared.healthAllies.text14\",\r\n \"subTitle\": \"shared.healthAllies.text12\"\r\n },\r\n {\r\n \"id\": 61848,\r\n \"logo\": \"assets/images/logos/HPaitilla.png\",\r\n \"title\": \"shared.healthAllies.text15\",\r\n \"subTitle\": \"shared.healthAllies.text12\"\r\n },\r\n {\r\n \"id\": 61096,\r\n \"logo\": \"assets/images/logos/HSanFernando.png\",\r\n \"title\": \"shared.healthAllies.text6\",\r\n \"subTitle\": \"shared.healthAllies.text12\"\r\n },\r\n {\r\n \"id\": 61093,\r\n \"logo\": \"assets/images/logos/HSantaFe.png\",\r\n \"title\": \"shared.healthAllies.text8\",\r\n \"subTitle\": \"shared.healthAllies.text12\"\r\n },\r\n {\r\n \"id\": 61097,\r\n \"logo\": \"assets/images/logos/PuntaPacifica.png\",\r\n \"title\": \"shared.healthAllies.text16\",\r\n \"subTitle\": \"shared.healthAllies.text11\"\r\n },\r\n {\r\n \"id\": 61095,\r\n \"logo\": \"assets/images/logos/panamaClinic.png\",\r\n \"title\": \"shared.healthAllies.text7\",\r\n \"subTitle\": \"shared.healthAllies.text12\"\r\n },\r\n {\r\n \"id\": 61773,\r\n \"logo\": \"assets/images/logos/townCenter.png\",\r\n \"title\": \"shared.healthAllies.text5\",\r\n \"subTitle\": \"shared.healthAllies.text10\"\r\n }\r\n ];\r\n\r\n data: FormComponentData;\r\n\r\n constructor(\r\n private router: Router,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n \r\n navigateToSearch(clinicalConceptId: number) { \r\n this.router.navigate([\"/doctores/todos\"], {queryParams: {filtros: clinicalConceptId}});\r\n } \r\n}","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\n\r\n@Component({\r\n selector: 'app-preventive-control-tips',\r\n templateUrl: './preventive-control-tips.component.html',\r\n styleUrls: ['./preventive-control-tips.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('PreventiveControlTipsComponent')\r\nexport class PreventiveControlTipsComponent implements OnInit, IControlComponent {\r\n data: FormComponentData;\r\n\r\n constructor(\r\n private router: Router,\r\n private baseService: BaseService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n \r\n onGeneralMedicineClick() {\r\n this.router.navigate([\"/doctores/especialidad/medicina-general\"], {queryParams: {idC: 35, idTc: 5 }} );\r\n }\r\n\r\n onDermatologyClick() {\r\n this.router.navigate([\"/doctores/especialidad/dermatologia\"], {queryParams: {idC: 19, idTc: 5 }} );\r\n }\r\n\r\n onDentistClick() {\r\n this.router.navigate([\"/doctores/especialidad/odontologia\"], {queryParams: {idC: 47, idTc: 5 }} );\r\n }\r\n \r\n onOphthalmologyClick() {\r\n this.router.navigate([\"/doctores/especialidad/oftalmologia\"], {queryParams: {idC: 49, idTc: 5 }} );\r\n } \r\n}","
\r\n \r\n \r\n \r\n \r\n {{ 'shared.preventiveControlTips.text1' | translate:locale.language }}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{ 'shared.preventiveControlTips.text2' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.preventiveControlTips.text3' | translate:locale.language }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{ 'shared.preventiveControlTips.text4' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.preventiveControlTips.text5' | translate:locale.language }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{ 'shared.preventiveControlTips.text6' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.preventiveControlTips.text7' | translate:locale.language }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{ 'shared.preventiveControlTips.text8' | translate:locale.language }}\r\n
\r\n
\r\n {{ 'shared.preventiveControlTips.text9' | translate:locale.language }}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
","
\r\n \r\n
\r\n {{ 'shared.cliniwebHomeLayout.text1' | translate:locale.language }} {{userName}},\r\n {{ 'shared.cliniwebHomeLayout.text2' | translate:locale.language }}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\n\r\n@Component({\r\n selector: 'app-cliniweb-home-layout',\r\n templateUrl: './cliniweb-home-layout.component.html',\r\n styleUrls: ['./cliniweb-home-layout.component.css']\r\n})\r\n@ComponentLookup('HomeCliniwebComponent')\r\nexport class CliniwebHomeLayoutComponent implements OnInit, IControlComponent, OnDestroy {\r\n data: FormComponentData;\r\n user: UserPerson | null = null;\r\n userName: string;\r\n\r\n private ngUnsubscribe = new Subject();\r\n\r\n constructor(\r\n private userService: UserService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private messageBusService: MessageBusService,\r\n private authService: AuthService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.messageBusService.onRefreshProfileMenu()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(m => {\r\n this.getUser();\r\n }\r\n );\r\n\r\n this.authService.isLoggedInFull().subscribe(loggedIn => {\r\n if (loggedIn)\r\n this.getUser();\r\n });\r\n } \r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n private getUser() {\r\n this.userService.getUserPersonLoggedIn().subscribe(person => {\r\n if (person) {\r\n this.user = person;\r\n this.userName = this.user?.nombre.split(\"@\")[0];\r\n } \r\n });\r\n }\r\n \r\n}","
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
0\">\r\n \r\n \r\n \r\n \r\n\r\n
1\" (click)=\"onShowAll()\">\r\n {{'shared.cliniwebFutureAppointments.text1' | translate:locale.language}}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{'shared.cliniwebFutureAppointments.text2' | translate:locale.language}}\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ComponentLookup } from '../../../decorators/component-lookup.decorator';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\r\nimport { PatientAppointment } from 'src/app/shared/models/process/appointment.model';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { Directory } from 'src/app/shared/models/systems/directory.model';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { Observable, Subject, forkJoin, of } from 'rxjs';\r\nimport { catchError, takeUntil, tap } from 'rxjs/operators';\r\nimport { Dependent } from 'src/app/shared/models/people/dependent.model';\r\nimport { SearchProvidersService } from 'src/app/core/services/search-providers.service';\r\n\r\n@Component({\r\n selector: 'app-cliniweb-future-appointment',\r\n templateUrl: './cliniweb-future-appointments.component.html',\r\n styleUrls: ['./cliniweb-future-appointments.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('CliniwebFutureAppointmentsComponent')\r\nexport class CliniwebFutureAppointmentsComponent implements OnInit, OnDestroy, IControlComponent {\r\n data: FormComponentData; \r\n appointments : PatientAppointment[];\r\n appointmentsToShow : PatientAppointment[]; \r\n inProgressState: string; \r\n loading = true;\r\n skeletonItems: string[] = [\"\", \"\"];\r\n directory: Directory;\r\n showAll: boolean = true;\r\n dependents: Dependent[]; \r\n loggedInUser: UserPerson;\r\n intervalId: number;\r\n\r\n private ngUnsubscribe = new Subject();\r\n\r\n constructor(\r\n private appointmentService: AppointmentService, \r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n public dialog: MatDialog,\r\n private messageBusService: MessageBusService,\r\n private baseService: BaseService,\r\n private userService: UserService,\r\n private searchProvidersService: SearchProvidersService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n \r\n this.loading = true;\r\n\r\n this.messageBusService.onAppointmentChangeReceived()\r\n .pipe(takeUntil(this.ngUnsubscribe)) \r\n .subscribe(appointments => {\r\n if (appointments.citasFuturas) {\r\n this.appointments = appointments.citasFuturas.sort(this.sortByAppointmentState()); \r\n this.appointmentsToShow = this.showAll ? this.appointments : this.appointments.slice(0, 1);\r\n }\r\n this.loading = false;\r\n }); \r\n\r\n let observables: Observable[] = [];\r\n observables.push(this.getDirectory());\r\n observables.push(this.getUser());\r\n observables.push(this.getDependents());\r\n observables.push(this.getAppointments());\r\n\r\n forkJoin(observables)\r\n .pipe(takeUntil(this.ngUnsubscribe)) \r\n .subscribe(results => { \r\n this.directory = results[0] as Directory;\r\n this.loggedInUser = results[1] as UserPerson;\r\n this.dependents = results[2] as Dependent[];\r\n \r\n var appointments = results[3] as PatientAppointment[];\r\n this.appointments = appointments.sort(this.sortByAppointmentState());\r\n this.appointmentsToShow = this.showAll ? this.appointments : this.appointments.slice(0, 1);\r\n\r\n this.loading = false;\r\n });\r\n\r\n // Check appointment every 20 seconds\r\n this.intervalId = window.setInterval(() => {\r\n this.checkFutureAppointmentTime();\r\n }, 20 * 1000);\r\n }\r\n \r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n\r\n window.clearInterval(this.intervalId);\r\n } \r\n\r\n getDirectory() : Observable {\r\n let companyId = this.baseService.getCliniwebDirectoryCompanyId();\r\n\r\n return this.baseService.getCliniwebDirectory(companyId);\r\n }\r\n\r\n getUser() : Observable {\r\n return this.userService.getUserPersonLoggedIn().pipe(\r\n tap(() => {\r\n \r\n }),\r\n catchError((e => { \r\n this.baseService.handleServiceError(e, \"Error getting user\"); \r\n \r\n return of(null);\r\n })));\r\n }\r\n\r\n getDependents() : Observable{\r\n return this.userService.getUserDependents().pipe(\r\n tap(() => {\r\n \r\n }),\r\n catchError((e => { \r\n this.baseService.handleServiceError(e, \"Error getting dependents\"); \r\n \r\n return of([]);\r\n })));\r\n }\r\n\r\n getAppointments() : Observable {\r\n this.loading = true;\r\n\r\n return this.appointmentService.getFutureAppointments(this.locale.language).pipe(\r\n tap(() => {\r\n \r\n }),\r\n catchError((e => {\r\n this.baseService.handleServiceError(e, \"Error getting future appointment\"); \r\n \r\n return of([]);\r\n })));\r\n } \r\n\r\n refreshAppointments() {\r\n this.loading = true;\r\n\r\n this.appointmentService.clearAppointmentsCache();\r\n\r\n this.getAppointments().subscribe(apps => {\r\n this.appointments = apps;\r\n\r\n this.loading = false;\r\n });\r\n }\r\n\r\n onShowAll(){ \r\n this.showAll = true;\r\n this.appointmentsToShow = this.appointments;\r\n }\r\n\r\n appointmentTrackBy(index : number, item: PatientAppointment){\r\n return item.idSolicitud; \r\n } \r\n \r\n onNewAppointmentClick() {\r\n this.searchProvidersService.openSearch();\r\n } \r\n\r\n private sortByAppointmentState(): ((a: PatientAppointment, b: PatientAppointment) => number) | undefined {\r\n return (a1, a2) => {\r\n if (a1.idEstado != a2.idEstado) {\r\n // si la cita esta cancelada o no asistio va a lo ultimo\r\n if (a2.idEstado == 7)\r\n return -1;\r\n\r\n if (a1.idEstado == 7 || a1.idEstado == 28)\r\n return 1;\r\n }\r\n\r\n return 0;\r\n };\r\n }\r\n\r\n private checkFutureAppointmentTime() {\r\n if (!this.appointments || this.appointments.length == 0)\r\n return;\r\n\r\n this.appointments.forEach(app => {\r\n if (this.isAppointmentExpired(app)) {\r\n this.refreshAppointments();\r\n return;\r\n }\r\n });\r\n }\r\n\r\n private isAppointmentExpired(item : PatientAppointment) {\r\n let now = new Date().getTime();\r\n let appDate = new Date(item.fechaRequerido).getTime();\r\n\r\n return appDate <= now;\r\n }\r\n\r\n}\r\n\r\n\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{'shared.cliniwebPastAppointments.text1' | translate:locale.language}}\r\n \r\n {{ 'shared.cliniwebPastAppointments.text2' | translate:locale.language }}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ComponentLookup } from '../../../decorators/component-lookup.decorator';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\r\nimport { PatientAppointment } from 'src/app/shared/models/process/appointment.model';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { Directory } from 'src/app/shared/models/systems/directory.model';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { Observable, Subject, forkJoin, of } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { Dependent } from 'src/app/shared/models/people/dependent.model';\r\nimport { TimelineWrapperItem, TimelineWrapperItemType } from '../../timeline-list/timeline-list.component';\r\nimport { SearchProvidersService } from 'src/app/core/services/search-providers.service';\r\n\r\n@Component({\r\n selector: 'app-cliniweb-past-appointment',\r\n templateUrl: './cliniweb-past-appointments.component.html',\r\n styleUrls: ['./cliniweb-past-appointments.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('CliniwebPastAppointmentsComponent')\r\nexport class CliniwebPastAppointmentsComponent implements OnInit, OnDestroy, IControlComponent {\r\n data: FormComponentData; \r\n appointments : CliniwebTimelinePatientAppointment[]; \r\n inProgressState: string; \r\n loading = true;\r\n skeletonItems: string[] = [\"\", \"\"];\r\n directory: Directory; \r\n dependents: Dependent[]; \r\n loggedInUser: UserPerson;\r\n\r\n private ngUnsubscribe = new Subject();\r\n\r\n constructor(\r\n private appointmentService: AppointmentService, \r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n private translation: L10nTranslationService,\r\n public dialog: MatDialog,\r\n private messageBusService: MessageBusService,\r\n private baseService: BaseService,\r\n private userService: UserService,\r\n private searchProvidersService: SearchProvidersService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n let observables: Observable[] = [];\r\n \r\n this.loading = true;\r\n\r\n this.messageBusService.onAppointmentChangeReceived()\r\n .subscribe(appointments => {\r\n if (appointments.citasFuturas) {\r\n this.appointments = appointments.citasPasadas.map(app => new CliniwebTimelinePatientAppointment(app));\r\n }\r\n this.loading = false;\r\n }); \r\n\r\n observables.push(this.getDirectory());\r\n observables.push(this.getUser());\r\n observables.push(this.getDependents());\r\n observables.push(this.getAppointments());\r\n\r\n forkJoin(observables).subscribe(results => { \r\n this.directory = results[0] as Directory;\r\n this.loggedInUser = results[1] as UserPerson;\r\n this.dependents = results[2] as Dependent[];\r\n\r\n let appointments = results[3] as PatientAppointment[];\r\n this.appointments = appointments.map(app => new CliniwebTimelinePatientAppointment(app));\r\n\r\n this.loading = false;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n getDirectory() : Observable {\r\n let companyId = this.baseService.getCliniwebDirectoryCompanyId();\r\n\r\n return this.baseService.getCliniwebDirectory(companyId);\r\n }\r\n\r\n getUser() : Observable {\r\n return this.userService.getUserPersonLoggedIn().pipe(\r\n tap(() => {\r\n \r\n }),\r\n catchError((e => { \r\n this.baseService.handleServiceError(e, \"Error getting user\"); \r\n \r\n return of(null);\r\n })));\r\n }\r\n\r\n getDependents() : Observable{\r\n return this.userService.getUserDependents().pipe(\r\n tap(() => {\r\n \r\n }),\r\n catchError((e => { \r\n this.baseService.handleServiceError(e, \"Error getting dependents\"); \r\n \r\n return of([]);\r\n })));\r\n }\r\n\r\n getAppointments() : Observable {\r\n this.loading = true;\r\n\r\n return this.appointmentService.getPastAppointments(this.locale.language).pipe(\r\n tap(() => {\r\n \r\n }),\r\n catchError((e => {\r\n this.baseService.handleServiceError(e, \"Error getting appointments\"); \r\n \r\n return of([]);\r\n })));\r\n } \r\n\r\n appointmentTrackBy(index : number, item: PatientAppointment){\r\n return item.idSolicitud; \r\n } \r\n\r\n getAppointmentsToShow() {\r\n return this.appointments.map(a => a.appointment);\r\n } \r\n \r\n onNewAppointmentClick() {\r\n this.searchProvidersService.openSearch();\r\n }\r\n}\r\n\r\nexport class CliniwebTimelinePatientAppointment implements TimelineWrapperItem { \r\n appointment : PatientAppointment;\r\n\r\n constructor(appointment : PatientAppointment) {\r\n this.appointment = appointment;\r\n }\r\n \r\n getGroupKey() : number {\r\n return new Date(this.appointment.fechaInicio).getFullYear();\r\n }\r\n\r\n getDate() : Date { \r\n return new Date(this.appointment.fechaInicio);\r\n }\r\n\r\n getItemType(): TimelineWrapperItemType{\r\n let type : TimelineWrapperItemType;\r\n\r\n /*return this.appointment.idEstado == 7 || this.appointment.idEstado == 28 \r\n ? TimelineWrapperItemType.CANCELLED\r\n : TimelineWrapperItemType.CHECKED;*/\r\n\r\n if (this.appointment.idEstado == 7 || this.appointment.idEstado == 28)\r\n type = TimelineWrapperItemType.CANCELLED \r\n else \r\n type = TimelineWrapperItemType.CHECKED;\r\n\r\n return type;\r\n }\r\n\r\n showTime():boolean{\r\n return false;\r\n }\r\n\r\n showDate():boolean{\r\n return false;\r\n }\r\n}\r\n\r\n\r\n","
\r\n
{{ 'shared.cliniwebAppointmentTabs.text1' | translate:locale.language }}
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n {{ 'shared.cliniwebAppointmentTabs.text2' | translate:locale.language }} \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n {{ 'shared.cliniwebAppointmentTabs.text3' | translate:locale.language }} \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ComponentLookup } from '../../../decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\n\r\n@Component({\r\n selector: 'app-cliniweb-appointment-tabs',\r\n templateUrl: './cliniweb-appointment-tabs.component.html',\r\n styleUrls: ['./cliniweb-appointment-tabs.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('CliniwebAppointmentTabsComponent')\r\nexport class CliniwebAppointmentTabsComponent implements IControlComponent, OnInit {\r\n data: FormComponentData;\r\n\r\n constructor(\r\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n}","import { DoctorSearchResult } from \"../cdr/doctor-search-result.model\";\r\nimport { TextLanguage } from \"../people/text-language.model\";\r\nimport { ConceptDefaultModel } from \"./concept-default.model\";\r\nimport { LocationDefaultModel, LocationV2DefaultModel } from \"./location-default.model\";\r\n\r\nexport class SearchProvidersConfiguration{\r\n searchType: SearchProvidersType = SearchProvidersType.DEFAULT;\r\n searchParamMap: string;\r\n\r\n profileTypes:string = '1';\r\n \r\n titleMobile: TextLanguage[] = [];\r\n placeholderMobile: TextLanguage[] = [];\r\n \r\n profilesPlaceholderClosed: TextLanguage[] = [];\r\n profilesPlaceholderOpened: TextLanguage[] = [];\r\n profilesLabel: TextLanguage[] = [];\r\n profilesDefault: ConceptDefaultModel[] = [];\r\n \r\n showLocationsAutocomplete: boolean = true;\r\n locationsPlaceholderClosed: TextLanguage[] = [];\r\n locationsPlaceholderOpened: TextLanguage[] = [];\r\n locationsLabel: TextLanguage[];\r\n locationsDefault:LocationV2DefaultModel[] = [];\r\n locationsLikeCombo:boolean = false;\r\n \r\n showInsurersAutocomplete: boolean = false;\r\n insurersPlaceholderClosed: TextLanguage[] = [];\r\n insurersPlaceholderOpened: TextLanguage[] = [];\r\n insurersLabel: TextLanguage[] = [];\r\n insurersDefault: ConceptDefaultModel[] = [];\r\n insurersLikeCombo: boolean = true;\r\n \r\n constructor();\r\n constructor(obj: SearchProvidersConfiguration);\r\n constructor(obj?:any){\r\n\r\n if(obj){\r\n this.searchType = obj.searchType || SearchProvidersType.DEFAULT;\r\n this.searchParamMap = obj.searchParamMap || '';\r\n\r\n this.profileTypes = obj.profileTypes || '1';\r\n \r\n this.titleMobile = obj.titleMobile || [];\r\n this.placeholderMobile = obj.placeholderMobile || [];\r\n \r\n this.profilesPlaceholderClosed = obj.profilesPlaceholderClosed || [];\r\n this.profilesPlaceholderOpened = obj.profilesPlaceholderOpened || [];\r\n this.profilesLabel = obj.profilesLabel || [];\r\n this.profilesDefault = obj.profilesDefault || [];\r\n \r\n this.showLocationsAutocomplete = obj.showLocationsAutocomplete == undefined ? true : obj.showLocationsAutocomplete;\r\n this.locationsPlaceholderClosed = obj.locationsPlaceholderClosed || [];\r\n this.locationsPlaceholderOpened = obj.locationsPlaceholderOpened || [];\r\n this.locationsLabel = obj.locationsLabel || [];\r\n this.locationsDefault = obj.locationsDefault || [];\r\n this.locationsLikeCombo = obj.locationsLikeCombo == undefined ? false: obj.locationsLikeCombo;\r\n \r\n this.showInsurersAutocomplete = obj.showInsurersAutocomplete == undefined ? false : obj.showInsurersAutocomplete;\r\n this.insurersPlaceholderClosed = obj.insurersPlaceholderClosed || [];\r\n this.insurersPlaceholderOpened = obj.insurersPlaceholderOpened || [];\r\n this.insurersLabel = obj.insurersLabel || [];\r\n this.insurersDefault = obj.insurersDefault || [];\r\n this.insurersLikeCombo = obj.insurersLikeCombo == undefined ? true : obj.insurersLikeCombo;\r\n }\r\n }\r\n}\r\n\r\nexport enum SearchProvidersType{\r\n DEFAULT = 'default',\r\n POPUP = 'popup',\r\n WIDGET = 'widget'\r\n}\r\n\r\nexport enum SearchProvidersActionType{\r\n FOCUS_ON_PROVIDER = 1,\r\n FOCUS_ON_LOCATION = 2,\r\n FOCUS_ON_INSURANCE = 3,\r\n REMOVE_PROVIDER = 4,\r\n REMOVE_LOCATION = 5,\r\n REMOVE_INSURANCE = 6,\r\n REMOVE_ALL = 7\r\n}\r\n\r\nexport class DoctorSearchResultGroup {\r\n classId: number;\r\n className: string;\r\n results: DoctorSearchResult[];\r\n}\r\n\r\nexport class LocationSearchResultGroup {\r\n id: number;\r\n displayName: string;\r\n results: LocationSearchResultItem[];\r\n}\r\n\r\nexport class LocationSearchResultItem {\r\n id: number;\r\n nombre: string;\r\n url: string;\r\n icono?: string;\r\n}\r\n\r\nexport class InsuranceSearchResultGroup {\r\n id: number;\r\n displayName: string;\r\n results: InsuranceSearchResultItem[];\r\n}\r\n\r\nexport class InsuranceSearchResultItem{\r\n id: number;\r\n nombre: string;\r\n url: string;\r\n icono?: string;\r\n}","
\n \n
\n
\n
\n
\n \n {{ model.profilesPlaceholderClosed | i18nText:locale.language }}\n \n
\n {{ getPreviewProviderValue() }}\n \n
\n
\n
\n \n {{ model.locationsPlaceholderClosed | i18nText:locale.language }}\n \n
\n {{ getPreviewLocationValue() }}\n \n
\n
\n
\n \n {{ model.insurersPlaceholderClosed | i18nText:locale.language }}\n \n
\n {{insuranceObjectSelected.n_cc}}\n \n
\n
\n \n
\n
\n
\n
\n \n \n {{ model.placeholderMobile | i18nText:locale.language }}\n \n
\n {{ getSelectionTextMobile() }}\n \n
\n \n
\n
\n
\n\n
\n \n
\n \n
\n
\n \n \n \n \n
\n \n \n \n \n
\n \n \n {{'shared.searchResults.searchProvidersV2.noMatchesFound' | translate:locale.language}}\n \n \n
\n
\n \n
\n
\n \n
\n \n
\n
\n \n {{ lastestDoctor.nombreResponsableServicio }}\n
\n
\n \n
\n
\n
\n \n {{ lastestDoctor.nombreResponsableServicio }}\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n \n \n \n \n
\n \n
\n \n
\n \n {{result.descripcion}}\n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n
\n \n \n \n \n
\n \n
\n \n
\n \n {{'shared.searchResults.searchProvidersV2.noMatchesFound' | translate:locale.language}}\n \n \n \n
\n \n \n
\n
\n
\n
\n
\n\n \n \n \n \n
\n \n \n \n \n
\n \n
\n \n
\n\n
\n 0\"\n [ngClass]=\"{'label-hidden': !group.titulo }\">\n \n
0\">\n {{group.titulo}}\n \n
\n \n \n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n \n
\n
\n
\n
\n
","import { AfterContentChecked, ChangeDetectorRef, Component, ElementRef, HostListener, Inject, Input, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { ActivatedRouteSnapshot, Params, Router } from '@angular/router';\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\nimport { of, Subject } from 'rxjs';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { catchError, debounceTime, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { DoctorService } from 'src/app/core/services/doctors.service';\nimport { UtilsService } from 'src/app/core/services/utils.service';\nimport { ClassConcept } from 'src/app/shared/enums/class-concept.enum';\nimport { DoctorSearchResult } from 'src/app/shared/models/cdr/doctor-search-result.model';\nimport { PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\nimport { MessageBusService, ProviderSearchMessage } from 'src/app/core/services/message-bus.service';\nimport { TerritorialDivisionsService } from 'src/app/core/services/territorial-divisions.service';\nimport { TerritorialDivision } from 'src/app/shared/models/systems/territorial-division.model';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { ConceptDefaultModel } from 'src/app/shared/models/search-results/concept-default.model';\nimport { SearchQsParamMapModel, SearchQsParametersModel } from 'src/app/shared/models/search-results/search-parameters.model';\nimport { DOCUMENT } from '@angular/common';\nimport { SearchProvidersConfiguration, SearchProvidersType } from 'src/app/shared/models/search-results/search-providers-configuration.model';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { PublicProfileAvatarComponentModel } from '../../public-profile-avatar/public-profile-avatar.component';\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\nimport { AppointmentDoctor } from 'src/app/shared/models/people/appointment-doctor';\nimport { Platform } from '@angular/cdk/platform';\nimport { LocationV2DefaultModel } from 'src/app/shared/models/search-results/location-default.model';\nimport { ClinicalConceptService } from 'src/app/core/services/clinical-concept.service';\nimport { TextLanguage } from 'src/app/shared/models/people/text-language.model';\nimport { DirectoryFiltersItemsModel, DirectoryFiltersModel } from '../provider-filters/provider-filters-content/provider-filters-content.component';\nimport { ProfileFilterSearchResult, ProfileFilterSearchResultConcept, ProfileFilterSearchResultGroup } from 'src/app/shared/models/people/profile-filter-search-result.model';\n\n@Component({\n selector: 'app-search-providers-v2',\n templateUrl: './search-providers-v2.component.html',\n styleUrls: ['./search-providers-v2.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('SearchProvidersV2Component')\nexport class SearchProvidersV2Component implements OnInit, OnDestroy, AfterContentChecked , IControlComponent {\n data: any;\n\n @Input() model: SearchProvidersConfiguration = new SearchProvidersConfiguration(); \n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n companyName: string = \"\";\n language: string;\n searchCountry: TerritorialDivision;\n\n searchOpened: boolean = false;\n\n autocompleteOpen:boolean = false;\n loadingSearchProvider: boolean = false;\n searchProviderCtrl = new FormControl();\n filteredResults$: Observable;\n filteredResultsCount:number;\n providerSelected: DoctorSearchResult | null = null;\n\n highlightValue: string;\n\n locationAutocompleteOpen:boolean = false;\n loadingSearchLocation: boolean = false;\n searchLocationCtrl = new FormControl();\n filteredLocationResults$: Observable;\n filteredLocationResultsCount:number;\n locationObjectSelected: LocationSearchResultItem | null = null;\n locationLevels: string = \"1,2,3\";\n locationDefault: LocationV2DefaultModel | undefined = undefined;\n\n insuranceAutocompleteOpen: boolean = false;\n loadingSearchInsurance: boolean = false;\n searchInsuranceCtrl = new FormControl();\n filteredInsuranceResults$: Observable;\n filteredInsuranceResultsCount:number;\n insuranceObjectSelected: ProfileFilterSearchResultConcept | null = null;\n\n insuranceFilter: DirectoryFiltersItemsModel; \n providerSearchMessage: ProviderSearchMessage;\n insuranceUnfilteredResults: ProfileFilterSearchResultConcept[]; \n\n cityText:string;\n stateText:string;\n countryText:string;\n cityDefaultText:string;\n stateDefaultText:string;\n countryDefaultText: string;\n dontApplyInsuranceText:string;\n\n removingSelection:boolean = false;\n\n isMobile:boolean = false;\n fullsize: boolean = false;\n\n isAnonymous:boolean = true;\n\n mobileDelimiter: number = 800;\n\n maxLastestDoctorsToShow: number = 4;\n lastestDoctors: AppointmentDoctor[] = [];\n loadingLastestDoctors:boolean = false;\n lastestDoctorsIndex: number = 0;\n\n otherInsuranceComp: ConceptDefaultModel[] = [];\n qsParams: SearchQsParametersModel;\n\n @ViewChild('inputWrapperProvider') inputWrapperProvider: ElementRef;\n @ViewChild('searchInput') searchInput: ElementRef;\n @ViewChild('auto') matAutocomplete: MatAutocomplete;\n @ViewChild('searchInput', { read:MatAutocompleteTrigger }) autocompleteProviderTrigger: MatAutocompleteTrigger;\n\n @ViewChild('inputWrapperLocation') inputWrapperLocation: ElementRef;\n @ViewChild('searchLocationInput') searchLocationInput: ElementRef;\n @ViewChild('autoLocation') matAutocompleteLocation: MatAutocomplete;\n @ViewChild('searchLocationInput', { read:MatAutocompleteTrigger }) autocompleteLocationTrigger: MatAutocompleteTrigger;\n\n @ViewChild('inputWrapperInsurance') inputWrapperInsurance: ElementRef;\n @ViewChild('searchInsuranceInput') searchInsuranceInput: ElementRef;\n @ViewChild('autoInsurance') matAutocompleteInsurance: MatAutocomplete;\n @ViewChild('searchInsuranceInput', { read:MatAutocompleteTrigger }) autocompleteInsuranceTrigger: MatAutocompleteTrigger;\n\n constructor( \n private baseService: BaseService,\n private appointmentService: AppointmentService,\n private layoutService: LayoutService,\n private utilsService: UtilsService,\n private doctorService: DoctorService,\n private router: Router,\n private messageBusService: MessageBusService,\n private territorialDivisionsService: TerritorialDivisionsService,\n private publicProfileService: PublicProfileService,\n private translation: L10nTranslationService,\n private authService: AuthService,\n @Inject(DOCUMENT) private document: Document,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private cdref: ChangeDetectorRef,\n public platform: Platform,\n private clinicalConceptsService: ClinicalConceptService) {\n }\n\n ngAfterContentChecked(): void {\n this.cdref.detectChanges();\n }\n \n ngOnInit(): void {\n this.document.body.classList.add('search-providers-v2');\n this.isMobile = window.innerWidth <= this.mobileDelimiter;\n\n this.companyName = this.baseService.getCliniwebDirectoryCompanyName();\n this.language = this.baseService.getLanguage();\n\n this.parseControlData();\n\n this.configSearchByCountryApp();\n \n this.configSearchProviders();\n\n this.configSearchLocations();\n\n this.configSearchInsurers();\n\n this.initBySearchType();\n\n this.setDefaultsText();\n\n this.getDirectoryFilters();\n\n this.translation.onChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe({\n next: () => {\n this.setDefaultsText();\n }\n });\n\n this.messageBusService.onLoginCompleted()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg => {\n if (msg.user) {\n this.isAnonymous = false;\n } \n });\n\n this.messageBusService.onSendTerritorialDivisionCountry()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg => {\n this.configSearchByCountry(msg.country);\n \n this.setLocationDefaultByCountry();\n });\n\n this.authService.isLoggedInFull()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((result:boolean)=>{\n this.isAnonymous = !result;\n\n if(result){\n this.getLatestDoctors();\n } \n });\n\n this.messageBusService.onAppointmentChangeReceived()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n appointments => {\n\n this.lastestDoctors = appointments.doctores;\n },\n error => { this.baseService.handleServiceError(error, \"Error getting latest doctors\") } \n );\n\n // Subscribe to new search event\n this.messageBusService.onProviderSearch()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(message => {\n this.providerSearchMessage = message;\n\n this.toggleAutocompleteInsurance(message);\n });\n }\n\n ngOnDestroy():void{\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n this.document.body.classList.remove('search-providers-v2');\n }\n\n getParamMaps(): Params {\n const currentSnapshot: ActivatedRouteSnapshot = this.router.routerState.snapshot.root;\n return this.collectParams(currentSnapshot);\n }\n\n initBySearchType(){\n\n switch(this.model.searchType){\n case SearchProvidersType.DEFAULT:\n default:\n this.initFromParams();\n break;\n case SearchProvidersType.POPUP:\n this.initLikePopup();\n\n this.initEmptyProviderSearchMessage();\n break;\n case SearchProvidersType.WIDGET:\n this.initLikeWidget();\n\n this.initEmptyProviderSearchMessage();\n break;\n }\n }\n\n initLikePopup(){\n this.searchOpened = true;\n\n this.layoutService.overflowBodyDisabled();\n\n if(!this.isMobile){\n setTimeout(()=>{\n this.autocompleteProviderTrigger.openPanel();\n this.searchInput.nativeElement.focus();\n }, 100);\n }\n }\n\n initLikeWidget(){\n // this.searchOpened = true;\n\n this.mobileDelimiter = 600;\n\n this.isMobile = window.innerWidth <= this.mobileDelimiter;\n\n this.document.body.classList.add('widget-mode');\n }\n\n initFromParams(){\n let params = this.getParamMaps();\n let _paramMap = new SearchQsParamMapModel();\n\n _paramMap.param1 = params['param1'] || '';\n _paramMap.param2 = params['param2'] || '';\n _paramMap.param3 = params['param3'] || '';\n _paramMap.param4 = params['param4'] || '';\n _paramMap.param5 = params['param5'] || '';\n\n this.qsParams = new SearchQsParametersModel();\n \n this.qsParams.t = params['t'] || '';\n this.qsParams.filtros = params['filtros'] || '';\n this.qsParams.idC = params['idC'] || '';\n this.qsParams.idTc = params['idTc'] || '';\n\n this.populateDropdownByParams(_paramMap, this.qsParams);\n }\n\n configSearchProviders(){\n this.filteredResults$ = this.searchProviderCtrl.valueChanges\n .pipe(\n tap(()=>{ \n this.loadingSearchProvider = true;\n }),\n debounceTime(300),\n startWith(''),\n switchMap(value => \n this.filterProviders(value)\n .pipe(\n map(results => {\n this.loadingSearchProvider = false;\n\n this.highlightValue = value;\n\n this.filteredResultsCount = results.length;\n \n return this.groupProviderResults(results);\n })\n )\n )\n );\n }\n\n configSearchLocations(){\n if(!this.model.showLocationsAutocomplete)\n return;\n\n this.setLocationDefaultByCountry();\n\n if(this.model.locationsLikeCombo){\n this.filteredLocationResults$ = this.searchLocationCtrl.valueChanges\n .pipe(\n tap(()=>{ \n this.loadingSearchLocation = true;\n }),\n debounceTime(0),\n startWith(''),\n switchMap(value => {\n\n let options = this.filterDefaultLocations(value);\n\n this.loadingSearchLocation = false;\n this.highlightValue = value;\n this.filteredLocationResultsCount = options.length;\n\n return of(options);\n })\n );\n }\n else{\n\n this.filteredLocationResults$ = this.searchLocationCtrl.valueChanges\n .pipe(\n tap(()=>{ \n this.loadingSearchLocation = true;\n }),\n debounceTime(0),\n startWith(''),\n switchMap(value =>\n this.filterLocations(value)\n .pipe(\n map(results => {\n this.loadingSearchLocation = false;\n\n this.highlightValue = value;\n\n this.filteredLocationResultsCount = results.length;\n\n return results;\n })\n )\n )\n );\n }\n } \n\n filterDefaultLocations(value:any):LocationSearchResultGroup[]{\n\n let optionsGrouped = this.getLocationSearchGroupByDefault();\n\n if(value){\n\n const textValue = (typeof value === 'string')\n ? value.toLowerCase()\n : value.nombre.toLowerCase();\n\n optionsGrouped = optionsGrouped.filter(og => og.results.filter(r => r.nombre.toLowerCase().includes(textValue)).length > 0);\n\n optionsGrouped.forEach(og => {\n og.results = og.results.filter(r => r.nombre.toLowerCase().includes(textValue));\n });\n\n return optionsGrouped;\n }\n else{\n return optionsGrouped;\n }\n } \n\n filterProviders(value:any):Observable {\n\n if(value instanceof DoctorSearchResult){\n return of([value]);\n }\n else if(value){\n value = value.trim(); \n }\n \n if(!this.autocompleteOpen)\n return of([]);\n\n if((!value || value == '') && this.model.profilesDefault.length > 0){\n return of(this.getProfilesDefault());\n }\n else{\n\n let _profileSearchTypes = this.model.profileTypes.split(\",\").map(pt => +pt);\n\n return this.doctorService.searchDoctors(this.locale.language, value, this.companyName, _profileSearchTypes);\n }\n }\n\n filterLocations(value:any):Observable{\n if(typeof value === 'string'){\n value = value.trim(); \n }\n\n if(!this.locationAutocompleteOpen)\n return of([]);\n\n if((!value || value == '') && this.model.locationsDefault != null){\n return of(this.getLocationSearchGroupByDefault());\n }\n else{\n return this.getLocationsByLevels(value);\n }\n }\n\n removeSearchProviderSelected(){\n this.removingSelection = true;\n\n this.searchProviderCtrl.reset('');\n\n if(this.searchInput){\n this.searchInput.nativeElement.value = '';\n }\n\n this.providerSelected = null;\n\n if(this.searchOpened && this.model.profilesDefault.length > 0) {\n setTimeout(()=>{\n this.autocompleteOpen = true;\n this.autocompleteProviderTrigger.openPanel();\n this.autocompleteProviderTrigger._onChange('');\n this.autocompleteProviderTrigger.updatePosition();\n }, 100);\n }\n\n setTimeout(() => {\n this.removingSelection = false;\n }, 100);\n\n if(this.isSearchDefault()){\n this.fireSearchEvent();\n }\n }\n\n removeSearchLocationSelected(){\n this.removingSelection = true;\n\n this.searchLocationCtrl.reset('');\n\n if(this.searchLocationInput){\n this.searchLocationInput.nativeElement.value = '';\n }\n\n this.locationObjectSelected = null;\n\n if(this.searchOpened && this.model.locationsDefault != null) {\n setTimeout(()=>{\n this.locationAutocompleteOpen = true;\n this.autocompleteLocationTrigger.openPanel();\n this.autocompleteLocationTrigger._onChange('');\n this.autocompleteLocationTrigger.updatePosition();\n }, 100);\n }\n\n setTimeout(() => {\n this.removingSelection = false;\n }, 100);\n\n if(this.isSearchDefault()){\n this.fireSearchEvent();\n }\n }\n\n removeSearchInsuranceSelected(){\n \n this.removingSelection = true;\n\n this.searchInsuranceCtrl.reset('');\n\n if(this.searchInsuranceInput){\n this.searchInsuranceInput.nativeElement.value = '';\n }\n\n this.insuranceObjectSelected = null;\n\n //if(this.searchOpened && this.model.insurersDefault != null) {\n if (this.searchOpened && this.insuranceUnfilteredResults != null) {\n setTimeout(()=>{\n this.insuranceAutocompleteOpen = true;\n this.autocompleteInsuranceTrigger.openPanel();\n this.autocompleteInsuranceTrigger._onChange('');\n this.autocompleteInsuranceTrigger.updatePosition();\n }, 100);\n }\n\n setTimeout(() => {\n this.removingSelection = false;\n }, 100);\n\n if(this.isSearchDefault()){\n this.fireSearchEvent();\n }\n } \n\n groupProviderResults(results: DoctorSearchResult[]): DoctorSearchResultGroup[]{\n let _resultGroup:DoctorSearchResultGroup[] = [];\n\n let _resultsGrouped = this.utilsService.groupBy(results, sd => sd.claseId);\n\n _resultsGrouped.forEach((value: DoctorSearchResult[], key: number)=>{\n let resultGroupItem = new DoctorSearchResultGroup();\n\n resultGroupItem.classId = key;\n resultGroupItem.className = this.getOptgroupLabelProvider(value[0].clase);\n resultGroupItem.results = value;\n\n _resultGroup.push(resultGroupItem);\n });\n\n return _resultGroup;\n }\n\n getOptgroupLabelProvider(text:string){\n let optgroupFocusAreaText:string = this.translation.translate('shared.searchResults.searchProvidersV2.optgroupFocusArea');\n let optgroupDoctorText: string = this.translation.translate('shared.searchResults.searchProvidersV2.optgroupDoctor');\n\n switch(text.toLocaleLowerCase()){\n case optgroupFocusAreaText:\n return this.translation.translate('shared.searchResults.searchProvidersV2.optgroupExpertIn');\n case optgroupDoctorText:\n return this.translation.translate('shared.searchResults.searchProvidersV2.optgroupDoctors');\n default:\n return text;\n }\n }\n\n profileSelected(event: MatAutocompleteSelectedEvent): void {\n this.loadingSearchProvider = false;\n\n let _optionSelected:DoctorSearchResult = event.option.value;\n let _clase = _optionSelected.clase.toLowerCase();\n\n if(_clase == 'doctor' || _clase == 'proveedor'){\n let url = this.publicProfileService.getPublicProfileUrl(_optionSelected.url);\n \n this.triggerOpenPublicProfileByType(url);\n }\n else {\n this.providerSelected = _optionSelected;\n\n if(this.isMobile || this.fullsize){\n this.searchInput.nativeElement.blur();\n }\n else if (this.model.showLocationsAutocomplete){\n setTimeout(()=>{\n this.autocompleteLocationTrigger.openPanel();\n this.searchLocationInput.nativeElement.focus();\n }, 100);\n }\n else if(this.model.showInsurersAutocomplete){\n setTimeout(()=>{\n this.autocompleteInsuranceTrigger.openPanel();\n this.searchInsuranceInput.nativeElement.focus();\n }, 100);\n }\n else {\n this.fireSearchEvent();\n this.closeSearch();\n }\n }\n }\n\n gotoProfile(doctor: AppointmentDoctor){\n this.autocompleteOpen = false;\n this.autocompleteProviderTrigger.closePanel();\n \n let url = this.publicProfileService.getPublicProfileUrl(doctor.identificadorPerfilPublico);\n \n this.triggerOpenPublicProfileByType(url);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.isMobile = event.target.innerWidth <= this.mobileDelimiter;\n }\n\n @HostListener('scroll', ['$event'])\n onScroll(e: Event) {\n this.searchInputBlur(this.searchInput.nativeElement);\n this.searchInputBlur(this.searchLocationInput.nativeElement);\n this.searchInputBlur(this.searchInsuranceInput.nativeElement);\n }\n\n locationSelected(event: MatAutocompleteSelectedEvent): void {\n this.loadingSearchLocation = false;\n\n let _optionSelected:LocationSearchResultItem = event.option.value;\n\n this.locationObjectSelected = _optionSelected;\n\n if(this.isMobile || this.fullsize){\n this.searchLocationInput.nativeElement.blur();\n }\n else if(this.model.showInsurersAutocomplete){\n setTimeout(()=>{\n this.autocompleteInsuranceTrigger.openPanel();\n this.searchInsuranceInput.nativeElement.focus();\n }, 100);\n }\n else {\n this.fireSearchEvent();\n this.closeSearch();\n }\n }\n\n insuranceSelected(event: MatAutocompleteSelectedEvent): void {\n this.loadingSearchInsurance = false;\n\n let _optionSelected:ProfileFilterSearchResultConcept = event.option.value;\n\n this.insuranceObjectSelected = _optionSelected;\n\n if(this.isMobile || this.fullsize){\n this.searchInsuranceInput.nativeElement.blur();\n }\n else{\n this.fireSearchEvent();\n this.closeSearch();\n }\n }\n\n autoCompleteProviderDisplayWith(item: DoctorSearchResult){\n return item \n ? item.nombre \n : \"\";\n }\n\n autoCompleteLocationDisplayWith(item: TerritorialDivision){\n return item \n ? item.nombre \n : \"\";\n }\n\n autoCompleteInsuranceDisplayWith(item: ProfileFilterSearchResultConcept){\n return item \n ? item.n_cc \n : \"\";\n }\n\n onKeydownInputSearch($event: KeyboardEvent){\n if($event.key !== 'Enter'){\n this.providerSelected = null;\n }\n }\n\n onKeydownInputLocationSearch($event: KeyboardEvent){\n if($event.key !== 'Enter'){\n this.locationObjectSelected = null;\n }\n }\n\n onKeydownInputInsuranceSearch($event: KeyboardEvent){\n if($event.key !== 'Enter'){\n this.insuranceObjectSelected = null;\n }\n }\n\n onFocusInputSearch(){\n\n this.autocompleteOpen = true;\n\n // ejecutar la busqueda del autocomplete si el input tiene un texto\n if(this.searchInput.nativeElement.value){\n this.autocompleteProviderTrigger._onChange(this.searchInput.nativeElement.value);\n }\n // si no tiene texto y valores por defecto, se agrega un timeout para que reposicione el dropdown\n else if(this.model.profilesDefault.length > 0) {\n setTimeout(()=>{\n this.autocompleteProviderTrigger._onChange('');\n this.autocompleteProviderTrigger.updatePosition();\n }, 100);\n }\n }\n\n onFocusInputLocationSearch(){\n this.locationAutocompleteOpen = true;\n\n // ejecutar la busqueda del autocomplete si el input tiene un texto\n if(this.searchLocationInput.nativeElement.value){\n this.autocompleteLocationTrigger._onChange(this.searchLocationInput.nativeElement.value);\n }\n // si no tiene texto y valores por defecto, se agrega un timeout para que reposicione el dropdown\n else if(this.model.locationsDefault != null) {\n setTimeout(()=>{\n this.autocompleteLocationTrigger._onChange('');\n this.autocompleteLocationTrigger.updatePosition();\n }, 100);\n }\n\n // ajuste para IOS\n if(this.isMobile){\n setTimeout(() => {\n window.scroll(0,0);\n }, 200);\n }\n } \n\n onBlurInputSearch(){\n if(this.isMobile || this.lastestDoctors.length > 0)\n return;\n\n this.autocompleteOpen = false;\n\n if(!this.searchInput.nativeElement.value){\n this.searchProviderCtrl.setValue(null);\n this.providerSelected = null;\n }\n }\n\n onBlurInputLocationSearch(){\n\n if(this.isMobile)\n return;\n\n setTimeout(() => {\n \n this.locationAutocompleteOpen = false;\n\n if(!this.searchLocationInput.nativeElement.value){\n this.searchLocationCtrl.setValue(null);\n this.locationObjectSelected = null;\n }\n }, 100);\n\n }\n \n onBlurInputInsuranceSearch(){\n if(this.isMobile)\n return;\n \n setTimeout(() => {\n this.insuranceAutocompleteOpen = false;\n\n if(!this.searchInsuranceInput.nativeElement.value){\n this.searchInsuranceCtrl.setValue(null);\n this.insuranceObjectSelected = null;\n }\n }, 100);\n }\n\n onCancelMobile(){\n event?.stopPropagation();\n\n this.autocompleteOpen = false;\n this.locationAutocompleteOpen = false;\n this.insuranceAutocompleteOpen = false;\n this.autocompleteProviderTrigger.closePanel();\n this.autocompleteLocationTrigger.closePanel();\n this.autocompleteInsuranceTrigger.closePanel();\n this.searchInputBlur(this.searchInput.nativeElement);\n this.searchInputBlur(this.searchLocationInput.nativeElement);\n this.searchInputBlur(this.searchInsuranceInput.nativeElement);\n }\n\n onClickSearchTextMobile(){\n this.autocompleteOpen = false;\n this.autocompleteProviderTrigger.closePanel();\n }\n\n autocompleteOpened():void{\n if(this.isMobile)\n setTimeout(() => {\n this.matAutocomplete.panel.nativeElement.classList.add('opened');\n this.inputWrapperProvider.nativeElement.classList.add('opened');\n }, 300);\n\n this.autocompleteOpen = true;\n\n if(!this.searchOpened)\n this.sendMessageIframeResizeOpen();\n }\n\n autocompleteClosed() {\n if(this.isMobile && this.removingSelection)\n return;\n\n if(this.isMobile){\n this.matAutocomplete.panel.nativeElement.classList.remove('opened');\n this.inputWrapperProvider.nativeElement.classList.remove('opened');\n }\n\n this.autocompleteOpen = false;\n this.searchInputBlur(this.searchInput.nativeElement);\n\n if(!this.isMobile && !this.searchOpened && !(this.locationAutocompleteOpen && this.insuranceAutocompleteOpen))\n this.sendMessageIframeResizeClose();\n }\n\n autocompleteLocationOpened():void{\n if(this.isMobile){ \n setTimeout(() => {\n this.matAutocompleteLocation.panel.nativeElement.classList.add('opened');\n this.inputWrapperLocation.nativeElement.classList.add('opened');\n }, 300);\n }\n\n this.locationAutocompleteOpen = true;\n\n if(!this.searchOpened)\n this.sendMessageIframeResizeOpen();\n }\n\n autocompleteLocationClosed() {\n if(this.isMobile && this.removingSelection)\n return;\n\n if(this.isMobile){\n this.matAutocompleteLocation.panel.nativeElement.classList.remove('opened');\n this.inputWrapperLocation.nativeElement.classList.remove('opened');\n }\n \n this.locationAutocompleteOpen = false;\n this.searchInputBlur(this.searchLocationInput.nativeElement);\n\n if(!this.isMobile && !this.searchOpened && !(this.autocompleteOpen && this.insuranceAutocompleteOpen))\n this.sendMessageIframeResizeClose();\n }\n\n autocompleteInsuranceOpened():void{\n\n if(this.isMobile)\n setTimeout(() => {\n this.matAutocompleteInsurance.panel.nativeElement.classList.add('opened');\n this.inputWrapperInsurance.nativeElement.classList.add('opened');\n }, 300);\n\n this.insuranceAutocompleteOpen = true;\n\n if(!this.searchOpened)\n this.sendMessageIframeResizeOpen();\n\n this.searchInputBlur(this.searchInsuranceInput.nativeElement);\n }\n\n autocompleteInsuranceClosed() {\n if(this.isMobile && this.removingSelection)\n return;\n\n if(this.isMobile){\n this.matAutocompleteInsurance.panel.nativeElement.classList.remove('opened');\n this.inputWrapperInsurance.nativeElement.classList.remove('opened');\n }\n \n this.insuranceAutocompleteOpen = false;\n\n if(!this.isMobile && !this.searchOpened && !(this.locationAutocompleteOpen && this.autocompleteOpen))\n this.sendMessageIframeResizeClose();\n }\n\n showIconDropdownOption(item:DoctorSearchResult){\n return item.claseId == ClassConcept.ESPECIALIDAD\n || item.claseId == ClassConcept.DIAGNOSTICO\n || item.claseId == ClassConcept.AREAS_DE_ENFOQUE\n || item.claseId == ClassConcept.PROCEDIMIENTO;\n }\n\n getIconClassNameDropdownOption(item:DoctorSearchResult){\n let iconClassName = 'phr-iconset-';\n\n switch(item.claseId){\n case ClassConcept.ESPECIALIDAD:\n iconClassName += 'estetoscopio';\n break;\n case ClassConcept.DIAGNOSTICO:\n iconClassName += 'info-general2';\n break;\n case ClassConcept.AREAS_DE_ENFOQUE:\n iconClassName += 'medal';\n break;\n case ClassConcept.PROCEDIMIENTO:\n iconClassName += 'procedimientos';\n break;\n default:\n break;\n }\n\n return iconClassName;\n }\n\n showAvatarDropdownOption(item:DoctorSearchResult){\n return item.claseId == 0;\n }\n\n showDescriptionDropdownOption(item:DoctorSearchResult){\n return item.claseId == 0;\n }\n\n isDoctor(item:DoctorSearchResult) {\n return item.tipoPerfilPublico == PublicProfileType.Doctor;\n }\n\n getProfileTypeIconClassName(item:DoctorSearchResult){\n\n let profileType = item.tipoPerfilPublico;\n let className: string = 'phr-iconset-';\n\n switch(profileType){\n case PublicProfileType.Doctor:\n default:\n className += 'estetoscopio';\n break;\n case PublicProfileType.Farmacia:\n className += 'farmacia';\n break;\n case PublicProfileType.Clinica:\n className += 'hospital';\n break;\n case PublicProfileType.Fisioterapia:\n className += 'fisioterapia';\n break;\n case PublicProfileType.Laboratorio:\n className += 'laboratorios';\n break;\n case PublicProfileType.CentroDeImagenes:\n className += 'imagenologia';\n break; \n case PublicProfileType.ServiciosOdontologicos:\n className += 'odontologia';\n break;\n case PublicProfileType.Opticas:\n className += 'open-eye';\n break;\n }\n\n return className;\n }\n\n onClickSearchButton(){\n event?.stopPropagation();\n\n this.closeSearch();\n this.fireSearchEvent();\n }\n \n getPlaceholderProvider() {\n let result = '';\n\n if (this.model) {\n if (this.isMobile && this.model.profilesLabel) {\n if (this.autocompleteOpen == true) \n result = this.layoutService.getTextByLanguage(this.model.profilesPlaceholderOpened, this.locale.language);\n else \n result = this.layoutService.getTextByLanguage(this.model.profilesLabel, this.locale.language);\n } \n else if (!this.isMobile && this.model.profilesPlaceholderOpened)\n result = this.layoutService.getTextByLanguage(this.model.profilesPlaceholderOpened, this.locale.language); \n }\n\n /*return this.model && this.model.profilesPlaceholderOpened \n ? this.layoutService.getTextByLanguage(this.model.profilesPlaceholderOpened, this.locale.language)\n : '';*/\n \n return result;\n }\n\n getPlaceholderLocation(){\n let result = '';\n let optionalText = \" \" + this.translation.translate('shared.searchResults.searchProvidersV2.optionalText');\n\n if (this.model) {\n if (this.isMobile && this.model.locationsLabel) {\n if (this.locationAutocompleteOpen == true)\n result = this.layoutService.getTextByLanguage(this.model.locationsPlaceholderOpened, this.locale.language);\n else\n result = this.layoutService.getTextByLanguage(this.model.locationsLabel, this.locale.language) + optionalText;\n }\n else if (!this.isMobile && this.model.locationsPlaceholderOpened)\n result = this.layoutService.getTextByLanguage(this.model.locationsPlaceholderOpened, this.locale.language); \n }\n\n return result;\n\n /*return this.model && this.model.locationsPlaceholderOpened \n ? this.layoutService.getTextByLanguage(this.model.locationsPlaceholderOpened, this.locale.language)\n : '';*/\n }\n\n showPreviewProviderPlaceholder(){\n return this.providerSelected == null \n && !(this.searchInput \n && this.searchInput.nativeElement \n && this.searchInput.nativeElement.value);\n }\n\n showPreviewProviderValue(){\n return this.providerSelected != null \n || (this.searchInput \n && this.searchInput.nativeElement \n && this.searchInput.nativeElement.value);\n }\n\n getPreviewProviderValue(){\n return this.providerSelected \n ? this.providerSelected.nombre \n : this.searchInput.nativeElement.value;\n }\n\n showPreviewLocationPlaceholder(){\n return this.locationObjectSelected == null \n && !(this.searchLocationInput \n && this.searchLocationInput.nativeElement \n && this.searchLocationInput.nativeElement.value);\n }\n\n showPreviewLocationValue(){\n return this.locationObjectSelected != null \n || (this.searchLocationInput \n && this.searchLocationInput.nativeElement \n && this.searchLocationInput.nativeElement.value);\n }\n\n showButtonRemoveProvider(){\n return this.providerSelected\n || (this.searchInput \n && this.searchInput.nativeElement \n && this.searchInput.nativeElement.value);\n }\n\n showButtonRemoveLocation(){\n return this.locationObjectSelected\n || (this.searchLocationInput \n && this.searchLocationInput.nativeElement \n && this.searchLocationInput.nativeElement.value);\n }\n\n showHeaderMobile(){\n return !this.autocompleteOpen && !this.locationAutocompleteOpen && !this.insuranceAutocompleteOpen;\n }\n\n getPreviewLocationValue(){\n return this.locationObjectSelected \n ? this.locationObjectSelected.nombre \n : this.searchLocationInput.nativeElement.value;\n }\n\n onFocusProvider(){\n this.openSearch();\n\n setTimeout(()=>{\n this.autocompleteProviderTrigger.openPanel();\n this.searchInput.nativeElement.focus();\n }, 100);\n }\n\n clearProviderSelected(){\n this.removeSearchProviderSelected();\n\n this.onFocusProvider();\n }\n\n sendMessageIframeResizeOpen(){\n\n this.fullsize = this.isMobile;\n\n var message = this.isMobile\n ? { height: \"100vh\", fullsize: true }\n : { height: \"600px\" };\n\n window.parent.postMessage(message, '*');\n }\n\n sendMessageIframeResizeClose(){\n var message = this.isMobile\n ? { height: \"100px\", fullsize: false }\n : { height: \"100px\" };\n\n window.parent.postMessage(message, '*');\n }\n\n onFocusLocation(){\n this.openSearch();\n\n setTimeout(()=>{\n this.autocompleteLocationTrigger.openPanel();\n this.searchLocationInput.nativeElement.focus();\n }, 100);\n\n this.sendMessageIframeResizeOpen();\n }\n\n clearLocationSelected(){\n this.removeSearchLocationSelected();\n\n this.onFocusLocation();\n }\n\n onFocusInsurance(){\n this.openSearch();\n\n setTimeout(()=>{\n this.autocompleteInsuranceTrigger.openPanel();\n this.searchInsuranceInput.nativeElement.focus();\n }, 100); \n }\n\n clearInsuranceSelected(){\n this.removeSearchInsuranceSelected();\n\n this.onFocusInsurance();\n }\n\n clearSearchSelected(){\n // this.openSearch();\n\n this.searchProviderCtrl.reset('');\n this.searchLocationCtrl.reset('');\n this.searchInsuranceCtrl.reset('');\n\n if(this.searchInput){\n this.searchInput.nativeElement.value = '';\n }\n\n if(this.searchLocationInput){\n this.searchLocationInput.nativeElement.value = '';\n }\n\n if(this.searchInsuranceInput){\n this.searchInsuranceInput.nativeElement.value = '';\n }\n\n this.providerSelected = null;\n this.locationObjectSelected = null;\n this.insuranceObjectSelected = null;\n\n if(this.isSearchDefault())\n this.fireSearchEvent();\n }\n\n isPopup(){\n return this.model.searchType == SearchProvidersType.POPUP;\n }\n\n isWidget(){\n return this.model.searchType == SearchProvidersType.WIDGET;\n }\n\n isSearchDefault(){\n return this.model.searchType == SearchProvidersType.DEFAULT;\n }\n\n openSearch(){\n this.searchOpened = true;\n\n this.document.body.classList.add('search-opened');\n\n this.layoutService.overflowBodyDisabled();\n\n this.sendMessageIframeResizeOpen();\n }\n\n onClickMobilePreview(){\n this.openSearch();\n\n if(!this.isMobile){\n\n setTimeout(()=>{\n this.autocompleteProviderTrigger.openPanel();\n this.searchInput.nativeElement.focus();\n }, 100);\n }\n }\n\n closeDropdownProvider(){\n this.autocompleteOpen = false;\n this.autocompleteProviderTrigger.closePanel();\n }\n\n closeDropdownLocation(){\n this.locationAutocompleteOpen = false;\n this.autocompleteLocationTrigger.closePanel();\n }\n\n closeDropdownInsurance(){\n this.insuranceAutocompleteOpen = false;\n this.autocompleteInsuranceTrigger.closePanel();\n }\n\n closeSearch(){\n this.searchOpened = false;\n\n this.document.body.classList.remove('search-opened');\n\n this.layoutService.overflowBodyEnabled();\n\n if(this.model.searchType == SearchProvidersType.POPUP){\n this.document.body.classList.remove('search-providers-v2');\n } \n\n this.autocompleteOpen = false;\n this.autocompleteProviderTrigger.closePanel();\n\n if(this.model.showLocationsAutocomplete){\n this.locationAutocompleteOpen = false;\n this.autocompleteLocationTrigger.closePanel();\n }\n\n if(this.model.showInsurersAutocomplete){\n this.insuranceAutocompleteOpen = false;\n this.autocompleteInsuranceTrigger.closePanel();\n }\n\n this.sendMessageIframeResizeClose();\n }\n\n showSearchPlaceholderMobile(){\n return this.providerSelected == null \n && !(this.searchInput && this.searchInput.nativeElement && this.searchInput.nativeElement.value)\n && (!this.model.showLocationsAutocomplete || this.locationObjectSelected == null)\n && (!this.model.showInsurersAutocomplete || this.insuranceObjectSelected == null);\n }\n\n getSelectionTextMobile(){\n let result = '';\n \n if(this.providerSelected){\n result += this.providerSelected.nombre;\n }\n else if(this.searchInput && this.searchInput.nativeElement && this.searchInput.nativeElement.value){\n result += this.searchInput.nativeElement.value;\n }\n \n if(this.locationObjectSelected){\n result = result \n ? result + ', ' + this.locationObjectSelected.nombre\n : this.locationObjectSelected.nombre;\n }\n\n if(this.insuranceObjectSelected){\n result = result \n ? result + ', ' + this.insuranceObjectSelected.n_cc\n : this.insuranceObjectSelected.n_cc; \n }\n return result;\n }\n\n getPlaceholderInsurance() {\n let result = '';\n let optionalText = \" \" + this.translation.translate('shared.searchResults.searchProvidersV2.optionalText');\n\n if (this.model) {\n if (this.isMobile && this.model.insurersLabel) {\n /*if (this.insuranceAutocompleteOpen == true)\n result = this.layoutService.getTextByLanguage(this.model.insurersPlaceholderOpened, this.locale.language);\n else \n result = this.layoutService.getTextByLanguage(this.model.insurersLabel, this.locale.language) + optionalText;*/\n \n result = this.layoutService.getTextByLanguage(this.model.insurersLabel, this.locale.language) + optionalText;\n }\n else if (!this.isMobile && this.model.insurersPlaceholderOpened)\n result = this.layoutService.getTextByLanguage(this.model.insurersPlaceholderOpened, this.locale.language); \n }\n\n return result;\n\n /*return this.model && this.model.insurersPlaceholderOpened \n ? this.layoutService.getTextByLanguage(this.model.insurersPlaceholderOpened, this.locale.language)\n : '';*/\n }\n\n getAvatarModel(item:DoctorSearchResult) : PublicProfileAvatarComponentModel {\n var avatarModel = new PublicProfileAvatarComponentModel();\n\n avatarModel.personId = item.idPersona;\n avatarModel.avatarUrl = item.urlImagen;\n avatarModel.fullName = item.nombre;\n avatarModel.sex = item.sexo;\n avatarModel.profileType = item.tipoPerfilPublico; \n avatarModel.useAvatarPadding = false;\n\n return avatarModel;\n }\n\n getAvatarModelByLastestDoctor(item:AppointmentDoctor) : PublicProfileAvatarComponentModel {\n var avatarModel = new PublicProfileAvatarComponentModel();\n\n avatarModel.personId = item.idResponsableServicio;\n avatarModel.avatarUrl = item.urlAvatarResponsableServicio;\n avatarModel.fullName = item.nombreResponsableServicio;\n avatarModel.sex = item.sexoResponsableServicio;\n avatarModel.profileType = PublicProfileType.Doctor;\n\n return avatarModel;\n }\n\n prevLastestDoctors(){\n if (this.lastestDoctorsIndex > 0) {\n this.lastestDoctorsIndex -= this.maxLastestDoctorsToShow;\n }\n }\n\n nextLastestDoctors(){\n if (this.lastestDoctorsIndex + this.maxLastestDoctorsToShow < this.lastestDoctors.length) {\n this.lastestDoctorsIndex += this.maxLastestDoctorsToShow;\n }\n }\n\n showLastestDoctors(){\n return (this.loadingLastestDoctors || this.lastestDoctors.length > 0) && this.searchInput && !this.searchInput.nativeElement.value;\n }\n\n showSearchTextOption(){\n return this.providerSelected == null \n && this.searchInput \n && this.searchInput.nativeElement \n && this.searchInput.nativeElement.value\n && this.filteredResultsCount > 0;\n }\n\n getSearchTextOption(){\n return this.searchInput \n && this.searchInput.nativeElement \n && this.searchInput.nativeElement.value\n ? this.searchInput.nativeElement.value\n : \"\";\n }\n\n private parseControlData(){\n if(this.data && this.data.valor){\n try {\n var asd = JSON.parse(this.data.valor);\n\n this.model = new SearchProvidersConfiguration(JSON.parse(this.data.valor));\n } catch (ex) {} \n } \n }\n\n private populateDropdownByParams(paramMap:SearchQsParamMapModel, qsParams: SearchQsParametersModel){\n if(paramMap.param1){\n let _locationObjectSelected = new LocationSearchResultItem();\n\n if(paramMap.param1 == \"texto\"){\n this.searchProviderCtrl.setValue({ nombre: qsParams.t });\n\n // carga de dropdown localidad\n if(paramMap.param4){\n _locationObjectSelected.url = `${paramMap.param2}/${paramMap.param3}/${paramMap.param4}`;\n _locationObjectSelected.nombre = paramMap.param4.replace(/-/g, ' ');\n }\n else if(paramMap.param3){\n _locationObjectSelected.url = `${paramMap.param2}/${paramMap.param3}`;\n _locationObjectSelected.nombre = paramMap.param3.replace(/-/g, ' ');\n }\n else if(paramMap.param2){\n _locationObjectSelected.url = `${paramMap.param2}`;\n _locationObjectSelected.nombre = paramMap.param2.replace(/-/g, ' ');\n }\n }\n // caso de que se selecciono localidad y el dropdown de proveedores no.\n else if(paramMap.param1 == \"todos\"){\n if(paramMap.param4){\n _locationObjectSelected.url = `${paramMap.param2}/${paramMap.param3}/${paramMap.param4}`;\n _locationObjectSelected.nombre = paramMap.param4.replace(/-/g, ' ');\n }\n else if(paramMap.param3){\n _locationObjectSelected.url = `${paramMap.param2}/${paramMap.param3}`;\n _locationObjectSelected.nombre = paramMap.param3.replace(/-/g, ' ');\n }\n else{\n _locationObjectSelected.url = `${paramMap.param2}`;\n _locationObjectSelected.nombre = paramMap.param2.replace(/-/g, ' ');\n } \n }\n else {\n this.providerSelected = new DoctorSearchResult();\n this.providerSelected.nombre = paramMap.param2.replace(/-/g, ' ');\n this.providerSelected.url = `/${paramMap.param1}/${paramMap.param2}`;\n\n if(qsParams.idC)\n this.providerSelected.id = +qsParams.idC;\n\n if(qsParams.idTc)\n this.providerSelected.claseId = +qsParams.idTc;\n\n this.searchProviderCtrl.setValue(this.providerSelected);\n\n // carga de dropdown localidad\n if(paramMap.param5){\n _locationObjectSelected.url = `${paramMap.param3}/${paramMap.param4}/${paramMap.param5}`;\n _locationObjectSelected.nombre = paramMap.param5.replace(/-/g, ' ');\n }\n else if(paramMap.param4) {\n _locationObjectSelected.url = `${paramMap.param3}/${paramMap.param4}`;\n _locationObjectSelected.nombre = paramMap.param4.replace(/-/g, ' ');\n }\n else if(paramMap.param3){\n _locationObjectSelected.url = `${paramMap.param3}`;\n _locationObjectSelected.nombre = paramMap.param3.replace(/-/g, ' ');\n }\n }\n\n if(this.locationDefault && qsParams && qsParams.filtros){\n\n let conceptIds = qsParams.filtros.split(',').map(Number);\n let conceptSelected = this.locationDefault.seccion3.find(c=> conceptIds.includes(c.id));\n\n if(!conceptSelected) {\n let concept = this.locationDefault.seccion1.find(c=> conceptIds.includes(c.id));\n \n if (concept) {\n conceptSelected = new TerritorialDivision();\n conceptSelected.id = concept.id;\n\n let name = concept.nombre.find(l => l.lenguaje == this.locale.language);\n conceptSelected.nombre = name? name.texto : \"\";\n } \n }\n\n if(conceptSelected){\n _locationObjectSelected = new LocationSearchResultItem();\n _locationObjectSelected.id = conceptSelected.id;\n _locationObjectSelected.nombre = this.layoutService.getTextByLanguage(conceptSelected.nombre, this.locale.language);\n }\n }\n\n if(_locationObjectSelected.nombre){\n this.locationObjectSelected = _locationObjectSelected;\n this.searchLocationCtrl.setValue(this.locationObjectSelected);\n }\n\n if (!this.providerSearchMessage) {\n let territorialDivisionIdentification = this.locationObjectSelected? this.locationObjectSelected.url : \"\";\n\n this.providerSearchMessage = new ProviderSearchMessage();\n this.providerSearchMessage.filtros = this.qsParams.filtros;\n this.providerSearchMessage.territorialDivisionIdentification = territorialDivisionIdentification;\n this.providerSearchMessage.countryIdentification = this.searchCountry?.identificador;\n this.providerSearchMessage.searchText = this.qsParams.t;\n this.providerSearchMessage.conceptId = this.qsParams.idC? parseInt(this.qsParams.idC) : 0;\n this.providerSearchMessage.conceptClaseId = this.qsParams.idTc? parseInt(this.qsParams.idTc) : 0;\n }\n\n this.setInsuranceBaseOnQueryParams();\n }\n }\n\n private initEmptyProviderSearchMessage() {\n this.providerSearchMessage = new ProviderSearchMessage();\n this.providerSearchMessage.countryIdentification = this.searchCountry?.identificador;\n }\n\n private setInsuranceBaseOnQueryParams() {\n if(this.qsParams && this.qsParams.filtros) {\n this.loadFilters().subscribe(filters => {\n //if(this.model.insurersDefault && this.qsParams && this.qsParams.filtros){\n \n if(this.insuranceUnfilteredResults){\n let conceptIds = this.qsParams.filtros.split(',').map(Number);\n /*let conceptSelected = this.model.insurersDefault.find(c=> conceptIds.includes(c.id));\n\n if(conceptSelected) {\n this.insuranceObjectSelected = new ProfileFilterSearchResultConcept();\n this.insuranceObjectSelected.cc = conceptSelected.id;\n this.insuranceObjectSelected.n_cc = this.layoutService.getTextByLanguage(conceptSelected.nombre, this.locale.language);\n\n this.searchInsuranceCtrl.setValue(this.insuranceObjectSelected);\n }*/\n\n let conceptSelected = this.insuranceUnfilteredResults.find(c=> conceptIds.includes(c.cc));\n\n if(conceptSelected) {\n this.insuranceObjectSelected = conceptSelected;\n\n this.searchInsuranceCtrl.setValue(this.insuranceObjectSelected);\n }\n }\n });\n }\n }\n\n private getProfilesDefault(){\n return (this.model.profilesDefault && this.model.profilesDefault.length > 0)\n ? this.model.profilesDefault.map(cd => {\n let doctorSearchResult = new DoctorSearchResult();\n doctorSearchResult.id = cd.id;\n doctorSearchResult.claseId = cd.claseId;\n doctorSearchResult.clase = this.translation.translate('shared.searchResults.searchProvidersV2.suggestionsText');\n doctorSearchResult.nombre = this.layoutService.getTextByLanguage(cd.nombre, this.locale.language);\n doctorSearchResult.descripcion = this.layoutService.getTextByLanguage(cd.descripcion, this.locale.language);\n doctorSearchResult.url = cd.url;\n doctorSearchResult.urlImagen = cd.urlImagen;\n\n return doctorSearchResult;\n })\n : [];\n } \n\n private fireSearchEvent(){\n let _searchText = this.searchInput \n ? this.searchInput.nativeElement.value.trim()\n : '';\n\n let _providerSearchMessage = new ProviderSearchMessage();\n\n _providerSearchMessage.countryIdentification = this.searchCountry.identificador;\n\n if(this.providerSelected){\n _providerSearchMessage.conceptNav = this.providerSelected.url;\n _providerSearchMessage.conceptId = this.providerSelected.id;\n _providerSearchMessage.conceptClaseId = this.providerSelected.claseId;\n }\n else {\n _providerSearchMessage.searchText = _searchText;\n }\n\n if(this.locationObjectSelected){\n if(this.locationObjectSelected.url){\n _providerSearchMessage.territorialDivisionIdentification = this.locationObjectSelected.url;\n }\n else {\n _providerSearchMessage.filtros = this.locationObjectSelected.id.toString();\n }\n }\n else{\n this.searchLocationCtrl.reset();\n }\n\n if(this.insuranceObjectSelected){\n if(this.insuranceObjectSelected.cc > 0){\n _providerSearchMessage.filtros = _providerSearchMessage.filtros\n ? _providerSearchMessage.filtros + ',' + this.insuranceObjectSelected.cc.toString()\n : this.insuranceObjectSelected.cc.toString();\n }\n }\n else{\n this.searchInsuranceCtrl.reset();\n }\n\n if (!this.providerSearchMessage)\n this.providerSearchMessage = _providerSearchMessage;\n\n this.triggerSearchByType(_providerSearchMessage); \n }\n\n private triggerSearchByType(providerSearchMessage: ProviderSearchMessage){\n\n switch(this.model.searchType){\n case SearchProvidersType.DEFAULT:\n default:\n this.messageBusService.providerSearch(providerSearchMessage);\n break;\n case SearchProvidersType.POPUP:\n this.redirectToSearchPage(providerSearchMessage);\n break;\n case SearchProvidersType.WIDGET:\n this.goToSearhPage(providerSearchMessage);\n break;\n }\n }\n\n private triggerOpenPublicProfileByType(publicProfileUrl:string){\n switch(this.model.searchType){\n case SearchProvidersType.DEFAULT:\n case SearchProvidersType.POPUP:\n default:\n this.publicProfileService.openPublicProfile(publicProfileUrl);\n break;\n case SearchProvidersType.WIDGET:\n this.goToPublicPage(publicProfileUrl)\n break;\n }\n }\n\n private redirectToSearchPage(providerSearchMessage: ProviderSearchMessage){\n\n let searchProviderUrl = this.getRelativeSearchPath(providerSearchMessage);\n\n this.router.navigate([searchProviderUrl.url], {queryParams:searchProviderUrl.qsParams});\n }\n\n private getRelativeSearchPath(providerSearchMessage: ProviderSearchMessage):SearchProvidersUrl{\n let paramMap:SearchQsParamMapModel = new SearchQsParamMapModel();\n let qsParams:SearchQsParametersModel = new SearchQsParametersModel();\n\n // busqueda por texto\n if(providerSearchMessage.searchText){\n paramMap.param1 = 'texto';\n\n qsParams.t = providerSearchMessage.searchText;\n }\n // busqueda por concepto\n else if(providerSearchMessage.conceptNav){\n\n let conceptNavArray = providerSearchMessage.conceptNav.split('/');\n\n paramMap.param1 = conceptNavArray[1];\n paramMap.param2 = conceptNavArray[2];\n }\n else{\n paramMap.param1 = 'todos';\n }\n\n if(providerSearchMessage.territorialDivisionIdentification){\n\n let tdArray = providerSearchMessage.territorialDivisionIdentification.split('/');\n\n if(paramMap.param2){\n paramMap.param3 = tdArray[0];\n paramMap.param4 = tdArray[1] ?? '';\n paramMap.param5 = tdArray[2] ?? '';\n }\n else{\n paramMap.param2 = tdArray[0];\n paramMap.param3 = tdArray[1] ?? '';\n paramMap.param4 = tdArray[2] ?? '';\n }\n }\n\n qsParams.filtros = providerSearchMessage.filtros;\n \n let url = `${this.baseService.getLanguage()}/${this.model.searchParamMap}/${paramMap.param1}`;\n url += paramMap.param2 ? `/${paramMap.param2}` : '';\n url += paramMap.param3 ? `/${paramMap.param3}` : '';\n url += paramMap.param4 ? `/${paramMap.param4}` : '';\n url += paramMap.param5 ? `/${paramMap.param5}` : '';\n\n if (providerSearchMessage.conceptId > 0){\n qsParams.idC = providerSearchMessage.conceptId.toString();\n qsParams.idTc = providerSearchMessage.conceptClaseId.toString();\n }\n\n let searchProviderUrl = new SearchProvidersUrl();\n\n searchProviderUrl.url = url;\n searchProviderUrl.qsParams = qsParams;\n\n return searchProviderUrl;\n }\n\n private goToPublicPage(publicProfileUrl:string){\n const url = this.router.serializeUrl(\n this.router.createUrlTree([publicProfileUrl])\n );\n\n window.parent.location.href = url;\n }\n\n private goToSearhPage(providerSearchMessage: ProviderSearchMessage) {\n\n let searchProviderUrl = this.getRelativeSearchPath(providerSearchMessage);\n\n const url = this.router.serializeUrl(\n this.router.createUrlTree([searchProviderUrl.url], {queryParams:searchProviderUrl.qsParams})\n );\n\n window.parent.location.href = url;\n }\n\n private getLocationSearchGroupByDefault():LocationSearchResultGroup[]{\n let _resultGroup:LocationSearchResultGroup[] = [];\n\n if(!this.locationDefault)\n return _resultGroup; \n\n // SECCION 1\n let _section2Grouped = this.locationDefault.seccion1 && this.locationDefault.seccion1.length > 0 \n ? this.utilsService.groupBy(this.locationDefault.seccion1, sd => sd.claseId)\n : new Map();\n\n _section2Grouped.forEach((value: ConceptDefaultModel[], key: number)=>{\n let resultGroupItem = new LocationSearchResultGroup();\n resultGroupItem.id = key;\n resultGroupItem.displayName = this.layoutService.getTextByLanguage(value[0].clase, this.locale.language);\n\n resultGroupItem.results = value.map(td => { \n return {\n id: td.id,\n nombre: this.layoutService.getTextByLanguage(td.nombre, this.locale.language),\n url: \"\",\n icono: 'phr-iconset-hospital'\n };\n });\n\n _resultGroup.push(resultGroupItem);\n });\n\n // SECCION 2\n let _section1Grouped = this.locationDefault.seccion2 && this.locationDefault.seccion2.length > 0 \n ? this.utilsService.groupBy(this.locationDefault.seccion2, sd => sd.nivel)\n : new Map();\n\n _section1Grouped.forEach((value: TerritorialDivision[], key: number)=>{\n let resultGroupItem = new LocationSearchResultGroup();\n resultGroupItem.id = key;\n resultGroupItem.displayName = this.getLocationDisplayNameFromLevelDefault(key);\n\n resultGroupItem.results = value.map(td => { \n return {\n id: td.id, \n nombre: this.layoutService.getTextByLanguage(td.nombreCanonico, this.locale.language),\n url: td.identificador, \n icono: 'phr-iconset-suraplace'\n };\n });\n\n _resultGroup.push(resultGroupItem);\n });\n\n // SECCION 3\n let _section3Grouped = this.locationDefault.seccion3 && this.locationDefault.seccion3.length > 0 \n ? this.utilsService.groupBy(this.locationDefault.seccion3, sd => sd.nivel)\n : new Map();\n\n _section3Grouped.forEach((value: TerritorialDivision[], key: number)=>{\n let resultGroupItem = new LocationSearchResultGroup();\n resultGroupItem.id = key;\n resultGroupItem.displayName = this.getLocationDisplayNameFromLevelDefault(key);\n\n resultGroupItem.results = value.map(td => { \n return {\n id: td.id,\n nombre: this.layoutService.getTextByLanguage(td.nombreCanonico, this.locale.language),\n url: td.identificador,\n icono: 'phr-iconset-suraplace' \n };\n });\n\n _resultGroup.push(resultGroupItem);\n });\n\n return _resultGroup;\n }\n \n private getLocationsByLevels(value:string):Observable{\n return this.territorialDivisionsService.getByLevels(\n this.language,\n value, \n this.locationLevels,\n this.searchCountry.idPais)\n .pipe(map((results:TerritorialDivision[])=>{\n let _resultGroup:LocationSearchResultGroup[] = [];\n let _territorialDivisionGrouped = this.utilsService.groupBy(results, sd => sd.nivel);\n\n _territorialDivisionGrouped.forEach((value: TerritorialDivision[], key: number)=>{\n let resultGroupItem = new LocationSearchResultGroup();\n resultGroupItem.id = key;\n resultGroupItem.displayName = this.getLocationDisplayNameFromLevel(key);\n \n resultGroupItem.results = value.map(td => { \n return {id: td.id, nombre: td.nombreCanonico, url: td.identificador, icono: 'phr-iconset-suraplace' };\n });\n \n _resultGroup.push(resultGroupItem);\n });\n\n return _resultGroup;\n }));\n }\n\n private getLocationDisplayNameFromLevel(level: number) {\n return level == 1 ? this.countryText : (level == 2 ? this.stateText : this.cityText);\n }\n\n private getLocationDisplayNameFromLevelDefault(level: number) {\n switch(level){\n case 1:\n return this.countryDefaultText;\n case 2:\n return this.stateDefaultText;\n case 3:\n return this.cityDefaultText;\n default:\n return \"\";\n }\n }\n\n /*private getOtherInsuranceCompanies() {\n this.clinicalConceptsService.getInsuraceConcepts()\n .subscribe(concepts => {\n // Filter out all insurance companies that are already on defaults\n let filteredConcepts = concepts.filter(c => !this.model.insurersDefault.find(d => d.id == c.id));\n\n this.otherInsuranceComp = filteredConcepts.map(c => {\n let model = new ConceptDefaultModel();\n \n let classNameEs = new TextLanguage();\n classNameEs.lenguaje = \"es\";\n classNameEs.texto = \"otras aseguradoras\";\n let classNameEn = new TextLanguage();\n classNameEn.lenguaje = \"en\";\n classNameEn.texto = \"Other insurances\";\n\n let insuranceName = new TextLanguage();\n insuranceName.lenguaje = this.locale.language;\n insuranceName.texto = c.nombre;\n\n model.id = c.id;\n model.clase = [classNameEs, classNameEn];\n model.claseId = 0;\n model.descripcion = [insuranceName];\n model.nombre = [insuranceName];\n\n return model;\n });\n\n // Add the other insurance companies to the defaults\n this.model.insurersDefault = this.model.insurersDefault.concat(this.otherInsuranceComp);\n\n if (this.otherInsuranceComp.length > 0 && this.qsParams && this.qsParams.filtros) {\n this.setInsuranceBaseOnQueryParams();\n }\n }\n );\n }*/ \n\n private searchInputBlur(input: HTMLInputElement): void {\n if(this.isMobile || this.fullsize) {\n input?.blur();\n }\n }\n\n private setDefaultsText(){\n this.cityText = this.translation.translate('city');\n this.stateText = this.translation.translate('province');\n this.countryText = this.translation.translate('country');\n this.cityDefaultText = this.translation.translate('shared.searchResults.searchProvidersV2.mostWantedCities');\n this.stateDefaultText = this.translation.translate('shared.searchResults.searchProvidersV2.mostWantedProvinces');\n this.countryDefaultText = this.translation.translate('shared.searchResults.searchProvidersV2.mostWantedCountries');\n this.dontApplyInsuranceText = this.translation.translate('shared.searchResults.searchProvidersV2.dontApplyInsuranceText');\n }\n \n private collectParams(snapshot: ActivatedRouteSnapshot): Params {\n let params: Params = { ...snapshot.params, ...snapshot.queryParams };\n const childSnapshots = snapshot.children;\n \n while (childSnapshots.length) {\n snapshot = childSnapshots[0];\n params = { ...params, ...snapshot.params, ...snapshot.queryParams };\n childSnapshots.shift();\n childSnapshots.push(...snapshot.children);\n }\n \n return params;\n }\n\n private getLatestDoctors() {\n this.loadingLastestDoctors = true;\n this.appointmentService.getLatestDoctors(this.locale.language, 20)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n doctors => {\n this.loadingLastestDoctors = false;\n\n this.lastestDoctors = doctors;\n\n this.lastestDoctors.forEach(d => {\n let avatarInitialsObject = this.baseService.getAvatarInitialObject(d.idResponsableServicio, d.nombreResponsableServicio);\n d.iniciales = avatarInitialsObject.initials;\n });\n },\n error => { this.baseService.handleServiceError(error, \"Error getting latest doctors\"); }\n ); \n }\n\n \n private configSearchByCountry(country:TerritorialDivision){\n let availableCountries = this.territorialDivisionsService.getAvailableCountries();\n\n if(country.idPais != 9 && country.idPais != 1 && availableCountries.find(c=> c.idPais == country?.idPais)){\n this.searchCountry = country;\n }\n else{\n this.searchCountry = new TerritorialDivision ();\n this.searchCountry.idPais = -1;\n this.searchCountry.identificador = '';\n }\n }\n\n private configSearchByCountryApp(){\n this.territorialDivisionsService.getCountryApp().subscribe(countryApp=>{\n if(countryApp && countryApp.territorialDivision){\n this.configSearchByCountry(countryApp.territorialDivision)\n }\n });\n }\n\n private setLocationDefaultByCountry(){\n\n this.locationDefault = this.model.locationsDefault.find(s=> s.idPais == this.searchCountry.idPais);\n\n // si no encuentra una sección, se establece por defecto la de panamá\n if(!this.locationDefault)\n this.locationDefault = this.model.locationsDefault.filter(s=> s.idPais == 28)[0];\n\n this.locationLevels = this.locationDefault.niveles;\n }\n\n private toggleAutocompleteInsurance(providerSearchMessage: ProviderSearchMessage){\n\n if(!this.model.showInsurersAutocomplete || !this.insuranceUnfilteredResults)\n return;\n\n if(providerSearchMessage.filtros) {\n let filters = providerSearchMessage.filtros.split(',').map(f=> +f);\n \n let selectedInsurers = this.insuranceUnfilteredResults.find(concept => filters.includes(concept.cc));\n\n if(selectedInsurers) {\n this.insuranceObjectSelected = selectedInsurers;\n this.searchInsuranceCtrl.setValue(this.insuranceObjectSelected);\n }\n \n //let selectedInsurers = this.model.insurersDefault.filter(insuranceDefault => filters.includes(insuranceDefault.id));\n\n /*if(selectedInsurers.length > 0) {\n this.insuranceObjectSelected = new ProfileFilterSearchResultConcept();\n this.insuranceObjectSelected.cc = selectedInsurers[0].id;\n this.insuranceObjectSelected.n_cc = this.layoutService.getTextByLanguage(selectedInsurers[0].nombre, this.locale.language);\n\n this.searchInsuranceCtrl.setValue(this.insuranceObjectSelected);\n }*/\n }\n else{\n this.searchInsuranceCtrl.reset('');\n\n if(this.searchInsuranceInput){\n this.searchInsuranceInput.nativeElement.value = '';\n }\n \n this.insuranceObjectSelected = null;\n }\n }\n\n /********************** Insurance Search *************************/\n\n configSearchInsurers(){\n if(!this.model.showInsurersAutocomplete)\n return;\n\n //this.getOtherInsuranceCompanies();\n\n this.filteredInsuranceResults$ = this.searchInsuranceCtrl.valueChanges\n .pipe(\n tap(()=>{ \n this.loadingSearchInsurance = true;\n }),\n debounceTime(0),\n startWith(''),\n switchMap(value => {\n\n if(!this.insuranceAutocompleteOpen){\n this.loadingSearchInsurance = false;\n return of([]);\n }\n\n if(this.model.insurersLikeCombo){\n let options = this.filterDefaultInsurers(value);\n\n this.loadingSearchInsurance = false;\n this.highlightValue = value;\n this.filteredInsuranceResultsCount = options.length;\n \n return of(options);\n }\n else{\n return of([]);\n }\n })\n );\n }\n\n filterDefaultInsurers(value:any) : ProfileFilterSearchResultGroup[]{\n let optionsGrouped = this.getInsuranceSearchGroupByDefault(); \n\n if(value){\n\n const textValue = (typeof value === 'string')\n ? value.toLowerCase()\n : value.nombre.toLowerCase();\n\n optionsGrouped = optionsGrouped.filter(og => og.results.filter(r => r.n_cc.toLowerCase().includes(textValue)).length > 0);\n\n optionsGrouped.forEach(og => {\n og.results = og.results.filter(r => r.n_cc.toLowerCase().includes(textValue));\n });\n\n return optionsGrouped;\n }\n else{\n return optionsGrouped;\n }\n }\n\n private getInsuranceSearchGroupByDefault() : ProfileFilterSearchResultGroup[] {\n return this.publicProfileService.groupProfileFilters(this.insuranceUnfilteredResults, this.insuranceFilter.grupos, this.locale.language);\n }\n\n onFocusInputInsuranceSearch(){\n event?.preventDefault();\n\n this.insuranceAutocompleteOpen = true;\n\n // Re-load the filters when opening the insurance\n this.loadFilters()\n .subscribe(filters => {\n\n // ejecutar la busqueda del autocomplete si el input tiene un texto\n if(this.searchInsuranceInput.nativeElement.value){\n this.autocompleteInsuranceTrigger._onChange(this.searchInsuranceInput.nativeElement.value);\n }\n // si no tiene texto y valores por defecto, se agrega un timeout para que reposicione el dropdown\n else if(filters.length > 0) { \n setTimeout(()=>{\n this.autocompleteInsuranceTrigger._onChange('');\n this.autocompleteInsuranceTrigger.updatePosition();\n }, 100);\n }\n },\n error => {\n\n }\n );\n }\n\n private getDirectoryFilters() { \n let directory = this.baseService.getDirectory();\n\n if (directory && directory.filtros) {\n let filtersObj = JSON.parse(directory.filtros);\n let directoryFilters = this.baseService.parseObject(filtersObj); \n\n // Find the Insurance provider \n for(let p of directoryFilters.providers) {\n let filter = p.filters.find(f => f.idClaseConceptoClinico == 8);\n\n if (filter) {\n this.insuranceFilter = filter;\n break;\n }\n }\n }\n }\n \n private loadFilters() : Observable {\n if (!this.providerSearchMessage)\n this.initEmptyProviderSearchMessage();\n\n let searchText = this.providerSearchMessage.searchText;\n let conceptType = \"\";\n let concept = \"\";\n\n let filtersString = this.providerSearchMessage.filtros;\n\n let accountName = this.baseService.getCliniwebDirectoryCompanyName();\n let accountId = this.baseService.getCliniwebDirectoryCompanyId();\n let locationCompanyIds = this.baseService.getCliniwebDirectoryLocationCompanyIds(); \n\n let location = this.baseService.getLocationFromIdentifier(this.providerSearchMessage.territorialDivisionIdentification);\n\n if(!location.country && this.providerSearchMessage.countryIdentification){\n location.country = this.providerSearchMessage.countryIdentification;\n }\n\n if (!accountName)\n accountName = this.baseService.getCompanyName();\n\n if (this.providerSearchMessage.conceptNav) {\n // Some time the navigation contains '/' like: '/especialidad/cardiologia' in those cases filter the empty strings after split\n let parts = this.providerSearchMessage.conceptNav.split(\"/\").filter(e => e);\n conceptType = parts[0];\n concept = parts[1];\n } \n\n let profileSearchTypes = this.model.profileTypes.split(\",\").map(pt => +pt);\n\n return this.publicProfileService.getPublicProfileFilters(\n this.baseService.getLanguage(),\n conceptType,\n searchText, \n concept,\n filtersString,\n accountName,\n location.country,\n location.state,\n location.city,\n 8, // Insurance\n profileSearchTypes,\n accountId,\n locationCompanyIds,\n this.providerSearchMessage.conceptId,\n this.providerSearchMessage.conceptClaseId\n ).pipe(\n map((result:ProfileFilterSearchResult[]) =>{\n if (!result || result.length == 0)\n return [];\n\n this.insuranceUnfilteredResults = result[0].conceptos;\n\n return result;\n }),\n catchError((err) => {\n this.baseService.handleServiceError(err, \"Error getting profile filters\"); \n return of([]);\n })\n ); \n } \n\n}\n\nexport class DoctorSearchResultGroup {\n classId: number;\n className: string;\n results: DoctorSearchResult[];\n}\n\nexport class LocationSearchResultGroup {\n id: number;\n displayName: string;\n results: LocationSearchResultItem[];\n}\n\nexport class LocationSearchResultItem {\n id: number;\n nombre: string;\n url: string;\n icono?: string;\n}\n\nexport class SearchProvidersUrl{\n url: string;\n qsParams:SearchQsParametersModel;\n}","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { RouteDialogHeaderModel } from '../../../dialogs/route-dialog/route-dialog.component';\r\nimport { MessageBusService, NavigationBackMessage } from 'src/app/core/services/message-bus.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-default-logo-header',\r\n templateUrl: './default-logo-header.component.html',\r\n styleUrls: ['./default-logo-header.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('DefaultLogoHeaderComponent')\r\nexport class DefaultLogoHeaderComponent implements OnInit, IControlComponent, OnDestroy {\r\n\r\n private ngUnsubscribe = new Subject();\r\n\r\n constructor(\r\n private messageBusService: MessageBusService\r\n ) { }\r\n data: RouteDialogHeaderModel;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n onBackClick(){\r\n let dialogId = this.data.dialogModel.id;\r\n\r\n this.messageBusService.navigateBack(new NavigationBackMessage(dialogId));\r\n } \r\n}","
\r\n \r\n \r\n \r\n \r\n
","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewContainerRef } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { merge, Observable, Subscription } from 'rxjs';\nimport { DropdownPanel } from './dropdown.component';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Directive({\n selector: '[dropdownTriggerFor]',\n host: {\n '(click)': 'toggleDropdown()'\n }\n})\nexport class DropdownTriggerForDirective implements OnDestroy {\n private isDropdownOpen = false;\n private overlayRef: OverlayRef;\n private dropdownClosingActionsSub = Subscription.EMPTY;\n\n @Input('dropdownTriggerFor') public dropdownPanel: DropdownPanel;\n @Output('dropdownOverlay') public dropdownOverlay = new EventEmitter();\n\n constructor(\n private overlay: Overlay,\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) { }\n\n toggleDropdown(): void {\n this.isDropdownOpen ? this.destroyDropdown() : this.openDropdown();\n }\n\n openDropdown(): void {\n this.isDropdownOpen = true;\n\n let overlayConfig = new OverlayConfig();\n overlayConfig.hasBackdrop = true;\n overlayConfig.backdropClass = this.dropdownPanel.overlayTransparent\n ? 'cdk-overlay-transparent-backdrop'\n : 'cdk-overlay-dark-backdrop';\n overlayConfig.panelClass = this.dropdownPanel.panelClass;\n\n if(this.dropdownPanel.fullscreen){\n overlayConfig.scrollStrategy = this.overlay.scrollStrategies.block();\n }\n else{\n overlayConfig.scrollStrategy = this.overlay.scrollStrategies.close();\n overlayConfig.positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8\n }\n ]);\n }\n\n this.overlayRef = this.overlay.create(overlayConfig);\n\n const templatePortal = new TemplatePortal(\n this.dropdownPanel.templateRef,\n this.viewContainerRef\n );\n \n this.overlayRef.attach(templatePortal);\n\n this.dropdownPanel.overlayRef.emit(this.overlayRef);\n\n this.dropdownClosingActionsSub = this.dropdownClosingActions().subscribe(\n () => this.destroyDropdown()\n );\n }\n\n private dropdownClosingActions(): Observable {\n const backdropClick$ = this.overlayRef.backdropClick();\n const detachment$ = this.overlayRef.detachments();\n const dropdownClosed = this.dropdownPanel.closed;\n\n return merge(backdropClick$, detachment$, dropdownClosed);\n }\n\n private destroyDropdown(): void {\n if (!this.overlayRef || !this.isDropdownOpen) {\n return;\n }\n\n this.dropdownClosingActionsSub.unsubscribe();\n this.isDropdownOpen = false;\n this.overlayRef.detach();\n }\n\n ngOnDestroy(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n }\n}\n","\n
\n \n
\n
","import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { OverlayRef } from '@angular/cdk/overlay';\n\n@Component({\n selector: 'app-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DropdownComponent implements DropdownPanel {\n\n @ViewChild(TemplateRef) templateRef: TemplateRef;\n @Output() closed = new EventEmitter();\n @Output() overlayRef = new EventEmitter();\n @Input() panelClass: string;\n @Input() fullscreen: boolean = false;\n @Input() overlayTransparent: boolean = true;\n\n constructor() { }\n}\n\nexport interface DropdownPanel {\n templateRef: TemplateRef;\n readonly closed: EventEmitter;\n readonly overlayRef: EventEmitter;\n readonly panelClass: string;\n readonly fullscreen: boolean;\n readonly overlayTransparent: boolean;\n}","
\n \n \n\n \n \n
\n {{placeholder}}\n \n
\n
\n \n \n \n
\n \n \n
\n
0\">\n {{group.titulo}}\n \n
\n\n \n \n \n \n
\n
\n
\n
\n\n \n \n {{ 'shared.checkAutocomplete.searching' | translate:locale.language }}\n {{ 'shared.checkAutocomplete.emptyResult' | translate:locale.language }}\n \n
\n \n
\n
\n
\n
\n \n
\n
\n\n
\n","import { Component, ElementRef, EventEmitter, HostListener, Inject, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { DropdownPanel } from '../dropdown/dropdown.component';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport { DirectoryFiltersGroupModel, DirectoryFiltersViewConfig } from '../search-results/provider-filters/provider-filters-content/provider-filters-content.component';\nimport { ProfileFilterSearchResultConcept, ProfileFilterSearchResultGroup } from '../../models/people/profile-filter-search-result.model';\nimport { TextLanguage } from '../../models/people/text-language.model';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\n\n@Component({\n selector: 'app-check-autocomplete',\n templateUrl: './check-autocomplete.component.html',\n styleUrls: ['./check-autocomplete.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class CheckAutocompleteComponent implements OnInit, OnDestroy {\n checkAutocompleteForm: FormGroup;\n control: FormControl;\n options: any[];\n \n filteredGroups: any[] = [];\n filteredOptions: any[] = [];\n\n visible:boolean = false;\n clasnameComponent:string;\n\n isMobile: boolean = false;\n\n overlayRef: OverlayRef;\n\n @Input() componentId: number;\n @Input() selectedOptions: any[];\n @Input() idAttributeName: string;\n @Input() placeholder: string;\n @Input() iconClassName: string;\n @Input() cssClass: string;\n @Input() loading: boolean;\n @Input() showInputSearch: boolean;\n @Input() singleSelection: boolean;\n @Input() groups: DirectoryFiltersGroupModel[];\n @Input() viewConfig: DirectoryFiltersViewConfig;\n @Input() optionsObs: Observable;\n @Input() optionFilterFtn: (searchText: string) => any[]; \n @Input() optionDisplayNameFtn: (option: any) => string;\n @Input() optionDisplayTitleNameFtn: (option: any) => string;\n @Input() selectedOptionDisplayNameFtn: (option: any) => string;\n \n @Output() onAutocompleteClick = new EventEmitter();\n @Output() onAutocompleteOptionsChanged = new EventEmitter();\n\n @ViewChild('searchInput') searchInput: ElementRef;\n @ViewChild('button') button: ElementRef;\n @ViewChild('dropdown') dropdown: DropdownPanel;\n\n private ngUnsubscribe = new Subject();\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private messageBusService: MessageBusService,\n @Inject(DOCUMENT) private document: Document,\n private layoutService: LayoutService,\n private publicProfileService: PublicProfileService\n ) { }\n\n ngOnInit(): void {\n this.isMobile = window.innerWidth <= 800;\n\n this.clasnameComponent = `check-autocomplete-${this.componentId}`;\n\n this.control = new FormControl('');\n\n this.checkAutocompleteForm = new FormGroup({\n control: this.control\n });\n\n this.optionsObs.subscribe(ops => {\n this.searchInput.nativeElement.value = '';\n this.options = ops;\n this.filteredOptions = ops;\n this.filteredGroups = this.groupConcepts(ops);\n });\n\n // Auto complete search function\n this.control.valueChanges.subscribe(v => {\n let filtered = this.filterItems(v);\n\n this.filteredGroups = this.groupConcepts(filtered);\n });\n\n this.messageBusService.onCloseCheckAutocomplete()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result=>{\n\n if(result != this.componentId)\n this.visible = false;\n });\n }\n\n ngOnDestroy():void{\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n toggleAutocomplete(){\n\n event?.stopPropagation();\n\n this.visible = !this.visible;\n\n if(this.visible && !this.isMobile){\n setTimeout(() => {\n this.searchInput.nativeElement.focus();\n }, 100); \n }\n }\n\n getClassNameButton(){\n return {\n 'open': this.visible,\n 'selected': this.selectedOptions.length > 0\n }\n }\n\n getButtonText(){\n return this.selectedOptions.length > 0\n ? this.selectedOptionDisplayNameFtn(this.selectedOptions[0])\n : this.placeholder;\n }\n\n onClickAutocomplete() {\n this.toggleAutocomplete();\n this.onAutocompleteClick.emit();\n }\n\n optionClicked(event: Event, option: any) {\n event.stopPropagation();\n this.toggleSelection(option);\n }\n\n toggleSelection(option: any){\n let optionDeleted:any = null;\n\n if (this.singleSelection) {\n if (this.selectedOptions.length > 0) {\n optionDeleted = this.selectedOptions.splice(0, 1)[0]; \n }\n\n // If option was selected, then now was removed\n if (!this.isOptionSelected(option)) {\n this.selectedOptions.push(option);\n }\n\n this.onAutocompleteOptionsChanged.emit(optionDeleted ? [optionDeleted] : null);\n }\n else {\n if(this.isOptionSelected(option)){\n const i = this.selectedOptions.findIndex(value => value[this.idAttributeName] === option[this.idAttributeName]);\n this.selectedOptions.splice(i, 1);\n \n optionDeleted = option;\n }\n else{\n this.selectedOptions.push(option);\n }\n \n this.onAutocompleteOptionsChanged.emit(optionDeleted ? [optionDeleted] : null);\n } \n }\n\n onClearFilter() {\n\n event?.stopPropagation();\n\n this.onAutocompleteOptionsChanged.emit(this.selectedOptions);\n\n this.selectedOptions = [];\n this.control.setValue(\"\");\n this.visible = false;\n }\n\n isOptionSelected(option:any):boolean{\n return this.selectedOptions.length > 0 \n && this.selectedOptions.filter(s=> s[this.idAttributeName] === option[this.idAttributeName]).length > 0;\n }\n\n closeDropdown(){\n this.dropdown.closed.emit();\n }\n\n onFocusInputSearchDropdown(){\n if(!this.isMobile)\n return;\n\n event?.preventDefault()\n\n this.overlayRef.addPanelClass('fullscreen');\n }\n\n setOverlayRef(overlayRef: OverlayRef){\n this.overlayRef = overlayRef;\n }\n\n @HostListener('document:click', ['$event'])\n clickout(event : any){\n let container = this.document.getElementsByClassName(this.clasnameComponent)[0];\n\n if(container && !container.contains(event.target)){\n this.visible = false;\n }\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n this.isMobile = event.target.innerWidth <= 800;\n }\n\n private filterItems(value: string): any[] {\n try {\n // Filter concepts base on search results\n let filteredOptions = this.optionFilterFtn(value);\n\n this.filteredOptions = filteredOptions;\n\n return filteredOptions;\n } \n catch (error) {}\n\n return [];\n }\n\n private groupConcepts(filteredConcepts: ProfileFilterSearchResultConcept[]) : ProfileFilterSearchResultGroup[] {\n return this.publicProfileService.groupProfileFilters(filteredConcepts, this.groups, this.locale.language);\n }\n}\n\nexport class CheckAutocompleteOption{\n object: any;\n selected: boolean;\n\n constructor(object: any){\n this.object = object;\n }\n}\n","
\n \n \n \n
\n \n \n
\n \n {{ getNameI18n(filterItem.name) }}\n
\n\n \n
\n
\n \n \n
\n
\n
\n
\n
\n","import { Component, Inject, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\nimport { ProfileFilterSearchResult, ProfileFilterSearchResultConcept } from 'src/app/shared/models/people/profile-filter-search-result.model';\nimport { Observable, Subject, forkJoin, of } from 'rxjs';\nimport { MessageBusService, ProviderSearchMessage } from 'src/app/core/services/message-bus.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { catchError, map, takeUntil } from 'rxjs/operators';\nimport { TextLanguage } from 'src/app/shared/models/people/text-language.model';\nimport { ProviderFilterModel, ProviderFilterModelItem } from '../provider-filters-content/provider-filters-content.component';\nimport { Platform } from '@angular/cdk/platform';\n\n@Component({\n selector: 'app-provider-filters-body',\n templateUrl: './provider-filters-body.component.html',\n styleUrls: ['./provider-filters-body.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ProviderFiltersBodyComponent implements OnInit, OnChanges, OnDestroy {\n \n filterSelectedCount:number = 0;\n \n //subscribes\n private ngUnsubscribe = new Subject();\n\n @Input() filterModel: ProviderFilterModel;\n @Input() publicProfileTypes:PublicProfileType[] ;\n @Input() providerSearchMessage: ProviderSearchMessage;\n\n private onChanges = new Subject();\n\n constructor(\n public platform: Platform,\n private baseService: BaseService,\n private layoutService: LayoutService,\n private messageBusService: MessageBusService,\n private publicProfileService: PublicProfileService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private translation: L10nTranslationService\n ) { }\n\n ngOnChanges(changes: SimpleChanges){\n this.onChanges.next(changes);\n }\n\n ngOnInit(): void {\n this.onChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data:SimpleChanges)=>{\n this.filterModel.clear();\n });\n\n this.messageBusService.onClearProviderFilters()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(()=>{\n this.clearAll();\n });\n }\n\n ngOnDestroy():void{\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n clearAll(){\n let conceptIds = this.getFiltersIds();\n\n this.fireFilterEvent(conceptIds);\n\n this.filterModel.clear();\n }\n\n filterTrackBy(index : number, item: ProviderFilterModelItem){\n return item.clinicConceptType; \n }\n\n loadFilters(item: ProviderFilterModelItem, prefilters:number[] = []) {\n let searchText = this.providerSearchMessage.searchText;\n let conceptType = \"\";\n let concept = \"\";\n\n let filtersString = this.getFiltersIds().join(',');\n\n let accountName = this.baseService.getCliniwebDirectoryCompanyName();\n let accountId = this.baseService.getCliniwebDirectoryCompanyId();\n let locationCompanyIds = this.baseService.getCliniwebDirectoryLocationCompanyIds(); \n\n let location = this.baseService.getLocationFromIdentifier(this.providerSearchMessage.territorialDivisionIdentification);\n\n if(!location.country && this.providerSearchMessage.countryIdentification){\n location.country = this.providerSearchMessage.countryIdentification;\n }\n\n if (!accountName)\n accountName = this.baseService.getCompanyName();\n\n if (this.providerSearchMessage.conceptNav) {\n // Some time the navigation contains '/' like: '/especialidad/cardiologia' in those cases filter the empty strings after split\n let parts = this.providerSearchMessage.conceptNav.split(\"/\").filter(e => e);\n conceptType = parts[0];\n concept = parts[1];\n }\n\n item.loading = true;\n\n return this.publicProfileService.getPublicProfileFilters(\n this.baseService.getLanguage(),\n conceptType,\n searchText, \n concept,\n filtersString,\n accountName,\n location.country,\n location.state,\n location.city,\n item.clinicConceptType,\n this.publicProfileTypes,\n accountId,\n locationCompanyIds,\n this.providerSearchMessage.conceptId,\n this.providerSearchMessage.conceptClaseId\n ).pipe(\n map((result:ProfileFilterSearchResult[]) =>{\n let resultItem = result[0];\n\n if (resultItem) {\n // Mark the items as loaded\n item.loadOption(resultItem.conceptos, prefilters);\n }\n else{\n item.loadOption([], prefilters);\n }\n\n item.loading = false;\n\n return true;\n }),\n catchError((err) => {\n this.baseService.handleServiceError(err, \"Error getting profile filters\"); \n return of(false);\n })\n );\n }\n\n getFiltersIds(){\n let filterByParams = this.providerSearchMessage.filtros \n ? this.providerSearchMessage.filtros.split(',').map(f => +f)\n : [];\n\n let filterSelected = this.filterModel.getSelectedConcepts();\n\n let filterIds = filterByParams.concat(filterSelected);\n\n filterIds = filterIds.filter((item, index)=> { return (filterIds.indexOf(item) == index)});\n\n return filterIds;\n }\n\n onFilterItemClick(item: ProviderFilterModelItem) {\n item.onClick();\n\n this.messageBusService.closeCheckAutocomplete(item.controlId);\n\n if (item.needToLoadOptions()){\n this.loadFilters(item)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result =>{\n this.filterSelectedCount = this.getFiltersIds().length;\n });\n }\n\n if (item.needToFireSearchOnClick()){\n let conceptDeleted = item.active ? null : [item.clinicConceptId];\n this.fireFilterEvent(conceptDeleted);\n this.filterSelectedCount = this.getFiltersIds().length;\n } \n }\n\n fireFilterEvent(conceptsDeleted:number[] | null = null) {\n\n let conceptIds = this.getFiltersIds();\n\n if(conceptsDeleted){\n conceptIds = conceptIds.filter(c=> conceptsDeleted.indexOf(c) === -1);\n }\n\n this.providerSearchMessage.filtros = conceptIds.join(',');\n\n this.messageBusService.providerSearch(this.providerSearchMessage);\n\n this.filterModel.items.forEach(_item => {_item.loaded = false;});\n }\n\n getNameI18n(name: TextLanguage[]){\n return this.layoutService.getTextByLanguage(name, this.locale.language);\n }\n\n getIdAttributeName(){\n return Object.getOwnPropertyNames(new ProfileFilterSearchResultConcept())[0];\n }\n\n onOptionChanged(optionsDeleted: ProfileFilterSearchResultConcept[] | null, item: ProviderFilterModelItem) {\n\n if(optionsDeleted && optionsDeleted?.length > 0)\n item.selectedConcepts = item.selectedConcepts.filter(concept => !optionsDeleted.find(conceptDeleted=> conceptDeleted.cc == concept.cc));\n \n this.fireFilterEvent(optionsDeleted ? optionsDeleted.map(o=> o.cc) : null);\n\n this.loadFilters(item)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result =>{\n this.filterSelectedCount = this.getFiltersIds().length;\n });\n }\n\n getFilterMobileClassName(){\n return {\n 'selected': this.filterSelectedCount > 0 && this.filterModel.getSelectedConcepts().length > 0\n }\n }\n\n getFilterMobileText(){\n let filterText = this.translation.translate('shared.searchResults.providerFilters.filters');\n return this.filterSelectedCount > 0 && this.filterModel.getSelectedConcepts().length > 0\n ? `${filterText} (${this.filterModel.getSelectedConcepts().length})`\n : filterText;\n }\n\n isMobile(){\n return this.platform.ANDROID || this.platform.IOS;\n }\n}\n","\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ 'shared.header.homeLinkText' | translate:language }}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n {{publicProfileMenuModel.profile.nombrePersona}}\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n","import { Component, ChangeDetectorRef, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { MenuMobileComponent } from '../../dialogs/menu-mobile/menu-mobile.component';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { MessageBusService, PublicProfileActionMessage } from 'src/app/core/services/message-bus.service';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ContainerType } from 'src/app/shared/enums/container-type.enum';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\r\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { PublicProfile } from 'src/app/shared/models/people/public-profile.model';\r\nimport { PublicProfileAvatarComponentModel } from '../../public-profile-avatar/public-profile-avatar.component';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { HeaderComponentPublicProfileMenuModel } from '../header/header.component';\r\n\r\n@Component({\r\n selector: 'app-public-profile-header',\r\n templateUrl: './public-profile-header.component.html',\r\n styleUrls: ['./public-profile-header.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('PublicProfilePageHeaderComponent')\r\nexport class PublicProfilePageHeaderComponent implements OnInit, OnDestroy, IControlComponent {\r\n data: FormComponentData;\r\n\r\n routeDialogOpened: boolean = false;\r\n isPublicProfilePage: boolean = false;\r\n isSearchProfilePage: boolean = false;\r\n loggedInUser: UserPerson = null as any;\r\n floatingComponents: FormComponentData[] = [];\r\n language: string;\r\n publicProfileMenuModel: HeaderComponentPublicProfileMenuModel;\r\n headerLogo: string = \"\";\r\n isLicensedCompany: boolean = true;\r\n loading: boolean = true;\r\n directoryUrl: string = environment.cliniwebUrl;\r\n\r\n private ngUnsubscribe = new Subject();\r\n\r\n constructor(\r\n private routeDialogService: RouteDialogService,\r\n private messageBusService: MessageBusService,\r\n private router: Router,\r\n public dialog: MatDialog,\r\n private cd: ChangeDetectorRef,\r\n @Inject(DOCUMENT) private document: Document,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private baseService: BaseService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.setHeaderLogo();\r\n\r\n this.isPublicProfilePage = window.location.href.includes('perfil');\r\n this.isSearchProfilePage = window.location.href.includes('doctores');\r\n\r\n if (this.baseService.isCliniwebCompany()) {\r\n this.isLicensedCompany = true;\r\n this.loading = false;\r\n }\r\n else {\r\n this.baseService.isLicensedCompany().subscribe(hasLicenses => {\r\n this.isLicensedCompany = hasLicenses;\r\n \r\n this.loading = false;\r\n });\r\n\r\n /*let companyId = this.baseService.getCliniwebDirectoryCompanyId();\r\n this.baseService.getCliniwebDirectory(companyId).subscribe(dir => {\r\n this.directoryUrl = dir.url;\r\n });*/\r\n } \r\n\r\n this.router.events\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(event=>{\r\n if(event instanceof NavigationEnd){\r\n if(this.routeDialogService.anyOpen())\r\n return; \r\n\r\n this.isPublicProfilePage = window.location.href.includes('perfil');\r\n this.isSearchProfilePage = window.location.href.includes('doctores');\r\n\r\n\r\n this.language = this.locale.language;\r\n }\r\n });\r\n\r\n this.messageBusService.onSendFloatingComponents()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((message)=>{\r\n\r\n if(this.routeDialogService.anyOpen())\r\n return;\r\n\r\n this.floatingComponents = message.componentsData.filter(c=>c.contenedor == ContainerType.HEADER);\r\n });\r\n\r\n this.messageBusService.onOpenRouteDialog()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((message)=>{\r\n\r\n this.routeDialogOpened = true;\r\n });\r\n\r\n this.messageBusService.onCloseRouteDialog()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((message)=>{\r\n this.routeDialogOpened = false;\r\n });\r\n\r\n this.messageBusService.onAllRouteDialogClosed()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((message)=>{\r\n this.routeDialogOpened = false;\r\n });\r\n\r\n this.messageBusService.onPublicProfileHeaderVisibilityChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((message)=> {\r\n if (message.fromRouteDialog)\r\n return;\r\n\r\n this.publicProfileMenuModel = new HeaderComponentPublicProfileMenuModel();\r\n this.publicProfileMenuModel.headerVisible = message.headerVisible;\r\n this.publicProfileMenuModel.profile = message.profile;\r\n this.publicProfileMenuModel.avatarModel = message.publicProfileAvatarComponentModel;\r\n this.publicProfileMenuModel.avatarModel.useAvatarPadding = message.headerVisible;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n setHeaderLogo() {\r\n var directoryName = this.baseService.getCliniwebDirectoryCompanyName();\r\n var logo = \"/assets/images/cliniweb/logo-cliniweb-phr.svg\";\r\n\r\n switch(directoryName) {\r\n case \"consultorios-towncenter\":\r\n logo = \"/assets/images/town-center/logo.svg\";\r\n break;\r\n case \"hospital-paitilla-directorio\":\r\n logo = \"/assets/images/hospital-paitilla/logo-HPaitilla.png\";\r\n break; \r\n case \"pacificasalud\": \r\n logo = \"/assets/images/pacifica-salud-phr/logo-pacifica-salud-phr-public-profile.svg\";\r\n break;\r\n case \"hsantafe\": \r\n logo = \"/assets/images/hsantafe-phr/logo-hsantafe-phr-public-profile.svg\";\r\n break;\r\n case \"chpanamericano\": \r\n logo = \"/assets/images/chpanamericano-phr/logo-chpanamericano-phr-public-profile.svg\";\r\n break;\r\n case \"chsf\": \r\n logo = \"/assets/images/chsf-phr/logo-chsf-phr-public-profile.svg\";\r\n break;\r\n }\r\n\r\n this.headerLogo = logo;\r\n }\r\n\r\n openMenuMobile(){\r\n const dialogRef = this.dialog.open(MenuMobileComponent, {\r\n panelClass: \"menu-mobile\"\r\n });\r\n }\r\n\r\n onLogoClick() {\r\n let isCliniweb = this.baseService.isCliniwebCompany();\r\n\r\n if (isCliniweb) {\r\n if (this.loggedInUser)\r\n this.router.navigate(['/']);\r\n else \r\n window.location.href = environment.cliniwebUrl;\r\n }\r\n else {\r\n var urlCompany = this.baseService.getUrlCompany();\r\n window.location.href = urlCompany;\r\n } \r\n }\r\n\r\n setLoggedInUser(arg: UserPerson | null): void {\r\n this.loggedInUser = arg as any;\r\n this.cd.detectChanges();\r\n }\r\n\r\n gotoPayment() {\r\n this.messageBusService.sendPublicProfileAction(new PublicProfileActionMessage(true, false));\r\n }\r\n\r\n onAppointmentBtnClick() {\r\n this.messageBusService.sendPublicProfileAction(new PublicProfileActionMessage(false, true));\r\n }\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { FormComponentData } from '../../models/people/form-control.model';\nimport { TerritorialDivision } from '../../models/systems/territorial-division.model';\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentName } from '../../enums/component-name.enum';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { TerritorialDivisionsService } from 'src/app/core/services/territorial-divisions.service';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\n\n@Component({\n selector: 'app-country-form-checkout',\n templateUrl: './country-form-checkout.component.html',\n styleUrls: ['./country-form-checkout.component.css']\n})\n@ComponentLookup('CountryFormCheckoutComponent')\nexport class CountryFormCheckoutComponent implements IControlComponent, OnInit {\n data: FormComponentData;\n country: TerritorialDivision;\n\n errorSubject = new BehaviorSubject('');\n get errorObservable(): Observable {\n return this.errorSubject.asObservable();\n }\n\n constructor(\n private userService: UserService,\n private territorialDivisionService: TerritorialDivisionsService,\n private appStorageService: AppStorageService,\n private messageBusService: MessageBusService\n ) { }\n\n ngOnInit(): void {\n this.loadCountry();\n\n this.sendComponentFinishLoadingMessage();\n }\n\n onCountrySelected(country: TerritorialDivision){\n\n this.userService.updateUserResidenceCountry(country.idPais).subscribe(result=>{\n\n // SET COUNTRY APP\n this.territorialDivisionService.setCountryApp(country.idPais);\n\n // UPDATE USER\n this.userService.getUserPersonLoggedIn().subscribe(user=>{\n\n if(user){\n user.idPaisResidencia = country.idPais;\n\n this.userService.updateUserLoggedIn(user);\n }\n });\n\n let message = new ComponentDataSetMessage();\n message.componentName = ComponentName.SELECT_COUNTRY;\n message.data = country;\n \n this.messageBusService.onComponentDataSetMessage(message);\n \n this.appStorageService.removeSessionItem(STORAGE.SELECT_COUNTRY);\n \n }, error =>{\n \n this.errorSubject.next(\"Hubo un error al grabar el país, intente nuevamente\");\n });\n }\n\n sendComponentFinishLoadingMessage(){\n let event = new ComponentFinishLoadingMessage();\n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event);\n }\n\n private loadCountry() {\n if (this.data && this.data.configurationData) {\n this.country = this.data.configurationData as TerritorialDivision; \n } \n }\n}\n","\n","import { SenderPatientRelationship } from \"../process/base-request.model\";\r\n\r\nexport class RequestToVerifyUpdateModel{\r\n idPacientePhr: number;\r\n tipoRelacionPacienteUsuario: SenderPatientRelationship;\r\n workflowPosition: number;\r\n esUsuarioNuevo: string;\r\n}","
\n \n \n \n
\n \n
\n
\n
\n \n
\n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { BaseWorkflowComponent } from '../base-workflow/base-workflow.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { DOCUMENT, Location } from '@angular/common';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LoginCompletedMessage, MessageBusService, ServiceErrorMessage } from 'src/app/core/services/message-bus.service';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { WorkflowService } from 'src/app/core/services/workflow.service';\nimport { WorkflowStepService } from 'src/app/core/services/workflow-step.service';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { StatesRequestVerifyDataModel } from '../../states-request-verify/states-request-verify.component';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { WorkflowLookup } from 'src/app/shared/decorators/workflow-lookup.decorator';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { MedicalOrderWorkflowState } from 'src/app/shared/models/workflow/states/medical-order-workflow-state.model';\nimport { Observable, of } from 'rxjs';\nimport { CompanyModel } from 'src/app/shared/models/systems/company.model';\nimport { catchError, map, switchMap, takeUntil } from 'rxjs/operators';\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { WorkflowInitialData } from 'src/app/shared/models/process/workflow-initial-data.model';\nimport { PublicProfile } from 'src/app/shared/models/people/public-profile.model';\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\nimport { OnlineAppointmentStatus } from 'src/app/shared/enums/online-appointment-status.enum';\nimport { RequestToVerifySummary } from 'src/app/shared/interfaces/request-to-verify-summary';\nimport { RequestsToVerifyService } from 'src/app/core/services/requests-to-verify.service';\nimport { RequestToVerifyUpdateModel } from 'src/app/shared/models/systems/resquest-to-verify-update.model';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\n\n@Component({\n selector: 'app-medical-order-workflow',\n templateUrl: './medical-order-workflow.component.html',\n styleUrls: ['./medical-order-workflow.component.css']\n})\n@WorkflowLookup('MedicalOrderWorkflowComponent')\nexport class MedicalOrderWorkflowComponent extends BaseWorkflowComponent implements OnInit {\n\n logoutFn: () => void;\n onlineAppointmentStatus: OnlineAppointmentStatus;\n showState = false;\n data: RequestToVerifySummary;\n state: MedicalOrderWorkflowState = new MedicalOrderWorkflowState();\n statesRequestVerifyDataModel: StatesRequestVerifyDataModel;\n updatedUserLoggedIn: boolean = false;\n\n constructor(\n @Inject(DOCUMENT) protected document: Document,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n protected baseService: BaseService,\n protected location: Location,\n protected messageBusService: MessageBusService,\n protected publicProfileService: PublicProfileService,\n protected route: ActivatedRoute,\n protected workflowService: WorkflowService,\n protected workflowStepService: WorkflowStepService,\n private appointmentService: AppointmentService,\n private appStorageService: AppStorageService,\n private requestToVerifyService: RequestsToVerifyService,\n private authService: AuthService,\n private userService: UserService,\n private dialog: MatDialog,\n private router: Router,\n private translation: L10nTranslationService\n ) {\n super(location, route, baseService, messageBusService, publicProfileService, workflowService, workflowStepService, document);\n this.logoutFn = this.logout.bind(this);\n }\n\n ngOnInit(): void { \n if(this.data && this.data.idVerificacion){\n this.checkMedicalOrderStatus();\n } else{\n this.startWorkflow();\n }\n }\n\n private checkMedicalOrderStatus(): void {\n this.appointmentService.getStatus(this.data.idVerificacion).subscribe(\n this.getStatusNext.bind(this),\n error => this.messageBusService.serviceError(new ServiceErrorMessage(\"Error getting request status\"))\n );\n }\n\n private getStatusNext(status: OnlineAppointmentStatus): void {\n this.onlineAppointmentStatus = status;\n\n if(this.onlineAppointmentStatus == OnlineAppointmentStatus.POR_COMPLETAR \n || this.onlineAppointmentStatus == OnlineAppointmentStatus.COMPLETADA){\n this.showState = false;\n this.startWorkflow();\n } else{\n this.configStatusView();\n this.showState = true;\n }\n }\n\n configStatusView(): void {\n this.statesRequestVerifyDataModel = new StatesRequestVerifyDataModel();\n\n this.statesRequestVerifyDataModel.buttonActionFn = this.gotoHome.bind(this);\n this.statesRequestVerifyDataModel.buttonTextRefI18n = 'shared.statesRequestVerify.buttonHomeText';\n this.statesRequestVerifyDataModel.companyLogoUrl = 'assets/images/cliniweb/logo-cliniweb-phr.svg';\n this.statesRequestVerifyDataModel.mainImageUrl = 'assets/images/cliniweb/Campana.gif';\n this.statesRequestVerifyDataModel.showActionButton = true;\n this.statesRequestVerifyDataModel.showHomeButton = false;\n this.statesRequestVerifyDataModel.textRefI18n = 'shared.statesRequestVerify.scheduledAppointment';\n }\n\n gotoHome(): void {\n this.router.navigate(['/']);\n }\n\n startWorkflow(): void {\n // Set this workflow as active\n this.workflowService.setWorkflowTypeActive(STORAGE.MEDICAL_ORDER_WORKFLOW_STATE);\n\n // Get state\n this.getState().subscribe((state:MedicalOrderWorkflowState)=>{\n this.state = state;\n\n this.workflowService.setWorkflowDataState(this.state);\n this.init();\n });\n\n this.progressBarModel.closeFn = this.closeWorkflow.bind(this);\n }\n\n getState() : Observable {\n var state = this.workflowService.getWorkflowDataState() as MedicalOrderWorkflowState;\n\n if(state){\n return of(state);\n }\n else if(this.data){\n return this.buildStateFromModel(this.data);\n }\n else {\n // This can happend if the user left the tab open with the workflow\n // When session expire the session variable with the workflow state will disappear\n // Go back to home\n this.router.navigate(['/']);\n throw \"State expired\";\n } \n }\n\n buildStateFromModel(sourceModel: RequestToVerifySummary) : Observable {\n let state = new MedicalOrderWorkflowState();\n let medicalOrderRequest = new WorkflowInitialData();\n \n medicalOrderRequest.idTipoSolicitud = sourceModel.idTipoSolicitud;\n medicalOrderRequest.checkoutUrl = window.location.origin + '/ordenes-medicas/'; \n medicalOrderRequest.localizacion = this.locale.language;\n\n medicalOrderRequest.perfilPublico = new PublicProfile();\n medicalOrderRequest.perfilPublico.id = sourceModel.idResponsableServicio;\n medicalOrderRequest.perfilPublico.nombrePersona = sourceModel.nombreResponsableServicio;\n medicalOrderRequest.perfilPublico.ubicacionFoto = sourceModel.ubicacionFoto;\n\n medicalOrderRequest.idUsuario = sourceModel.idUsuario;\n medicalOrderRequest.idPaciente = sourceModel.idPaciente;\n medicalOrderRequest.nombrePaciente = sourceModel.nombrePaciente;\n medicalOrderRequest.relacionEmisorPaciente = sourceModel.relacionEmisorPaciente;\n\n medicalOrderRequest.workflowPosition = sourceModel.workflowPosition;\n\n return this.baseService.getCompanyByLicense()\n .pipe(switchMap((company:CompanyModel)=>{\n medicalOrderRequest.idEmpresaOrigen = company.id;\n medicalOrderRequest.nombreEmpresaOrigen = company.name;\n\n state.requestModel = medicalOrderRequest;\n state.idVerificacion = sourceModel.idVerificacion;\n\n return of(state);\n }), \n catchError((err) => {\n this.baseService.handleServiceError(err, \"Error getting online appointment request\");\n return of(state);\n }));\n }\n\n closeWorkflow(ruta = 'welcome') {\n // Only show the message if the user is logged in\n if (this.state && this.state.getUserId() > 0 && ruta == 'welcome') {\n\n let dialogData = new DialogData();\n dialogData.title = this.translation.translate(\"shared.medicalOrder.dialog.title\");\n dialogData.message = this.translation.translate(\"shared.medicalOrder.dialog.message\");\n dialogData.confirmText = this.translation.translate(\"shared.medicalOrder.dialog.confirmText\"); \n dialogData.cancelText = this.translation.translate(\"shared.medicalOrder.dialog.cancelText\");\n dialogData.showHeaderIcon = false;\n dialogData.showCancelButton = true;\n dialogData.loadLicense = true;\n\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\n data: dialogData,\n panelClass: 'cancel-appointment-dialog'\n });\n\n dialogRef.afterClosed().subscribe(accepted => {\n\n if(accepted){\n this._closeWorkflow(ruta);\n }\n });\n }\n else {\n this._closeWorkflow(ruta);\n } \n }\n\n private _closeWorkflow(ruta: string) {\n this.messageBusService.showHeader();\n\n this.workflowCleanup();\n\n this.router.navigateByUrl(ruta);\n }\n\n logout(): void {\n this.authService.logout();\n\n this.stepIndex = 0;\n this.loadStep(); \n }\n\n updateWorkflowStateData(): Observable {\n if(this.authService.isLoggedIn()){\n let updateModel = new RequestToVerifyUpdateModel();\n updateModel.idPacientePhr = this.state.getPatientIdRelationship();\n updateModel.tipoRelacionPacienteUsuario = this.state.getPatientRelationship();\n updateModel.workflowPosition = this.state.getPosition();\n updateModel.esUsuarioNuevo = this.userService.wasUserCreated() ? 'S' : 'N';\n\n return this.requestToVerifyService.update(this.state.idVerificacion, updateModel)\n .pipe(map((model:RequestToVerifyUpdateModel)=>{\n\n if(updateModel.esUsuarioNuevo == 'S' && !this.updatedUserLoggedIn){\n\n setTimeout(() => {\n this.userService.getUserPersonLoggedInFromService().subscribe((user:UserPerson | null)=>{\n if (user){\n this.messageBusService.loginCompleted(new LoginCompletedMessage(user));\n this.updatedUserLoggedIn = true;\n }\n }); \n }, 2000);\n }\n\n return true;\n }),\n catchError(err=>{\n this.baseService.handleServiceError(err, \"Error updating medical order request\");\n return of();\n }));\n }\n else{\n return of(true);\n }\n }\n\n workflowCleanup() {\n this.workflowService.removeWorkflowData(STORAGE.MEDICAL_ORDER_WORKFLOW_STATE);\n this.appStorageService.removeSessionItem(STORAGE.MEDICAL_ORDER_WORKFLOW_BOOTSTRAP_STATE);\n }\n}\n","
\n
\n \n
\n \n
\n \n
\n
\n \n
\n
{{avatarModel.fullName}}
\n
\n
\n \n\n \n\n
\n \n
\n \n\n
\n
\n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\nimport { PublicProfileAvatarComponentModel, PublicProfileToPublicProfileAvatarComponentModelConverter } from '../../public-profile-avatar/public-profile-avatar.component';\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { PatientVerificationComponentData, PatientVerificationDataModel } from 'src/app/shared/models/workflow/models/patient-verification-data.model';\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentName } from 'src/app/shared/enums/component-name.enum';\nimport { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\nimport * as moment from 'moment';\nimport { PatientVerificationResponse } from 'src/app/shared/interfaces/patient-verification-response';\nimport { RequestsToVerifyService } from 'src/app/core/services/requests-to-verify.service';\n\n@Component({\n selector: 'app-patient-verification',\n templateUrl: './patient-verification.component.html',\n styleUrls: ['./patient-verification.component.css']\n})\n@ComponentLookup(ComponentName.PATIENT_VERIFICATION)\nexport class PatientVerificationComponent implements IControlComponent, OnInit {\n\n avatarModel = new PublicProfileAvatarComponentModel();\n componentData: PatientVerificationComponentData;\n data: any;\n errorMessage: string;\n formulario: FormGroup;\n isCliniweb: boolean;\n loading: boolean = false;\n sending: boolean = false;\n maxDate: Date;\n minDate: Date;\n model = new PatientVerificationDataModel;\n patientName = '';\n titleTextRefence = 'shared.medicalOrder.patientVerification.title';\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private baseService: BaseService,\n private formBuilder: FormBuilder,\n private requestsToVerifyService: RequestsToVerifyService,\n private messageBusService: MessageBusService,\n private userService: UserService\n ) {\n this.configBirthday();\n this.formulario = this.formBuilder.group({\n patientBirthday: [null, Validators.required]\n });\n }\n\n private configBirthday(): void {\n const currentYear = new Date().getFullYear();\n this.maxDate = new Date();\n this.minDate = new Date(currentYear - 120, 0, 1);\n }\n\n ngOnInit(): void {\n this.parseControlData();\n this.isCliniweb = this.baseService.isCliniwebCompany();\n this.sendComponentFinishLoadingMessage();\n }\n\n private parseControlData(): void {\n this.loading = true;\n\n if (this.data && this.data.configurationData) {\n this.model = this.data.configurationData as PatientVerificationDataModel;\n this.componentData = this.model.configData; \n this.patientName = this.model.nombrePaciente;\n this.avatarModel = new PublicProfileToPublicProfileAvatarComponentModelConverter(this.model.profile);\n }\n\n this.loading = false;\n }\n\n private sendComponentFinishLoadingMessage(): void {\n if (!this.data) return;\n\n const event = new ComponentFinishLoadingMessage();\n \n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n }\n\n controlHasError(controlName: string, errorName: string): boolean {\n return this.getControl(controlName).hasError(errorName);\n }\n\n private getControl(controlName: string): AbstractControl {\n return this.formulario.controls[controlName];\n }\n\n enviar(): void {\n this.formulario.markAllAsTouched();\n \n if (this.formulario.invalid) return;\n\n const datos: { patientBirthday: string } = this.formulario.value;\n\n this.sending = true;\n this.formulario.disable();\n\n this.requestsToVerifyService.validate(datos.patientBirthday, this.model.idVerificacion).subscribe({\n next: (response) => {\n console.log('validación de la fecha de nacimiento recibida:', response);\n this.validateNext(response);\n },\n error: (error) => {\n this.baseService.handleServiceError(error, \"Error al validar la fecha de nacimiento\");\n this.formulario.enable();\n this.sending = false;\n },\n complete: () => { this.formulario.enable(); this.sending = false; }\n });\n }\n\n private validateNext(args: PatientVerificationResponse): void {\n let message = new ComponentDataSetMessage();\n \n message.componentName = ComponentName.PATIENT_VERIFICATION;\n message.data = args;\n\n if (!args.isValid) {\n this.errorMessage = 'shared.medicalOrder.patientVerification.text6';\n } else {\n this.messageBusService.onComponentDataSetMessage(message);\n }\n } \n\n getBirthdateControl(): FormControl | null{\n return this.formulario.get('patientBirthday') ? this.formulario.get('patientBirthday') as FormControl : null;\n }\n}\n","import { Component, Inject, Input, OnChanges, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { MEDICAL_REQUEST_TYPE, MY_MEDICAL_ORDER_EMPTY_STATE_TEXT, MY_MEDICAL_ORDER_EMPTY_STATE_TITLE } from 'src/app/shared/enums/medical-request-type.enum';\n\n@Component({\n selector: 'app-my-medical-orders-empty-state',\n templateUrl: './my-medical-orders-empty-state.component.html',\n styleUrls: ['./my-medical-orders-empty-state.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class MyMedicalOrdersEmptyStateComponent implements OnChanges {\n\n @Input() tipoSolicitud = MEDICAL_REQUEST_TYPE.LABORATORY_ORDER;\n text:string = '';\n title: string = '';\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n ) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.tipoSolicitud) {\n this.text = MY_MEDICAL_ORDER_EMPTY_STATE_TEXT[this.tipoSolicitud];\n this.title = MY_MEDICAL_ORDER_EMPTY_STATE_TITLE[this.tipoSolicitud];\n }\n }\n\n}\n","
\n

{{title | translate:locale.language}}

\n

{{text | translate:locale.language}}

\n \n
","
\n
\n \n \n \n {{ nombreTipo | translate:locale.language }}\n
\n \n \n \n \n
\n \n \n
\n
\n
\n {{'shared.myMedicalOrders.completedStatus' | translate:locale.language }}\n {{'shared.myMedicalOrders.pendingStatus' | translate:locale.language }}\n
\n
\n {{ nombreTipoCardText | translate:locale.language }}\n N° {{item.numeroOrdenMedica}}\n
\n para {{patientData.nombre}}\n \n
\n
\n Ordenado por {{item.nombreDoctor}}
\n el {{item.fecha | date:\"dd 'de' MMM',' yyyy\":'':locale.language}}
\n {{item.cantidadDetalles || 0}} {{nombreConteoDetalle + (item.cantidadDetalles != 1 ? 'Plural' : '') | translate:locale.language}}\n
\n
\n \n
\n
\n
\n
\n \n \n
\n
\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { MyOrderSummaryRouteDialogModel } from '../dialogs/route-dialog/route-dialog.component';\nimport { MedicalOrderService } from 'src/app/core/services/medical-order.service';\nimport { ActivatedRoute, Data, Params } from '@angular/router';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { Dependent } from '../../models/people/dependent.model';\nimport { UserPerson } from '../../models/people/user-person.model';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { UtilsService } from 'src/app/core/services/utils.service';\nimport { PublicProfileAvatarComponentModel } from '../public-profile-avatar/public-profile-avatar.component';\nimport { PublicProfileType } from '../../models/people/profile-search-results.model';\nimport { MEDICAL_REQUEST_STATE, MEDICAL_REQUEST_TYPE, MY_MEDICAL_ORDERS_CARD_TEXT, MY_MEDICAL_ORDERS_BUTTON_TEXT, MY_MEDICAL_ORDERS_TITLE, MY_MEDICAL_ORDER_DETAIL_COUNT_TEXT } from '../../enums/medical-request-type.enum';\nimport { Person } from '../../models/people/person.model';\nimport { MedicalOrderViewModel } from '../../models/clinic-history/medical-order.model';\nimport { BaseService } from 'src/app/core/services/base.service';\n\n@Component({\n selector: 'app-my-medical-orders',\n templateUrl: './my-medical-orders.component.html',\n styleUrls: ['./my-medical-orders.component.css']\n})\n@ComponentLookup('MyMedicalOrdersComponent')\nexport class MyMedicalOrdersComponent implements OnDestroy, OnInit {\n\n loading: boolean;\n items: MedicalOrderItemModel[] = [];\n private ngUnsubscribe = new Subject();\n patientData: Person = new Person;\n patientId: number;\n\n idTipo: number;\n nombreTipo: string;\n nombreTipoCardText: string;\n nombreTipoButtonText: string;\n nombreConteoDetalle: string;\n\n tipoSolitudEnum = MEDICAL_REQUEST_TYPE;\n estadoOrdenMedicaEnum = MEDICAL_REQUEST_STATE;\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private baseService: BaseService,\n private breakpointObserver: BreakpointObserver,\n private routeDialogService: RouteDialogService,\n private medicalOrderService: MedicalOrderService,\n private route: ActivatedRoute,\n private userService: UserService,\n private utilsService: UtilsService\n ) {\n this.route.data.subscribe({ next: this.routeParamsNext.bind(this) });\n }\n\n ngOnInit(): void { \n\n this.loading = true;\n\n this.route.queryParams\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((queryParams) => {\n this.configByParams(queryParams);\n },\n error => {\n console.log(error)\n\n this.loading = false;\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n private configByParams(params: Params){\n if(params[\"p\"]){\n\n this.patientId = +params[\"p\"];\n\n this.userService.getUserDependents()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((dependents: Dependent[])=>{\n\n let dependent = dependents.find(d=> d.idPersona == +params[\"p\"]);\n\n if(dependent){\n dependent.id = dependent.idPersona;\n this.setPatient(dependent);\n this.getMedicalOrders();\n }\n else {\n this.loading = false;\n }\n });\n }\n else{\n this.userService.getUserPersonLoggedIn()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((userPerson:UserPerson | null)=>{\n if(userPerson){\n\n this.setPatient(userPerson);\n this.getMedicalOrders();\n }\n else{\n this.loading = false;\n }\n });\n }\n }\n\n private setPatient(person: Person){\n this.patientData = person;\n\n this.patientData.ubicacionLogo = person.ubicacionLogo \n ? person.ubicacionLogo \n : this.utilsService.getPersonDefaultAvatarUrl(person.fechaNacimiento, person.sexo ?? 'm');\n }\n\n private routeParamsNext(args: Data): void {\n this.idTipo = args.idsTipoContenidos[0];\n this.nombreTipo = MY_MEDICAL_ORDERS_TITLE[this.idTipo];\n this.nombreTipoCardText = MY_MEDICAL_ORDERS_CARD_TEXT[this.idTipo];\n this.nombreTipoButtonText = MY_MEDICAL_ORDERS_BUTTON_TEXT[this.idTipo];\n this.nombreConteoDetalle = MY_MEDICAL_ORDER_DETAIL_COUNT_TEXT[this.idTipo];\n }\n\n private getMedicalOrders(){\n\n const tipos = this.idTipo == MEDICAL_REQUEST_TYPE.LABORATORY_ORDER || this.idTipo == MEDICAL_REQUEST_TYPE.RADIOLOGY_ORDER\n ? `${MEDICAL_REQUEST_TYPE.LABORATORY_ORDER},${MEDICAL_REQUEST_TYPE.RADIOLOGY_ORDER}`\n : this.idTipo.toString();\n\n this.medicalOrderService.getList(this.patientData.id, tipos)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((medicalOrders:MedicalOrderViewModel[])=>{\n\n medicalOrders.forEach(medicalOrder=>{\n\n let item = this.baseService.parseObject(medicalOrder);\n item.publicProfileAvatar = new PublicProfileAvatarComponentModel();\n \n item.publicProfileAvatar.personId = item.idDoctor;\n item.publicProfileAvatar.avatarUrl = item.avatarDoctor;\n item.publicProfileAvatar.fullName = item.nombreDoctor;\n item.publicProfileAvatar.sex = '9';\n item.publicProfileAvatar.profileType = PublicProfileType.Doctor;\n\n this.items.push(item);\n });\n\n this.loading = false;\n });\n }\n\n viewMoreClick(uidOrdenMedica: string): void {\n let routeDialogModel = new MyOrderSummaryRouteDialogModel();\n const isMobile: boolean = this.breakpointObserver.isMatched('(max-width: 800px)');\n if (isMobile) routeDialogModel.headerName = 'DefaultBackHeaderComponent';\n routeDialogModel.route = `ordenes-medicas/${ uidOrdenMedica }`;\n \n this.routeDialogService.openDialog(routeDialogModel);\n }\n}\n\nexport class MedicalOrderItemModel extends MedicalOrderViewModel{\n publicProfileAvatar: PublicProfileAvatarComponentModel;\n}","import { TextLanguage } from \"../people/text-language.model\";\r\n\r\nexport class GrowthMeasurementType{\r\n id: ChartType;\r\n rangos: GrowthMeasurementRange[];\r\n}\r\n\r\nexport class GrowthMeasurementRange{\r\n id: number;\r\n nombre: string;\r\n rangoInicial: number;\r\n rangoFinal: number;\r\n codigoUnidadMedida: number;\r\n nombreUnidadMedida: string;\r\n codigoEstandar: GrowthMeasurementStandard;\r\n intervaloX: number;\r\n intervaloY: number;\r\n}\r\n\r\nexport enum ChartType{\r\n SIZE_FOR_AGE = 1,\r\n WEIGHT_FOR_AGE = 2,\r\n WEIGHT_FOR_SIZE = 3,\r\n BMI_FOR_AGE = 4,\r\n HEAD_CIRCUMFERENCE_FOR_AGE = 5\r\n}\r\n\r\nexport enum GrowthMeasurementStandard{\r\n OMS = 1,\r\n CDC = 2\r\n}\r\n\r\nexport enum GrowthMeasurementUnitType{\r\n YEARS = 479,\r\n MONTHS = 481,\r\n WEEKS = 486 \r\n}","import { Injectable } from \"@angular/core\";\r\nimport { HttpBaseService } from \"./http-base-service\";\r\nimport { Observable } from \"rxjs\";\r\nimport { GrowthMeasurements } from \"src/app/shared/models/clinic-history/growth-measurements.model\";\r\nimport { GrowthPercentile } from \"src/app/shared/models/clinic-history/growth-percentile.model\";\r\nimport { ChartType, GrowthMeasurementType } from \"src/app/shared/models/clinic-history/growth-measurement-type.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GrowthMeasurementsService{\r\n\r\n constructor(\r\n private http: HttpBaseService\r\n ) { }\r\n\r\n getByPatientId(idPaciente:number, idEmpresa: number, idResponsableServicio: number, idTipoConcepto?:number): Observable{\r\n let url = `api/mediciones-crecimiento/paciente/${idPaciente}`;\r\n url += `?idEmpresa=${idEmpresa}`;\r\n url += `&idResponsableServicio=${idResponsableServicio}`;\r\n\r\n if(idTipoConcepto && idTipoConcepto > 0)\r\n url += `&idTipoConcepto=${idTipoConcepto}`;\r\n\r\n return this.http.get(url);\r\n }\r\n\r\n getPercentiles(\r\n idEstandarMedicion: number, \r\n idTipoMedicion:number, \r\n sexo:string, \r\n rangoInicial: number, \r\n rangoFinal: number, \r\n idUnidadMedidaRango:number): Observable{\r\n let url = `api/mediciones-crecimiento/percentiles`\r\n url += `?idEstandarMedicion=${idEstandarMedicion}`;\r\n url+=`&idTipoMedicion=${idTipoMedicion}`;\r\n url+=`&sexo=${sexo}`;\r\n url+=`&rangoInicial=${rangoInicial}`;\r\n url+=`&rangoFinal=${rangoFinal}`;\r\n url+=`&idUnidadMedidaRango=${idUnidadMedidaRango}`;\r\n\r\n return this.http.get(url);\r\n }\r\n\r\n getMeasurementTypes(): Observable{\r\n return this.http.get(\"api/mediciones-crecimiento/tipos\");\r\n }\r\n\r\n getHcaFieldByType(chartType:ChartType):string{\r\n switch(chartType){\r\n case ChartType.SIZE_FOR_AGE:\r\n default:\r\n return 'TallaEdad';\r\n case ChartType.WEIGHT_FOR_AGE:\r\n return 'PesoEdad';\r\n case ChartType.WEIGHT_FOR_SIZE:\r\n return 'PesoTalla';\r\n case ChartType.BMI_FOR_AGE:\r\n return 'IMCEdad';\r\n case ChartType.HEAD_CIRCUMFERENCE_FOR_AGE:\r\n return 'CirunferenciaCefalicaEdad';\r\n }\r\n }\r\n\r\n getIntervaleByRangeAndType(rangeId: number, typeId:number){\r\n }\r\n}","export enum Gender {\r\n MALE = 'M',\r\n FEMALE = 'F',\r\n OTHER = '9'\r\n}","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { Gender } from 'src/app/shared/enums/person-gender.enum';\n\n@Component({\n selector: 'app-growth-charts-tab-data-type',\n templateUrl: './growth-charts-tab-data-type.component.html',\n styleUrls: ['./growth-charts-tab-data-type.component.css']\n})\nexport class GrowthChartsTabDataTypeComponent implements OnInit {\n\n @Input() gender: string;\n\n private genderClassMap: {[gender: string]: string} = {\n [Gender.MALE]: 'ninio',\n [Gender.FEMALE]: 'ninia',\n [Gender.OTHER]: ''\n };\n private genderTextMap: {[gender: string]: string} = {\n [Gender.MALE]: 'shared.growthCharts.omsDataBoy',\n [Gender.FEMALE]: 'shared.growthCharts.omsDataGirl',\n [Gender.OTHER]: ''\n };\n\n get omsDataColor(): string {\n return this.genderClassMap[this.gender] || '';\n }\n\n get omsDataText(): string {\n return this.genderTextMap[this.gender] || '';\n }\n\n constructor(@Inject(L10N_LOCALE) public locale: L10nLocale) { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n {{omsDataText | translate:locale.language}}\n
\n
","
\n
\n
\n \n \n \n {{ range.nombre | i18nText:locale.language }}\n \n \n \n
\n
\n \n
\n
\n","import { Component, Inject, Input, OnDestroy, OnInit, ViewChild, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { GrowthMeasurementsService } from 'src/app/core/services/growth-measurements.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { ChartType, GrowthMeasurementRange, GrowthMeasurementUnitType } from 'src/app/shared/models/clinic-history/growth-measurement-type.model';\nimport { GrowthMeasurements } from 'src/app/shared/models/clinic-history/growth-measurements.model';\nimport { GrowthPercentile } from 'src/app/shared/models/clinic-history/growth-percentile.model';\nimport { MatSelect } from '@angular/material/select';\ndeclare var CanvasJS : any;\n\n@Component({\n selector: 'app-growth-charts-tab',\n templateUrl: './growth-charts-tab.component.html',\n styleUrls: ['./growth-charts-tab.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class GrowthChartsTabComponent implements OnInit, OnDestroy {\n\n //subscribes\n private ngUnsubscribe = new Subject();\n\n @Input() loading: boolean = false;\n @Input() id: string;\n @Input() type: ChartType;\n @Input() ranges: GrowthMeasurementRange[] = [];\n @Input() gender: string;\n @Input() measurements: GrowthMeasurements;\n @ViewChild('rangeSelect') rangeSelect: MatSelect;\n\n percentiles: GrowthPercentile[] = [];\n\n selectedRange: number;\n\n axisYText: string;\n\n constructor(\n private baseService: BaseService,\n private layoutService: LayoutService,\n private growthMeasurementsService: GrowthMeasurementsService,\n private translation: L10nTranslationService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n ) {\n }\n\n ngOnInit(): void {\n if(this.ranges.length > 0){\n this.selectedRange = this.ranges[0].id;\n\n this.updateTab();\n }\n\n this.fillAxisYText();\n\n this.translation.onChange()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe({\n next: () => {\n this.fillAxisYText();\n\n if(!this.loading)\n this.renderCharts();\n }\n });\n }\n\n ngOnDestroy():void{\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.measurements) {\n this.renderCharts();\n }\n }\n\n updateTab(){\n const range = this.ranges.find(r => r.id == this.selectedRange);\n\n if(!range){\n return; \n }\n\n this.loading = true;\n\n const chartContainer = document.getElementById('chart_' + this.type);\n\n if (chartContainer) {\n chartContainer.innerHTML = '';\n\n const emptyStateDiv = document.createElement('div');\n emptyStateDiv.className = 'loading-state';\n emptyStateDiv.innerHTML = 'Cargando...';\n\n chartContainer.appendChild(emptyStateDiv);\n }\n\n this.growthMeasurementsService.getPercentiles(\n range.codigoEstandar, \n this.type,\n this.gender,\n range.rangoInicial,\n range.rangoFinal,\n range.codigoUnidadMedida\n ).subscribe(p=>{\n\n this.percentiles = p;\n\n this.loading = false;\n\n this.renderCharts();\n });\n\n }\n\n renderCharts() {\n const chartContainer = document.getElementById('chart_' + this.type);\n\n if (chartContainer) {\n chartContainer.innerHTML = '';\n }\n\n let selectedRangeObj = this.ranges.find(r => r.id == this.selectedRange);\n\n if (!selectedRangeObj) {\n return;\n }\n\n if (!this.measurements || this.measurements.mediciones.length === 0 || this.getPatientGrowthMeasurementsByRange(selectedRangeObj).length === 0) {\n chartContainer?.parentElement?.classList.add('empty-state');\n this.showEmptyState();\n return;\n }\n\n chartContainer?.parentElement?.classList.remove('empty-state');\n\n // agrupo los percentiles por el nombre\n const groupedData = this.percentiles.reduce((acc:any, item:GrowthPercentile) => {\n if (!acc[item.nombre]) {\n acc[item.nombre] = [];\n }\n acc[item.nombre].push({ x: item.x, y: item.y, legendText: item.nombre });\n return acc;\n }, {});\n\n // genero la estructura del objeto de canvajs para cada percentil\n const data = Object.keys(groupedData).map(key => {\n const dataPercentile = new CanvasDataModel();\n\n dataPercentile.type = \"line\";\n dataPercentile.name = key;\n dataPercentile.markerSize = 0;\n dataPercentile.indexLabelFontSize = 13;\n dataPercentile.indexLabelFontFamily = \"Segoe UI\";\n dataPercentile.indexLabelFontColor = \"#404040\";\n dataPercentile.showInLegend = true;\n dataPercentile.dataPoints = groupedData[key];\n\n return dataPercentile;\n });\n\n // datos del paciente\n const dataPatient = new CanvasDataModel();\n dataPatient.type = \"line\";\n dataPatient.name = \"Paciente\";\n dataPatient.lineColor = \"#000000\";\n dataPatient.markerColor = \"#000000\";\n dataPatient.color = \"#000000\";\n dataPatient.indexLabelFontSize = 13;\n dataPatient.indexLabelFontFamily = \"Segoe UI\";\n dataPatient.indexLabelFontColor = \"#404040\";\n dataPatient.showInLegend = true;\n dataPatient.dataPoints = this.getPatientGrowthMeasurementsByRange(selectedRangeObj);\n \n data.push(dataPatient);\n\n // opciones para canvasjs\n let options = {\n animationEnabled: true,\n animationDuration: 500,\n theme: \"light2\",\n axisY: {\n title: this.axisYText,\n titleFontSize: 16,\n titleFontFamily: \"Segoe UI\",\n titleFontColor: '#404040',\n includeZero: false,\n interval: selectedRangeObj.intervaloY\n },\n axisX: {\n },\n data: data,\n toolTip: {\n backgroundColor: 'black',\n contentFormatter: (e:any) => {\n let content = null;\n for (var i = 0; i < e.entries.length; i++) {\n const item = e.entries[i];\n if (item.dataSeries.name === 'Paciente')\n content = `${item.dataPoint.xReference}
${item.dataPoint.yReference}
${item.dataPoint.references}`;\n }\n return content;\n },\n fontColor: 'white',\n fontSize: 12\n } \n };\n\n // configuración de eje x\n const axisX = new AxisXCanvasDataModel();\n axisX.title = this.layoutService.getTextByLanguage(selectedRangeObj.nombreUnidadMedida, this.locale.language);\n axisX.titleFontSize = 16;\n axisX.titleFontFamily = \"Segoe UI\";\n axisX.titleFontColor = '#404040';\n axisX.interval = selectedRangeObj.intervaloX;\n\n if(this.type == ChartType.WEIGHT_FOR_SIZE){\n axisX.title = this.translation.translate('shared.growthChartsTab.axisY1');\n axisX.minimum = data[0].dataPoints[0].x;\n axisX.maximun = data[0].dataPoints[data[0].dataPoints.length - 1].x;\n axisX.viewportMinimum = data[0].dataPoints[0].x;\n axisX.viewportMaximun = data[0].dataPoints[data[0].dataPoints.length - 1].x;\n }\n else{\n axisX.minimum = selectedRangeObj.rangoInicial;\n axisX.maximun = selectedRangeObj.rangoFinal;\n axisX.viewportMinimum = selectedRangeObj.rangoInicial;\n axisX.viewportMaximun = selectedRangeObj.rangoFinal;\n }\n\n options.axisX = axisX;\n\n let chart = new CanvasJS.Chart('chart_' + this.type, options);\n chart.render();\n }\n\n private fillAxisYText(){\n this.axisYText = this.translation.translate('shared.growthChartsTab.axisY' + this.type);\n }\n\n private getPatientGrowthMeasurementsByRange(range: GrowthMeasurementRange){\n if(!this.measurements || this.measurements.mediciones.length == 0){\n return [];\n }\n\n let measurements:CanvasDataPoint[] = [];\n\n if (this.type == ChartType.WEIGHT_FOR_SIZE) {\n measurements = this.measurements.mediciones.map(m => {\n const hca = JSON.parse(m.jsonHistoriaClinicaActual);\n const data = hca && hca['PesoTalla'] || { Percentiles: [], Unidad: 'cm' };\n const percentiles = data.Percentiles;\n\n const dataPoint:CanvasDataPoint = {\n x: m.valorTallaCm,\n y: m.valorPesoKg,\n xReference: this.translation.translate(`shared.growthChartsTab.axisYWithValue1`, { value: m.valorTallaCm }),\n yReference: this.translation.translate(`shared.growthChartsTab.axisYWithValue2`, { value: m.valorPesoKg }),\n references: percentiles.reduce((prev:any, curr:any) => `${prev}${curr.Nombre}: ${curr.Valor.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} ${data.Unidad}
`, '')\n }\n\n return dataPoint;\n });\n\n measurements = measurements.filter(m => m.x >= this.percentiles[0].x && m.x <= this.percentiles[this.percentiles.length -1].x);\n }\n else {\n const measurementsForRange = this.measurements.mediciones.filter(obj => {\n let edadTotal = this.getDecimalAge(obj.edadAnios, obj.edadMeses, obj.edadDias, range.codigoUnidadMedida);\n return edadTotal >= range.rangoInicial && edadTotal < range.rangoFinal;\n });\n\n measurements = measurementsForRange.map(m => {\n const hca = JSON.parse(m.jsonHistoriaClinicaActual);\n const data = hca && hca[this.growthMeasurementsService.getHcaFieldByType(this.type)] || { Percentiles: [], Unidad: '' };\n const percentiles = data.Percentiles;\n const edadTotal = this.getDecimalAge(m.edadAnios, m.edadMeses, m.edadDias, range.codigoUnidadMedida);\n const valor = this.getAxisYTextByType(m);\n const y = this.getAxisYByType(m);\n\n const dataPoint:CanvasDataPoint ={\n x: edadTotal,\n y: y,\n xReference: this.baseService.getDetailedAge(m.edadAnios, m.edadMeses, m.edadDias),\n yReference: valor,\n references: percentiles.reduce((prev:any, curr:any) => `${prev}${curr.Nombre}: ${curr.Valor.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} ${data.Unidad}
`, '')\n };\n\n return dataPoint;\n });\n\n measurements = measurements.filter(m => m.x >= range.rangoInicial && m.x <= range.rangoFinal);\n }\n\n return measurements.filter(m => m.y > 0);\n }\n\n private getDecimalAge(yearAge:number, monthsAge: number, daysAge: number, unitType: GrowthMeasurementUnitType):number{\n switch (unitType) {\n case GrowthMeasurementUnitType.YEARS:\n return yearAge + (monthsAge / 12) + (daysAge / 365.25); // 365.25 para años bisiestos\n case GrowthMeasurementUnitType.MONTHS:\n return (yearAge * 12) + monthsAge + (daysAge / 30.44); // 30.44 para promedio mensual\n case GrowthMeasurementUnitType.WEEKS:\n return (yearAge * 52) + (monthsAge * 4.34524) + (daysAge / 7); // 4.34524 promedio de semanas por mes\n default:\n return 0;\n }\n }\n\n private getAxisYTextByType(hca:any):string{\n let value = this.getAxisYByType(hca);\n\n return this.translation.translate(`shared.growthChartsTab.axisYWithValue${this.type}`, { value });\n }\n\n private getAxisYByType(hca:any):number{\n switch (this.type) {\n case ChartType.SIZE_FOR_AGE:\n default:\n return hca.valorTallaCm;\n case ChartType.WEIGHT_FOR_AGE:\n return hca.valorPesoKg;\n case ChartType.BMI_FOR_AGE:\n return hca.valorIMC;\n case ChartType.HEAD_CIRCUMFERENCE_FOR_AGE:\n return hca.valorCircunferenciaCefalicaCm;\n }\n }\n\n private showEmptyState() {\n const chartContainer = document.getElementById('chart_' + this.type);\n\n if (chartContainer) {\n chartContainer.innerHTML = '';\n\n const emptyStateDiv = document.createElement('div');\n emptyStateDiv.className = 'empty-state';\n\n const img = document.createElement('img');\n img.src = '/assets/images/curvas_crecimiento/empy_state_curvas.png';\n img.alt = 'Empty State';\n img.className = 'image-empty';\n emptyStateDiv.appendChild(img);\n\n const selectedRange = this.ranges.find(r => r.id === this.selectedRange);\n const selectedRangeText = this.layoutService.getTextByLanguage(selectedRange?.nombre, this.locale.language).toLowerCase();\n\n const tipoMedicion = this.layoutService.getTextByLanguage(this.translation.translate(`shared.growthCharts.labeltab_${this.type}`), this.locale.language);\n\n let tabText;\n\n switch (this.type) {\n case 4: \n tabText = \"IMC\";\n break;\n default:\n tabText = tipoMedicion.split(' ')[0].toLowerCase();\n break;\n }\n\n const text = `No hay datos de ${tabText} que graficar para la escala `;\n\n const textDiv = document.createElement('div');\n textDiv.className = 'empty-state-text text-common';\n textDiv.innerHTML = text;\n\n // Creo un span para el selectedRangeText\n const rangeTextSpan = document.createElement('span');\n rangeTextSpan.className = 'range-text';\n rangeTextSpan.innerText = selectedRangeText;\n\n // Agrego evento de clic al span para desplegar el menu de rangos\n rangeTextSpan.addEventListener('click', () => {\n if (this.rangeSelect) {\n this.rangeSelect.open();\n }\n });\n\n textDiv.appendChild(rangeTextSpan);\n emptyStateDiv.appendChild(textDiv);\n\n // Agrego texto descripcion\n const additionalTextDiv = document.createElement('div');\n additionalTextDiv.className = 'additional-text text-common';\n additionalTextDiv.innerText = \"Para ver información de crecimiento, puedes probar cambiando la escala y/o navegando entre las diferentes pestañas de Peso, Talla, Cabeza, etc.\";\n\n emptyStateDiv.appendChild(additionalTextDiv);\n chartContainer.appendChild(emptyStateDiv);\n }\n }\n}\n\nexport class CanvasDataModel{\n type: string;\n name: string;\n lineColor: string;\n markerSize: number;\n markerColor: string;\n color: string;\n indexLabelFontSize: number;\n indexLabelFontFamily: string;\n indexLabelFontColor: string;\n showInLegend: boolean;\n dataPoints: any\n}\nexport class AxisXCanvasDataModel{\n title: string | undefined;\n titleFontSize: number;\n titleFontFamily: string;\n titleFontColor: string;\n interval: number;\n viewportMinimum: number;\n viewportMaximun: number;\n minimum: number;\n maximun: number;\n}\n\nexport class CanvasDataPoint {\n x: number;\n y: number;\n xReference: string;\n yReference: string;\n references: string;\n}\n","
\n\n
\n \n \n \n {{ 'shared.growthCharts.breadcrumbs2' | translate:locale.language }}\n
\n
\n
\n \n
\n {{model.patientFirstName + ' ' + model.patientLastName}}\n {{ model.patientBirthDate | ageFromBirthday }}\n
1\">\n \n \n \n {{ doctor.nombre }}\n \n \n \n
\n \n \n \n \n \n \n \n \n
\n
","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { AvatarUploadComponentOptions, AvatarUploadedFileModel } from '../avatar-upload/avatar-upload.component';\nimport { DependentRequest } from '../../models/people/dependent.model';\nimport { GrowthMeasurementType } from '../../models/clinic-history/growth-measurement-type.model';\nimport { GrowthMeasurementsService } from 'src/app/core/services/growth-measurements.service';\nimport { GrowthMeasurements } from '../../models/clinic-history/growth-measurements.model';\nimport { Subject } from 'rxjs';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\n\n@Component({\n selector: 'app-growth-charts',\n templateUrl: './growth-charts.component.html',\n styleUrls: ['./growth-charts.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('GrowthChartsComponent')\nexport class GrowthChartsComponent implements IControlComponent, OnInit, OnDestroy {\n data: any;\n private ngUnsubscribe = new Subject();\n private tabChangeSubject = new Subject();\n loading: boolean;\n tabLoading: boolean = false;\n model: GrowthChartsModel = new GrowthChartsModel();\n avatarUploadOptions : AvatarUploadComponentOptions;\n\n showDoctorSelect: boolean = true;\n selectedDoctorId: number = 0;\n\n selectedTabIndex = 0;\n initializedTabs: boolean[];\n\n patientId?: number;\n\n constructor(\n private route: ActivatedRoute,\n private userService: UserService,\n private baseService: BaseService,\n private growthMeasurementsService: GrowthMeasurementsService,\n private translation: L10nTranslationService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnInit(): void {\n this.loading = true;\n\n this.initAvatarUploadOptions();\n\n this.growthMeasurementsService.getMeasurementTypes()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(measurementTypes=>{\n this.initGrowthChartTabs(measurementTypes);\n });\n\n this.tabChangeSubject\n .pipe(takeUntil(this.ngUnsubscribe), debounceTime(570))\n .subscribe(this._onTabChange.bind(this));\n\n this.route.queryParams\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((queryParams) => {\n this.configByParams(queryParams);\n },\n error => {\n console.log(error)\n\n this.loading = false;\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n updateDoctor($event: any){\n this.selectedDoctorId = $event.value;\n this.getGrowthMeasurementsPatient(this.selectedDoctorId);\n }\n\n onAvatarUploaded(file: AvatarUploadedFileModel) {\n this.model.patientAvatar = file?.webUrl;\n this.model.patientObject.ubicacionLogo = file?.webUrl;\n\n if(this.model.patientDependentRelationId > 0){\n //dependiente\n var model = new DependentRequest();\n\n model.idPersona = this.model.patientId; \n model.idRelacionDependiente = this.model.patientDependentRelationId;\n model.nombre = this.model.patientFirstName;\n model.apellido = this.model.patientLastName;\n model.fechaNacimiento = this.model.patientBirthDate;\n model.sexo = this.model.patientGender;\n model.tipoRelacion = this.model.patientRelationType;\n model.ubicacionLogo = this.model.patientAvatar;\n\n this.userService.createOrUpdateDependent(model);\n }\n else{\n this.userService.updateUserLoggedIn(this.model.patientObject);\n } \n }\n\n onTabChange(event: any): void {\n this.tabChangeSubject.next(event)\n }\n\n private _onTabChange(index: number): void {\n const trueIndex = this.initializedTabs.findIndex(x => x);\n\n if (trueIndex >= 0 && index != trueIndex) {\n this.initializedTabs[trueIndex] = false;\n this.setSelectedTabIndex(index);\n }\n }\n\n private configByParams(params: Params){\n if(params[\"idResponsableServicio\"]){\n this.showDoctorSelect = false;\n this.selectedDoctorId = params[\"idResponsableServicio\"];\n }\n\n if(params[\"p\"]){\n this.patientId = +params[\"p\"];\n\n //dependiente\n this.userService.getUserDependents()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(dependents => {\n \n let dependent = dependents.find(d=> d.idPersona == +params[\"p\"]);\n\n if(dependent){\n this.model.patientId = dependent.idPersona;\n this.model.patientFirstName = dependent.nombre;\n this.model.patientLastName = dependent.apellido;\n this.model.patientAvatar = dependent.ubicacionLogo;\n this.model.patientBirthDate = dependent.fechaNacimiento;\n this.model.patientGender = dependent.sexo;\n this.model.patientRelationType = dependent.tipoRelacion;\n this.model.patientDependentRelationId = dependent.id;\n this.model.patientObject = dependent;\n\n this.loadGrowthData();\n this.loading = false;\n }\n });\n\n }\n else{\n this.userService.getUserPersonLoggedIn()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(p => {\n if (p) {\n this.model.patientId = p.id;\n this.model.patientFirstName = p.nombre;\n this.model.patientLastName = p.apellido;\n this.model.patientAvatar = p.ubicacionLogo;\n this.model.patientBirthDate = p.fechaNacimiento;\n this.model.patientGender = p.sexo;\n this.model.patientObject = p;\n\n this.loadGrowthData();\n\n this.loading = false;\n } \n });\n }\n }\n\n private loadGrowthData(){\n const doctorId = this.model.growthMeasurements && this.model.growthMeasurements.idResponsableMedicion > 0 \n ? this.model.growthMeasurements.idResponsableMedicion\n : this.selectedDoctorId > 0\n ? this.selectedDoctorId\n : -1;\n\n this.getGrowthMeasurementsPatient(doctorId);\n }\n\n private getGrowthMeasurementsPatient(doctorId: number){\n this.tabLoading = true;\n this.growthMeasurementsService.getByPatientId(\n this.model.patientId, \n this.baseService.getCompanyId(),\n doctorId \n ).subscribe(growthMeasurements=>{\n this.model.growthMeasurements = growthMeasurements;\n\n if(this.showDoctorSelect && growthMeasurements && growthMeasurements.responsablesAsociados.length > 0){\n this.selectedDoctorId = growthMeasurements.responsablesAsociados[0].id;\n }\n\n this.tabLoading = false;\n });\n }\n\n private initAvatarUploadOptions(){\n this.avatarUploadOptions = new AvatarUploadComponentOptions();\n this.avatarUploadOptions.requiredFileType = \"image/png,image/jpeg\";\n this.avatarUploadOptions.selectFileLabel = \"añadir foto\";\n this.avatarUploadOptions.changeFileLabel = \"Editar\";\n this.avatarUploadOptions.showFileOnceUpload = true;\n\n this.avatarUploadOptions.selectFileLabel = this.translation.translate('shared.growthCharts.selectFile');\n this.avatarUploadOptions.changeFileLabel = this.translation.translate('shared.growthCharts.changeFile');\n this.avatarUploadOptions.changePictureLabel = this.translation.translate('shared.growthCharts.changePicture');\n this.avatarUploadOptions.deleteFileLabel = this.translation.translate('shared.growthCharts.deleteFile');\n }\n\n private initGrowthChartTabs(measurementTypes: GrowthMeasurementType[]){\n this.model.growthTabsModel = measurementTypes;\n\n this.initializedTabs = new Array(this.model.growthTabsModel.length).fill(false);\n this.setSelectedTabIndex(0);\n }\n\n private setSelectedTabIndex(index: number): void {\n this.selectedTabIndex = index;\n this.initializedTabs[this.selectedTabIndex] = true;\n }\n\n}\n\nexport class GrowthChartsModel{\n patientId: number;\n patientAvatar: string;\n patientFirstName: string;\n patientLastName: string;\n patientBirthDate: Date;\n patientGender: string;\n patientRelationType: number;\n patientDependentRelationId: number;\n patientObject: any;\n\n growthTabsModel: GrowthMeasurementType[];\n growthMeasurements: GrowthMeasurements;\n}\n\n\n\n","
\n \n \n \n
\n \n
\n
\n
\n \n
\n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { WorkflowLookup } from 'src/app/shared/decorators/workflow-lookup.decorator';\nimport { BaseWorkflowComponent } from '../base-workflow/base-workflow.component';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { DOCUMENT, Location } from '@angular/common';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LoginCompletedMessage, MessageBusService, ServiceErrorMessage } from 'src/app/core/services/message-bus.service';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { WorkflowService } from 'src/app/core/services/workflow.service';\nimport { WorkflowStepService } from 'src/app/core/services/workflow-step.service';\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable, of } from 'rxjs';\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\nimport { catchError, map, switchMap, takeUntil } from 'rxjs/operators';\nimport { CompanyModel } from 'src/app/shared/models/systems/company.model';\nimport { StatesRequestVerifyDataModel } from '../../states-request-verify/states-request-verify.component';\nimport { OnlineAppointmentStatus } from 'src/app/shared/enums/online-appointment-status.enum';\nimport { GrowthCurvesWorkflowState } from 'src/app/shared/models/workflow/states/growth-curves-workflow-state.model';\nimport { WorkflowInitialData } from 'src/app/shared/models/process/workflow-initial-data.model';\nimport { RequestsToVerifyConfirmationResponse, RequestsToVerifyService } from 'src/app/core/services/requests-to-verify.service';\nimport { SenderPatientRelationship } from 'src/app/shared/models/process/base-request.model';\nimport { RequestToVerifySummary } from 'src/app/shared/interfaces/request-to-verify-summary';\nimport { PublicProfile } from 'src/app/shared/models/people/public-profile.model';\nimport { RequestToVerifyUpdateModel } from 'src/app/shared/models/systems/resquest-to-verify-update.model';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\n\n@Component({\n selector: 'app-growth-curves-workflow',\n templateUrl: './growth-curves-workflow.component.html',\n styleUrls: ['./growth-curves-workflow.component.css']\n})\n@WorkflowLookup('GrowthCurvesWorkflowComponent')\nexport class GrowthCurvesWorkflowComponent extends BaseWorkflowComponent implements OnInit {\n\n logoutFn: () => void;\n onlineAppointmentStatus: OnlineAppointmentStatus;\n showState = false;\n data: RequestToVerifySummary;\n state: GrowthCurvesWorkflowState = new GrowthCurvesWorkflowState();\n statesRequestVerifyDataModel: StatesRequestVerifyDataModel;\n updatedUserLoggedIn: boolean = false;\n\n constructor(\n @Inject(DOCUMENT) protected document: Document,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n protected baseService: BaseService,\n protected location: Location,\n protected messageBusService: MessageBusService,\n protected publicProfileService: PublicProfileService,\n protected route: ActivatedRoute,\n protected workflowService: WorkflowService,\n protected workflowStepService: WorkflowStepService,\n private appointmentService: AppointmentService,\n private requestToVerifyService: RequestsToVerifyService,\n private authService: AuthService,\n private dialog: MatDialog,\n private router: Router,\n private translation: L10nTranslationService,\n private requestsToVerifyService: RequestsToVerifyService,\n private userService: UserService\n ) {\n super(location, route, baseService, messageBusService, publicProfileService, workflowService, workflowStepService, document);\n this.logoutFn = this.logout.bind(this);\n }\n\n ngOnInit(): void { \n if(this.data && this.data.idVerificacion){\n this.checkMedicalOrderStatus();\n } else{\n this.startWorkflow();\n }\n }\n\n private checkMedicalOrderStatus(): void {\n this.appointmentService.getStatus(this.data.idVerificacion).subscribe(\n this.getStatusNext.bind(this),\n _ => this.messageBusService.serviceError(new ServiceErrorMessage(\"Error getting request status\"))\n );\n }\n\n private getStatusNext(status: OnlineAppointmentStatus): void {\n this.onlineAppointmentStatus = status;\n\n if(this.onlineAppointmentStatus == OnlineAppointmentStatus.POR_COMPLETAR \n || this.onlineAppointmentStatus == OnlineAppointmentStatus.COMPLETADA){\n this.showState = false;\n this.startWorkflow();\n } else{\n this.configStatusView();\n this.showState = true;\n }\n }\n\n configStatusView(): void {\n this.statesRequestVerifyDataModel = new StatesRequestVerifyDataModel();\n\n this.statesRequestVerifyDataModel.buttonActionFn = this.gotoHome.bind(this);\n this.statesRequestVerifyDataModel.buttonTextRefI18n = 'shared.statesRequestVerify.buttonHomeText';\n this.statesRequestVerifyDataModel.companyLogoUrl = 'assets/images/cliniweb/logo-cliniweb-phr.svg';\n this.statesRequestVerifyDataModel.mainImageUrl = 'assets/images/cliniweb/Campana.gif';\n this.statesRequestVerifyDataModel.showActionButton = true;\n this.statesRequestVerifyDataModel.showHomeButton = false;\n this.statesRequestVerifyDataModel.textRefI18n = 'shared.statesRequestVerify.scheduledAppointment';\n }\n\n gotoHome(): void {\n this.router.navigate(['/']);\n }\n\n startWorkflow(): void {\n // Set this workflow as active\n this.workflowService.setWorkflowTypeActive(STORAGE.GROWTH_CURVES_WORKFLOW_STATE);\n\n // Get state\n this.getState().subscribe((state: GrowthCurvesWorkflowState)=>{\n this.state = state;\n\n this.workflowService.setWorkflowDataState(this.state);\n this.init();\n });\n\n this.progressBarModel.closeFn = this.closeWorkflow.bind(this);\n }\n\n getState() : Observable {\n var state = this.workflowService.getWorkflowDataState() as GrowthCurvesWorkflowState;\n\n if(state){\n return of(state);\n }\n else if(this.data){\n return this.buildStateFromModel(this.data);\n }\n else {\n // This can happend if the user left the tab open with the workflow\n // When session expire the session variable with the workflow state will disappear\n // Go back to home\n this.router.navigate(['/']);\n throw \"State expired\";\n } \n }\n\n buildStateFromModel(sourceModel: RequestToVerifySummary) : Observable {\n let state = new GrowthCurvesWorkflowState();\n let growthCurvesRequest = new WorkflowInitialData();\n\n growthCurvesRequest.idTipoSolicitud = sourceModel.idTipoSolicitud;\n growthCurvesRequest.checkoutUrl = window.location.origin + '/curvas-crecimiento/'; \n growthCurvesRequest.localizacion = this.locale.language;\n\n growthCurvesRequest.perfilPublico = new PublicProfile();\n growthCurvesRequest.perfilPublico.id = sourceModel.idResponsableServicio;\n growthCurvesRequest.perfilPublico.nombrePersona = sourceModel.nombreResponsableServicio;\n growthCurvesRequest.perfilPublico.ubicacionFoto = sourceModel.ubicacionFoto;\n\n growthCurvesRequest.idUsuario = sourceModel.idUsuario;\n growthCurvesRequest.idPaciente = sourceModel.idPaciente;\n growthCurvesRequest.nombrePaciente = sourceModel.nombrePaciente;\n growthCurvesRequest.relacionEmisorPaciente = sourceModel.relacionEmisorPaciente;\n\n growthCurvesRequest.workflowPosition = sourceModel.workflowPosition;\n\n return this.baseService.getCompanyByLicense()\n .pipe(switchMap((company: CompanyModel)=>{\n growthCurvesRequest.idEmpresaOrigen = company.id;\n growthCurvesRequest.nombreEmpresaOrigen = company.name;\n\n state.requestModel = growthCurvesRequest;\n state.idVerificacion = sourceModel.idVerificacion;\n\n return of(state);\n }), \n catchError((err) => {\n this.baseService.handleServiceError(err, \"Error getting growth curves request\");\n return of(state);\n }));\n }\n\n closeWorkflow(ruta = 'welcome') {\n // Only show the message if the user is logged in\n if (this.state && this.state.getUserId() > 0 && ruta == 'welcome') {\n\n let dialogData = new DialogData();\n dialogData.title = this.translation.translate(\"shared.medicalOrder.dialog.title\");\n dialogData.message = this.translation.translate(\"shared.medicalOrder.dialog.message\");\n dialogData.confirmText = this.translation.translate(\"shared.medicalOrder.dialog.confirmText\"); \n dialogData.cancelText = this.translation.translate(\"shared.medicalOrder.dialog.cancelText\");\n dialogData.showHeaderIcon = false;\n dialogData.showCancelButton = true;\n dialogData.loadLicense = true;\n\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\n data: dialogData,\n panelClass: 'cancel-appointment-dialog'\n });\n\n dialogRef.afterClosed().subscribe(accepted => {\n\n if(accepted){\n this._closeWorkflow(ruta);\n }\n });\n }\n else {\n this._closeWorkflow(ruta);\n } \n }\n\n private _closeWorkflow(ruta: string) {\n this.messageBusService.showHeader();\n\n this.workflowCleanup();\n\n this.router.navigateByUrl(ruta);\n }\n\n logout(): void {\n this.authService.logout();\n\n this.stepIndex = 0;\n this.loadStep();\n }\n\n updateWorkflowStateData(): Observable {\n\n if(this.authService.isLoggedIn()){\n\n let updateModel = new RequestToVerifyUpdateModel();\n updateModel.idPacientePhr = this.state.getPatientIdRelationship();\n updateModel.tipoRelacionPacienteUsuario = this.state.getPatientRelationship();\n updateModel.workflowPosition = this.state.getPosition();\n updateModel.esUsuarioNuevo = this.userService.wasUserCreated() ? 'S' : 'N';\n \n return this.requestToVerifyService.update(this.state.idVerificacion, updateModel)\n .pipe(map((model:RequestToVerifyUpdateModel)=>{\n\n if(updateModel.esUsuarioNuevo == 'S' && !this.updatedUserLoggedIn){\n\n setTimeout(() => {\n this.userService.getUserPersonLoggedInFromService().subscribe((user:UserPerson | null)=>{\n if (user){\n this.messageBusService.loginCompleted(new LoginCompletedMessage(user));\n this.updatedUserLoggedIn = true;\n }\n });\n }, 2000);\n }\n return true;\n }),\n catchError(err=>{\n this.baseService.handleServiceError(err, \"Error updating medical order request\");\n return of();\n }));\n }\n else{\n return of(true);\n }\n }\n\n workflowCleanup() {\n this.workflowService.removeWorkflowData(STORAGE.GROWTH_CURVES_WORKFLOW_STATE);\n }\n\n completeWorkflowStateData(): Observable {\n const state: GrowthCurvesWorkflowState = this.workflowService.getWorkflowDataState(STORAGE.GROWTH_CURVES_WORKFLOW_STATE);\n const idResponsableServicio: number = state.getPublicProfile()?.id;\n\n this.requestsToVerifyService.confirmation(state.getIdVerificacion())\n .subscribe(confirmacionResponse => {\n this.userService.getUserIdLoggedIn()\n .subscribe((userId: number) => {\n let url = `mi-salud/curvas-crecimiento?idResponsableServicio=${idResponsableServicio}`;\n\n if (confirmacionResponse.idPaciente != userId) {\n url += `&p=${confirmacionResponse.idPaciente}`;\n }\n \n this.messageBusService.closeWorkFlowRequest(url);\n })\n \n });\n\n return of();\n }\n}\n","
\n
\n {{ 'shared.selectPatientRelationship.title' | translate:locale.language }}\n
\n
\n \n \n \n {{ user.nombre }}\n {{'shared.selectPatientRelationship.userRelationship' | translate:locale.language}}\n \n \n \n {{dependent.nombre}}\n {{getRelationshipText(dependent)}}\n \n \n \n {{'shared.selectPatientRelationship.otherText' | translate:locale.language}}\n {{'shared.selectPatientRelationship.otherDescription' | translate:locale.language}}\n \n \n
\n\n
\n \n
\n
\n
\n
","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ComponentName } from '../../enums/component-name.enum';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { FormComponentData } from '../../models/people/form-control.model';\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { SelectPatientRelationshipModel } from '../../models/workflow/models/select-patient-relationship.model';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject, zip } from 'rxjs';\nimport { Dependent } from '../../models/people/dependent.model';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { UserPerson } from '../../models/people/user-person.model';\nimport { UtilsService } from 'src/app/core/services/utils.service';\nimport { SenderPatientRelationship } from '../../models/process/base-request.model';\n\n@Component({\n selector: 'app-select-patient-relationship',\n templateUrl: './select-patient-relationship.component.html',\n styleUrls: ['./select-patient-relationship.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n\n@ComponentLookup(ComponentName.SELECT_PATIENT_RELATIONSHIP)\nexport class SelectPatientRelationshipComponent implements IControlComponent, OnInit {\n data: FormComponentData;\n \n model:SelectPatientRelationshipModel = new SelectPatientRelationshipModel();\n private ngUnsubscribe = new Subject();\n formSubmitted: boolean = false;\n loading: boolean = false;\n user: UserPerson;\n dependents: Dependent[] = [];\n patientRelationshipTypeForm:FormGroup;\n showForm:boolean = false;\n\n constructor(\n private baseService: BaseService,\n private userService: UserService,\n private utilsService: UtilsService,\n private formBuilder: FormBuilder,\n private messageBusService: MessageBusService,\n private translation: L10nTranslationService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n \n\n ngOnInit(): void {\n this.loadDataModel();\n\n const _getUserLoggedIn$ = this.userService.getUserPersonLoggedIn();\n const _getUserDependents$ = this.userService.getUserDependents();\n\n zip(_getUserLoggedIn$, _getUserDependents$)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(([user, dependents])=>{\n\n if(!user)\n return;\n \n this.user = user;\n this.dependents = dependents;\n // Order by age desc\n this.dependents = this.dependents.sort((d1: Dependent, d2: Dependent) => {\n let getTime = (date: Date) => {return date != null ? new Date(date).getTime() : 0;};\n \n return getTime(d1.fechaNacimiento) - getTime(d2.fechaNacimiento);\n });\n\n this.loadForm();\n\n this.sendComponentFinishLoadingMessage();\n },\n error=>{\n this.baseService.handleServiceError(error, \"Error getting user info\");\n });\n }\n\n getUserAvatar(user: UserPerson){ \n return user.ubicacionLogo\n ? user.ubicacionLogo\n : this.utilsService.getPersonDefaultAvatarUrl(user.fechaNacimiento, user.sexo);\n }\n\n getDependentAvatar(dependent: Dependent){\n return dependent.ubicacionLogo\n ? dependent.ubicacionLogo\n : this.utilsService.getPersonDefaultAvatarUrl(dependent.fechaNacimiento, dependent.sexo);\n }\n\n getRelationshipText(dependent: Dependent){\n return this.translation.translate(`shared.selectPatientAppointmentCheckout.relationship_${dependent.tipoRelacion}_${dependent.sexo}`);\n }\n\n onClickContinue(){\n this.formSubmitted = true;\n \n if (this.patientRelationshipTypeForm.invalid) {\n return;\n }\n\n this.loading = true;\n\n let _valueSelected = +(this.patientRelationshipTypeForm.controls.relationship.value);\n\n let _dependentSelected = this.dependents.find(d=> d.idPersona == _valueSelected);\n\n if(_dependentSelected){\n this.model.patientRelationship = _dependentSelected.tipoRelacion;\n this.model.patientIdRelationship = _dependentSelected.idPersona;\n }\n else if(this.user.id == _valueSelected){\n this.model.patientIdRelationship = this.user.id;\n this.model.patientRelationship = SenderPatientRelationship.USUARIO;\n }\n else {\n this.model.patientIdRelationship = 0;\n this.model.patientRelationship = SenderPatientRelationship.OTRO;\n }\n\n this.continueFlow();\n }\n\n private continueFlow() {\n let message = new ComponentDataSetMessage();\n message.componentName = ComponentName.SELECT_PATIENT_RELATIONSHIP;\n\n message.data = this.model;\n\n this.messageBusService.onComponentDataSetMessage(message); \n }\n\n private loadDataModel() {\n if (this.data && this.data.configurationData) {\n this.model = this.data.configurationData as SelectPatientRelationshipModel; \n } \n }\n\n private loadForm(){\n this.patientRelationshipTypeForm = this.formBuilder.group(\n {\n relationship: [this.model.patientIdRelationship, [Validators.required]]\n }\n );\n\n this.showForm = true;\n }\n\n private sendComponentFinishLoadingMessage(){\n let event = new ComponentFinishLoadingMessage();\n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n }\n}\n","
\n
\n {{ title | translate:locale.language }}\n
\n \n \n \n {{ relationType.viewValue | translate:locale.language }}\n \n \n \n
\n \n
\n
\n
\n
","import { Component, Inject, OnInit } from '@angular/core';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { ComponentName } from '../../enums/component-name.enum';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { FormComponentData } from '../../models/people/form-control.model';\nimport { CreatePatientRelationshipDataModel } from '../../models/workflow/models/create-patient-relationship-data.model';\nimport { Subject } from 'rxjs';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { SenderPatientRelationship } from '../../models/process/base-request.model';\nimport { ComponentDataSetMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\n\n@Component({\n selector: 'app-create-patient-relationship',\n templateUrl: './create-patient-relationship.component.html',\n styleUrls: ['./create-patient-relationship.component.css']\n})\n@ComponentLookup(ComponentName.CREATE_PATIENT_RELATIONSHIP)\nexport class CreatePatientRelationshipComponent implements IControlComponent, OnInit {\n data: FormComponentData;\n\n title: string;\n model:CreatePatientRelationshipDataModel = new CreatePatientRelationshipDataModel();\n\n formSubmitted: boolean = false;\n loading: boolean = false;\n relationTypes: RelationTypeOption[] = [];\n createPatientRelationshipForm:FormGroup;\n showForm:boolean = false;\n\n constructor(\n private messageBusService: MessageBusService,\n private formBuilder: FormBuilder,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n \n ngOnInit(): void {\n\n this.loadDataModel();\n\n this.configTitle();\n\n this.loadForm();\n\n this.sendComponentFinishLoadingMessage();\n }\n\n onClickContinue(){\n this.formSubmitted = true;\n \n if (this.createPatientRelationshipForm.invalid) {\n return;\n }\n\n this.loading = true;\n\n let _valueSelected = +(this.createPatientRelationshipForm.controls.relationship.value);\n\n this.model.patientRelationship = _valueSelected;\n\n this.continueFlow();\n }\n \n private continueFlow() {\n let message = new ComponentDataSetMessage();\n message.componentName = ComponentName.CREATE_PATIENT_RELATIONSHIP;\n\n message.data = this.model;\n\n this.messageBusService.onComponentDataSetMessage(message); \n }\n\n private configTitle(){\n this.title = this.model.patientRelationship == SenderPatientRelationship.OTRO\n ? 'shared.createPatientRelationship.title1'\n : 'shared.createPatientRelationship.title2'\n }\n\n private loadDataModel() {\n if (this.data && this.data.configurationData) {\n this.model = this.data.configurationData as CreatePatientRelationshipDataModel; \n } \n }\n\n private loadForm(){\n\n if(this.model.patientRelationship != SenderPatientRelationship.OTRO){\n this.relationTypes.push({\n value: SenderPatientRelationship.USUARIO, \n viewValue: 'shared.createPatientRelationship.relationship_' + SenderPatientRelationship.USUARIO\n });\n }\n\n let relationTypeIds = [\n SenderPatientRelationship.PROGENITOR_DE,\n SenderPatientRelationship.HIJO_DE,\n SenderPatientRelationship.ESPOSO,\n SenderPatientRelationship.HERMANO,\n SenderPatientRelationship.ABUELO,\n SenderPatientRelationship.TUTOR,\n SenderPatientRelationship.DEPENDIENTE_FAMILIAR_DE\n ];\n\n relationTypeIds.forEach(relationTypeId=> {\n this.relationTypes.push({value: relationTypeId, viewValue: 'shared.createPatientRelationship.relationship_' + relationTypeId });\n });\n\n this.createPatientRelationshipForm = this.formBuilder.group(\n {\n relationship: [this.model.patientRelationship, [Validators.required]]\n }\n );\n\n this.showForm = true;\n }\n\n private sendComponentFinishLoadingMessage(){\n let event = new ComponentFinishLoadingMessage();\n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n }\n}\n\nexport interface RelationTypeOption{\n value: number;\n viewValue: string;\n}","
\n\n
\n \n \n {{location.objetoDetalle5}}\n \n \n {{ 'shared.searchResults.providerCard.unspecified' | translate:locale.language }}\n \n
\n\n
\n \n {{ item.value }}\n
\n\n
\n
\n
\n \n \n {{ 'shared.searchResults.providerCard.unspecified' | translate:locale.language }}\n \n
\n
\n
\n\n
","import { Component, HostBinding, Inject, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { ProfileLocationResultModel } from 'src/app/shared/models/people/profile-search-results.model';\n\n@Component({\n selector: 'app-provider-card-contacts',\n templateUrl: './provider-card-contacts.component.html',\n styleUrls: ['./provider-card-contacts.component.css']\n})\nexport class ProviderCardContactsComponent implements OnChanges {\n\n @HostBinding('style.margin-top') flexGrow = 'auto';\n @Input() location: ProfileLocationResultModel;\n @Input() isDoctorProfile = true;\n\n locations: any[];\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.location) {\n this.mapObjetoToArray();\n }\n }\n\n private mapObjetoToArray() {\n this.locations = [\n {\n icon: 'whatsapp',\n value: this.location.objetoDetalle1\n },\n {\n icon: 'PHR-phone',\n value: this.location.objetoDetalle2\n },\n {\n icon: 'PHR-mail',\n value: this.location.objetoDetalle4\n },\n ].filter(x => x.value);\n }\n\n}\n","
\n\n
\n\n \n\n
\n {{ locationTitle }}\n
\n\n
\n {{ locationAvailability | translate:locale.language }}\n
\n\n {{locationAddress}}\n\n
\n \n {{ 'shared.searchResults.providerCard.bookAppointmentByPhone' | translate:locale.language }}\n \n \n {{ 'shared.searchResults.providerCard.seeAttentionHours' | translate:locale.language }}\n \n
\n\n \n\n
\n\n
\n","import { Component, EventEmitter, Inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { MapDialogData } from 'src/app/shared/models/dialog-data.model';\nimport { ProfileLocationResultModel, ProfileResultModel } from 'src/app/shared/models/people/profile-search-results.model';\nimport { MapDialogComponent } from '../../../dialogs/map-dialog/map-dialog.component';\n\n@Component({\n selector: 'app-provider-card-location',\n templateUrl: './provider-card-location.component.html',\n styleUrls: ['./provider-card-location.component.css']\n})\nexport class ProviderCardLocationComponent implements OnChanges {\n\n @Input() location: ProfileLocationResultModel;\n @Input() isDoctorProfile = false;\n @Input() provider: ProfileResultModel;\n @Output() goToProfile: EventEmitter = new EventEmitter();\n\n locationAddress = '';\n locationAvailability = '';\n locationIconClass = '';\n locationTitle = '';\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private dialog: MatDialog\n ) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.location) {\n this.setLocationIconClass();\n this.setLocationAddress();\n this.setLocationAvailability();\n this.setLocationTitle();\n }\n }\n\n setLocationAddress(): void {\n let result = \"\";\n\n if (this.location.diLocalidad2)\n result += this.location.diLocalidad2;\n\n if (this.location.diLocalidad1) {\n if (result && !result.endsWith(\",\") && !result.endsWith(\".\") && !result.endsWith(\"-\"))\n result += \" - \";\n\n result += this.location.diLocalidad1;\n }\n\n if (this.location.ciudad) {\n if (result && !result.endsWith(\",\") && !result.endsWith(\".\"))\n result += \", \";\n\n result += \" \" + this.location.ciudad;\n }\n\n if (this.location.pais) {\n if (result && !result.endsWith(\",\") && !result.endsWith(\".\"))\n result += \", \";\n\n result += \" \" + this.location.pais;\n }\n\n this.locationAddress = result;\n }\n\n private setLocationIconClass(): void {\n this.locationIconClass = this.location?.teleconsulta != \"S\" \n ? 'phr-iconset-PHR-place' \n : 'phr-iconset-PHR-video';\n }\n\n private setLocationAvailability(): void {\n const availability = this.provider?.citaEnLineaHab != 'N' ? 'bookAppointment' : 'viewProfile';\n\n this.locationAvailability = `shared.searchResults.providerCard.${availability}`;\n }\n\n goToProfileEvent($event:Event) {\n this.goToProfile.emit($event)\n }\n\n onClickHowToGetButton(location: ProfileLocationResultModel, $event:Event){\n \n $event.preventDefault();\n $event.stopPropagation();\n\n let data = new MapDialogData();\n \n data.title = this.locationTitle;\n // data.description = this.getLocationAddress(location);\n data.showWazeButton = true;\n data.message = location.objetoDetalle3;\n data.animationIn = 'map-phr-animation-in';\n data.animationOut = 'map-phr-animation-out';\n data.showCloseTextButton = true;\n\n this.dialog.open(MapDialogComponent, { \n panelClass: ['map-dialog','map-phr-dialog', 'map-phr-animation-in'],\n data: data\n });\n }\n\n setLocationTitle(): void {\n let result = \"\";\n\n if (this.location.empresaObjetoPerfilPublico)\n result = this.location.empresaObjetoPerfilPublico;\n\n if (this.location.empresaPerfilPublico && this.location.empresaPerfilPublico.trim() != \".\")\n result += (result ? \" - \" : \"\") + this.location.empresaPerfilPublico;\n\n this.locationTitle = result;\n }\n\n}\n","
\n\n
\n Delivery\n \n {{featuresConceptsText | i18nText:locale.language }}\n
\n\n
\n \n
\n \n \n\n
\n {{ provider.redes }}\n {{provider.nombre}}\n
\n {{provider.especialidad}}\n {{provider.subespecialidad}}\n
\n
\n\n \n\n
","import { Component, Inject, Input, OnChanges, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { PublicProfileAvatarComponentModel } from '../../../public-profile-avatar/public-profile-avatar.component';\nimport { ProfileResultModel, PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { FeatureConceptDto } from '../provider-card.component';\nimport { TextLanguage } from 'src/app/shared/models/people/text-language.model';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\n\n@Component({\n selector: 'app-provider-card-profile',\n templateUrl: './provider-card-profile.component.html',\n styleUrls: ['./provider-card-profile.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ProviderCardProfileComponent implements OnChanges {\n\n @Input() isClinicProfile = false;\n @Input() isDoctorProfile = true;\n @Input() set profile(provider: ProfileResultModel) {\n this.provider = provider; \n }\n\n avatarModel: PublicProfileAvatarComponentModel;\n featureConceptIconClassName = 'phr-iconset-';\n featuresConceptsText: string | TextLanguage[] = '';\n isCliniwebCompany = false;\n isPharmacyProfile = false;\n provider = new ProfileResultModel();\n profileTypeIconClassName = '';\n showAvatarInitials = false;\n\n constructor(\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private baseService: BaseService\n ) {\n this.isCliniwebCompany = this.baseService.isCliniwebCompany();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.profile) {\n this.setAvatarModel();\n this.setIsPharmacyProfile();\n this.setFeatureConcepts();\n this.setShowAvatarInitials();\n this.setProfileTypeIconClassName();\n }\n }\n\n private setAvatarModel(): void {\n this.avatarModel = new PublicProfileAvatarComponentModel();\n this.avatarModel.personId = this.provider.idPersona;\n this.avatarModel.avatarUrl = this.provider.foto;\n this.avatarModel.fullName = this.provider.nombre;\n this.avatarModel.sex = this.provider.sexo;\n this.avatarModel.profileType = this.provider.tipoPerfil; \n }\n\n private setShowAvatarInitials(): void {\n this.showAvatarInitials = !!this.provider.foto || this.provider.tipoPerfil == PublicProfileType.Doctor;\n }\n\n private setIsPharmacyProfile(): void {\n this.isPharmacyProfile = this.provider.tipoPerfil == PublicProfileType.Farmacia;\n }\n\n private setFeatureConcepts(): void {\n try{\n const featuresConceptsObject: FeatureConceptDto = JSON.parse(this.provider.conceptosDestacados);\n\n this.featureConceptIconClassName = featuresConceptsObject && featuresConceptsObject.iconClassName ? `phr-iconset-${featuresConceptsObject.iconClassName}` : '';\n this.featuresConceptsText = featuresConceptsObject && featuresConceptsObject.text ? featuresConceptsObject.text : '';\n } catch(e) {\n this.featureConceptIconClassName = '';\n this.featuresConceptsText = '';\n }\n }\n\n private setProfileTypeIconClassName(): void {\n const profileType = this.provider.tipoPerfil;\n this.profileTypeIconClassName = `phr-iconset-${this.getProfileTypeIconClassName(profileType)}`;\n }\n\n private getProfileTypeIconClassName(profileType: PublicProfileType): string {\n return profileTypeIconMap[profileType] || 'estetoscopio';\n }\n\n}\n\nexport const profileTypeIconMap: { [key in PublicProfileType]: string } = {\n [PublicProfileType.Doctor]: 'estetoscopio',\n [PublicProfileType.Farmacia]: 'farmacia',\n [PublicProfileType.Clinica]: 'hospital',\n [PublicProfileType.Fisioterapia]: 'fisioterapia',\n [PublicProfileType.Laboratorio]: 'laboratorios',\n [PublicProfileType.CentroDeImagenes]: 'imagenologia',\n [PublicProfileType.ServiciosOdontologicos]: 'odontologia',\n [PublicProfileType.Opticas]: 'open-eye',\n [PublicProfileType.ClinicasDeAtencionPrimaria]: 'clinic',\n [PublicProfileType.Todos]: '',\n [PublicProfileType.SedeSura]: '',\n [PublicProfileType.SaludYBelleza]: ''\n}; \n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { NotFoundComponent } from './components/not-found/not-found.component';\nimport { DynamicHostDirective } from './directives/dynamic-host.directive';\nimport { IFrameResizerDirective } from './directives/iframe-resizer.directive';\nimport { FormComponent } from './components/form/form.component';\nimport { DynamicComponent } from './components/dynamic/dynamic.component';\nimport { FutureAppointmentsComponent } from './components/appointments/future-appointments/future-appointments.component';\nimport { PastAppointmentsComponent } from './components/appointments/past-appointments/past-appointments.component';\nimport { CancelledAppointmentsComponent } from './components/appointments/cancelled-appointments/cancelled-appointments.component';\nimport { AppointmentsTabsComponent } from './components/appointments/appointment-tabs/appointment-tabs.component';\nimport { SearchDoctorsComponent } from './components/search/search-doctors.component';\nimport { ProfileFiltersComponent } from './components/profile-filters/profile-filters.component';\nimport { ChatComponent } from './components/chat/chat.component';\nimport { MaterialModule } from './material.module';\nimport { L10nIntlModule, L10nTranslationModule } from 'angular-l10n';\nimport { HeaderComponent } from './components/headers/header/header.component';\nimport { HeaderSuraComponent } from './components/headers/header-sura/header-sura.component';\nimport { I18nTextPipe } from './pipes/i18n-text.pipe';\nimport { OrderByPipe } from './pipes/order-by.pipe';\nimport { HighlightPipe } from './pipes/highlight.pipe';\nimport { SafeUrlPipe } from './pipes/safe-url.pipe';\nimport { ReplacePipe } from './pipes/replace.pipe';\nimport { CustomCurrencyPipe } from './pipes/custom-currency.pipe';\nimport { VirtualConsultationLinkboxComponent } from './components/linkboxs/virtual-consultation-linkbox/virtual-consultation-linkbox.component';\nimport { MedicalAppointmentsLinkboxComponent } from './components/linkboxs/medical-appointments-linkbox/medical-appointments-linkbox.component';\nimport { ResultsLinkboxComponent } from './components/linkboxs/results-linkbox/results-linkbox.component';\nimport { HistoriaClinicaLinkboxComponent } from './components/linkboxs/historia-clinica-linkbox/historia-clinica-linkbox.component';\nimport { UnreadClinicalExamComponent } from './components/unread-clinical-exam/unread-clinical-exam.component';\nimport { LoadingComponent } from './components/loading/loading.component';\nimport { SelectSymptomsComponent } from './components/select-symptoms/select-symptoms.component';\nimport { ConfirmDialogComponent } from './components/dialogs/confirm-dialog/confirm-dialog.component';\nimport { CancelAppointmentDialogComponent } from './components/dialogs/cancel-appointment/cancel-appointment-dialog.component';\nimport { MapDialogComponent } from './components/dialogs/map-dialog/map-dialog.component';\nimport { SocialNetworksDialogComponent } from './components/dialogs/social-networks-dialog/social-networks-dialog.component';\nimport { CancelVirtualAttentionDialogComponent } from './components/dialogs/cancel-virtual-attention/cancel-virtual-attention-dialog.component';\nimport { ChatHistoryDialogComponent } from './components/dialogs/chat-history-dialog/chat-history-dialog.component';\nimport { MenuComponent } from './components/menu/menu.component';\nimport { CliniwebMenuComponent } from './components/menu/cliniweb-menu/cliniweb-menu.component';\nimport { RouterModule } from '@angular/router';\nimport { MenuMobileComponent } from './components/dialogs/menu-mobile/menu-mobile.component';\nimport { AgmCoreModule } from '@agm/core';\nimport { environment } from 'src/environments/environment';\nimport { MenuLinkComponent } from './components/menu-link/menu-link.component';\nimport { CustomAutocompleteComponent } from './components/custom-autocomplete/custom-autocomplete.component';\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { TimelineListComponent } from './components/timeline-list/timeline-list.component';\nimport { PolicyMenuComponent } from './components/menu/policy/policy-menu.component';\nimport { PolicyMenuContentComponent } from './components/menu/policy/policy-menu-content.component';\nimport { ProfileMenuComponent } from './components/menu/profile/profile-menu.component';\nimport { VirtualConsultationTabsComponent } from './components/virtual-consultation/virtual-consultation-tabs/virtual-consultation-tabs.component';\nimport { PastVirtualConsultationComponent } from './components/virtual-consultation/past-virtual-consultation/past-virtual-consultation.component';\nimport { ToastrModule } from 'ngx-toastr';\nimport { ClinicHistoryTabsComponent } from './components/clinic-history/clinic-history-tabs/clinic-history-tabs.component';\nimport { AttentionHistoryComponent } from './components/clinic-history/attention-history/attention-history.component';\nimport { MedicinesComponent } from './components/clinic-history/medicines/medicines.component';\nimport { MedicalHistoryComponent } from './components/clinic-history/medical-history/medical-history.component';\nimport { ClinicHistoryShareComponent } from './components/clinic-history/clinic-history-share/clinic-history-share.component';\nimport { ShareDialogComponent } from './components/clinic-history/share-dialog/share-dialog.component';\nimport { StudiesLaboratoriesComponent } from './components/clinic-history/studies-laboratories/studies-laboratories.component';\nimport { HeaderMapfrePanamaComponent } from './components/headers/header-mapfre-panama/header-mapfre-panama.component';\nimport { SearchProvidersComponent } from './components/search-results/search-providers/search-providers.component';\nimport { SearchResultsComponent } from './components/search-results/search-results/search-results.component';\nimport { AutocompleteMultipleSelectionComponent } from './components/autocomplete-multiple-selection/autocomplete-multiple-selection.component';\nimport { ProviderCardComponent } from './components/search-results/provider-card/provider-card.component';\nimport { AvatarInitialsComponent } from './components/avatar-initials/avatar-initials.component';\nimport { CheckAutocompleteComponent } from './components/check-autocomplete/check-autocomplete.component';\nimport { FileViewerComponent } from './components/file-viewer/file-viewer.component';\nimport { FileViewerDialogComponent } from './components/dialogs/file-viewer-dialog/file-viewer-dialog.component';\nimport { HeaderTownCenterComponent } from './components/headers/header-town-center/header-town-center.component';\nimport { HeaderHospitalPaitillaComponent } from './components/headers/header-hospital-paitilla/header-hospital-paitilla.component';\nimport { HeaderChsfPhrComponent } from './components/headers/header-chsf-phr/header-chsf-phr.component';\nimport { HeaderChpanamericanoPhrComponent } from './components/headers/header-chpanamericano-phr/header-chpanamericano-phr.component';\nimport { HeaderHsantafePhrComponent } from './components/headers/header-hsantafe-phr/header-hsantafe-phr.component';\nimport { HeaderPacificaSaludPhrComponent } from './components/headers/header-pacifica-salud-phr/header-pacifica-salud-phr.component';\nimport { WorkflowManagerComponent } from './components/workflows/workflow-manager/workflow-manager.component';\nimport { OnlineAppointmentCliniwebComponent } from './components/workflows/online-appointment-cliniweb/online-appointment-cliniweb.component';\nimport { OnlinePaymentWorkflowComponent } from './components/workflows/online-payment/online-payment-workflow.component';\nimport { WorkflowDynamicComponent } from './components/workflows/workflow-dynamic/workflow-dynamic.component';\nimport { BaseWorkflowComponent } from './components/workflows/base-workflow/base-workflow.component';\nimport { AuthenticationComponent } from './components/authentication/authentication.component';\nimport { WorkflowProgressBarComponent } from './components/workflows/workflow-progress-bar/workflow-progress-bar.component';\nimport { DoctorMessageDialogComponent } from './components/dialogs/doctor-message-dialog/doctor-message-dialog.component';\nimport { RecaptchaModule, RecaptchaFormsModule } from 'ng-recaptcha';\nimport { PaymentComponent } from './components/payment/payment.component';\nimport { PaymentAmountComponent } from './components/payment-amount/payment-amount.component';\nimport { SelectPatientAppointmentCheckoutComponent } from './components/select-patient-appointment-checkout/select-patient-appointment-checkout.component';\nimport { AppointmentInfoCheckoutComponent } from './components/appointment-info-checkout/appointment-info-checkout.component';\nimport { PatientFormAppointmentCheckoutComponent } from './components/patient-form-appointment-checkout/patient-form-appointment-checkout.component';\nimport { CreditCardDirectivesModule } from 'angular-cc-library';\nimport { SelectPatientRelationshipAppointmentCheckoutComponent } from './components/select-patient-relationship-appointment-checkout/select-patient-relationship-appointment-checkout.component';\nimport { NgxMatIntlTelInputModule } from 'ngx-mat-intl-tel-input';\nimport { PatientContactFormAppointmentCheckoutComponent } from './components/patient-contact-form-appointment-checkout/patient-contact-form-appointment-checkout.component';\nimport { SummaryAppointmentCheckoutComponent } from './components/summary-appointment-checkout/summary-appointment-checkout.component';\nimport { LoadingDialogComponent } from './components/dialogs/loading-dialog/loading-dialog.component';\nimport { StatesRequestVerifyComponent } from './components/states-request-verify/states-request-verify.component';\nimport { CustomSnackBarComponent } from './components/custom-snack-bar/custom-snack-bar.component';\nimport { EmailCallbackComponent } from './components/email-callback/email-callback.component';\nimport { RouteDialogComponent } from './components/dialogs/route-dialog/route-dialog.component';\nimport { PublicProfileHeaderComponent } from './components/headers/route-dialog-headers/public-profile-header/public-profile-header.component';\nimport { DefaultHeaderComponent } from './components/headers/route-dialog-headers/default-header/default-header.component';\nimport { DefaultBackHeaderComponent } from './components/headers/route-dialog-headers/default-back-header/default-back-header.component';\nimport { DefaultBackWithLinkHeaderComponent } from './components/headers/route-dialog-headers/default-back-with-link-header/default-back-with-link-header.component';\nimport { ViewUserComponent } from './components/user/view-user/view-user.component';\nimport { EditUserComponent } from './components/user/edit-user/edit-user.component';\nimport { ViewDependentComponent } from './components/dependent/view-dependent/view-dependent.component';\nimport { LogoutBarComponent } from './components/logout-bar/logout-bar.component';\nimport { IntlTelInputPlaceholderPipe } from './pipes/intl-tel-input-placeholder.pipe';\nimport { EditDependentComponent } from './components/dependent/edit-dependent/edit-dependent.component';\nimport { ProfileMenuDialogComponent } from './components/dialogs/profile-menu-dialog/profile-menu-dialog.component';\nimport { AvatarUploadComponent } from './components/avatar-upload/avatar-upload.component';\nimport { CliniwebMedicalAppointmentsLinkboxComponent } from './components/linkboxs/cliniweb-medical-appointments-linkbox/cliniweb-medical-appointments-linkbox.component';\nimport { CliniwebBookAppointmentLinkboxComponent } from './components/linkboxs/cliniweb-book-appointment-linkbox/cliniweb-book-appointment-linkbox.component';\nimport { CliniwebHomeLayoutComponent } from './components/home-layouts/cliniweb-home-layout/cliniweb-home-layout.component';\nimport { MostCommonSpecialtiesComponent } from './components/most-common-specialties/most-common-specialties.component';\nimport { LatestDoctorsComponent } from './components/latest-doctors/latest-doctors.component';\nimport { PreventiveControlTipsComponent } from './components/preventive-control-tips/preventive-control-tips.component';\nimport { HealthAlliesComponent } from './components/health-allies/health-allies.component';\nimport { CliniwebAppointmentTabsComponent } from './components/cliniweb-appointments/cliniweb-appointment-tabs/cliniweb-appointment-tabs.component';\nimport { CliniwebFutureAppointmentsComponent } from './components/cliniweb-appointments/cliniweb-future-appointments/cliniweb-future-appointments.component';\nimport { CliniwebAppointmentsComponent } from './components/cliniweb-appointments/cliniweb-appointment/cliniweb-appointment.component';\nimport { CliniwebPastAppointmentsComponent } from './components/cliniweb-appointments/cliniweb-past-appointments/cliniweb-past-appointments.component';\nimport { CliniwebCancelAppointmentComponent } from './components/cliniweb-appointments/cliniweb-cancel-appointment/cliniweb-cancel-appointment.component';\nimport { SearchProvidersV2Component } from './components/search-results/search-providers-v2/search-providers-v2.component';\nimport { LocationLanguageComponent } from './components/location-language/location-language.component';\nimport { MatSelectCustomDirective } from './directives/mat-select-custom.directive';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\nimport { LegalAgreementsComponent } from './components/legal-agreements/legal-agreements.component';\nimport { LearnMoreComponent } from './components/learn-more/learn-more.component';\nimport { DefaultLogoHeaderComponent } from './components/headers/route-dialog-headers/default-logo-header/default-logo-header.component';\nimport { UserPaymentsListComponent } from './components/user-payments/user-payments-list/user-payments-list.component';\nimport { UserPaymentComponent } from './components/user-payments/user-payment/user-payment.component';\nimport { ProviderFiltersDialogComponent } from './components/search-results/provider-filters/provider-filters-dialog/provider-filters-dialog.component';\nimport { ProviderFiltersBodyComponent } from './components/search-results/provider-filters/provider-filters-body/provider-filters-body.component';\nimport { ProviderFiltersContentComponent } from './components/search-results/provider-filters/provider-filters-content/provider-filters-content.component';\nimport { ProviderFiltersTriggerComponent } from './components/search-results/provider-filters/provider-filters-trigger/provider-filters-trigger.component';\nimport { CompanyLogoComponent } from './components/company-logo/company-logo.component';\nimport { AnonymousMenuComponent } from './components/menu/anonymous-menu/anonymous-menu.component';\nimport { AnonymousLanguageMenuComponent } from './components/menu/anonymous-language-menu/anonymous-language-menu.component';\nimport { AnonymousLoginSignupMenuComponent } from './components/menu/anonymous-login-signup-menu/anonymous-login-signup-menu.component';\nimport { LoggedInMenuButtonComponent } from './components/menu/logged-in-menu-button/logged-in-menu-button.component';\nimport { UnlicensedMenuComponent } from './components/menu/unlicensed-menu/unlicensed-menu.component';\nimport { CenterInputDirective } from './directives/center-input.directive';\nimport { DatepickerFieldComponent } from './components/datepicker-field/datepicker-field.component';\nimport { PublicProfileAvatarComponent } from './components/public-profile-avatar/public-profile-avatar.component';\nimport { TouchMoveListenerDirective } from './directives/touch-move-listener.directive';\nimport { DisableAutoFocusIfMobileDirective } from './directives/disable-auto-focus-if-mobile.directive';\nimport { AppointmentInfoDialogComponent } from './components/dialogs/appointment-info-dialog/appointment-info-dialog.component';\nimport { NextAppointmentDialogComponent } from './components/dialogs/next-appointment-dialog/next-appointment-dialog.component';\nimport { SearchResultTitleComponent } from './components/search-results/search-result-title/search-result-title.component';\nimport { PublicProfilePageHeaderComponent } from './components/headers/public-profile-header/public-profile-header.component';\nimport { CountryFormComponent } from './components/country-form/country-form.component';\nimport { LoginSingupErrorBannerComponent } from './components/error-banner/login-singup-error-banner/login-singup-error-banner.component';\nimport { CountryFormCheckoutComponent } from './components/country-form-checkout/country-form-checkout.component';\nimport { SelectCountryDialogComponent } from './components/dialogs/select-country-dialog/select-country-dialog.component';\nimport { LegalAgreementsDialogComponent } from './components/dialogs/legal-agreements-dialog/legal-agreements-dialog.component';\nimport { LearnMoreDialogComponent } from './components/dialogs/learn-more-dialog/learn-more-dialog.component';\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\nimport { DropdownTriggerForDirective } from './components/dropdown/dropdown-trigger-for.directive';\nimport { ColaGobloDialogoComponent } from './components/cola-goblo-dialogo/cola-goblo-dialogo.component';\nimport { CapitalizeDirective } from './directives/capitalize.directive';\nimport { MedicalOrderWorkflowComponent } from './components/workflows/medical-order-workflow/medical-order-workflow.component';\nimport { PatientVerificationComponent } from './components/medical-order/patient-verification/patient-verification.component';\nimport { SummaryMedicalOrderComponent } from './components/medical-order/summary-medical-order/summary-medical-order.component';\nimport { AgeFromBirthdayPipe } from './pipes/age-from-birthday.pipe';\nimport { MyHealthComponent } from './components/my-health/my-health.component';\nimport { MyMedicalOrdersComponent } from './components/my-medical-orders/my-medical-orders.component';\nimport { DatepickerFlatFieldComponent } from './components/datepicker-flat-field/datepicker-flat-field.component';\nimport { BottomSheetMenuComponent } from './components/dialogs/bottom-sheet-menu/bottom-sheet-menu.component';\nimport { MyMedicalOrdersEmptyStateComponent } from './components/my-medical-orders/my-medical-orders-empty-state/my-medical-orders-empty-state.component';\nimport { SpinnerComponent } from './components/spinner/spinner.component';\nimport { ErrorDialogComponent } from './components/dialogs/error-dialog/error-dialog.component';\nimport { GrowthChartsComponent } from './components/growth-charts/growth-charts.component';\nimport { GrowthChartsTabComponent } from './components/growth-charts/growth-charts-tab/growth-charts-tab.component';\nimport { GrowthCurvesWorkflowComponent } from './components/workflows/growth-curves-workflow/growth-curves-workflow.component';\nimport { GrowthChartsTabDataTypeComponent } from './components/growth-charts/growth-charts-tab-data-type/growth-charts-tab-data-type.component';\nimport { SelectPatientRelationshipComponent } from './components/select-patient-relationship/select-patient-relationship.component';\nimport { CreatePatientRelationshipComponent } from './components/create-patient-relationship/create-patient-relationship.component';\nimport { SummaryOrderFooterComponent } from './components/medical-order/summary-medical-order/summary-order-footer/summary-order-footer.component';\nimport { SummaryOrderDownloadButtonComponent } from './components/medical-order/summary-medical-order/summary-order-download-button/summary-order-download-button.component';\nimport { ProviderCardContactsComponent } from './components/search-results/provider-card/provider-card-contacts/provider-card-contacts.component';\nimport { ProviderCardLocationComponent } from './components/search-results/provider-card/provider-card-location/provider-card-location.component';\nimport { ProviderCardProfileComponent } from './components/search-results/provider-card/provider-card-profile/provider-card-profile.component';\nimport { CliniwebDirectoryLinkComponent } from './components/cliniweb-directory-link/cliniweb-directory-link.component';\nimport { SummaryOrderConceptValueComponent } from './components/medical-order/summary-medical-order/summary-order-concept-value/summary-order-concept-value.component';\nimport { SummaryOrderSignComponent } from './components/medical-order/summary-medical-order/summary-order-sign/summary-order-sign.component';\n\n@NgModule({\n exports: [\n FlexLayoutModule,\n MaterialModule,\n DynamicComponent,\n DynamicHostDirective,\n IFrameResizerDirective,\n MatSelectCustomDirective,\n HeaderComponent,\n HeaderSuraComponent,\n I18nTextPipe,\n OrderByPipe,\n HighlightPipe,\n SafeUrlPipe,\n ReplacePipe,\n CustomCurrencyPipe,\n SearchDoctorsComponent,\n ProfileFiltersComponent,\n LoadingComponent,\n ConfirmDialogComponent,\n ProfileMenuDialogComponent,\n CancelAppointmentDialogComponent,\n MapDialogComponent,\n SocialNetworksDialogComponent,\n CancelVirtualAttentionDialogComponent,\n ChatHistoryDialogComponent,\n MenuComponent,\n CliniwebMenuComponent,\n MenuMobileComponent,\n CustomAutocompleteComponent,\n NgxSkeletonLoaderModule,\n ChatComponent,\n TimelineListComponent,\n PolicyMenuContentComponent,\n PolicyMenuComponent,\n ProfileMenuComponent,\n VirtualConsultationTabsComponent,\n PastVirtualConsultationComponent,\n ToastrModule,\n AutocompleteMultipleSelectionComponent,\n AppointmentsTabsComponent,\n CancelledAppointmentsComponent,\n FutureAppointmentsComponent,\n PastAppointmentsComponent,\n AttentionHistoryComponent,\n ClinicHistoryShareComponent,\n ClinicHistoryTabsComponent,\n MedicalHistoryComponent,\n MedicinesComponent,\n StudiesLaboratoriesComponent,\n HeaderMapfrePanamaComponent,\n HistoriaClinicaLinkboxComponent,\n MedicalAppointmentsLinkboxComponent,\n ResultsLinkboxComponent,\n VirtualConsultationLinkboxComponent,\n SearchResultsComponent,\n SelectSymptomsComponent,\n UnreadClinicalExamComponent,\n FileViewerComponent,\n FileViewerDialogComponent,\n HeaderTownCenterComponent,\n HeaderHospitalPaitillaComponent,\n\tHeaderChsfPhrComponent,\n\tHeaderChpanamericanoPhrComponent,\n HeaderHsantafePhrComponent,\n HeaderPacificaSaludPhrComponent,\n FormComponent,\n WorkflowManagerComponent,\n DoctorMessageDialogComponent,\n PaymentComponent,\n PaymentAmountComponent,\n LoadingDialogComponent,\n EmailCallbackComponent,\n AvatarUploadComponent,\n CliniwebMedicalAppointmentsLinkboxComponent,\n CliniwebBookAppointmentLinkboxComponent,\n CliniwebHomeLayoutComponent,\n MostCommonSpecialtiesComponent,\n LatestDoctorsComponent,\n PreventiveControlTipsComponent,\n HealthAlliesComponent,\n CliniwebAppointmentTabsComponent,\n CliniwebFutureAppointmentsComponent,\n CliniwebAppointmentsComponent,\n CliniwebPastAppointmentsComponent,\n SummaryAppointmentCheckoutComponent,\n CliniwebCancelAppointmentComponent,\n LocationLanguageComponent,\n LearnMoreComponent,\n LegalAgreementsComponent,\n SafeHtmlPipe,\n StatesRequestVerifyComponent,\n WorkflowProgressBarComponent,\n CompanyLogoComponent,\n CenterInputDirective,\n PublicProfileAvatarComponent,\n DisableAutoFocusIfMobileDirective,\n CountryFormComponent,\n LoginSingupErrorBannerComponent,\n ColaGobloDialogoComponent,\n AgeFromBirthdayPipe,\n MyHealthComponent,\n SummaryMedicalOrderComponent,\n DatepickerFlatFieldComponent,\n BottomSheetMenuComponent,\n SpinnerComponent,\n ErrorDialogComponent,\n GrowthChartsComponent,\n GrowthChartsTabComponent,\n CliniwebDirectoryLinkComponent\n ],\n declarations: [\n NotFoundComponent,\n DynamicHostDirective,\n IFrameResizerDirective,\n MatSelectCustomDirective,\n FormComponent,\n DynamicComponent,\n FutureAppointmentsComponent,\n PastAppointmentsComponent,\n CancelledAppointmentsComponent,\n AppointmentsTabsComponent,\n HeaderComponent,\n SearchDoctorsComponent,\n ProfileFiltersComponent,\n HeaderSuraComponent,\n I18nTextPipe,\n OrderByPipe,\n HighlightPipe,\n SafeUrlPipe,\n ReplacePipe,\n CustomCurrencyPipe,\n VirtualConsultationLinkboxComponent,\n MedicalAppointmentsLinkboxComponent,\n ResultsLinkboxComponent,\n HistoriaClinicaLinkboxComponent,\n UnreadClinicalExamComponent,\n LoadingComponent,\n ChatComponent,\n SelectSymptomsComponent,\n ConfirmDialogComponent,\n ProfileMenuDialogComponent,\n CancelAppointmentDialogComponent,\n MapDialogComponent,\n SocialNetworksDialogComponent,\n CancelVirtualAttentionDialogComponent,\n ChatHistoryDialogComponent,\n MenuComponent,\n CliniwebMenuComponent,\n MenuMobileComponent,\n MenuLinkComponent,\n CustomAutocompleteComponent,\n TimelineListComponent,\n PolicyMenuContentComponent,\n PolicyMenuComponent,\n ProfileMenuComponent,\n VirtualConsultationTabsComponent,\n PastVirtualConsultationComponent,\n ClinicHistoryTabsComponent,\n AttentionHistoryComponent,\n MedicinesComponent,\n MedicalHistoryComponent,\n ClinicHistoryShareComponent,\n ShareDialogComponent,\n StudiesLaboratoriesComponent,\n HeaderMapfrePanamaComponent,\n SearchProvidersComponent,\n SearchProvidersV2Component,\n SearchResultsComponent,\n AutocompleteMultipleSelectionComponent,\n ProviderCardComponent,\n AvatarInitialsComponent,\n CheckAutocompleteComponent,\n FileViewerComponent,\n FileViewerDialogComponent,\n HeaderTownCenterComponent,\n HeaderHospitalPaitillaComponent,\n\tHeaderChsfPhrComponent,\n\tHeaderChpanamericanoPhrComponent,\n HeaderHsantafePhrComponent,\n HeaderPacificaSaludPhrComponent,\n WorkflowManagerComponent,\n BaseWorkflowComponent,\n OnlineAppointmentCliniwebComponent,\n OnlinePaymentWorkflowComponent,\n WorkflowDynamicComponent,\n AuthenticationComponent,\n WorkflowProgressBarComponent,\n DoctorMessageDialogComponent,\n PaymentComponent,\n PaymentAmountComponent,\n SelectPatientAppointmentCheckoutComponent,\n AppointmentInfoCheckoutComponent,\n PatientFormAppointmentCheckoutComponent,\n SelectPatientRelationshipAppointmentCheckoutComponent,\n PatientContactFormAppointmentCheckoutComponent,\n SummaryAppointmentCheckoutComponent,\n LoadingDialogComponent,\n StatesRequestVerifyComponent,\n CustomSnackBarComponent,\n EmailCallbackComponent,\n RouteDialogComponent,\n PublicProfileHeaderComponent,\n DefaultHeaderComponent,\n DefaultBackHeaderComponent,\n DefaultBackWithLinkHeaderComponent,\n ViewUserComponent,\n EditUserComponent,\n ViewDependentComponent,\n LogoutBarComponent,\n IntlTelInputPlaceholderPipe,\n EditDependentComponent,\n AvatarUploadComponent,\n CliniwebMedicalAppointmentsLinkboxComponent,\n CliniwebBookAppointmentLinkboxComponent,\n CliniwebHomeLayoutComponent,\n MostCommonSpecialtiesComponent,\n LatestDoctorsComponent,\n PreventiveControlTipsComponent,\n HealthAlliesComponent,\n CliniwebAppointmentTabsComponent,\n CliniwebFutureAppointmentsComponent,\n CliniwebAppointmentsComponent,\n CliniwebPastAppointmentsComponent,\n CliniwebCancelAppointmentComponent,\n LocationLanguageComponent,\n LearnMoreComponent,\n DefaultLogoHeaderComponent,\n UserPaymentsListComponent,\n LegalAgreementsComponent,\n SafeHtmlPipe,\n UserPaymentComponent,\n ProviderFiltersDialogComponent,\n ProviderFiltersBodyComponent,\n ProviderFiltersContentComponent,\n CompanyLogoComponent,\n ProviderFiltersTriggerComponent,\n AnonymousMenuComponent,\n AnonymousLanguageMenuComponent,\n AnonymousLoginSignupMenuComponent,\n LoggedInMenuButtonComponent,\n UnlicensedMenuComponent,\n CenterInputDirective,\n DatepickerFieldComponent,\n PublicProfileAvatarComponent,\n TouchMoveListenerDirective,\n DisableAutoFocusIfMobileDirective,\n AppointmentInfoDialogComponent,\n NextAppointmentDialogComponent,\n SearchResultTitleComponent,\n PublicProfilePageHeaderComponent,\n CountryFormComponent,\n LoginSingupErrorBannerComponent,\n CountryFormCheckoutComponent,\n SelectCountryDialogComponent,\n LegalAgreementsDialogComponent,\n LearnMoreDialogComponent,\n DropdownComponent,\n DropdownTriggerForDirective,\n CapitalizeDirective,\n ColaGobloDialogoComponent,\n MedicalOrderWorkflowComponent,\n PatientVerificationComponent,\n SummaryMedicalOrderComponent,\n AgeFromBirthdayPipe,\n MyHealthComponent,\n MyMedicalOrdersComponent,\n DatepickerFlatFieldComponent,\n BottomSheetMenuComponent,\n MyMedicalOrdersEmptyStateComponent,\n SpinnerComponent,\n ErrorDialogComponent,\n GrowthChartsComponent,\n GrowthChartsTabComponent,\n GrowthCurvesWorkflowComponent,\n GrowthChartsTabDataTypeComponent,\n SelectPatientRelationshipComponent,\n CreatePatientRelationshipComponent,\n SummaryOrderFooterComponent,\n SummaryOrderDownloadButtonComponent,\n ProviderCardContactsComponent,\n ProviderCardLocationComponent,\n ProviderCardProfileComponent,\n SummaryOrderConceptValueComponent,\n CliniwebDirectoryLinkComponent,\n SummaryOrderSignComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n MaterialModule,\n L10nTranslationModule,\n L10nIntlModule,\n RouterModule,\n AgmCoreModule.forRoot({\n apiKey: environment.googleApiKey \n }),\n NgxSkeletonLoaderModule,\n InfiniteScrollModule, \n ToastrModule.forRoot(),\n RecaptchaModule, \n RecaptchaFormsModule,\n CreditCardDirectivesModule,\n NgxMatIntlTelInputModule\n ],\n entryComponents: [ConfirmDialogComponent, MenuMobileComponent],\n \n /* Every component needs to be added here in order to be rendered after deploy\n If the component is NOT added when angular run the compilaiton and optimization, as these components are render dinamically \n and NOT refereced in any page, angular will remove it from the bundle result.\n */\n bootstrap: [\n AppointmentsTabsComponent,\n CancelledAppointmentsComponent,\n FutureAppointmentsComponent,\n PastAppointmentsComponent,\n AttentionHistoryComponent,\n ClinicHistoryShareComponent,\n ClinicHistoryTabsComponent,\n MedicalHistoryComponent,\n MedicinesComponent,\n StudiesLaboratoriesComponent,\n HeaderComponent,\n HeaderMapfrePanamaComponent,\n HeaderSuraComponent,\n HistoriaClinicaLinkboxComponent,\n MedicalAppointmentsLinkboxComponent,\n ResultsLinkboxComponent,\n VirtualConsultationLinkboxComponent,\n SearchDoctorsComponent,\n SearchResultsComponent,\n UnreadClinicalExamComponent,\n SelectSymptomsComponent, \n VirtualConsultationTabsComponent,\n PastVirtualConsultationComponent,\n HeaderTownCenterComponent,\n HeaderHospitalPaitillaComponent,\n\tHeaderChsfPhrComponent,\n\tHeaderChpanamericanoPhrComponent,\n HeaderHsantafePhrComponent,\n HeaderPacificaSaludPhrComponent,\n OnlineAppointmentCliniwebComponent,\n OnlinePaymentWorkflowComponent,\n MedicalOrderWorkflowComponent,\n GrowthCurvesWorkflowComponent,\n AuthenticationComponent,\n SelectPatientAppointmentCheckoutComponent,\n PatientFormAppointmentCheckoutComponent,\n PatientVerificationComponent,\n SelectPatientRelationshipAppointmentCheckoutComponent,\n PatientContactFormAppointmentCheckoutComponent,\n SummaryAppointmentCheckoutComponent,\n PublicProfileHeaderComponent,\n DefaultHeaderComponent,\n DefaultBackHeaderComponent,\n DefaultBackWithLinkHeaderComponent,\n ViewUserComponent,\n EditUserComponent,\n ViewDependentComponent,\n EditDependentComponent,\n MenuComponent,\n CliniwebMenuComponent,\n CliniwebHomeLayoutComponent,\n CliniwebAppointmentTabsComponent,\n SearchProvidersComponent,\n SearchProvidersV2Component,\n PaymentComponent,\n PaymentAmountComponent,\n DefaultLogoHeaderComponent,\n UserPaymentsListComponent,\n UserPaymentComponent,\n PublicProfilePageHeaderComponent,\n CountryFormCheckoutComponent,\n SummaryMedicalOrderComponent,\n MyHealthComponent,\n MyMedicalOrdersComponent,\n GrowthChartsComponent,\n GrowthChartsTabComponent,\n SelectPatientRelationshipComponent,\n CreatePatientRelationshipComponent\n ]\n})\nexport class SharedModule { }\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { formatCurrency, getCurrencySymbol } from '@angular/common';\r\n@Pipe({\r\n name: 'customCurrency',\r\n })\r\n export class CustomCurrencyPipe implements PipeTransform {\r\n transform(\r\n value: string,\r\n currencyCode: string = 'USD',\r\n display:\r\n | 'code'\r\n | 'symbol'\r\n | 'symbol-narrow'\r\n | string\r\n | boolean = 'symbol',\r\n digitsInfo: string = '2.2-2',\r\n locale: string = 'en-US',\r\n ): string | null {\r\n if (typeof(value) != undefined)\r\n value = value.toString();\r\n else \r\n value = \"\";\r\n\r\n // Remove any character\r\n value = value.replace(new RegExp(\"[^0-9|\\.]+\", \"g\"), \"\");\r\n\r\n // Remove any comma before calling the method\r\n value = value.replace(/,/g, \"\");\r\n\r\n let number = parseFloat(value);\r\n let displayStr = display? getCurrencySymbol(currencyCode, 'wide') : \"\";\r\n\r\n let result = formatCurrency(\r\n number,\r\n locale,\r\n displayStr,\r\n currencyCode,\r\n digitsInfo,\r\n ); \r\n\r\n return result;\r\n }\r\n}","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { AppStorageService } from '../services/app-storage.service';\r\nimport { catchError, shareReplay, switchMap, tap } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\nimport { environment } from 'src/environments/environment';\r\nimport { MessageBusService, SessionExpiredMessage } from 'src/app/core/services/message-bus.service';\r\nimport { Token } from 'src/app/shared/models/token.model';\r\nimport { JwtHelperService } from \"@auth0/angular-jwt\";\r\n\r\nconst TOKEN_HEADER_KEY = 'Authorization';\r\nconst AUTH_API = environment.apiUrl + 'oauth/token';\r\n\r\nconst httpOptions = {\r\n headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' })\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\n export class HttpBaseService {\r\n private refreshSubject = new BehaviorSubject(undefined);\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private router: Router,\r\n private appStorageService: AppStorageService,\r\n private messageBusService: MessageBusService) { }\r\n\r\n public get(url: string, options: any = null, useAuthentication: boolean = true) : Observable { \r\n if (!options) options = {};\r\n if (!options.headers) options.headers = new HttpHeaders();\r\n\r\n url = environment.apiUrl + url;\r\n\r\n if (!useAuthentication) {\r\n return this.http.get(url, options as object);\r\n }\r\n else {\r\n return this.setAuthenticationHeader(options.headers).pipe(switchMap(header => { \r\n options.headers = header;\r\n \r\n return this.http.get(url, options as object)\r\n })) \r\n } \r\n } \r\n\r\n public post(url: string, body: any = null, options: any = null, useAuthentication: boolean = true) : Observable {\r\n if (!options) options = {};\r\n if (!options.headers) options.headers = new HttpHeaders();\r\n\r\n url = environment.apiUrl + url;\r\n\r\n if (!useAuthentication) {\r\n return this.http.post(url, body, options as object);\r\n }\r\n else {\r\n return this.setAuthenticationHeader(options.headers).pipe(switchMap(header => {\r\n options.headers = header;\r\n \r\n return this.http.post(url, body, options as object)\r\n })) \r\n }\r\n }\r\n\r\n public put(url: string, body: any = null, options: any = null, useAuthentication: boolean = true) : Observable {\r\n if (!options) options = {};\r\n if (!options.headers) options.headers = new HttpHeaders();\r\n\r\n url = environment.apiUrl + url;\r\n \r\n if (!useAuthentication) {\r\n return this.http.put(url, body, options as object);\r\n }\r\n else {\r\n return this.setAuthenticationHeader(options.headers).pipe(switchMap(header => {\r\n options.headers = header;\r\n \r\n return this.http.put(url, body, options as object)\r\n })) \r\n }\r\n }\r\n\r\n public delete(url: string, options: any = null, useAuthentication: boolean = true) : Observable {\r\n if (!options) options = {};\r\n if (!options.headers) options.headers = new HttpHeaders();\r\n\r\n url = environment.apiUrl + url;\r\n \r\n if (!useAuthentication) {\r\n return this.http.delete(url, options as object);\r\n }\r\n else {\r\n return this.setAuthenticationHeader(options.headers).pipe(switchMap(header => {\r\n options.headers = header;\r\n \r\n return this.http.delete(url, options as object)\r\n })) \r\n }\r\n }\r\n\r\n public sessionExpired(returnUrl: string) {\r\n // This case is when the \"empty\" page is loaded from a doctor public profile, in this case we do not want to show the session expired popup\r\n if(window.location.pathname.indexOf(\"empty\") > -1) {\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: \"empty\" } });\r\n }\r\n else\r\n // This if is just because when the user insert an invalid credential on login the server return a 401 (unauthorized)\r\n if(window.location.pathname.indexOf(\"login\") == -1 )\r\n this.messageBusService.sessionExpired(new SessionExpiredMessage(returnUrl));\r\n }\r\n\r\n public isTokenExpired(token: Token): boolean {\r\n\r\n const helper = new JwtHelperService();\r\n \r\n return helper.isTokenExpired(token.access_token, 300);\r\n }\r\n\r\n public getValidAuthenticationToken(redirectToLogin:boolean = true) : Observable {\r\n let token = this.appStorageService.getToken();\r\n\r\n if (this.isTokenExpired(token)) {\r\n this.refreshSubject.next(); // Emitir un valor para refrescar el Observable\r\n\r\n return this.refreshSubject.pipe(\r\n switchMap(() => this.refreshAuthenticationToken(token)),\r\n tap((t) => {\r\n t.username = token.username;\r\n // Set token on local storage\r\n this.appStorageService.setToken(t);\r\n }),\r\n catchError((err) => {\r\n if (redirectToLogin) {\r\n this.onAuthenticationRequired();\r\n throw new BaseHttpServiceUnauthorizeException();\r\n } else {\r\n return of(null);\r\n }\r\n }),\r\n shareReplay(1) // Compartir el resultado con las suscripciones\r\n );\r\n }\r\n else {\r\n return of(token);\r\n }\r\n }\r\n\r\n private setAuthenticationHeader(headers: HttpHeaders) : Observable {\r\n let tokenObject = this.appStorageService.getToken();\r\n\r\n if (!tokenObject) {\r\n // If token is not present let just ask for one\r\n this.onAuthenticationRequired(); \r\n \r\n // Remove exception in order to avoid unnecessary errors in browser console.\r\n //throw new BaseHttpServiceUnauthorizeException();\r\n // Returnin NULL/Undefined will make the pipe to skip the result, so the service will never be called.\r\n return of();\r\n }\r\n else {\r\n const tokenIsExpired = this.isTokenExpired(tokenObject);\r\n\r\n // If the token is expired lets try to get a new one using the refresh token\r\n if (tokenIsExpired) {\r\n return this.refreshAuthenticationToken(tokenObject).pipe( \r\n switchMap(t => {\r\n t.username = tokenObject.username;\r\n // Set token on local storage\r\n this.appStorageService.setToken(t);\r\n\r\n // Set authentication header on request\r\n headers = headers.set(TOKEN_HEADER_KEY, 'Bearer ' + t.access_token); \r\n\r\n return of(headers);\r\n }),\r\n catchError(err => {\r\n this.onAuthenticationRequired();\r\n\r\n throw new BaseHttpServiceUnauthorizeException();\r\n }));\r\n }\r\n else {\r\n // Set authentication header on request\r\n headers = headers.set(TOKEN_HEADER_KEY, 'Bearer ' + tokenObject.access_token);\r\n \r\n return of(headers);\r\n }\r\n } \r\n } \r\n\r\n private refreshAuthenticationToken(token: any) {\r\n return this.refreshToken(token.refresh_token); \r\n }\r\n\r\n private refreshToken(refreshToken: string): Observable {\r\n let body = new HttpParams()\r\n .set('refresh_token', refreshToken)\r\n .set('grant_type', 'refresh_token');\r\n \r\n return this.http.post(AUTH_API, body.toString(), httpOptions);\r\n }\r\n\r\n private onAuthenticationRequired() {\r\n this.sessionExpired(window.location.pathname);\r\n } \r\n \r\n }\r\n\r\n export class BaseHttpServiceUnauthorizeException {\r\n\r\n }","import { Component, HostListener, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { FileViewerDto } from '../../file-viewer/file-viewer.component';\r\n\r\n@Component({\r\n selector: 'file-viewer-dialog',\r\n templateUrl: './file-viewer-dialog.component.html',\r\n styleUrls: ['./file-viewer-dialog.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FileViewerDialogComponent implements OnInit {\r\n viewerData : FileViewerDto;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\r\n private mdDialogRef: MatDialogRef\r\n ) {\r\n this.viewerData = data.data;\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n } \r\n\r\n public close() {\r\n this.mdDialogRef.close();\r\n }\r\n \r\n @HostListener(\"keydown.esc\") \r\n public onEsc() {\r\n this.close();\r\n }\r\n}","
\r\n \r\n
","import { Component, ComponentFactoryResolver, ElementRef, HostListener, OnDestroy, Type, ViewContainerRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\n\n@Component({\n selector: 'app-bottom-sheet-menu',\n templateUrl: './bottom-sheet-menu.component.html',\n styleUrls: ['./bottom-sheet-menu.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class BottomSheetMenuComponent implements OnDestroy\n{\n @ViewChild('bottomSheetBackdrop', {read: ElementRef}) private backdrop: ElementRef;\n @ViewChild('bottomSheetContainer', {read: ElementRef}) private container: ElementRef;\n @ViewChild('bottomSheetNgContainer', {read: ViewContainerRef}) private containerRef: ViewContainerRef;\n\n private currentComponent?: Type;\n private eventoClickAsignado = false;\n\n constructor(\n private messageBusService: MessageBusService,\n private resolver: ComponentFactoryResolver\n ) {\n this.messageBusService.onToggleBottomSheetSubject().subscribe({next: this.openCloseBottomSheet.bind(this)});\n }\n\n ngOnDestroy(): void {\n this.currentComponent = undefined;\n }\n\n private openCloseBottomSheet(args: {action: string, component?: Type}) {\n if (args.action === 'open') {\n this.loadComponent(args.component);\n if (!this.container.nativeElement.classList.contains('confirm-logout-animation-in')) {\n this.open();\n } else {\n this.close();\n }\n } else {\n this._close();\n }\n }\n\n @HostListener(\"keydown.esc\") \n public onEsc(e: Event): void {\n console.log(e)\n this.close();\n }\n\n private loadComponent(component: Type | undefined): void {\n if (!component || this.currentComponent == component) return;\n this.currentComponent = component;\n const factory = this.resolver.resolveComponentFactory(component);\n this.containerRef.clear();\n const componentRef = this.containerRef.createComponent(factory);\n }\n\n private open(): void {\n this.container.nativeElement.classList.remove('confirm-logout-animation-out');\n this.backdrop.nativeElement.classList.add('cdk-overlay-backdrop-showing');\n this.container.nativeElement.classList.add('confirm-logout-animation-in');\n if (!this.eventoClickAsignado)\n this.backdrop.nativeElement.addEventListener('click', () => this.close());\n }\n\n public close(): void {\n this.messageBusService.sendToggleBottomSheetSubject({action: 'close', component: this.currentComponent});\n }\n\n private _close(): void {\n setTimeout(() => {\n this.backdrop.nativeElement.classList.remove('cdk-overlay-backdrop-showing');\n this.container.nativeElement.classList.remove('confirm-logout-animation-in');\n }, 400);\n this.container.nativeElement.classList.add('confirm-logout-animation-out');\n }\n\n}\n","
\n
\n
\n \n
\n
","import { DOCUMENT } from '@angular/common';\nimport { Component, HostListener, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { MessageBusService, SessionExpiredMessage } from 'src/app/core/services/message-bus.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { Direction } from 'src/app/shared/enums/direction.enum';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class HomeComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n private scrollTop: number = 0;\n public menuComponentName: string = \"\";\n loggedInUser?: UserPerson; \n\n constructor(\n private layoutService: LayoutService,\n private baseService: BaseService,\n private messageBusService: MessageBusService,\n private userService: UserService \n ) { }\n\n ngOnInit(): void {\n this.menuComponentName = this.baseService.getMenuComponentName(); \n\n this.userService.getUserPersonLoggedIn()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(p => {\n if (p)\n this.loggedInUser = p;\n });\n this.messageBusService.onSessionExpired()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((_: SessionExpiredMessage) => this.loggedInUser = undefined);\n this.messageBusService.onLoginCompleted()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(msg => {\n if (msg.user) {\n this.loggedInUser = msg.user;\n } \n }); \n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n @HostListener('window:scroll', ['$event'])\n onScroll($event:Event){\n const scrollTop = ($event.target as Element).scrollTop;\n\n const offset = this.scrollTop - scrollTop;\n\n if(Math.abs(offset) < 50) return; \n\n const direction = offset < 0\n ? Direction.Down\n : Direction.Up;\n\n this.scrollTop = scrollTop;\n \n setTimeout(()=>{\n this.layoutService.onScrollingBody(direction);\n }, 100);\n\n\n this.messageBusService.scrollTopBody(scrollTop);\n }\n}\n","\n \n \n \n \n \n \n
\n
\n \n
\n
\n
\n
","import { Injectable } from '@angular/core';\r\nimport { BaseService } from './base.service';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IframeMessageService {\r\n\r\n private IFRAME_RESIZE_EVENT_NAME = \"iframe_resize\";\r\n private MODAL_OPEN_EVENT_NAME = \"modal_open\";\r\n private MODAL_CLOSE_EVENT_NAME = \"modal_close\";\r\n private REQUEST_USER_ID_EVENT_NAME = \"request_user_id\";\r\n private SCROLL_TOP_EVENT_NAME = \"scroll_top\";\r\n private MANAGE_APPOINTMENTS_EVENT_NAME = \"manage_appointments\";\r\n private PUBLIC_PROFILE_LOADED_EVENT_NAME = \"public_profile_finish_loading\";\r\n private REFRESH_USER = \"refresh_user_info\";\r\n\r\n private iframeResizeSubject = new Subject();\r\n private modalOpenSubject = new Subject();\r\n private modalCloseSubject = new Subject();\r\n private requestUserIdSubject = new Subject();\r\n private scrollTopSubject = new Subject();\r\n private manageAppointmentsSubject = new Subject();\r\n private publicProfileFinishLoadingSubject = new Subject();\r\n private refreshUserSubject = new Subject();\r\n\r\n constructor(private baseService:BaseService) { \r\n\r\n // Listen to iframe events\r\n window.addEventListener(\"message\", (e : any) => {\r\n if (!e.data)\r\n return;\r\n\r\n if (typeof e.data == 'string') {\r\n // For iframe resize we use 'iframe-resizer' lib as we do not want to handle the logic to fire an event each time the \r\n // iframte content height change, like when someone expand a div, collapsable.\r\n // This library will send and event like the next one\r\n let match = e.data.match(/[iFrameSizer].*:(\\d+):(\\d+)/);\r\n if (match) {\r\n var height = match[1];\r\n var width = match[2];\r\n\r\n var model = new IframeMessage();\r\n model.eventName = this.IFRAME_RESIZE_EVENT_NAME;\r\n model.model = new IframeResizeMessage();\r\n\r\n model.model.height = height;\r\n model.model.width = width;\r\n\r\n this.handleIframeEvent(model);\r\n\r\n return;\r\n }\r\n } \r\n\r\n this.handleIframeEvent(e.data);\r\n }, false);\r\n }\r\n\r\n handleIframeEvent(event: IframeMessage) {\r\n \r\n switch(event.eventName){\r\n case this.IFRAME_RESIZE_EVENT_NAME:\r\n this.iframeResizeSubject.next(this.baseService.parseObject(event.model));\r\n break;\r\n case this.MODAL_OPEN_EVENT_NAME:\r\n this.modalOpenSubject.next(this.baseService.parseObject(event.model));\r\n break;\r\n case this.MODAL_CLOSE_EVENT_NAME:\r\n this.modalCloseSubject.next(this.baseService.parseObject(event.model));\r\n break;\r\n case this.REQUEST_USER_ID_EVENT_NAME:\r\n this.requestUserIdSubject.next(this.baseService.parseObject(event.model));\r\n break;\r\n case this.SCROLL_TOP_EVENT_NAME:\r\n this.scrollTopSubject.next(this.baseService.parseObject(event.model));\r\n break;\r\n case this.MANAGE_APPOINTMENTS_EVENT_NAME:\r\n this.manageAppointmentsSubject.next(this.baseService.parseObject(event.model));\r\n break;\r\n case this.PUBLIC_PROFILE_LOADED_EVENT_NAME:\r\n this.publicProfileFinishLoadingSubject.next(this.baseService.parseObject(event.model));\r\n break;\r\n case this.REFRESH_USER:\r\n this.refreshUserSubject.next(this.baseService.parseObject(event.model));\r\n break;\r\n }\r\n }\r\n\r\n onIframeResize(): Observable {\r\n return this.iframeResizeSubject.asObservable();\r\n }\r\n\r\n onModalOpen(): Observable {\r\n return this.modalOpenSubject.asObservable();\r\n }\r\n\r\n modalClose(msg: ModalEventMessage) {\r\n this.modalCloseSubject.next(msg);\r\n }\r\n onModalClose(): Observable {\r\n return this.modalCloseSubject.asObservable();\r\n }\r\n \r\n onRequestUserId(): Observable{\r\n return this.requestUserIdSubject.asObservable();\r\n }\r\n\r\n postMessage(eventName: string, data: any) {\r\n window.postMessage({ eventName: eventName, model: data }, '*');\r\n }\r\n\r\n onScrollTop(): Observable {\r\n return this.scrollTopSubject.asObservable();\r\n }\r\n\r\n onManageAppointments(): Observable {\r\n return this.manageAppointmentsSubject.asObservable();\r\n }\r\n\r\n onPublicProfileLoaded(): Observable {\r\n return this.publicProfileFinishLoadingSubject.asObservable();\r\n }\r\n\r\n onRefreshUser(): Observable {\r\n return this.refreshUserSubject.asObservable();\r\n }\r\n}\r\n\r\nexport class IframeMessage {\r\n eventName: string;\r\n model: T;\r\n}\r\n\r\nexport class IframeResizeMessage {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport class ModalEventMessage {\r\n}\r\n\r\nexport class RequestUserIdEventMessage {\r\n}\r\n\r\nexport class IframeScrollTopMessage {\r\n position: number;\r\n}\r\n\r\nexport class ManageAppointmentsMessage {\r\n}\r\n\r\nexport class PublicProfileFinishLoading {\r\n}\r\n\r\nexport class RefreshUserMessage {\r\n}","import { PublicProfile } from \"../people/public-profile.model\";\r\n\r\nexport class BaseRequestModel {\r\n // Base\r\n id: number; \r\n\r\n // SolicitudConsultaBase\r\n idResponsableServicioDestino: number;\r\n nombreResponsableServicioDestino: string;\r\n nicknameResponsableServicioDestino: string;\r\n urlAvatarResponsableServicioDestino: string;\r\n especialidadResponsableServicioDestino: string;\r\n perfilPublico: PublicProfile;\r\n tipoNotificacion: number;\r\n tipoSolicitud: number;\r\n idPersonaEmisora: number;\r\n nombrePersonaEmisora: string;\r\n emailPersonaEmisora: string;\r\n idEmpresaCorporativa: number;\r\n idEmpresaOrigen: number;\r\n idEmpresaDestino: number;\r\n idAreaSistemaDestino: number;\r\n localizacion: string;\r\n comentarioEmisor: string;\r\n codigoVerificacion: string;\r\n registrosClinicos: ClinicalRecord[];\r\n relacionEmisorPaciente: SenderPatientRelationship;\r\n pacienteSolicitante: RequestingPatient;\r\n usuarioSolicitante: RequestingUser;\r\n checkoutUrl:string;\r\n \r\n pagoDetalle: PayModel;\r\n\r\n emailResponsableServicio: string;\r\n nombreEmpresaOrigen: string;\r\n legacyRequestGuid: string;\r\n idEmpresaResponsableServicio: number;\r\n\r\n idEtapaSolicitud: number;\r\n}\r\n\r\nexport class ClinicalRecord{\r\n idConceptoClinico: number;\r\n nombreConceptoClinico: string;\r\n idTipoConcepto: number;\r\n nombreTipoConcepto: string;\r\n valorRutaNavegacion: string;\r\n idFuenteReferencia: number;\r\n nombreFuenteReferencia: string;\r\n idTerminoReferencia: number;\r\n valorTerminoReferencia: string;\r\n nombreClase: string; \r\n}\r\n\r\nexport class RequestingPatient{\r\n id: number;\r\n idEmpresa: number;\r\n denominacion: string;\r\n nombre: string;\r\n apellido: string;\r\n sexo: string;\r\n email: string;\r\n numeroTelefonoParticular: string;\r\n numeroCelularParticular: string;\r\n fechaNacimiento?: Date;\r\n idEstadoValidacionIdentidadPersona: number;\r\n idPaisResidencia: number;\r\n}\r\n\r\nexport class RequestingUser{\r\n id: number;\r\n username: string;\r\n password: string;\r\n passwordSalt: string;\r\n passwordHash: string;\r\n nombre: string;\r\n apellido: string;\r\n sexo: string;\r\n fechaNacimiento?: Date;\r\n urlAvatar: string;\r\n idEstadoValidacionIdentidadPersona: number;\r\n idPaisResidencia: number;\r\n}\r\n\r\nexport enum SenderPatientRelationship{\r\n OTRO = 2,\r\n DESCONOCIDO = 9,\r\n USUARIO = 12,\r\n HIJO_DE = 295,\r\n PROGENITOR_DE = 294,\r\n DEPENDIENTE_FAMILIAR_DE = 36, \r\n ESPOSO = 480,\r\n HERMANO = 481,\r\n ABUELO = 482,\r\n TUTOR = 483\r\n}\r\n\r\nexport class PayModel\r\n{\r\n\t// Credit card data\r\n\ttipoTarjeta : string; // 'VISA'\r\n\tnumeroTarjeta : string;\r\n\tanioExpiracionTarjeta : string;\r\n\tmesExpiracionTarjeta : string;\r\n\tcVVTarjeta : string;\r\n\tnombre : string;\r\n\tapellido : string;\r\n\r\n\t// Pasarela data\r\n\tidSistema : string;\r\n\tidEmpresa : string;\r\n\tidPais : string;\r\n\tidTipoPago : string;\r\n\r\n\t// Payment data\r\n\tmonto : string;\r\n\tmontoImpuestos : string;\r\n\tconcepto : string;\r\n\tdescripcion : string;\r\n\r\n\t// User data\r\n\temail : string;\r\n\tnumeroTelefono : string;\r\n\tdireccion : string;\r\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 { Injectable } from '@angular/core';\r\nimport { ChatCancellationMessage, ChatConversacion, ChatConversacionMessage } from \"src/app/shared/models/people/chat-conversation.model\";\r\nimport { Observable } from \"rxjs\";\r\nimport { HttpBaseService } from './http-base-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChatService {\r\n\r\n constructor(private http: HttpBaseService) {}\r\n\r\n getByEtapaSolicitudId(etapaSolicitudId: number) : Observable {\r\n return this.http.get(\"api/chats?etapaSolicitudId=\" + etapaSolicitudId);\r\n }\r\n\r\n getChatMessages(idSolicitud: number, from: number, pageSize: number): Observable {\r\n return this.http.get(\"api/chats/mensajes?idSolicitud=\" + idSolicitud + \"&from=\" + from + \"&pageSize=\" + pageSize);\r\n }\r\n\r\n sendMessage(chatId: number, message: ChatConversacionMessage){\r\n return this.http.post(\"api/chats/\" + chatId + \"/mensaje\", message);\r\n }\r\n\r\n sendCancellationMessage(chatId: number, message: ChatCancellationMessage) {\r\n return this.http.post(\"api/chats/\" + chatId + \"/mensaje/cancelacion\", message);\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"highlight\"\r\n})\r\nexport class HighlightPipe implements PipeTransform { \r\n\r\n transform(value: any, search: string, tagName?: string): any {\r\n if (!search) {\r\n return value;\r\n }\r\n\r\n if(!tagName)\r\n tagName = \"mark\";\r\n\r\n var filteredSearch = search.match(/[!^A-zÀ-ú0-9]/gi)?.join('');\r\n\r\n filteredSearch = filteredSearch == undefined ? '' : filteredSearch;\r\n\r\n var re = new RegExp(filteredSearch, 'gi'); //'gi' for case insensitive and can use 'g' if you want the search to be case sensitive.\r\n \r\n return value.replace(re, `<${tagName} class=\"highlight\">$&`);\r\n }\r\n}","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { LegalAgreementType } from 'src/app/shared/enums/legal-agreements-type.enum';\n\n@Component({\n selector: 'app-legal-agreements-dialog',\n templateUrl: './legal-agreements-dialog.component.html',\n styleUrls: ['./legal-agreements-dialog.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class LegalAgreementsDialogComponent implements OnInit {\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: LegalAgreementsDialogData,\n private mdDialogRef: MatDialogRef,\n ) { }\n\n ngOnInit(): void {\n }\n\n close(){\n this.mdDialogRef.close();\n }\n}\nexport class LegalAgreementsDialogData{\n type: LegalAgreementType;\n}\n","
\n
\n \n
\n\n
\n \n
\n
","import { PublicProfileType } from \"../people/profile-search-results.model\";\n\nexport class Directory {\n url: string;\n idEmpresa?: number;\n tipo: DirectoryType;\n nombre: string;\n nombreClaseEstilo: string;\n nombreEncabezado: string;\n localizacionDefecto: string;\n urlCorporativo: string;\n tituloPHR: string;\n urlFavicon: string;\n clienteOidc: string;\n nombreCuentaPaciente: string;\n filtros: string;\n nombrePoliticasPhr: string;\n idEmpresaDestinoConsultaVirtual?: number;\n}\n\nexport enum DirectoryType {\n Cliniweb = 1,\n PHR = 2\n}\n\nexport class DirectoryFilters {\n providers: DirectoryFiltersNetwork[];\n}\n\nexport class DirectoryFiltersNetwork {\n type: PublicProfileType;\n searchProviderTypes: PublicProfileType[];\n filters: DirectoryFiltersItems[];\n}\n\nexport class DirectoryFiltersItems { \n tipo: DirectoryFiltersItemType;\n idConceptoClinico: number;\n idClaseConceptoClinico: number;\n nombreClaseConceptoClinico: string;\n}\n\nexport enum DirectoryFiltersItemType {\n RedFavorita = 0,\n RedesSura = 1,\n Especialidad = 2,\n AreaEnfoque = 3,\n Diagnostico = 4,\n Procedimiento = 5,\n Teleconsulta = 6,\n SedeSura = 7,\n Abierto24Hrs = 8,\n Delivery = 9,\n TipoCentroImagenes = 10,\n Urgencias = 11,\n Hospitalizacion = 12,\n Cirugia = 13,\n ServiciosSalud = 14,\n LugarAtencion = 15,\n AgendamientoEnLinea = 16,\n Aseguradora = 17\n}\n\n","import { PublicProfile } from \"../../people/public-profile.model\";\r\n\r\nexport class OnlinePaymentModel {\r\n idResponsableServicio: number;\r\n urlAvatarResponsableServicio: string;\r\n nombreResponsableServicio: string;\r\n especialidadResponsableServicio: string;\r\n nickname: string; \r\n idVerificacion: string;\r\n idEmpresa: number;\r\n\r\n emailResponsableServicio: string;\r\n nombreEmpresa: string;\r\n idEmpresaResponsableServicio: number;\r\n\r\n perfilPublico: PublicProfile;\r\n}","export class DialogData {\n id: string;\n showHeader: boolean = true;\n headerIconClass: string;\n showHeaderIcon: boolean = false;\n title: string;\n description: string;\n message: string;\n colorConfirmButton: string;\n showConfirmButton: boolean = true;\n confirmText: string;\n colorCancelButton: string;\n showCancelButton: boolean = true;\n cancelText: string;\n data: any;\n loading: boolean = false;\n animationIn: string;\n animationOut: string;\n showCloseTextButton: boolean;\n loadLicense:boolean;\n}\n\nexport class MapDialogData extends DialogData{\n showWazeButton: boolean;\n}","import { PublicProfile } from \"../people/public-profile.model\";\nimport { BaseRequestModel } from \"./base-request.model\";\n\nexport class OnlineAppointmentRequest extends BaseRequestModel {\n // SolicitudCitaEnLinea\n idLocalidad: number;\n nombreLocalidad: string;\n direccionLocalidad: string;\n coordenadasLocalidad: string;\n telefonoLocalidad: string;\n teleconsulta: string;\n fechaInicio: Date;\n fechaFin: Date;\n idProcedimiento: number;\n nombreProcedimiento: string;\n numeroCelularContacto: string;\n tipoContacto: number = 0;\n workflowPosition:number = 0;\n flujoDependientes: boolean = false;\n patientDataInitiallyIncomplete: boolean = false;\n\n idEstado: number;\n nombreEstado: string;\n\n profile: PublicProfile;\n}\n\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { DoctorSearchResult } from 'src/app/shared/models/cdr/doctor-search-result.model';\r\nimport { DoctorMessage } from 'src/app/shared/models/people/doctor-message.model';\r\nimport { PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\r\nimport { HttpBaseService } from './http-base-service';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { LicenseDoctor } from 'src/app/shared/models/clinic-history/license-doctor.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DoctorService {\r\n\r\n constructor(private http: HttpBaseService) { }\r\n\r\n searchDoctors(language: string, searchText: string, companyname: string, profileType: PublicProfileType[]):Observable {\r\n\r\n if(!searchText)\r\n return of([]);\r\n\r\n let url = \"api/doctores?localizacion=\" + language + \"&textoBusqueda=\" + encodeURIComponent(searchText) + \"&tipoPerfil=\" + profileType.join(\",\");\r\n\r\n if (companyname)\r\n url += \"&dominioEmpresa=\" + companyname;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n \r\n postMessageToDoctor(model: DoctorMessage) {\r\n let url = \"api/doctores/\" + model.IdPersona + \"/mensaje\";\r\n\r\n return this.http.post(url, model, null, false);\r\n }\r\n \r\n getLicense(idResponsableServicio: number): Observable {\r\n const url = `api/doctores/${idResponsableServicio}/idoneidad`;\r\n const params = new HttpParams();\r\n\r\n return this.http.get(url, { params }, false); \r\n }\r\n}","import { DOCUMENT } from '@angular/common';\nimport { Component, HostListener, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\n\n@Component({\n selector: 'app-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ConfirmDialogComponent implements OnInit, OnDestroy {\n protected ngUnsubscribe = new Subject();\n licenseLoading: boolean = true;\n \n constructor(\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\n @Inject(DOCUMENT) private document: Document,\n private layoutService: LayoutService,\n private mdDialogRef: MatDialogRef\n ) {\n }\n\n ngOnInit(): void {\n\n if(this.data.loadLicense){\n this.layoutService.loadLicenseTheme('confirm-dialog-wrapper')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result=>{\n this.licenseLoading = false;\n });\n }\n else{\n this.licenseLoading = false;\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public cancel() {\n this.close(false);\n }\n\n public close(value:any) {\n if(this.data.animationOut){\n this.document.getElementsByClassName(this.data.id)[0].classList.remove(this.data.animationIn);\n this.document.getElementsByClassName(this.data.id)[0].classList.add(this.data.animationOut);\n\n setTimeout(()=>{ \n this.mdDialogRef.close(value);\n }, 300);\n }\n else{\n this.mdDialogRef.close(value);\n }\n }\n\n public confirm() {\n this.close(true);\n }\n \n @HostListener(\"keydown.esc\") \n public onEsc() {\n this.close(false);\n }\n}","
\n
\n \n

{{ data.title }}

\n \n
\n
\n

\n
\n
\n \n \n
\n
\n","import { Injectable } from '@angular/core';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\nimport { MessageBusService } from './message-bus.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GoogleAnalyticsService {\n\n constructor(\n private messageBusService: MessageBusService,\n ) {\n\n this.messageBusService.onLoginCompleted().subscribe(msg => {\n if (msg.user) {\n this.setUserData(msg.user);\n } \n });\n\n }\n\n static loadGoogleAnalytics(key: string){\n\n\n const gaScript = document.createElement('script');\n gaScript.setAttribute('async', 'true');\n gaScript.setAttribute('src', `https://www.googletagmanager.com/gtag/js?id=${ key }`);\n\n const gaScript1 = document.createElement('script');\n gaScript1.innerText = `window.dataLayer = window.dataLayer || [];`;\n gaScript1.innerText += `window.gtag=window.gtag||function(){dataLayer.push(arguments);};`;\n gaScript1.innerText += `window.gtag(\\'js\\', new Date());`;\n // gaScript1.innerText += `window.gtag(\\'config\\', \\'${ key }\\', { 'debug_mode':true });`;\n gaScript1.innerText += `window.gtag(\\'config\\', \\'${ key }\\');`;\n\n document.documentElement?.firstChild?.appendChild(gaScript);\n document.documentElement?.firstChild?.appendChild(gaScript1);\n }\n\n logPageView(url: string){\n if((window as any).gtag){\n (window as any).gtag('event', 'page_view', { page_location: url});\n }\n }\n\n sendEventInitVirtualConsultation(){\n if((window as any).gtag){\n (window as any).gtag('event', 'init_virtual_consultation');\n }\n }\n\n sendEventOpenClinicHistory(){\n if((window as any).gtag){\n (window as any).gtag('event', 'open_clinic_history');\n }\n }\n\n sendEventDownloadClinicHistory(){\n if((window as any).gtag){\n (window as any).gtag('event', 'download_clinic_history');\n }\n }\n\n sendEventGoToInsuranceCard(){\n if((window as any).gtag){\n (window as any).gtag('event', 'go_to_insurance_card');\n }\n }\n\n setUserData(user: UserPerson){\n if((window as any).gtag){\n (window as any).gtag('set', 'user_id', user.id);\n (window as any).gtag('set', 'user_properties', {\n 'sex': user.sexo\n });\n }\n }\n}\n","export class FormControl {\n id: number;\n titulo: string;\n numeroControlesPorFila?: number;\n componentes: FormControlComponent[];\n valor: string;\n className: string;\n\n constructor();\n constructor(obj:FormControl);\n constructor(obj?:any){\n this.id = obj && obj.id || 0;\n this.titulo = obj && obj.titulo || '';\n this.numeroControlesPorFila = obj && obj.numeroControlesPorFila || null;\n this.componentes = obj && obj.componentes \n ? obj.componentes.map((componente:FormControlComponent)=> {\n componente.idControl = this.id;\n return new FormControlComponent(componente);\n }) \n : [];\n this.valor = obj && obj.valor || '';\n }\n\n isVisible(){\n return this.componentes.find(c=> c.isVisible()) != null;\n }\n}\nexport class FormControlComponent{\n tipo: FormComponentType;\n nombre: string;\n valor: any;\n contenedor: string;\n idControl: number;\n visible: boolean;\n\n constructor();\n constructor(obj:FormControlComponent);\n constructor(obj?:any){\n this.tipo = obj && obj.tipo || FormComponentType.CARD;\n this.nombre = obj && obj.nombre || '';\n this.valor = obj && obj.valor || null;\n this.contenedor = obj && obj.contenedor || '';\n this.idControl = obj && obj.idControl || 0;\n this.visible = obj && obj.visible || true;\n }\n\n isVisible(){\n return this.visible;\n }\n}\n\nexport class FormComponentData {\n nombreComponente: string;\n contenedor: string;\n valor: any;\n configurationData: any;\n idControlPadre: number;\n idFormulario: number;\n nombreFormulario: string;\n}\n\nexport enum FormComponentType{\n CARD = 0,\n LINK = 1\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ClinicConcept } from 'src/app/shared/models/cdr/clinic-concept.model';\r\nimport { HttpResponseModel } from 'src/app/shared/models/http-response-model';\r\nimport { VirtualAttention } from 'src/app/shared/models/process/virtual-attention.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AppStorageService, STORAGE } from './app-storage.service';\r\nimport { BaseService } from './base.service';\r\nimport { HttpBaseService } from './http-base-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VirtualAttentionService {\r\n\r\n constructor(\r\n private http: HttpBaseService,\r\n private baseService:BaseService,\r\n private appStorageService: AppStorageService\r\n ) { }\r\n\r\n getActive():Observable {\r\n let idEmpresaDestinoConsultaVirtual = this.baseService.getDirectory().idEmpresaDestinoConsultaVirtual;\r\n let idEmpresaDestino = idEmpresaDestinoConsultaVirtual ? idEmpresaDestinoConsultaVirtual : this.baseService.getCompanyId();\r\n\r\n let url = \"api/consultas-virtuales/activa?idEmpresaDestino=\" + idEmpresaDestino\r\n\r\n return this.http.get(url).pipe(map((virtualAttention: VirtualAttention) => {\r\n this.appStorageService.setItem(STORAGE.ACTIVE_VIRTUAL_ATTENTION, virtualAttention);\r\n\r\n return virtualAttention;\r\n })); \r\n }\r\n \r\n getActiveWithCache():Observable {\r\n let result = this.appStorageService.getItem(STORAGE.ACTIVE_VIRTUAL_ATTENTION)\r\n \r\n if (result)\r\n return of(result);\r\n\r\n return this.getActive();\r\n }\r\n\r\n getPastAttentions():Observable {\r\n let idEmpresaDestinoConsultaVirtual = this.baseService.getDirectory().idEmpresaDestinoConsultaVirtual;\r\n let idEmpresaDestino = idEmpresaDestinoConsultaVirtual ? idEmpresaDestinoConsultaVirtual : this.baseService.getCompanyId();\r\n\r\n let url = \"api/consultas-virtuales/pasadas?idEmpresaDestino=\" + idEmpresaDestino\r\n\r\n return this.http.get(url);\r\n }\r\n\r\n removeActiveFromCache() {\r\n this.appStorageService.setItem(STORAGE.ACTIVE_VIRTUAL_ATTENTION, null)\r\n }\r\n\r\n startVirtualAttention(\r\n idEmpresaDestino: number,\r\n idAreaSistemaDestino: number,\r\n symptoms: ClinicConcept[],\r\n nombreEmisor: string,\r\n urlImagenEmisor: string,\r\n email: string) : Observable {\r\n let request = {\r\n IdEmpresaDestino: idEmpresaDestino,\r\n idAreaSistemaDestino: idAreaSistemaDestino,\r\n ConceptosClinicos: symptoms,\r\n Emisor: {\r\n NombreEmisor: nombreEmisor,\r\n UrlImagenEmisor: urlImagenEmisor,\r\n Email: email\r\n }\r\n };\r\n\r\n return this.http.post(\"api/consultas-virtuales/inicio/online\", request);\r\n }\r\n\r\n cancelVirtualAttention(idSolicitudPorVerificar: string, razon: string) {\r\n let url = \"api/consultas-virtuales/cancelar?idSolicitudPorVerificar=\" + idSolicitudPorVerificar;\r\n\r\n if (razon)\r\n url += \"&razon=\" + razon;\r\n\r\n return this.http.put>(url, {});\r\n }\r\n\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ProfileDetailModel, PublicProfileDetailType } from 'src/app/shared/models/people/profile-detail.model';\r\nimport { ProfileFilterSearchResult, ProfileFilterSearchResultConcept, ProfileFilterSearchResultGroup } from 'src/app/shared/models/people/profile-filter-search-result.model';\r\nimport { ProfileSearchResultsModel, PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\r\nimport { PublicProfile } from 'src/app/shared/models/people/public-profile.model';\r\nimport { SystemDocument } from 'src/app/shared/models/process/document.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HttpBaseService } from './http-base-service';\r\nimport { BaseService } from './base.service';\r\nimport { PublicProfileVersion } from 'src/app/shared/models/systems/portal-phr.model';\r\nimport { PublicProfileRouteDialogModel } from 'src/app/shared/components/dialogs/route-dialog/route-dialog.component';\r\nimport { RouteDialogService } from './route-dialog.service';\r\nimport { Router } from '@angular/router';\r\nimport { DirectoryFiltersGroupModel } from 'src/app/shared/components/search-results/provider-filters/provider-filters-content/provider-filters-content.component';\r\nimport { LayoutService } from './layout.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PublicProfileService {\r\n\r\n constructor(\r\n private http: HttpBaseService,\r\n private baseService: BaseService,\r\n private routeDialogService: RouteDialogService,\r\n private router: Router,\r\n private layoutService: LayoutService\r\n ) { } \r\n\r\n searchProfileByText(\r\n seed: string, language: string, searchText: string, filters: string, \r\n accountName: string, page: number, pageSize: number, \r\n country: string, state: string, city: string, profileType: PublicProfileType[], \r\n accountId: number, locationCompaniesIds: string) :Observable { \r\n let types = profileType.join(\",\"); \r\n let useElasticsearchForProfiles = environment.useElasticsearchForProfiles;\r\n let url = useElasticsearchForProfiles\r\n ? `api/perfiles-publicos/esprofiles?seed=${seed}&lenguaje=${language}&texto=${encodeURIComponent(searchText)}&page=${page}&pageSize=${pageSize}&tipoPerfil=${types}` \r\n : `api/perfiles-publicos?seed=${seed}&lenguaje=${language}&texto=${encodeURIComponent(searchText)}&page=${page}&pageSize=${pageSize}&tipoPerfil=${types}`; \r\n\r\n if (filters)\r\n url += `&filters=${filters}`;\r\n if (accountName)\r\n url += `&nombreCuenta=${accountName}`;\r\n if (accountId)\r\n url += `&idCuenta=${accountId}`;\r\n if (locationCompaniesIds)\r\n url += `&idEmpresasLocalidades=${locationCompaniesIds}`;\r\n if (country)\r\n url += `&pais=${country}`;\r\n if (state)\r\n url += `&provincia=${state}`;\r\n if (city)\r\n url += `&ciudad=${city}`;\r\n\r\n return this.http.get(url, null, false);\r\n } \r\n\r\n searchProfileByConcept(\r\n seed: string,\r\n language: string,\r\n conceptNav: string,\r\n filters: string, \r\n accountName: string,\r\n page: number,\r\n pageSize: number,\r\n country: string,\r\n state: string,\r\n city: string,\r\n profileType: PublicProfileType[],\r\n accountId: number, locationCompaniesIds: string, conceptId: number, conceptClassId: number\r\n ) :Observable {\r\n let types = profileType.join(\",\");\r\n let useElasticsearchForProfiles = environment.useElasticsearchForProfiles;\r\n let url = useElasticsearchForProfiles\r\n ? `api/perfiles-publicos/esprofiles${conceptNav}?seed=${seed}&lenguaje=${language}&page=${page}&pageSize=${pageSize}&tipoPerfil=${types}`\r\n : `api/perfiles-publicos${conceptNav}?seed=${seed}&lenguaje=${language}&page=${page}&pageSize=${pageSize}&tipoPerfil=${types}`;\r\n\r\n if (filters)\r\n url += `&filters=${filters}`;\r\n if (accountName)\r\n url += `&nombreCuenta=${accountName}`;\r\n if (country)\r\n url += `&pais=${country}`;\r\n if (state)\r\n url += `&provincia=${state}`;\r\n if (city)\r\n url += `&ciudad=${city}`;\r\n if (accountId)\r\n url += `&idCuenta=${accountId}`;\r\n if (locationCompaniesIds)\r\n url += `&idEmpresasLocalidades=${locationCompaniesIds}`;\r\n if (conceptId)\r\n url += `&idConcepto=${conceptId}`;\r\n if (conceptClassId)\r\n url += `&idClaseConcepto=${conceptClassId}`;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getPublicProfile(nickname:string, language: string, accountName: string): Observable{\r\n let url = `api/perfiles-publicos/${nickname}?lenguaje=${language}&nombreCuenta=${accountName}`;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n \r\n getProfileDetails(profileId: number, profileDetailType: PublicProfileDetailType) {\r\n let url = \"api/perfiles-publicos/\" + profileId + \"/detalles?tipoDetalle=\" + profileDetailType;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getPublicProfileFilters(language:string, \r\n tipoConcepto:string, \r\n searchText: string, \r\n concepto: string, \r\n filters: string, \r\n accountName:string, \r\n pais: string,\r\n provincia: string,\r\n ciudad:string, \r\n idTipoConceptoClinico: number, \r\n idTipoPerfilPublico: PublicProfileType[],\r\n accountId: number, locationCompaniesIds: string, conceptId: number, conceptClassId: number): Observable { \r\n let type = idTipoPerfilPublico? idTipoPerfilPublico.join(\",\") : \"\";\r\n let useElasticsearchForProfiles = environment.useElasticsearchForProfiles;\r\n let url = useElasticsearchForProfiles \r\n ? \"api/perfiles-publicos/esprofiles/filtros?language=\" + language\r\n : \"api/perfiles-publicos/filtros?language=\" + language;\r\n\r\n if (tipoConcepto)\r\n url += \"&tipoConcepto=\" + tipoConcepto;\r\n if (concepto)\r\n url += \"&concepto=\" + concepto;\r\n if (searchText)\r\n url += \"&searchText=\" + encodeURIComponent(searchText);\r\n if (filters)\r\n url += \"&filters=\" + filters;\r\n if (accountName)\r\n url += \"&accountName=\" + accountName;\r\n if (pais)\r\n url += \"&pais=\" + pais;\r\n if (provincia)\r\n url += \"&provincia=\" + provincia;\r\n if (ciudad)\r\n url += \"&ciudad=\" + ciudad;\r\n if (idTipoConceptoClinico)\r\n url += \"&idTipoConceptoClinico=\" + idTipoConceptoClinico;\r\n if (type)\r\n url += \"&idTipoPerfilPublico=\" + idTipoPerfilPublico;\r\n if (accountId)\r\n url += `&idCuenta=${accountId}`;\r\n if (locationCompaniesIds)\r\n url += `&idEmpresasLocalidades=${locationCompaniesIds}`;\r\n if (conceptId)\r\n url += `&idConcepto=${conceptId}`;\r\n if (conceptClassId)\r\n url += `&idClaseConcepto=${conceptClassId}`;\r\n if (idTipoConceptoClinico)\r\n url += \"&idClaseConceptoFiltro=\" + idTipoConceptoClinico; \r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getProfileDetailsDocuments(profileId: number, profileDetailType: PublicProfileDetailType) {\r\n let url = \"api/perfiles-publicos/\" + profileId + \"/detalles/documentos?tipoDetalle=\" + profileDetailType;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getProfileDetailsDocument(profileId: number, profileDetailType: PublicProfileDetailType, documentId: number) {\r\n let url = \"api/perfiles-publicos/\" + profileId + \"/detalles/documento/\" + documentId + \"?tipoDetalle=\" + profileDetailType;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getPublicProfileUrl(nickName: string) {\r\n let publicProfileVersion = this.baseService.getPublicProfileVersion();\r\n let url = publicProfileVersion != PublicProfileVersion.V1 ? \"perfil\" : \"perfil-v1\";\r\n\r\n if (nickName.indexOf(\"/\") >= 0)\r\n url += nickName;\r\n else\r\n url += (\"/\" + nickName);\r\n\r\n return url;\r\n }\r\n \r\n openPublicProfile(url: string){\r\n let publicProfileVersion = this.baseService.getPublicProfileVersion();\r\n\r\n if(publicProfileVersion == PublicProfileVersion.V1){\r\n this.router.navigateByUrl(url);\r\n }\r\n else{\r\n let routeDialogModel = new PublicProfileRouteDialogModel();\r\n\r\n routeDialogModel.route = url;\r\n \r\n this.routeDialogService.openDialog(routeDialogModel);\r\n }\r\n }\r\n\r\n getPublicProfileById(personId: number, language: string, accountName: string) {\r\n let url = `api/perfiles-publicos?idPersona=${personId}&lenguaje=${language}&nombreCuenta=${accountName}`;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getPublicProfileByIds(personIds: number[]) {\r\n const arrayIds = [... new Set(personIds)];\r\n const url = `api/perfiles-publicos/${arrayIds}`;\r\n\r\n return this.http.get<(PublicProfile | null)[]>(url, null, false);\r\n }\r\n\r\n groupProfileFilters(filteredConcepts: ProfileFilterSearchResultConcept[], groupsDef: DirectoryFiltersGroupModel[], language: string) : ProfileFilterSearchResultGroup[] { \r\n let groups: ProfileFilterSearchResultGroup[] = [];\r\n\r\n if (groupsDef) {\r\n groups = groupsDef.map(g => {\r\n let group = new ProfileFilterSearchResultGroup();\r\n \r\n group.idsConceptosClinicos = g.idsConceptosClinicos;\r\n group.results = [];\r\n \r\n if (g.tituloGrupo)\r\n group.titulo = this.layoutService.getTextByLanguage(g.tituloGrupo, language);\r\n \r\n if (g.tooltip)\r\n group.tooltip = this.layoutService.getTextByLanguage(g.tooltip, language);\r\n \r\n return group;\r\n });\r\n }\r\n\r\n // If there is not group on the configuration, let just create the default one\r\n if (groups.length == 0) {\r\n let defaultGroup = new ProfileFilterSearchResultGroup();\r\n defaultGroup.idsConceptosClinicos = [-1];\r\n defaultGroup.results = filteredConcepts;\r\n\r\n groups.push(defaultGroup);\r\n }\r\n else {\r\n // Add the concept in the first matching group.\r\n // If no maching group is found add it to the default one\r\n filteredConcepts.forEach(concept => {\r\n for(let group of groups) {\r\n if (group.idsConceptosClinicos.indexOf(concept.cc) > -1) {\r\n group.results.push(concept);\r\n break;\r\n } \r\n else if (group.idsConceptosClinicos.length == 1 && group.idsConceptosClinicos[0] == -1) {\r\n group.results.push(concept);\r\n } \r\n }\r\n });\r\n }\r\n\r\n return groups;\r\n }\r\n}\r\n\r\n","import { Location } from \"./location.model\";\n\nexport class PublicProfile {\n id: number;\n tipoPerfil: number;\n idPerfilPublico : number;\n idPersona?: number;\n idEmpresa: number;\n idPais: number;\n denominacionEmpresa: string;\n username: string;\n nombrePersona: string;\n sexo: string;\n citaEnLineaHabilitada: string;\n ubicacionFoto: string;\n especialidad: string;\n subEspecialidad: string;\n atencionBebes: boolean;\n atencionNinos: boolean;\n atencionAdultos: boolean;\n atencionAdultosMayores: boolean;\n atencionAdolescentes: boolean;\n mensajePublico: string;\n emailRemitenteNotificacion: string;\n sitioWeb: string;\n receptorPagoElectronico: string;\n idEmpresaReceptorPagoElectronico: number;\n empresasRelacionadas: string;\n generarTareaConfirmacionCita: string;\n redesSociales: SocialNetworkPublicProfile[];\n localidades: LocationPublicProfile[];\n enfoquePoblacional: PublicProfileDetailLightweight[];\n especialidades: PublicProfileDetailLightweight[];\n subEspecialidades: PublicProfileDetailLightweight[];\n condiciones: PublicProfileDetailLightweight[];\n tratamientos: PublicProfileDetailLightweight[];\n idiomas: PublicProfileDetailLightweight[];\n fotos: string[];\n fotosGaleria: DocumentPublicProfile[];\n publicaciones: PublicProfileDetailLightweight[];\n browserTitle: string;\n browserDescription: string;\n keywords: string[];\n descripcionAutobiografica: string[];\n titles: EducationPublicProfile[];\n curses: EducationPublicProfile[];\n entrenamientos: EducationPublicProfile[];\n licenses: LicensePublicProfile[];\n affiliations: PublicProfileDetailLightweight[];\n positions: PositionPublicProfile[];\n redes: PublicProfileDetailLightweight[];\n sobreMi: string[];\n facebookPixel: FacebookPixelPublicProfile[];\n experienciaLaboral: string[];\n aprobado: string;\n eliminado: string;\n descuentos: PublicProfileDetailLightweight[];\n firmaImg: string;\n}\n\nexport class SocialNetworkPublicProfile{\n tipo: number;\n url: string;\n}\n\nexport class LocationPublicProfile{\n idPerfilPublicoDetalle: number;\n idEmpresa?: number;\n localidad: Location\n}\n\nexport class PublicProfileDetailLightweight {\n id: number;\n idTipoPerfilPublicoDetalle: number;\n idObjetoDetalle?: number;\n objetoDetalle: string;\n detalleDestacado: string;\n}\n\nexport class DocumentPublicProfile{\n id: number;\n idPerfilPublico: number;\n idTipoPerfilPublicoDetalle: number;\n idEmpresa?: number;\n idPersona: number;\n idObjetoDetalle?: number;\n nombreUsuario: string;\n citaEnLineaHabilitada: string;\n nombreObjetoDetalle: string;\n ubicacionFoto: string;\n idResponsableRegistro?: number;\n idResponsableActualizacion?: number;\n prioridadOrden?: number;\n eliminado: string;\n nombreBucketAmazonS3: string;\n}\n\nexport class EducationPublicProfile{\n idDetalle: number;\n idObjetoDetalle?: number;\n nombre: string;\n mesInicio: string;\n anioInicio: string;\n mesFin: string;\n anioFin: string;\n institucion: string;\n}\n\nexport class LicensePublicProfile{\n idDetalle: number;\n idObjetoDetalle?: number;\n codigo: string;\n especialidad: string;\n nombre: string;\n}\n\nexport class PositionPublicProfile{\n idDetalle: number;\n idObjetoDetalle?: number;\n titulo: string;\n mesInicio: string;\n anioInicio: string;\n mesFin: string;\n anioFin: string;\n descripcion: string;\n}\n\nexport class FacebookPixelPublicProfile{\n idDetalle: number;\n idObjetoDetalle?: number;\n pixelId: string;\n pixelEvent: string;\n}","","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-login-singup-error-banner',\n templateUrl: './login-singup-error-banner.component.html',\n styleUrls: ['./login-singup-error-banner.component.css']\n})\nexport class LoginSingupErrorBannerComponent implements OnInit {\n\n @Input() error: string;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","export class AttentionHistory {\n contactoClinico: ClinicalContact;\n atenciones: AttentionGroupItem[]; \n}\n\nexport class ClinicalContact {\n id: number;\n idSolicitud: number;\n idTipoSolicitud: number;\n fechaContacto: Date;\n idResponsableServicio: number;\n nombreResponsableServicio: string;\n avatarResponsableServicio: string;\n asunto: string;\n edadPaciente: string;\n idEstatus: number;\n}\n\nexport class AttentionGroupItem {\n idTipoConcepto: number;\n nombreTipoConcepto: string;\n agrupadores: number[];\n\n items: ClinicHistoryItem[];\n}\n\nexport class ClinicHistoryItem {\n id: number;\n idTipoConcepto: number;\n idConcepto: number;\n nombreConcepto: string;\n nombreTipoConcepto: string;\n valorConcepto: string;\n valorHtmlConcepto: string;\n fecha: Date;\n descripcion: string;\n fechaRegistro: Date;\n idPaciente: number;\n nombrePaciente: string;\n idResponsableAtencion: number;\n nombreResponsableAtencion: string;\n idContactoClinico: number;\n nombreEmisorAtencion: string;\n idFormulario: number;\n idControlFormulario: number;\n idAgrupador: string;\n idDocumento: number;\n nombreDocumento: string;\n idTipoDocumento: number;\n extensionDocumento: string;\n ubicacionWebDocumento: string;\n nombreBucketAmazon: string;\n}","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AttentionGroupItem, AttentionHistory } from 'src/app/shared/models/clinic-history/attention-history.model';\nimport { ClinicHistory } from 'src/app/shared/models/clinic-history/clinic-history.model';\nimport { environment } from 'src/environments/environment';\nimport { HttpBaseService } from './http-base-service';\nimport { UtilsService } from './utils.service';\nimport { ClinicHistoryHashed } from 'src/app/shared/models/clinic-history/clinic-history-hashed.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClinicHistoryService {\n\n constructor(\n private http: HttpBaseService,\n private utilsService: UtilsService\n ) { }\n\n getClinicHistory(idPaciente:number = -1, idResponsableServicio: number = -1):Observable{\n\n let url = \"api/historias-clinicas\";\n\n url += \"?idPaciente=\" + idPaciente;\n url += \"&idResponsableServicio=\" + idResponsableServicio;\n\n return this.http.get(url);\n }\n\n getAttentionsByGroup(attentionHistoryArray: AttentionHistory[], idAgrupador: number): AttentionHistory[] {\n let attentionsFiltered: AttentionHistory[] = [];\n\n attentionHistoryArray.forEach(attentionHistory => {\n let _atenciones = attentionHistory.atenciones.filter(a => a.agrupadores.indexOf(idAgrupador) >= 0);\n\n if(_atenciones.length > 0){\n\n let _attentionHistory = new AttentionHistory();\n\n _attentionHistory.contactoClinico = attentionHistory.contactoClinico;\n _attentionHistory.atenciones = _atenciones;\n\n attentionsFiltered.push(_attentionHistory);\n }\n });\n\n return attentionsFiltered;\n }\n\n getClinicHistoryItemsByGroup(items:AttentionGroupItem[], groups: number[]) { \n return items.filter(i => this.utilsService.containsAnyNumber(i.agrupadores, groups)); \n }\n \n getClinicHistoryItemsByExcludedGroup(items:AttentionGroupItem[], groups: number[]) {\n return items.filter(i => !this.utilsService.containsAnyNumber(i.agrupadores, groups));\n }\n\n getAttentionsByConceptType(items:AttentionGroupItem[], concepType: number) {\n return items.filter(a => a.idTipoConcepto == concepType);\n }\n\n getClassPreviewFile(extension: string): string {\n let _className = '';\n switch(extension){\n case 'jpg':\n case 'jpeg':\n case 'bmp':\n case 'gif':\n case 'png':\n _className = \"image\";\n break;\n default:\n break;\n }\n return _className;\n }\n\n getPreviewFileUrl(extension: string, url: string): string {\n let _imagePreviewUrl = '';\n switch(extension){\n case 'jpg':\n case 'jpeg':\n case 'bmp':\n case 'gif':\n case 'png':\n _imagePreviewUrl = url.replace(/\\\\/g, '/');\n break;\n case 'pdf':\n _imagePreviewUrl = '/assets/images/HC/img_preview_pdf.png';\n break;\n case 'xls':\n case 'xlsx':\n case 'xlt':\n _imagePreviewUrl = '/assets/images/HC/img_preview_xls.png';\n break;\n case 'doc':\n case 'docx':\n _imagePreviewUrl = '/assets/images/HC/img_preview_doc.png';\n break;\n case 'mp3':\n _imagePreviewUrl = '/assets/images/HC/img_preview_mp3.png';\n break;\n case 'mp4':\n _imagePreviewUrl = '/assets/images/HC/img_preview_mp4.png';\n break;\n default:\n _imagePreviewUrl = '/assets/images/HC/img_preview_default.png';\n break;\n }\n\n return _imagePreviewUrl;\n }\n\n getClinicHistoryPdf(model: any): Observable {\n let url = \"api/historias-clinicas/pdf\"; \n let headers = new HttpHeaders();\n \n headers = headers.set('Accept', 'application/pdf');\n\n return this.http.post(url, model, { headers: headers, responseType: 'blob' as 'json' });\n }\n\n getClinicHistoryByHash(id: string): Observable {\n const url = `api/historias-clinicas/hashed`;\n const params = new HttpParams().set('hashedId', id);\n\n return this.http.get(url, { params }, false);\n }\n\n}\n","export class ChatConversacion {\r\n id: number;\r\n fecha: Date;\r\n idPublico: string;\r\n tipo: number;\r\n idEstado: number;\r\n idEmpresa: number;\r\n idContactoClinico: number;\r\n idSolicitud: number;\r\n idEtapaSolicitud: number;\r\n idSujeto: number;\r\n idDestinatario: number;\r\n idPersonasParticipantes: string;\r\n idPersonasInvolucradas: string;\r\n fechaActualizacion: Date;\r\n idResponsableActualizacion: string;\r\n eliminado: string;\r\n fechaEliminacion: Date;\r\n idResponsableEliminacion: number;\r\n mensajes: ChatConversacionMessage[];\r\n}\r\n\r\nexport class ChatConversacionMessage {\r\n id: number;\r\n idChat: number;\r\n fechaCreacion: Date;\r\n tipo: ChatConversacionMessageType;\r\n idEstado: number;\r\n valor: string;\r\n idSolicitud: number;\r\n idEtapaSolicitud: number;\r\n idEmpresa: number;\r\n idEmisor: number;\r\n nombreEmisor: string;\r\n urlImagenEmisor: string;\r\n idReceptor: number;\r\n idPersonasInvolucradas: string;\r\n fechaEnviado: Date;\r\n fechaRecibido: Date;\r\n fechaLeido: Date;\r\n eliminado: string;\r\n fechaEliminacion: Date;\r\n idResponsableEliminacion: number;\r\n idPacienteEmpresaOrigen: number;\r\n IdPacienteEmpresaDestino: number | undefined; \r\n}\r\n\r\nexport enum ChatConversacionMessageType {\r\n PersonMessaje = 1,\r\n StandardSystemaMessage = 2\r\n}\r\n\r\nexport class ChatCancellationMessage { \r\n mensaje : ChatConversacionMessage;\r\n lenguaje: string;\r\n razonCancelacion: string;\r\n idEmpresaTemplate: number;\r\n}","export class DoctorMessage { \r\n IdEmpresa: number;\r\n IdPersona: number;\r\n Localizacion: string;\r\n\r\n Email: string;\r\n NombreCompleto: string;\r\n Mensaje: string;\r\n NombreDoctor: string;\r\n}","
\r\n
\r\n
{{ 'shared.doctorMessageDialog.text1' | translate:locale.language }}
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {{ 'shared.doctorMessageDialog.text2' | translate:locale.language }} \r\n \r\n {{ 'shared.doctorMessageDialog.text9' | translate:locale.language }}\r\n {{ 'shared.doctorMessageDialog.text10' | translate:locale.language }}\r\n \r\n \r\n \r\n {{ 'shared.doctorMessageDialog.text3' | translate:locale.language }} \r\n \r\n {{ 'shared.doctorMessageDialog.text11' | translate:locale.language }}\r\n \r\n \r\n \r\n {{ 'shared.doctorMessageDialog.text4' | translate:locale.language }} \r\n \r\n {{ 'shared.doctorMessageDialog.text12' | translate:locale.language }}\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n
","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { DoctorService } from 'src/app/core/services/doctors.service';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { DoctorMessage } from 'src/app/shared/models/people/doctor-message.model';\r\nimport { PublicProfile } from 'src/app/shared/models/people/public-profile.model';\r\nimport { CustomEmailValidator } from 'src/app/shared/validators/custom-email.validator';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'doctor-message-dialog',\r\n templateUrl: './doctor-message-dialog.component.html',\r\n styleUrls: ['./doctor-message-dialog.component.css'],\r\n encapsulation: ViewEncapsulation.None \r\n})\r\nexport class DoctorMessageDialogComponent implements OnInit { \r\n\r\n loading: boolean = false;\r\n publicProfile: PublicProfile; \r\n messageForm: FormGroup;\r\n captchaSuccess: boolean = false;\r\n captchaSiteKey: string; \r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\r\n private mdDialogRef: MatDialogRef,\r\n private formBuilder: FormBuilder,\r\n private baseService: BaseService,\r\n private doctorService: DoctorService,\r\n private toastr: ToastrService,\r\n private translation: L10nTranslationService, \r\n @Inject(L10N_LOCALE) public locale: L10nLocale) {\r\n \r\n this.publicProfile = this.baseService.parseObject(data.data);\r\n\r\n this.captchaSiteKey = environment.googleCaptchaSiteKey;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.messageForm = this.formBuilder.group({\r\n email: ['', [Validators.required, CustomEmailValidator]],\r\n fullName: ['', Validators.required],\r\n message: ['', Validators.required],\r\n }); \r\n }\r\n\r\n get f() { return this.messageForm.controls; }\r\n\r\n onCloseClick() {\r\n this.mdDialogRef.close();\r\n } \r\n\r\n isSaveEnabled() {\r\n return this.captchaSuccess && !this.messageForm.invalid;\r\n } \r\n\r\n resolved(captchaResponse: any) {\r\n this.captchaSuccess = true;\r\n }\r\n\r\n confirm() {\r\n if (!this.captchaSuccess)\r\n return;\r\n\r\n // stop here if form is invalid\r\n if (this.messageForm.invalid) {\r\n this.messageForm.markAllAsTouched();\r\n return;\r\n }\r\n\r\n let model = new DoctorMessage();\r\n\r\n model.IdEmpresa = this.publicProfile.idEmpresa;\r\n model.IdPersona = this.publicProfile.id;\r\n model.NombreDoctor = this.publicProfile.nombrePersona;\r\n\r\n model.Localizacion = this.locale.language;\r\n model.Email = this.messageForm.get(\"email\")?.value;\r\n model.NombreCompleto = this.messageForm.get(\"fullName\")?.value;\r\n model.Mensaje = this.messageForm.get(\"message\")?.value; \r\n\r\n this.loading = true;\r\n\r\n this.doctorService.postMessageToDoctor(model).subscribe(r => { \r\n this.loading = false;\r\n this.mdDialogRef.close();\r\n\r\n this.toastr.success(this.translation.translate(\"shared.doctorMessageDialog.text6\"), \"\");\r\n },\r\n (error: any) => {\r\n this.loading = false;\r\n\r\n this.toastr.error(this.translation.translate(\"shared.doctorMessageDialog.text8\"), this.translation.translate(\"shared.doctorMessageDialog.text7\"));\r\n });\r\n }\r\n \r\n}\r\n\r\n","import { PublicProfile } from \"../people/public-profile.model\";\r\nimport { BaseRequestModel } from \"./base-request.model\";\r\n\r\nexport class OnlinePaymentRequest extends BaseRequestModel { \r\n workflowPosition:number = 0;\r\n profile: PublicProfile;\r\n}\r\n\r\n","export enum NotificacionType {\r\n ACTIVAR_CUENTA = 100,\r\n ACTIVAR_CUENTA_PARA_SOLICITUD_CITA = 100,\r\n ACTIVAR_CUENTA_PARA_PAGO_EN_LINEA = 105\r\n}","export default class CommonTypesHelper {\r\n \r\n static dateHasValue(dateToValidate?: Date | null) : boolean {\r\n if (dateToValidate && new Date(dateToValidate) > new Date(1900, 1, 1)) {\r\n return true;\r\n } else {\r\n return false; \r\n } \r\n }\r\n\r\n static stringHasValue(stringToValidate?: string) : boolean {\r\n if (stringToValidate && stringToValidate != '9') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const THEMES = new InjectionToken('THEMES');\r\n\r\nexport interface Theme {\r\n name:string;\r\n properties: any;\r\n}","import { Injectable } from '@angular/core';\nimport { SwUpdate } from '@angular/service-worker';\nimport * as CryptoJS from 'crypto-js';\nimport { CookieService } from 'ngx-cookie-service';\nimport { Token } from 'src/app/shared/models/token.model';\nimport { environment } from 'src/environments/environment';\n\nexport const STORAGE: any = {\n VERSION: 'v',\n TOKEN: 'auth-token',\n DIRECTORY: 'directory',\n MENU: 'menu',\n LOCALE: 'locale',\n REFERRER: 'referrer',\n PROFILE_SEACH_SEED: 'profile-search-seed',\n USER: 'user',\n AUTH_IFRAME: 'auth_iframe',\n ACTIVE_VIRTUAL_ATTENTION: 'active_virtual_attention',\n MENU_LANGUAGE: 'menu_language',\n POLICIES: \"policies\",\n CLINIWEB_DIRECTORY: 'cliniweb_directory_',\n WORKFLOW_TYPE: 'workflow_type',\n ONLINE_APPOINTMENT_CLINIWEB_STATE: 'online_appointment_cliniweb_state',\n ONLINE_APPOINTMENT_CLINIWEB_BOOTSTRAP_STATE: 'online_appointment_cliniweb_bootstrap_state',\n WELCOME_CLINIWEB_STATE: 'welcome_cliniweb_state',\n ONLINE_PAYMENT_WORKFLOW_STATE: 'online_payment_workflow_state',\n MEDICAL_ORDER_WORKFLOW_STATE: 'medical_order_workflow_state',\n GROWTH_CURVES_WORKFLOW_STATE: 'growth_curves_workflow_state',\n ONLINE_PAYMENT_WORKFLOW_BOOTSTRAP_STATE: 'online_payment_workflow_bootstrap_state',\n SIGNUP_CAPTCHA_REQUIRED: 'signup_catpcha_required',\n SIGNUP_WORKFLOW_VERIFICATION_TYPE: 'signup_workflow_verification_type',\n AUTHENTICATION_SERVICE_PROVIDER: 'authentication_service_provider',\n APPOINTMENTS: 'appointments',\n LICENSE: 'license',\n COUNTRY: 'country',\n NEXT_APPOINTMENT_LAST_TIME_SHOWN: \"next_appointment_last_time_shown\",\n SIGNUP_CHECKIN_STATE: \"signup_checkin_state\",\n SELECT_COUNTRY: \"select_country\"\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppStorageService {\n\n constructor(\n private cookieService: CookieService,\n private swUpdate: SwUpdate\n ) { } \n\n clearAll() {\n window.localStorage.clear();\n window.sessionStorage.clear();\n this.cookieService.deleteAll(\"/\", undefined);\n\n this.swUpdate.available.subscribe(() => {\n this.swUpdate.activateUpdate().then(() => {\n console.log('Caché limpiada y Service Worker actualizado.');\n // window.location.reload();\n });\n });\n }\n\n clearLogout(){\n this.removeSessionItem(STORAGE.USER);\n this.removeSessionItem(STORAGE.SIGNUP_CAPTCHA_REQUIRED);\n this.removeSessionItem(STORAGE.TOKEN);\n this.removeSessionItem(STORAGE.AUTHENTICATION_SERVICE_PROVIDER);\n this.removeSessionItem(STORAGE.APPOINTMENTS);\n this.removeSessionItem(STORAGE.SIGNUP_CHECKIN_STATE);\n this.removeSessionItem(STORAGE.SELECT_COUNTRY);\n window.localStorage.removeItem(STORAGE.COUNTRY);\n\n this.cookieService.deleteAll(\"/\", undefined);\n }\n \n public setItem(key: string, data: any, encrypt?: boolean){\n window.localStorage.removeItem(key);\n window.localStorage.setItem(\n key, \n encrypt\n ? this.encryptObj(JSON.stringify(data))\n : JSON.stringify(data));\n }\n\n public setItemSession(key: string, data: any, encrypt?: boolean){\n window.sessionStorage.removeItem(key);\n window.sessionStorage.setItem(\n key,\n encrypt\n ? this.encryptObj(JSON.stringify(data))\n : JSON.stringify(data));\n }\n\n public removeSessionItem(key: string) {\n window.sessionStorage.removeItem(key);\n }\n\n public getItem(key: string, desencrypt?:boolean){\n const data = window.localStorage.getItem(key);\n\n return data \n ? JSON.parse(desencrypt\n ? this.decryptObj(data)\n : data)\n : null;\n }\n\n public getItemSession(key: string, desencrypt?:boolean){\n const data = window.sessionStorage.getItem(key);\n\n return data \n ? JSON.parse(desencrypt\n ? this.decryptObj(data)\n : data)\n : null;\n }\n\n public getSerializedToken():string{\n const token = this.cookieService.get(STORAGE.TOKEN);\n return JSON.stringify(this.decryptObj(token));\n }\n\n public setSerializedToken(token:string){\n\n const tokenObject:Token = this.parseObjectDeep(JSON.parse(token));\n\n this.cookieService.set(STORAGE.TOKEN, this.encryptObj(tokenObject), 2, '/', undefined, false, \"None\");\n this.setItemSession(STORAGE.TOKEN, '_');\n }\n\n public getToken(): Token {\n const token = this.cookieService.get(STORAGE.TOKEN);\n return token ? this.decryptObj(token) : null;\n }\n\n public setToken(token: Token) {\n this.cookieService.set(STORAGE.TOKEN, this.encryptObj(token), 2, '/', undefined, false, \"None\");\n this.setItemSession(STORAGE.TOKEN, '_');\n }\n\n public removeToken(){\n this.cookieService.delete(STORAGE.TOKEN, '/', undefined, false, \"None\");\n this.removeSessionItem(STORAGE.TOKEN);\n }\n\n private encryptObj(obj: any): string {\n const _key = CryptoJS.enc.Utf8.parse(environment.cKey);\n const _iv = CryptoJS.enc.Utf8.parse(environment.cKey);\n\n return CryptoJS.AES.encrypt(\n JSON.stringify(obj),\n _key,\n {\n keySize: 16,\n iv: _iv,\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7\n }).toString();\n }\n\n private decryptObj(text: string): any {\n const _key = CryptoJS.enc.Utf8.parse(environment.cKey);\n const _iv = CryptoJS.enc.Utf8.parse(environment.cKey);\n const decryptedText = CryptoJS.AES.decrypt(\n text,\n _key,\n {\n keySize: 16,\n iv: _iv,\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7\n }).toString(CryptoJS.enc.Utf8);\n\n return JSON.parse(decryptedText);\n }\n\n\n // private getCookieDomain(){\n // return window.location.href.includes('.cliniweb.com') ? '.cliniweb.com' : undefined;\n // }\n\n private parseObjectDeep(json : any) : T {\n let result = {} as any;\n var keys = Object.keys(json);\n\n for(let i=0; i < keys.length; i++) {\n let camelCasePropName = keys[i].charAt(0).toLowerCase() + keys[i].slice(1);\n result[camelCasePropName] = json[keys[i]];\n } \n\n return result as T;\n }\n}\n","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\n\n@Component({\n selector: 'app-states-request-verify',\n templateUrl: './states-request-verify.component.html',\n styleUrls: ['./states-request-verify.component.css']\n})\nexport class StatesRequestVerifyComponent implements OnInit {\n\n @Input() model: StatesRequestVerifyDataModel;\n\n constructor(\n private router: Router,\n private messageBusService: MessageBusService,\n @Inject(L10N_LOCALE) public locale: L10nLocale) { }\n\n ngOnInit(): void {\n }\n\n gotoHome(){\n if (this.model.buttonSecondaryActionFn) {\n this.model.buttonSecondaryActionFn();\n }\n else {\n this.messageBusService.showHeader();\n this.router.navigate(['/']);\n } \n }\n}\n\nexport class StatesRequestVerifyDataModel {\n companyLogoUrl: string;\n mainImageUrl: string;\n textRefI18n: string;\n textDescriptionRefI18n: string;\n buttonActionFn: any;\n buttonSecondaryActionFn: any;\n buttonTextRefI18n: string;\n secondaryButtonTextRefI18n: string;\n showActionButton: boolean;\n showHomeButton: boolean;\n}","\n
\n \n
\n \n \n {{ model.textRefI18n | translate:locale.language }}\n \n \n {{ model.textDescriptionRefI18n | translate:locale.language }}\n \n
\n \n \n
\n
\n
","import { Inject, Injectable } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { Observable, Subject, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { LoginResponse } from 'src/app/shared/models/login-response.model';\nimport { PersonIdentification } from 'src/app/shared/models/people/person-identification.model';\nimport { Policy } from 'src/app/shared/models/people/policy.model';\nimport { UpdateUser, UserPerson } from 'src/app/shared/models/people/user-person.model';\nimport { User } from 'src/app/shared/models/people/user.model';\nimport { Token } from 'src/app/shared/models/token.model';\nimport { AppStorageService, STORAGE } from './app-storage.service';\nimport { AuthOidcService } from './auth-oidc.service';\nimport { BaseService } from './base.service';\nimport { HttpBaseService } from './http-base-service';\nimport { MessageBusService } from './message-bus.service';\nimport { ResetPasswordModel } from 'src/app/shared/models/people/reset-password.model';\nimport { Dependent, DependentRelationshipType, DependentRequest } from 'src/app/shared/models/people/dependent.model';\nimport { RegisterUnverifedUser, RegisterUser } from 'src/app/shared/models/people/register-user.model';\nimport { UpdatePasswordRequestModel } from 'src/app/shared/models/people/update-password-request.model';\nimport { FileUploadRequest } from 'src/app/shared/interfaces/file-upload-request';\nimport { AvatarUploadModel, AvatarUploadedFileModel } from 'src/app/shared/components/avatar-upload/avatar-upload.component';\nimport { UserExistsResponseModel } from 'src/app/shared/models/people/user-exists-response.model';\nimport { TerritorialDivisionsService } from './territorial-divisions.service';\nimport { CountryModel, TerritorialDivision } from 'src/app/shared/models/systems/territorial-division.model';\nimport { UnverifiedRequest } from 'src/app/shared/models/systems/unverified-request.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserService {\n\n dependentRelationshipTranslations = {\n other: \"\",\n son: \"\",\n daughter: \"\",\n father: \"\",\n mother: \"\",\n language: \"\",\n man: \"\",\n women: \"\",\n relative: \"\", \n husband: \"\",\n wife: \"\", \n brother: \"\",\n sister: \"\",\n grandfather: \"\",\n grandmother: \"\",\n manWarded: \"\",\n womanWarded: \"\",\n };\n\n constructor(\n private http: HttpBaseService,\n private appStorageService: AppStorageService,\n private authOidcService: AuthOidcService,\n private baseService: BaseService,\n private messageBusService: MessageBusService,\n private translation: L10nTranslationService,\n private territorialDivisionService: TerritorialDivisionsService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n ) { \n this.setConfigTranslation();\n }\n\n private setConfigTranslation(){\n this.translation.onChange().subscribe({\n next: (locale: L10nLocale) => {\n this.dependentRelationshipTranslations.other = this.translation.translate('other');\n this.dependentRelationshipTranslations.son = this.translation.translate('son');\n this.dependentRelationshipTranslations.daughter = this.translation.translate('daughter');\n this.dependentRelationshipTranslations.father = this.translation.translate('father');\n this.dependentRelationshipTranslations.mother = this.translation.translate('mother');\n this.dependentRelationshipTranslations.man = this.translation.translate('man');\n this.dependentRelationshipTranslations.women = this.translation.translate('women');\n this.dependentRelationshipTranslations.relative = this.translation.translate('relative');\n this.dependentRelationshipTranslations.husband = this.translation.translate('husband');\n this.dependentRelationshipTranslations.wife = this.translation.translate('wife');\n this.dependentRelationshipTranslations.brother = this.translation.translate('brother');\n this.dependentRelationshipTranslations.sister = this.translation.translate('sister');\n this.dependentRelationshipTranslations.grandfather = this.translation.translate('grandfather');\n this.dependentRelationshipTranslations.grandmother = this.translation.translate('grandmother');\n this.dependentRelationshipTranslations.manWarded = this.translation.translate('manWarded');\n this.dependentRelationshipTranslations.womanWarded = this.translation.translate('womanWarded');\n }\n });\n this.translation.onError().subscribe({\n next: (error: any) => {\n if (error) console.log(error);\n }\n });\n }\n\n getUserPerson(username: string): Observable {\n let url = \"api/usuarios/persona/\" + username;\n\n return this.http.get(url);\n }\n\n getUserIdentification(identificationType: number): Observable {\n let url = \"api/usuarios/identificaciones?tipo=\" + identificationType;\n\n return this.http.get(url);\n }\n \n getUserIdentificationNumber() : Observable {\n return this.getUserIdentification(15); // Cedula\n }\n\n getPolicies(policyType: number) : Observable {\n let policies = this.appStorageService.getItem(STORAGE.POLICIES, true);\n\n if (policies)\n return of(policies);\n\n return this.getUserIdentification(policyType).pipe(map(identifications => {\n let policies = [];\n \n for (let index = 0; index < identifications.length; index++) {\n const identification = identifications[index];\n \n // Only return policies that are not cancelled\n if (identification.idEstado != 7) {\n let policy = this.baseService.parseObjectDeep(JSON.parse(identification.json))\n\n policies.push(policy);\n } \n }\n\n this.appStorageService.setItem(STORAGE.POLICIES, policies, true);\n\n if (policies.length == 0) {\n this.baseService.handleServiceError(null, \"Error getting user policies\", this.translation.translate(\"policyMenu.text7\")); \n }\n\n return policies;\n }));\n }\n\n getUserDependents(): Observable {\n let url = \"api/usuarios/dependientes/\";\n\n return this.http.get(url);\n }\n\n getUserIdLoggedIn(): Observable{\n let _userPerson = this.appStorageService.getItemSession(STORAGE.USER, true);\n\n if(_userPerson == null){\n return this.getUserPersonLoggedInFromService()\n .pipe(map((userPerson: UserPerson | null)=>{ \n return userPerson ? userPerson.id : 0;\n }));\n }\n else{\n return of(_userPerson.id);\n }\n }\n\n getUserPersonLoggedIn(): Observable {\n let _userPerson = this.appStorageService.getItemSession(STORAGE.USER, true);\n\n if(_userPerson == null){\n return this.getUserPersonLoggedInFromService();\n }\n\n return of(_userPerson);\n }\n \n getUserPersonLoggedInFromService(): Observable {\n const token = this.appStorageService.getToken();\n\n if(token == null || this.http.isTokenExpired(token))\n return of(null);\n\n return this.getUserPerson(token.username).pipe(\n map((userPerson:UserPerson) =>{\n this.updateUserLoggedIn(userPerson);\n return userPerson;\n })\n );\n }\n\n updateUserLoggedIn(user: UserPerson) {\n this.appStorageService.setItemSession(STORAGE.USER, user, true);\n\n return;\n }\n\n processRequestUserId(){\n let token = this.appStorageService.getToken();\n\n if(token && !this.http.isTokenExpired(token)){\n let userPerson = this.appStorageService.getItemSession(STORAGE.USER, true);\n\n if(userPerson == null){\n this.getUserPerson(token.username).subscribe(userPerson => {\n this.appStorageService.setItemSession(STORAGE.USER, userPerson, true);\n\n this.sendUserId(userPerson.id);\n });\n }\n else{\n this.sendUserId(userPerson.id);\n }\n }\n else if(this.authOidcService.existsManager()){\n this.authOidcService.startAuthenticationPopup().subscribe(token => {\n if(!token.isInvalid) {\n this.appStorageService.setToken(token);\n\n this.getUserPerson(token.username).subscribe(userPerson =>{\n this.appStorageService.setItemSession(STORAGE.USER, userPerson, true);\n \n this.sendUserId(userPerson.id);\n });\n }\n });\n }\n else {\n\n }\n }\n\n public sendUserId(id:number){\n this.messageBusService.sendUserId(id);\n }\n\n public postUserActive(idEmpresaDestino:number, idEtapaSolicitud: number){\n let url = \"api/usuarios/activo?idEmpresaDestino=\" + idEmpresaDestino + \"&idEtapaSolicitud=\" + idEtapaSolicitud;\n\n return this.http.post(url, null);\n }\n\n public postUserRegister(username: string, password: string): Observable{\n return this.baseService.getDirectoryDomain()\n .pipe(switchMap((domain:string)=>{\n let url = \"api/usuarios/registro?domain=\" + domain;\n\n let model = {\n Username: username,\n Password: password,\n IdEmpresa: this.baseService.getCompanyId() \n };\n \n return this.http.post(url, model, null, false);\n }));\n }\n\n public requestUserRegistration(registerUser: RegisterUser): Observable{\n let url = \"api/solicitudes-x-verificar/users\";\n\n return this.http.post(url, registerUser, null, false);\n }\n\n public postConfirmation(idVerificacion:string):Observable{\n return this.baseService.getDirectoryDomain()\n .pipe(switchMap((domain:string)=>{\n let url = `api/usuarios/confirmacion/${idVerificacion}?domain=${domain}`;\n\n return this.http.post(url, null, null, false)\n .pipe(\n map((token) => {\n this.appStorageService.setToken(token);\n \n let response = new LoginResponse();\n response.success = true;\n return response;\n }),\n catchError((err) => {\n let response = new LoginResponse();\n response.success = false;\n response.message = \"Hubo un error al intentar confirmar el usuario\";\n \n return of(response);\n }));\n }));\n }\n\n public postResetPassword(model:ResetPasswordModel):Observable{\n return this.baseService.getDirectoryDomain().pipe(switchMap((domain:string)=>{\n let url = `api/usuarios/restablecer-contrasenia`;\n\n if(!model.idEmpresa){\n model.idEmpresa = this.baseService.getCompanyId();\n model.nombreEmpresa = this.baseService.getDirectoryTitle();\n }\n \n if(!model.language){\n model.language = this.baseService.getLanguage();\n }\n \n model.dominio = domain;\n \n return this.http.post(url, model, null, false);\n }));\n }\n\n public postConfirmationResetPassword(idVerificacion:string, password: string):Observable{\n let url = `api/usuarios/restablecer-contrasenia/confirmacion/${idVerificacion}`;\n\n let model = { Password: password };\n\n return this.http.post(url, model, null, false);\n }\n\n public postExistsUser(username: string): Observable{\n return this.baseService.getDirectoryDomain().pipe(switchMap((domain:string)=>{\n let model = {\n Username: username,\n DominioEmpresa: domain\n };\n \n return this.http.post(\"api/usuarios/existe\", model, null, false);\n }));\n }\n\n public updateUser(user: UpdateUser): Observable {\n let url = `api/usuarios/`;\n\n return this.http.put(url, user, null, true);\n }\n\n public createOrUpdateDependent(dependent: DependentRequest) {\n let url = `api/usuarios/dependientes/`;\n\n return dependent.idPersona > 0\n ? this.http.put(url, dependent, null, true)\n : this.http.post(url, dependent, null, true);\n }\n \n public deleteDependent(dependent: Dependent) {\n let url = `api/usuarios/dependientes/${dependent.id}?idPersona=${dependent.idPersona}`;\n\n return this.http.delete(url, null, true); \n }\n\n public updatePassword(model: UpdatePasswordRequestModel) {\n let url = `api/usuarios/contrasenia`;\n\n return this.http.put(url, model, null, true);\n }\n\n public getDependentRelationshipName(dependent: Dependent | undefined) {\n let relationship = this.dependentRelationshipTranslations.other;\n\n if (dependent) {\n switch(dependent.tipoRelacion) {\n case DependentRelationshipType.SonOrDaughter:\n relationship = (dependent.sexo == \"F\"? this.dependentRelationshipTranslations.daughter : this.dependentRelationshipTranslations.son);\n break;\n case DependentRelationshipType.FatherOrMother:\n relationship = (dependent.sexo == \"F\"? this.dependentRelationshipTranslations.mother : this.dependentRelationshipTranslations.father);\n break;\n case DependentRelationshipType.BrotherOrSister:\n relationship = (dependent.sexo == \"F\"? this.dependentRelationshipTranslations.sister : this.dependentRelationshipTranslations.brother);\n break;\n case DependentRelationshipType.HusbandOrWife:\n relationship = (dependent.sexo == \"F\"? this.dependentRelationshipTranslations.wife : this.dependentRelationshipTranslations.husband);\n break;\n case DependentRelationshipType.GrandfatherOrGrandmother:\n relationship = (dependent.sexo == \"F\"? this.dependentRelationshipTranslations.grandmother : this.dependentRelationshipTranslations.grandfather);\n break;\n case DependentRelationshipType.Warded:\n relationship = (dependent.sexo == \"F\"? this.dependentRelationshipTranslations.womanWarded : this.dependentRelationshipTranslations.manWarded);\n break;\n case DependentRelationshipType.Family:\n relationship = this.dependentRelationshipTranslations.relative;\n break;\n }\n } \n\n return relationship;\n }\n\n updateProfilePicture(args: AvatarUploadModel): Observable {\n const userType = !args.idPersona ? '' : '/dependientes';\n const url = `api/usuarios${userType}/foto-perfil`;\n return this.http.put(url, args, null, true);\n }\n\n uploadProfilePicture(file: File): Observable {\n const pUploadResponse = new Subject();\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onloadend = x => this.fileReaderOnLoadEnd(x, file, pUploadResponse);\n return pUploadResponse.asObservable();\n }\n\n private fileReaderOnLoadEnd(args: ProgressEvent, file: File, pUploadResponse: Subject): void {\n const ultimoPunto = file.name.lastIndexOf('.');\n const nombre: string = file.name.slice(0, ultimoPunto);\n const extension: string = file.name.slice(ultimoPunto + 1);\n const body: FileUploadRequest = {\n content: args.target?.result as string,\n contentType: file.type,\n extension,\n nombre\n };\n const url = `api/usuarios/imagenes`;\n this.http.post(url, body).subscribe({\n next: x => {pUploadResponse.next(x); pUploadResponse.complete();},\n error: error => {pUploadResponse.error(error); pUploadResponse.complete(); }\n });\n }\n\n deleteUploadedImage(id: number, idPersona: number) {\n const url = `api/usuarios/dependientes/imagen/${id}?idPersona=${idPersona}`;\n return this.http.delete(url, null, true);\n }\n\n public updateUserResidenceCountry(countryId: number): Observable{\n const model = { IdPais : countryId };\n return this.http.put('api/usuarios/pais-residencia', model, null, true);\n }\n\n public getUserCountry():Observable{\n return this.getUserPersonLoggedIn().pipe(switchMap((user: UserPerson | null)=>{\n if(user){\n\n return this.territorialDivisionService.getCountryApp()\n .pipe(switchMap((countryApp: CountryModel)=>{\n\n let availableCountries = this.territorialDivisionService.getAvailableCountries();\n let countryUser = availableCountries.find(c=> c.idPais == user.idPaisResidencia);\n \n if(user.idPaisResidencia > 0 && user.idPaisResidencia != 9 && countryUser){\n \n this.territorialDivisionService.setCountryApp(countryUser.idPais);\n \n return of(countryUser);\n }\n else if(user.idPaisResidencia == 9 && availableCountries.find(c=> c.id == countryApp.territorialDivision.id)){\n return this.updateUserResidenceCountry(countryApp.territorialDivision.idPais)\n .pipe(switchMap((result:void)=>{\n \n user.idPaisResidencia = countryApp.territorialDivision.idPais;\n \n this.updateUserLoggedIn(user);\n \n return of(countryApp.territorialDivision);\n }));\n }\n else{\n return of(null);\n }\n }));\n }\n else{\n return of(null);\n }\n }));\n }\n\n getUserUnverifiedRequest(requestGuid: string) : Observable {\n const url = \"api/usuarios/solicitudPorVerificar?solicitudPorVerificarCode=\" + requestGuid;\n \n return this.http.get(url, null, false);\n }\n\n registerUnverifiedUser(model: RegisterUnverifedUser): Observable {\n return this.http.post('api/usuarios/no-verificado', model, null, false);\n }\n\n wasUserCreated():boolean{\n const token = this.appStorageService.getToken();\n\n return token.userCreated;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthOidcService } from '../services/auth-oidc.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoginGuard implements CanActivate {\n\n constructor(private authOidcService: AuthOidcService) { }\n\n canActivate(route: ActivatedRouteSnapshot): Observable | Promise | boolean | UrlTree {\n\n if(this.authOidcService.redirectToAuthOidc()){\n\n const url = route.queryParams['returnUrl'] || '/';\n\n this.authOidcService.startAuthentication(url);\n return false;\n }\n else{\n return true;\n }\n } \n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { AuthOidcService } from 'src/app/core/services/auth-oidc.service';\n\n@Component({\n selector: 'app-auth-callback-popup',\n templateUrl: './auth-callback-popup.component.html',\n styleUrls: ['./auth-callback-popup.component.css']\n})\nexport class AuthCallbackPopupComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n\n constructor(\n private authOidcService: AuthOidcService,\n private appStorageService: AppStorageService\n ) { }\n\n ngOnInit(): void {\n\n this.authOidcService.completeAuthenticationPopup()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(token => {\n if(token.isInvalid) {\n //TODO agregar en la vista informacion de que el usuario no existe\n }\n else {\n this.appStorageService.setToken(token);\n\n this.appStorageService.removeSessionItem(STORAGE.USER);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","

auth-callback-popup works!

\n","
\n \n \n \n \n \n
\n \n
\n
\n \n
\n \n
\n \n
\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n \n \n
\n\n
\n \n
\n\n \n
\n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n\n
\n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n \n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n\n \n
\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n\n
\n
\n
\n\n
\n \n
\n\n\n
\n
\n {{ 'authCallback.text1' | translate:locale.language }}\n
\n
\n {{ 'authCallback.text2' | translate:locale.language }}\n
\n \n
\n
\n\n\n","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { AuthOidcService } from 'src/app/core/services/auth-oidc.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LoginCompletedMessage, MessageBusService, OpenSnackBarMessage, SnackBarType } from 'src/app/core/services/message-bus.service';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { WorkflowService } from 'src/app/core/services/workflow.service';\nimport { OAuthFlowType, TokenState } from 'src/app/shared/models/token.model';\n\n@Component({\n selector: 'app-auth-callback',\n templateUrl: './auth-callback.component.html',\n styleUrls: ['./auth-callback.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AuthCallbackComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n showErrorView = false;\n tokenState:string = \"\";\n isSura : boolean = false;\n\n skeletonHeightStyles = {\n \"h1\": \"69px\",\n \"h2\": \"38px\",\n \"h3\": \"24px\",\n \"h4\": \"13px\",\n \"h5\": \"10px\",\n \"h6\": \"8px\" \n };\n\n skeletonBorderStyles = {\n \"b1\": \"2px\"\n };\n\n skeletonColorStyles = {\n \"yellow\": \"rgba(227, 232, 41, 0.3)\",\n \"primary\": \"rgba(0, 51, 160, 0.3)\",\n \"gray\": \"rgba(83, 86, 90, 0.3)\",\n \"linkColor\": \"rgba(0, 174, 199, 0.3)\"\n };\n\n constructor(\n private authOidcService: AuthOidcService,\n private appStorageService: AppStorageService,\n private userService: UserService,\n private router: Router,\n private messageBusService: MessageBusService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private baseService: BaseService,\n private translation: L10nTranslationService,\n private workflowService: WorkflowService,\n private publicProfile: PublicProfileService\n ) { }\n\n ngOnInit(): void { \n let companyName = this.baseService.getCompanyName();\n\n this.isSura = companyName == \"sura-pacientes-pa\";\n\n if (!this.isSura)\n this.messageBusService.hideHeader();\n\n this.authOidcService.completeAuthentication()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(token => {\n this.messageBusService.showHeader();\n\n if(token.isInvalid) {\n\n if(token.invalidMessage && token.state){\n let tokenState = this.parseTokenState(token.state);\n\n let activeWorkflow = this.workflowService.getWorkflowTypeActive();\n\n // In case of PWA when the third party redirects back to our site the browser can decide to open the PWA application instead of the browser. \n // For this case in PWA application the checkout (appointment or payment) may not be initialized, so we need to do it here.\n if (tokenState.workflowType && tokenState.workflowType != activeWorkflow) {\n this.initWorkflow(tokenState);\n }\n else \n this.baseService.goToRoute(tokenState.returnUrl);\n //this.router.navigate([tokenState.returnUrl]);\n\n let message = new OpenSnackBarMessage();\n message.type = SnackBarType.ALERT;\n message.text = token.invalidMessage;\n // message.duration = 3000;\n this.messageBusService.openSnackBar(message);\n }\n else{ \n this.tokenState = token.state;\n this.showErrorView = true;\n \n window.parent.postMessage({ eventName: 'login_error' }, '*');\n\n }\n }\n else {\n this.appStorageService.setToken(token);\n this.appStorageService.removeSessionItem(STORAGE.USER);\n \n let tokenState = this.parseTokenState(token.state);\n\n this.userService.getUserPersonLoggedIn().subscribe(user => {\n if (user)\n this.messageBusService.loginCompleted(new LoginCompletedMessage(user)); \n\n // LOGIN\n if (tokenState.flowType == OAuthFlowType.Login) {\n if (token.userCreated) {\n let snackBarMessage = new OpenSnackBarMessage();\n\n snackBarMessage.type = SnackBarType.SUCCESS;\n snackBarMessage.text = this.translation.translate('authCallback.text4');\n snackBarMessage.duration = 3000;\n this.messageBusService.openSnackBar(snackBarMessage);\n }\n }\n // SIGNUP\n else if (tokenState.flowType == OAuthFlowType.Signup) {\n this.messageBusService.showHeader();\n\n if (token.userCreated) {\n let snackBarMessage = new OpenSnackBarMessage();\n\n snackBarMessage.type = SnackBarType.SUCCESS;\n snackBarMessage.text = this.translation.translate('authCallback.text4');\n snackBarMessage.duration = 3000;\n this.messageBusService.openSnackBar(snackBarMessage);\n }\n }\n\n let activeWorkflow = this.workflowService.getWorkflowTypeActive();\n\n // In case of PWA when the third party redirects back to our site the browser can decide to open the PWA application instead of the browser. \n // For this case in PWA application the checkout (appointment or payment) may not be initialized, so we need to do it here.\n if (tokenState.workflowType && tokenState.workflowType != activeWorkflow) {\n this.initWorkflow(tokenState);\n }\n else \n this.baseService.goToRoute(tokenState.returnUrl); \n //this.router.navigate([tokenState.returnUrl]);\n }); \n }\n });\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onRetryClick() {\n this.router.navigate(['login'], { queryParams: { returnUrl: this.tokenState } });\n }\n\n private parseTokenState(state: string): TokenState {\n let tokenState: TokenState;\n \n try {\n tokenState = JSON.parse(state) as TokenState;\n } \n catch (error) {\n tokenState = new TokenState();\n tokenState.returnUrl = state;\n }\n\n if (tokenState && tokenState.returnUrl)\n tokenState.returnUrl = decodeURIComponent(tokenState.returnUrl);\n\n return tokenState;\n }\n\n initWorkflow(tokenState: TokenState) {\n let companyName = this.baseService.getCliniwebDirectoryCompanyName();\n \n if (!tokenState.publicProfileIdentifier) {\n this.handleWorkflowStartError(\"Public Profile not found\");\n return;\n }\n \n // Get public profile\n this.publicProfile.getPublicProfile(tokenState.publicProfileIdentifier, this.locale.language, companyName)\n .subscribe(\n profile => {\n if (tokenState.workflowType == STORAGE.ONLINE_APPOINTMENT_CLINIWEB_STATE) { \n let location = profile.localidades.find(l => l.localidad.id == tokenState.locationId);\n\n if (!location) {\n this.handleWorkflowStartError(\"Location not found\");\n return;\n }\n\n this.workflowService.initAppointmentWorkflow(profile, location, tokenState.targetDate);\n }\n else if (tokenState.workflowType == STORAGE.ONLINE_PAYMENT_WORKFLOW_STATE) {\n this.workflowService.initPaymentWorkflow(profile, companyName);\n }\n }, \n error => {\n console.error(error);\n }\n ); \n }\n\n private handleWorkflowStartError(error: string) {\n let snackBarMessage = new OpenSnackBarMessage();\n\n snackBarMessage.type = SnackBarType.ERROR;\n snackBarMessage.text = error;\n snackBarMessage.duration = 3000;\n\n console.log(error);\n\n this.messageBusService.openSnackBar(snackBarMessage);\n }\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { LayoutService } from 'src/app/core/services/layout.service';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.css']\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n\n licenseLoading: boolean = true;\n \n constructor(private layoutService: LayoutService) { }\n\n ngOnInit(): void {\n this.layoutService.loadLicenseTheme('login-page-container')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result=>{\n this.licenseLoading = false;\n });\n }\n \n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","
\r\n \r\n
\r\n","export class ResetPasswordModel{\r\n email: string;\r\n language: string;\r\n dominio: string;\r\n idEmpresa: number;\r\n nombreEmpresa: string;\r\n url: string;\r\n}","
\n \n \n {{'forgotPassword.title' | translate:locale.language }}\n \n \n
\n \n \n \n \n {{ 'forgotPassword.usernameRequired' | translate:locale.language }}\n \n \n \n {{ 'forgotPassword.usernameFormatRequired' | translate:locale.language }}\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { Subject, of } from 'rxjs';\nimport { catchError, map, takeUntil } from 'rxjs/operators';\nimport { STORAGE } from 'src/app/core/services/app-storage.service';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { CloseRouteDialogMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { WorkflowService } from 'src/app/core/services/workflow.service';\nimport { RouteDialogType } from 'src/app/shared/components/dialogs/route-dialog/route-dialog.component';\nimport { EmailCallbackComponentData } from 'src/app/shared/components/email-callback/email-callback.component';\nimport { ResetPasswordModel } from 'src/app/shared/models/people/reset-password.model';\nimport { CustomEmailValidator } from 'src/app/shared/validators/custom-email.validator';\n\n@Component({\n selector: 'app-forgot-password',\n templateUrl: './forgot-password.component.html',\n styleUrls: ['./forgot-password.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ForgotPasswordComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n forgotPasswordForm: FormGroup;\n returnUrl: string;\n homeUrl: string;\n closeOnBack: string;\n submitted:boolean = false;\n email: string;\n showCallback: boolean = false;\n loading:boolean= false;\n\n licenseLoading: boolean = true;\n\n model: ResetPasswordModel = new ResetPasswordModel();\n\n emailCallbackModel: EmailCallbackComponentData;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: FormBuilder,\n private userService: UserService,\n private translation: L10nTranslationService,\n private workflowService: WorkflowService,\n private layoutService: LayoutService,\n private messageBusService: MessageBusService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private routeDialogService: RouteDialogService\n ) { }\n\n ngOnInit(): void {\n this.returnUrl = this.route.snapshot.queryParams['returnUrl'];\n this.layoutService.loadLicenseTheme('forgot-password-container')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result=>{\n this.licenseLoading = false;\n });\n\n this.closeOnBack = this.route.snapshot.queryParams['closeOnBack']\n ? this.route.snapshot.queryParams['closeOnBack']\n : 'false';\n\n this.homeUrl = this.route.snapshot.queryParams['homeUrl']\n ? this.route.snapshot.queryParams['homeUrl']\n : '/';\n\n this.forgotPasswordForm = this.formBuilder.group(\n {\n username: ['', [Validators.required, CustomEmailValidator]]\n },\n { \n updateOn: \"submit\" \n }\n );\n\n this.emailCallbackModel = new EmailCallbackComponentData();\n this.emailCallbackModel.titleReference = 'forgotPassword.callback.title';\n \n this.emailCallbackModel.forwardingLimit = 3;\n this.emailCallbackModel.enterDataAgainFn = this.enterDataAgain.bind(this);\n this.emailCallbackModel.resend$ = this.userService.postResetPassword(this.model)\n .pipe(\n map((result:void)=>{\n this.loading = false;\n this.showCallback = true;\n }),\n catchError((err) => {\n this.loading = false;\n let message = this.translation.translate('forgotPassword.callback.errorMessage');\n\n return of(message);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onSubmit(): void{\n this.submitted = true;\n\n // stop here if form is invalid\n if (this.forgotPasswordForm.invalid) {\n return;\n }\n\n this.model.email = this.forgotPasswordForm.controls.username.value;\n this.model.url = `${window.location.origin}/${this.locale.language}/login/restablecer`;\n\n this.emailCallbackModel.description = this.translation.translate('forgotPassword.callback.description', { email: this.model.email });\n\n this.postResetPassword();\n }\n\n onCancel(){\n let activeWorkflowType = this.workflowService.getWorkflowTypeActive();\n this.messageBusService.showWelcomeImage(true);\n\n switch(activeWorkflowType){\n case STORAGE.ONLINE_PAYMENT_WORKFLOW_STATE:\n case STORAGE.ONLINE_APPOINTMENT_CLINIWEB_STATE:\n default:\n\n if(this.returnUrl.includes('checkout')){\n this.router.navigateByUrl(decodeURI(this.returnUrl));\n }\n else{\n this.router.navigate(['login'], { queryParams: { returnUrl: this.returnUrl, closeOnBack: this.closeOnBack, homeUrl: this.homeUrl } });\n }\n break;\n case STORAGE.WELCOME_CLINIWEB_STATE:\n this.router.navigate(['../../login'], { queryParams: { returnUrl: this.returnUrl, closeOnBack: this.closeOnBack, homeUrl: this.homeUrl }, relativeTo: this.route });\n break;\n } \n }\n\n enterDataAgain(){\n this.showCallback = false;\n this.messageBusService.showWelcomeImage(true);\n }\n\n private postResetPassword(){\n this.loading = true;\n this.emailCallbackModel.resend$.subscribe((_: any) => {\n if (this.workflowService.getWorkflowTypeActive() === STORAGE.WELCOME_CLINIWEB_STATE) {\n this.messageBusService.showWelcomeImage(false);\n }\n });\n }\n\n}\n","export class UpdatePasswordRequestModel { \r\n emailUsuario: string;\r\n dominio: string;\r\n contraseniaAnterior: string;\r\n contraseniaNueva: string; \r\n}","
\n
\n \n \n \n
\n \n \n \n {{'resetPassword.title' | translate:locale.language }}\n \n \n \n \n
\n \n \n {{'resetPassword.currentPassword' | translate:locale.language}}\n \n \n {{'resetPassword.currentPasswordRequired' | translate:locale.language}}\n {{'resetPassword.currentPasswordInvalid' | translate:locale.language}}\n \n\n \n {{'resetPassword.password' | translate:locale.language}}\n \n \n \n \n
\n {{ 'resetPassword.passwordValidationText' | translate:locale.language }}\n
\n \n {{ 'resetPassword.characterLengthRequired' | translate:locale.language }}\n
\n
\n \n {{ 'resetPassword.numberAndLetterRequired' | translate:locale.language }}\n
\n
\n \n {{ 'resetPassword.whiteSpaceRequired' | translate:locale.language }}\n
\n
\n\n \n\n {{error}}\n\n {{ 'resetPassword.initSession' | translate:locale.language }}\n
\n\n
\n
\n \n \n
\n \n
\n
","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { CloseRouteDialogMessage, MessageBusService, OpenSnackBarMessage, SnackBarType } from 'src/app/core/services/message-bus.service';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { RouteDialogType } from 'src/app/shared/components/dialogs/route-dialog/route-dialog.component';\nimport { UpdatePasswordRequestModel } from 'src/app/shared/models/people/update-password-request.model';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { StatesRequestVerifyDataModel } from 'src/app/shared/components/states-request-verify/states-request-verify.component';\n\n@Component({\n selector: 'app-reset-password',\n templateUrl: './reset-password.component.html',\n styleUrls: ['./reset-password.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ResetPasswordComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n \n idVerificacion: string;\n showPassword: boolean = false;\n resetPasswordForm: FormGroup;\n submitted:boolean = false;\n error = '';\n loading: boolean = false;\n showCustomHeader = false;\n currentUser: UserPerson;\n changePassword: boolean = false;\n showCurrentPassword: boolean = false;\n licenseLoading: boolean = true;\n\n statesRequestVerifyDataModel: StatesRequestVerifyDataModel;\n isRequestExpired: boolean = false;\n isRequestCompleted: boolean = false;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: FormBuilder,\n private userService: UserService,\n private messageBusService: MessageBusService,\n private translation: L10nTranslationService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private authService: AuthService,\n private baseService: BaseService,\n private routeDialogService: RouteDialogService,\n private layoutService: LayoutService,\n ) { }\n\n ngOnInit(): void {\n this.layoutService.loadLicenseTheme('reset-password-container')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result=>{\n this.licenseLoading = false;\n });\n\n if(this.route.snapshot.params.idVerificacion){\n this.idVerificacion = this.route.snapshot.params.idVerificacion;\n this.showCustomHeader = true;\n }\n else if (this.authService.isLoggedIn()) {\n this.changePassword = true;\n }\n else{\n this.router.navigate(['not-found']);\n }\n\n if (this.idVerificacion) {\n this.userService.getUserUnverifiedRequest(this.idVerificacion).subscribe(\n request => {\n this.isRequestExpired = request.vencida;\n this.isRequestCompleted = request.idEstado != 2;\n\n this.configStatusView();\n },\n error => {\n console.error(error);\n }\n )\n }\n\n this.resetPasswordForm = this.formBuilder.group(\n {\n password: ['', [\n Validators.required,\n Validators.minLength(6),\n Validators.pattern('^(?=.*[A-Za-zÀ-ȕ])(?=.*\\\\d)[A-Za-zÀ-ȕ\\\\d$@$`~^()-_+={};:\"#|!%*?& ]{2,30}$'),\n this.noWhitespaceValidator\n ]],\n currentPassword: ['', [\n Validators.required,\n ]]\n },\n { \n updateOn: \"change\" \n }\n );\n\n if (this.idVerificacion) this.resetPasswordForm.get('currentPassword')?.clearValidators();\n\n this.userService.getUserPersonLoggedIn()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(p => {\n if (p)\n this.currentUser = p; \n });\n\n // On Header Back click\n this.messageBusService.onNavigateBack()\n .pipe(takeUntil(this.ngUnsubscribe)) \n .subscribe(m => {\n if (!this.routeDialogService.isOpen(RouteDialogType.CHANGE_PASSWORD))\n this.router.navigate(['/']);\n else \n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\n }\n );\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onSubmit() {\n if (this.changePassword) {\n this.onChangePassword();\n }\n else {\n this.onResetPassword();\n }\n }\n\n private onChangePassword() {\n this.submitted = true;\n\n if (this.resetPasswordForm.invalid) {\n return;\n }\n\n this.loading = true;\n\n let model = new UpdatePasswordRequestModel();\n\n this.baseService.getDirectoryDomain()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((domain:string)=>{\n model.dominio = domain;\n model.emailUsuario = this.currentUser.emailParticular;\n model.contraseniaAnterior = this.resetPasswordForm.controls.currentPassword.value.trim();\n model.contraseniaNueva = this.resetPasswordForm.controls.password.value;\n \n this.userService.updatePassword(model)\n .subscribe(r => {\n this.loading = false;\n \n this.showSuccessToast();\n \n if (!this.routeDialogService.isOpen(RouteDialogType.CHANGE_PASSWORD))\n this.router.navigate(['/']);\n else \n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\n },\n error => {\n //this.resetPasswordForm.controls.currentPassword.setValue(\"\");\n this.resetPasswordForm.controls.currentPassword.setErrors({'incorrect': true});\n \n this.loading = false;\n \n this.showInvalidCurrentPasswordToast();\n });\n });\n }\n\n showInvalidCurrentPasswordToast() {\n let message = new OpenSnackBarMessage();\n message.text = this.translation.translate('resetPassword.invalidCurrentPassword');\n message.type = SnackBarType.ERROR;\n message.duration = 3000;\n \n this.messageBusService.openSnackBar(message);\n }\n\n showSuccessToast() {\n let message = new OpenSnackBarMessage();\n message.text = this.translation.translate('resetPassword.changePasswordSuccess');\n message.type = SnackBarType.SUCCESS;\n message.duration = 3000;\n \n this.messageBusService.openSnackBar(message);\n }\n\n private onResetPassword(){\n this.submitted = true;\n\n // stop here if form is invalid\n if (this.resetPasswordForm.invalid) {\n return;\n }\n\n this.loading = true;\n\n this.userService.postConfirmationResetPassword(\n this.idVerificacion,\n this.resetPasswordForm.controls.password.value)\n .pipe(first())\n .subscribe({\n next:(response:void) =>{\n this.loading = false;\n\n let snackBarMessage = new OpenSnackBarMessage();\n\n snackBarMessage.type = SnackBarType.SUCCESS;\n snackBarMessage.text = this.translation.translate('resetPassword.newPasswordSuccess');\n\n this.messageBusService.openSnackBar(snackBarMessage);\n\n this.router.navigate(['/login']);\n },\n error: (error:void) =>{\n this.loading = false;\n\n let snackBarMessage = new OpenSnackBarMessage();\n\n snackBarMessage.type = SnackBarType.ERROR;\n snackBarMessage.text = this.translation.translate('resetPassword.newPasswordError');\n\n this.messageBusService.openSnackBar(snackBarMessage);\n }\n });\n }\n\n getControl(controlName: string) {\n return this.resetPasswordForm.controls[controlName];\n }\n isControlInvalid(controlName: string) {\n let control = this.getControl(controlName);\n\n // First check if the form is submitted or control is dirty\n if (!this.submitted && !control.touched)\n return false;\n\n return control.invalid;\n }\n\n private noWhitespaceValidator(control: FormControl){\n let valueTrim = control.value.trim();\n\n return valueTrim.length != control.value.length ? {'whitespace': true} : null;\n }\n\n configStatusView() {\n if (!this.isRequestExpired && !this.isRequestCompleted)\n return;\n\n this.statesRequestVerifyDataModel = new StatesRequestVerifyDataModel();\n\n this.statesRequestVerifyDataModel.companyLogoUrl = 'assets/images/cliniweb/logo-cliniweb-phr.svg';\n this.statesRequestVerifyDataModel.mainImageUrl = 'assets/images/cliniweb/Campana.gif';\n this.statesRequestVerifyDataModel.showActionButton = true;\n this.statesRequestVerifyDataModel.showHomeButton = true;\n this.statesRequestVerifyDataModel.textRefI18n = 'resetPassword.expiredRequestTitle';\n this.statesRequestVerifyDataModel.buttonTextRefI18n = 'resetPassword.expiredRequestRetryBtnText'; \n this.statesRequestVerifyDataModel.secondaryButtonTextRefI18n = 'resetPassword.expiredRequestLoginBtnText'; \n \n this.statesRequestVerifyDataModel.buttonActionFn = this.goToForgotPassword.bind(this);\n this.statesRequestVerifyDataModel.buttonSecondaryActionFn = this.goToLogin.bind(this);\n\n if (this.isRequestCompleted && !this.isRequestExpired) {\n this.statesRequestVerifyDataModel.textRefI18n = 'resetPassword.completedRequestTitle'; \n }\n }\n\n goToForgotPassword() {\n this.router.navigate(['/welcome/login/forgot-password'], {queryParams: {\"closeOnBack\": false}});\n }\n goToLogin() { \n this.router.navigate(['/welcome/login']);\n }\n}\n","
\n \n
","import { DOCUMENT } from '@angular/common';\nimport { Component, Inject, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { CloseRouteDialogMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { RouteDialogType } from 'src/app/shared/components/dialogs/route-dialog/route-dialog.component';\n\n@Component({\n selector: 'app-login-header',\n templateUrl: './login-header.component.html',\n styleUrls: ['./login-header.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class LoginHeaderComponent implements OnDestroy, OnInit {\n\n @Input() closeOnBack: boolean;\n @Input() returnUrl: string;\n private isModalOpened = false;\n private showAll = false;\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private appStorageService: AppStorageService, private messageBusService: MessageBusService, \n private routeDialogService: RouteDialogService, private router: Router\n ) { }\n\n ngOnDestroy(): void {\n if (!this.isModalOpened && this.showAll) {\n this.messageBusService.showHeader();\n }\n }\n\n ngOnInit(): void {\n this.isModalOpened = this.document.body.classList.contains('route-dialog-opened');\n this.showAll = this.appStorageService.getItemSession(STORAGE.SIGNUP_WORKFLOW_VERIFICATION_TYPE) !== null;\n if (!this.isModalOpened && this.showAll) {\n this.messageBusService.hideHeader();\n }\n if (!this.showAll) this.messageBusService.hideAnonymousMenu();\n }\n\n onBackClick() {\n const isDialog = this.closeOnBack || (this.routeDialogService.isOpen(RouteDialogType.LOGIN) && this.isModalOpened);\n if(isDialog) {\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\n } else {\n this.router.navigate([this.returnUrl || '/']);\n } \n }\n\n}\n","
\n \n \n
{{ 'login.subtitle' | translate:locale.language }}
\n \n \n \n {{ 'login.title' | translate:locale.language }} {{companyName}}\n \n \n \n\n
\n \n
\n\n
\n \n {{ 'login.separator' | translate:locale.language }}\n \n
\n\n
\n \n \n \n \n {{ 'login.usernameRequired' | translate:locale.language }}\n \n \n \n {{ 'login.usernameFormatRequired' | translate:locale.language }}\n \n \n \n \n \n \n \n {{ 'login.passwordRequired' | translate:locale.language }}\n \n \n \n
\n \n
\n {{ 'login.alreadyExistsUserText' | translate:locale.language }}\n {{ 'login.alreadyExistsGoogleUserLink' | translate:locale.language }}\n \n
\n
\n \n \n
\n\n
\n {{ 'login.newUser' | translate:locale.language }}\n {{ 'login.createAccount' | translate:locale.language }}\n
\n\n \n
\n
\n
\n","\nimport { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { AuthOidcService } from 'src/app/core/services/auth-oidc.service';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { CloseRouteDialogMessage, LoginCompletedMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { LoginService } from '../../login.service';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { RouteDialogType } from 'src/app/shared/components/dialogs/route-dialog/route-dialog.component';\nimport { OAuthFlowType, OAuthSourceType, TokenState } from 'src/app/shared/models/token.model';\nimport { WorkflowService } from 'src/app/core/services/workflow.service';\nimport { UserExistsResponseModel } from 'src/app/shared/models/people/user-exists-response.model';\nimport { LoginResponse } from 'src/app/shared/models/login-response.model';\nimport { CustomEmailValidator } from 'src/app/shared/validators/custom-email.validator';\nimport { HttpParams } from '@angular/common/http';\n\n@Component({\n selector: 'app-login-form',\n templateUrl: './login-form.component.html',\n styleUrls: ['./login-form.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class LoginFormComponent implements OnInit, OnDestroy {\n alreadyExistsGoogleUser = false;\n showForm:boolean = false;\n loginForm: FormGroup;\n loading = false;\n loadingByGoogle = false;\n submitted = false;\n error = '';\n showPassword: boolean = false;\n companyName: string;\n returnUrl: string;\n homeUrl: string;\n closeOnBack: boolean = false;\n\n protected ngUnsubscribe = new Subject();\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: FormBuilder,\n private baseService: BaseService,\n private authOidcService: AuthOidcService,\n private appStorageService: AppStorageService,\n private loginService: LoginService, \n private userService: UserService,\n private routeDialogService: RouteDialogService,\n private messageBusService: MessageBusService,\n private translation: L10nTranslationService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private workflowService: WorkflowService\n ) {\n\n this.loginService.isLoggedIn()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(isLoggedIn => {\n this.showForm = true;\n\n if(isLoggedIn) {\n this.userService.getUserPersonLoggedIn().subscribe(user => {\n if (user)\n this.messageBusService.loginCompleted(new LoginCompletedMessage(user));\n\n this.getQsParams();\n //this.router.navigate([returnUrl || '/']); \n\n this.goToHomePage();\n }); \n }\n });\n\n this.baseService.isLicensedCompany()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(result=>{\n this.companyName = result \n ? this.baseService.getDirectoryTitle()\n : 'Cliniweb';\n });\n }\n\n getQsParams(): void {\n this.closeOnBack = \"true\" == this.route.snapshot.queryParams['closeOnBack'];\n this.returnUrl = this.route.snapshot.queryParams['returnUrl'];\n this.homeUrl = this.route.snapshot.queryParams['homeUrl'];\n\n if (this.returnUrl)\n this.returnUrl = decodeURIComponent(this.returnUrl);\n }\n\n ngOnInit(): void {\n this.getQsParams();\n\n this.loginForm = this.formBuilder.group(\n {\n username: ['', [Validators.required, CustomEmailValidator]],\n password: ['', [Validators.required]]\n },\n { \n updateOn: \"submit\" \n }\n );\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n onSubmit(): void {\n this.error = ''; \n this.submitted = true;\n\n // stop here if form is invalid\n if (this.loginForm.invalid) {\n return;\n }\n\n this.loading = true;\n\n this.userService.postExistsUser(this.loginForm.controls.username.value).subscribe({\n next: this.existsUserNext.bind(this),\n error: this.onError.bind(this)\n });\n\n }\n \n private existsUserNext(arg: UserExistsResponseModel): void {\n this.alreadyExistsGoogleUser = arg.googleAuthentication;\n if (!arg.googleAuthentication) {\n this.loginService.login(this.loginForm.controls.username.value, this.loginForm.controls.password.value)\n .pipe(first())\n .subscribe({ next: this.loginNext.bind(this), error: this.onError.bind(this) });\n } else {\n this.loading = false;\n }\n }\n \n private loginNext(args: LoginResponse): void {\n if (args.success) {\n \n if (location.pathname.indexOf(\"welcome/login\") == -1)\n this.messageBusService.showHeader();\n \n this.userService.getUserPersonLoggedIn().subscribe(user => {\n if (user) {\n this.messageBusService.loginCompleted(new LoginCompletedMessage(user));\n this.goToHomePage();\n } else {\n this.onError();\n } \n // get return url from route parameters or default to '/'\n //this.router.navigate([this.returnUrl || '/']); \n \n }); \n } else {\n this.onError(args.message);\n }\n }\n private onError(error?: any): void {\n this.loading = false;\n this.error = error?.message ?? error ?? \"Hubo un error, intente nuevamente\";\n }\n\n loginByGoogle(){\n this.loadingByGoogle = true;\n this.alreadyExistsGoogleUser = false;\n\n var url = this.returnUrl? this.returnUrl : this.homeUrl;\n\n if (!url)\n url = \"/\";\n\n let oidcModel: TokenState;\n let workflowType = this.workflowService.getWorkflowTypeActive();\n\n if (workflowType) {\n oidcModel = this.workflowService.getTokenStateFromWorkflow();\n }\n else {\n oidcModel = new TokenState();\n }\n\n oidcModel.returnUrl = url;\n oidcModel.flowType = OAuthFlowType.Login;\n oidcModel.sourceType = OAuthSourceType.Google;\n\n let stringState = JSON.stringify(oidcModel);\n\n this.authOidcService.startAuthentication(stringState);\n\n /*this.authOidcService.startAuthenticationPopup()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(token => {\n this.loadingByGoogle = false;\n\n if(token.isInvalid) {\n if (token.invalidMessage == \"Popup window closed\") {\n return;\n } else {\n this.error = \"Hubo un error, intente nuevamente\";\n } \n } else {\n this.appStorageService.setToken(token);\n\n this.userService.getUserPersonLoggedIn()\n .subscribe(user => {\n if (user) {\n this.messageBusService.loginCompleted(new LoginCompletedMessage(user));\n\n if (token.userCreated) {\n let snackBarMessage = new OpenSnackBarMessage();\n\n snackBarMessage.type = SnackBarType.SUCCESS;\n snackBarMessage.text = this.translation.translate('login.userCreated');\n snackBarMessage.duration = 3000;\n this.messageBusService.openSnackBar(snackBarMessage);\n }\n\n this.goToHomePage();\n } else {\n this.error = \"Hubo un error, intente nuevamente\";\n } \n },\n error => {\n this.loadingByGoogle = false;\n this.error = \"Hubo un error, intente nuevamente\";\n });\n }\n });*/\n }\n\n onForgotPassword() {\n }\n\n goToHomePage() {\n if(this.closeOnBack && this.routeDialogService.isOpen(RouteDialogType.LOGIN)) {\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\n } else {\n let homeUrl = this.homeUrl;\n\n if (!homeUrl) {\n homeUrl = this.returnUrl || '/';\n }\n\n this.baseService.goToRoute(homeUrl);\n } \n }\n\n onClickCreateAccount(){\n let activeWorkflowType = this.workflowService.getWorkflowTypeActive();\n\n switch(activeWorkflowType){\n case STORAGE.ONLINE_APPOINTMENT_CLINIWEB_STATE:\n case STORAGE.ONLINE_PAYMENT_WORKFLOW_STATE:\n if(this.returnUrl?.includes('checkout')){\n this.router.navigate(['signup/checkin'], { queryParams: {returnUrl: this.returnUrl, closeUrl: this.returnUrl + '?close=true' }});\n }\n else{\n this.router.navigate(['signup'], { queryParams: {returnUrl: this.returnUrl, homeUrl: this.homeUrl}});\n }\n break;\n case STORAGE.WELCOME_CLINIWEB_STATE:\n this.router.navigate(['welcome/signup'], { queryParams: {returnUrl: this.returnUrl, homeUrl: this.homeUrl}});\n break;\n default:\n this.router.navigate(['signup'], { queryParams: {returnUrl: this.returnUrl, homeUrl: this.homeUrl}});\n break;\n }\n\n }\n}\n","
\n
{{ 'loginFormGoogle.subtitle' | translate:locale.language }}
\n
{{ 'loginFormGoogle.title' | translate:locale.language }}
\n
\n \n
\n \n
\n
{{ 'loginFormGoogle.description' | translate:locale.language }}
\n
\n \n
\n
\n","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { AuthOidcService } from 'src/app/core/services/auth-oidc.service';\nimport { WorkflowService } from 'src/app/core/services/workflow.service';\nimport { OAuthFlowType, OAuthSourceType, TokenState } from 'src/app/shared/models/token.model';\n\n@Component({\n selector: 'app-login-form-google',\n templateUrl: './login-form-google.component.html',\n styleUrls: ['./login-form-google.component.css']\n})\nexport class LoginFormGoogleComponent implements OnInit {\n\n @Input() username:string;\n\n loadingByGoogle: boolean = false;\n returnUrl: string;\n\n constructor(\n private route: ActivatedRoute,\n private authOidcService: AuthOidcService,\n private workflowService: WorkflowService,\n private translation: L10nTranslationService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n\n ) { }\n\n ngOnInit(): void {\n this.getQsParams();\n }\n\n getQsParams(): void {\n this.returnUrl = this.route.snapshot.queryParams['returnUrl'];\n\n if (this.returnUrl)\n this.returnUrl = decodeURIComponent(this.returnUrl);\n }\n\n loginByGoogle(){\n this.loadingByGoogle = true;\n\n var url = this.returnUrl ? this.returnUrl : \"/\";\n\n let oidcModel: TokenState;\n let workflowType = this.workflowService.getWorkflowTypeActive();\n\n if (workflowType) {\n oidcModel = this.workflowService.getTokenStateFromWorkflow();\n }\n else {\n oidcModel = new TokenState();\n }\n\n oidcModel.returnUrl = url;\n oidcModel.flowType = OAuthFlowType.Login;\n oidcModel.sourceType = OAuthSourceType.Google;\n\n let stringState = JSON.stringify(oidcModel);\n\n this.authOidcService.startAuthentication(stringState, this.username);\n }\n\n}\n","
\n
{{ 'loginFormClinweb.subtitle' | translate:locale.language }}
\n
{{ 'loginFormClinweb.title' | translate:locale.language }}
\n
\n
\n\n \n \n \n \n \n \n {{ 'login.passwordRequired' | translate:locale.language }}\n \n \n \n \n \n
\n
{{ 'loginFormClinweb.description' | translate:locale.language }}
\n
\n \n
\n
","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { LoginService } from '../../login.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { first } from 'rxjs/operators';\nimport { LoginResponse } from 'src/app/shared/models/login-response.model';\nimport { LoginCompletedMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { BaseService } from 'src/app/core/services/base.service';\n\n@Component({\n selector: 'app-login-form-cliniweb',\n templateUrl: './login-form-cliniweb.component.html',\n styleUrls: ['./login-form-cliniweb.component.css']\n})\nexport class LoginFormCliniwebComponent implements OnInit, OnDestroy {\n protected ngUnsubscribe = new Subject();\n\n loginForm: FormGroup;\n error: string = '';\n submitted: boolean = false;\n showPassword: boolean = false;\n returnUrl: string;\n closeOnBack: boolean = false;\n loading: boolean = false;\n\n @Input() username:string;\n\n constructor(\n private route: ActivatedRoute,\n private formBuilder: FormBuilder,\n private baseService: BaseService,\n private loginService: LoginService,\n private userService: UserService,\n private messageBusService: MessageBusService,\n private translation: L10nTranslationService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) { }\n\n ngOnInit(): void {\n this.getQsParams();\n\n this.loginForm = this.formBuilder.group(\n {\n password: ['', [Validators.required]]\n },\n { \n updateOn: \"submit\" \n }\n );\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n getQsParams(): void {\n this.closeOnBack = this.route.snapshot.queryParams['closeOnBack'] == \"true\";\n this.returnUrl = this.route.snapshot.queryParams['returnUrl'];\n\n if (this.returnUrl)\n this.returnUrl = decodeURIComponent(this.returnUrl);\n }\n\n onSubmit(): void {\n this.error = ''; \n this.submitted = true;\n\n // stop here if form is invalid\n if (this.loginForm.invalid) {\n return;\n }\n\n this.loading = true;\n\n this.loginService.login(this.username, this.loginForm.controls.password.value)\n .pipe(first())\n .subscribe({ next: this.loginNext.bind(this), error: this.onError.bind(this) });\n\n }\n\n private loginNext(args: LoginResponse): void {\n if (args.success) { \n this.userService.getUserPersonLoggedIn().subscribe(user => {\n if (user) {\n this.messageBusService.loginCompleted(new LoginCompletedMessage(user));\n this.baseService.goToRoute(this.returnUrl);\n } else {\n this.onError();\n } \n }); \n } else {\n this.onError(args.message);\n }\n }\n\n private onError(error?: any): void {\n this.loading = false;\n this.error = error?.message ?? error ?? \"Hubo un error, intente nuevamente\";\n }\n}\n","
\n \n \n \n
","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BaseService } from 'src/app/core/services/base.service';\n\n@Component({\n selector: 'app-login-form-manager',\n templateUrl: './login-form-manager.component.html',\n styleUrls: ['./login-form-manager.component.css']\n})\nexport class LoginFormManagerComponent implements OnInit {\n\n loginTypeEnum = LoginFormType;\n provider:LoginFormType = LoginFormType.DEFAULT;\n username: string;\n workflowType:number;\n\n constructor(\n private router: Router,\n private baseService: BaseService\n ) {\n\n let state = this.getState();\n\n if(!state)\n return;\n\n this.username = state.email;\n this.workflowType = state.workflowType;\n\n let providers = this.baseService.getAuthenticationProviders();\n\n if (!state.idAuthProvider){\n this.provider = LoginFormType.CLINIWEB;\n return;\n }\n\n let idAuthProvider = state.idAuthProvider;\n let providerSelected = providers.find(p => p.proveedorServicioAutenticacion == idAuthProvider);\n\n if(!providerSelected)\n return;\n\n switch(+providerSelected.proveedorServicioAutenticacion){\n case LoginFormType.CLINIWEB:\n this.provider = LoginFormType.CLINIWEB;\n break;\n case LoginFormType.GOOGLE:\n this.provider = LoginFormType.GOOGLE;\n break;\n default:\n this.provider = LoginFormType.DEFAULT;\n break;\n }\n\n }\n\n ngOnInit(): void {\n }\n\n private getState(): any | undefined {\n let nav = this.router.getCurrentNavigation();\n\n if(!nav)\n return;\n\n if(!nav.extras)\n return;\n\n return nav.extras.state;\n }\n\n}\n\nexport enum LoginFormType{\n DEFAULT = 1,\n GOOGLE = 14,\n CLINIWEB = 33\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { LoginGuard } from 'src/app/core/guards/login.guard';\nimport { AuthCallbackPopupComponent } from './pages/auth-callback-popup/auth-callback-popup.component';\nimport { AuthCallbackComponent } from './pages/auth-callback/auth-callback.component';\nimport { LoginComponent } from './pages/login/login.component';\nimport { ForgotPasswordComponent } from './pages/forgot-password/forgot-password.component';\nimport { ResetPasswordComponent } from './pages/reset-password/reset-password.component';\nimport { LoginFormManagerComponent } from './components/login-form-manager/login-form-manager.component';\n\nconst loginRoutes: Routes = [\n {\n path: '',\n component: LoginComponent,\n canActivate: [LoginGuard],\n children:[\n {\n path: '',\n component: LoginFormManagerComponent\n }\n ],\n },\n {\n path:'callback',\n component: AuthCallbackComponent,\n },\n {\n path:'callback/popup',\n component: AuthCallbackPopupComponent,\n },\n {\n path:'forgot-password',\n component: ForgotPasswordComponent,\n },\n {\n path:'restablecer/:idVerificacion',\n component: ResetPasswordComponent,\n },\n {\n path:'restablecer',\n component: ResetPasswordComponent,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(loginRoutes)],\n exports: [RouterModule]\n})\nexport class LoginRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { LoginComponent } from './pages/login/login.component';\nimport { CoreModule } from 'src/app/core/core.module';\nimport { CommonModule } from '@angular/common';\nimport { LoginRoutingModule } from './login-routing.module';\nimport { LoginFormComponent } from './components/login-form/login-form.component';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { L10nTranslationModule } from 'angular-l10n';\nimport { AuthCallbackComponent } from './pages/auth-callback/auth-callback.component';\nimport { AuthCallbackPopupComponent } from './pages/auth-callback-popup/auth-callback-popup.component';\nimport { ForgotPasswordComponent } from './pages/forgot-password/forgot-password.component';\nimport { ResetPasswordComponent } from './pages/reset-password/reset-password.component';\nimport { LoginHeaderComponent } from './components/login-header/login-header.component';\nimport { LoginFormManagerComponent } from './components/login-form-manager/login-form-manager.component';\nimport { LoginFormGoogleComponent } from './components/login-form-google/login-form-google.component';\nimport { LoginFormCliniwebComponent } from './components/login-form-cliniweb/login-form-cliniweb.component';\n\n\n@NgModule({\n declarations: [\n LoginComponent, \n LoginFormComponent, \n AuthCallbackComponent,\n AuthCallbackPopupComponent,\n ForgotPasswordComponent,\n ResetPasswordComponent,\n LoginHeaderComponent,\n LoginFormManagerComponent,\n LoginFormGoogleComponent,\n LoginFormCliniwebComponent\n ],\n imports: [\n CommonModule,\n CoreModule,\n SharedModule,\n LoginRoutingModule,\n FormsModule,\n ReactiveFormsModule,\n L10nTranslationModule \n ]\n})\nexport class LoginModule { }\n","import { Person } from \"./person.model\";\r\n\r\nexport class Dependent extends Person{\r\n idPersona: number;\r\n idEmpresa: number;\r\n numeroTelCelular: string;\r\n titulo: string;\r\n idPaisResidencia: number;\r\n idPaisNacimiento: number;\r\n emailParticular: string;\r\n tipoRelacion: number;\r\n idEstadoValidacionIdentidadPersona: number;\r\n}\r\n\r\nexport enum DependentRelationshipType {\r\n FatherOrMother = 294,\r\n SonOrDaughter = 295,\r\n Family = 36, \r\n HusbandOrWife = 480,\r\n BrotherOrSister = 481,\r\n GrandfatherOrGrandmother = 482,\r\n Warded = 483,\r\n}\r\n\r\nexport class DependentRequest {\r\n nombre: string;\r\n apellido: string;\r\n sexo: string;\r\n tipoRelacion: number;\r\n fechaNacimiento: Date;\r\n idPersona: number;\r\n idRelacionDependiente: number;\r\n ubicacionLogo: string;\r\n}","import { Injectable } from '@angular/core';\nimport { HttpBaseService } from './http-base-service';\nimport { TeleconsultaInfo } from 'src/app/shared/interfaces/teleconsulta-info';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TeleconsultaService {\n\n private url = 'api/teleconsultas';\n\n constructor(private http: HttpBaseService) { }\n\n getByIdEstado(id: number) {\n return this.http.get(`${this.url}?idEtapaSolicitud=${id}`);\n }\n\n}\n","
\n
\n
\n \n {{ 'shared.summaryAppointmentCheckout.title' | translate:locale.language: {specialty: model.specialty} }}\n \n \n \n
\n \n
\n
\n
\n \n {{ appointmentStateName }}\n
\n
\n \n {{ 'shared.summaryAppointmentCheckout.helpButton2' | translate:locale.language }}\n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n {{ appointmentStateName }}\n
\n
\n \n {{ 'shared.summaryAppointmentCheckout.helpButton2' | translate:locale.language }}\n \n \n {{ 'shared.summaryAppointmentCheckout.reSchedule' | translate:locale.language }}\n \n
\n
\n
\n \n \n\n \n
\n {{ 'shared.summaryAppointmentCheckout.helpTitle' | translate:locale.language }}\n {{ 'shared.summaryAppointmentCheckout.helpDescription' | translate:locale.language }}\n
\n \n \n \n \n
\n
\n \n
\n
\n \n \n
\n
\n
","import { Component, Inject, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\nimport { CloseRouteDialogMessage, ComponentFinishLoadingMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { ComponentLookup } from '../../decorators/component-lookup.decorator';\nimport { IControlComponent } from '../../interfaces/control-component';\nimport { FormComponentData } from '../../models/people/form-control.model';\nimport { AppointmentSummaryDataModel } from '../../models/workflow/models/appointment-summary-data.model';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { PatientAppointmentInformation } from '../../models/process/appointment.model';\nimport { AppointmentInfoDataModel, AppointmentType } from '../../models/workflow/models/appointment-info-data.model';\nimport { Observable, Subject, forkJoin, of } from 'rxjs';\nimport { Dependent } from '../../models/people/dependent.model';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { catchError, takeUntil, tap } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { UserPerson } from '../../models/people/user-person.model';\nimport { AppointmentCancelationRouteDialogModel, RouteDialogType } from '../dialogs/route-dialog/route-dialog.component';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { DialogData, MapDialogData } from '../../models/dialog-data.model';\nimport { DoctorMessageDialogComponent } from '../dialogs/doctor-message-dialog/doctor-message-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\nimport { AppointmentService } from 'src/app/core/services/appointment.service';\nimport { PublicProfile } from '../../models/people/public-profile.model';\nimport * as moment from 'moment';\nimport { TeleconsultaService } from 'src/app/core/services/teleconsulta.service';\nimport { Directory } from '../../models/systems/directory.model';\nimport { DOCUMENT } from '@angular/common';\nimport { MapDialogComponent } from '../dialogs/map-dialog/map-dialog.component';\n\n@Component({\n selector: 'app-summary-appointment-checkout',\n templateUrl: './summary-appointment-checkout.component.html',\n styleUrls: ['./summary-appointment-checkout.component.css'],\n encapsulation: ViewEncapsulation.None\n})\n@ComponentLookup('SummaryAppointmentCheckoutComponent')\nexport class SummaryAppointmentCheckoutComponent implements IControlComponent, OnInit {\n data: FormComponentData;\n model: AppointmentSummaryDataModel = new AppointmentSummaryDataModel();\n directory?: Directory;\n dependents: Dependent[]; \n loggedInUser: UserPerson;\n private ngUnsubscribe = new Subject();\n appointmentState = 22;\n appointmentStateName = \"\";\n appointmentExpired: boolean = false;\n appointmentStateClassName: string = \"\";\n appointmentStateIconClassName: string = \"\";\n idTeleconsulta?: string;\n licensedCompany: boolean = false;\n isCliniwebCompany: boolean = false;\n show:boolean = false;\n isAndroid = false;\n enablePublicProfileLink: boolean = true;\n initialLoading = true;\n\n @Input() appointment: PatientAppointmentInformation;\n @Input() inWorflow: boolean = true;\n\n constructor(\n private routeDialogService: RouteDialogService,\n private messageBusService: MessageBusService,\n private userService: UserService,\n private baseService: BaseService,\n private authService: AuthService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private dialog: MatDialog,\n private publicProfileService: PublicProfileService,\n private appointmentService: AppointmentService,\n private teleconsultaService: TeleconsultaService,\n @Inject(DOCUMENT) private document: Document,\n private translation: L10nTranslationService\n ) {\n this.model.appointmentInfo = new AppointmentInfoDataModel();\n }\n\n ngOnInit(): void {\n this.isAndroid = navigator.userAgent.toLowerCase().includes('android');\n this.document.body.classList.add('summary-appointment');\n\n // If we are on a worklfow let just disabled the public profile link\n if (this.inWorflow)\n this.enablePublicProfileLink = false;\n\n this.loadDataModel();\n\n this.loadFromAppointment();\n this.getTeleconsultaInfoIfVirtual(this.model?.appointmentInfo.idEtapaSolicitud ?? this.appointment?.idEtapaSolicitud);\n \n // On Header Back click\n this.messageBusService.onNavigateBack()\n .pipe(takeUntil(this.ngUnsubscribe)) \n .subscribe(m => {\n if (m.dialogId != RouteDialogType.APPOINTMENT_SUMMARY)\n return; \n\n // Only apply when component was loadad with an appointment (just summary mode)\n if(this.appointment)\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\n }\n );\n\n this.baseService.isLicensedCompany()\n .pipe(takeUntil(this.ngUnsubscribe)) \n .subscribe((result:boolean)=>{\n this.licensedCompany = result;\n\n this.show = true;\n },\n error=>{\n this.baseService.handleServiceError(error, \"Error licenced company\");\n });\n\n // Appointment cancelled\n this.messageBusService.onAppointmentChangeReceived()\n .pipe(takeUntil(this.ngUnsubscribe)) \n .subscribe(message => {\n let idEtapa = this.getAppointmentId();\n\n this.appointmentService.getAppointmentById(idEtapa, this.locale.language).subscribe(app => {\n let utcDate = moment.utc(app.fechaRequerido).toDate();\n app.fechaRequerido = utcDate;\n \n let endDateUtc = moment.utc(app.fechaFinalizacion).toDate();\n app.fechaFinalizacion = endDateUtc;\n \n this.appointment = app;\n\n this.loadFromAppointment();\n }); \n }\n );\n\n this.isCliniwebCompany = this.baseService.isCliniwebCompany();\n }\n\n private loadFromAppointment() {\n if (this.appointment) {\n let observables: Observable[] = [];\n\n this.appointmentExpired = this.isAppointmentExpired(this.appointment.fechaInicio);\n this.appointmentState = this.appointment.idEstado;\n this.appointmentStateName = this.getAppointmentStateName(this.appointment.fechaInicio, this.appointment.nombreEstado, this.appointment.idEstado);\n this.appointmentStateClassName = this.getAppointmentStateClassName(this.appointment.fechaInicio, this.appointment.idEstado);\n this.appointmentStateIconClassName = this.getAppointmentStateIconClassName(this.appointment.fechaInicio, this.appointment.idEstado);\n\n observables.push(this.getUser());\n observables.push(this.getDependents());\n\n forkJoin(observables).subscribe(results => { \n \n this.loggedInUser = results[0] as UserPerson;\n this.dependents = results[1] as Dependent[]; \n\n this.loadModelFromAppointment(); \n\n this.sendComponentFinishLoadingMessage();\n });\n }\n else {\n this.sendComponentFinishLoadingMessage();\n }\n }\n\n private getTeleconsultaInfoIfVirtual(idEtapa: number): void {\n if (!!idEtapa && (this.model?.appointmentInfo.appointmentType === AppointmentType.VIRTUAL || this.appointment?.teleconsulta.toLocaleLowerCase() == \"s\")) {\n const companyId = this.baseService.getCliniwebDirectoryCompanyId();\n\n this.baseService.getCliniwebDirectory(companyId)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(x => this.directory = x, error => { this.baseService.handleServiceError(error, \"Error getting directory\"); });\n\n this.teleconsultaService.getByIdEstado(idEtapa)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(x => this.idTeleconsulta = x.idTeleconsulta, error => { this.baseService.handleServiceError(error, \"Error getting teleconsultation\"); });\n }\n }\n\n ngOnDestroy() {\n this.document.body.classList.remove('summary-appointment');\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n isAppointmentExpired(fechaInicio: Date) {\n let now = new Date().getTime();\n let appDate = new Date(fechaInicio).getTime();\n\n return appDate <= now;\n }\n\n getAppointmentStateName(fechaInicio: Date, nombreEstado: string, idEstado: number) : string {\n let stateName = nombreEstado; \n \n if (this.isAppointmentExpired(fechaInicio)) {\n if (idEstado != 7 && idEstado != 28)\n stateName = this.translation.translate('shared.cliniwebAppointment.text19');\n }\n else {\n // Cobrado = 3\n // Sin Cobrar = 3\n if (idEstado == 3 || idEstado == 27)\n stateName = this.translation.translate('shared.cliniwebAppointment.text20');; \n }\n \n return stateName;\n }\n\n getAppointmentStateClassName(fechaInicio: Date, idEstado: number) {\n let stateClassName = \"\";\n \n if (this.isAppointmentExpired(fechaInicio)) {\n if (idEstado == 7)\n stateClassName = \"cancelled\";\n else if (idEstado == 28)\n stateClassName = \"not-completted\"; \n }\n else {\n if (idEstado == 23 || idEstado == 24 || idEstado == 30)\n stateClassName = \"confirmed\";\n else if (idEstado == 7 || idEstado == 28)\n stateClassName = \"cancelled\";\n else if (idEstado == 2)\n stateClassName = \"not-confirmed\";\n else if (idEstado == 22)\n stateClassName = \"pending\";\n }\n\n return stateClassName;\n }\n\n getAppointmentStateIconClassName(fechaInicio: Date, idEstado: number) {\n let stateIconClass = \"phr-iconset-PHR-date-2\";\n \n if (this.isAppointmentExpired(fechaInicio)) {\n if (idEstado == 7 || idEstado == 28)\n stateIconClass = \"phr-iconset-close-circle\";\n }\n else {\n stateIconClass = \"phr-iconset-validacion\";\n\n if (idEstado == 7 || idEstado == 28)\n stateIconClass = \"phr-iconset-close-circle\";\n else if (idEstado == 22 || idEstado == 2)\n stateIconClass = \"phr-iconset-alert\"; \n else if (idEstado == 3 || idEstado == 27)\n stateIconClass = \"phr-iconset-PHR-date-2\"; \n } \n \n return stateIconClass;\n }\n\n getDependents() : Observable{\n return this.userService.getUserDependents().pipe(\n tap(() => {\n \n }),\n catchError((e => { \n this.baseService.handleServiceError(e, \"Error getting dependents\");\n return of([]);\n })));\n }\n\n getUser() : Observable {\n return this.userService.getUserPersonLoggedIn().pipe(\n tap(() => {\n \n }),\n catchError((e => { \n this.baseService.handleServiceError(e, \"Error getting user\"); \n \n return of(null);\n })));\n }\n\n loadModelFromAppointment() {\n let appointmentInfoDataModel = new AppointmentInfoDataModel(); \n \n appointmentInfoDataModel.appointmentType = (this.appointment.teleconsulta && this.appointment.teleconsulta.toLocaleLowerCase() == \"s\"\n ? AppointmentType.VIRTUAL\n : AppointmentType.FACE_TO_FACE); \n appointmentInfoDataModel.appointmentDate = this.appointment.fechaRequerido;\n appointmentInfoDataModel.cancellationDate = this.appointment.fechaFinalizacion;\n appointmentInfoDataModel.doctorAvatarUrl = this.appointment.urlAvatarResponsableServicio;\n appointmentInfoDataModel.doctorName = this.appointment.nombreResponsableServicio;\n appointmentInfoDataModel.doctorSpecialty = this.appointment.especialidadResponsableServicio;\n appointmentInfoDataModel.attentionPlaceName = this.appointment.nombreLocalidad;\n appointmentInfoDataModel.attentionPlaceAddress = this.appointment.direccionLocalidad;\n appointmentInfoDataModel.attentionPlaceLatLng = this.appointment.coordenadasLocalidad;\n appointmentInfoDataModel.medicalConsultationType = \"\";\n appointmentInfoDataModel.medicalConsultationAmount = 0;\n appointmentInfoDataModel.patientName = this.getName(this.appointment);\n appointmentInfoDataModel.patientGender = this.getPatientGender(this.appointment);\n appointmentInfoDataModel.patientRelationshipType = this.getPatientRelationship(this.appointment);\n\n appointmentInfoDataModel.idEmpresa = this.appointment.idEmpresa;\n appointmentInfoDataModel.idResponsableServicio = this.appointment.idResponsableServicio;\n appointmentInfoDataModel.idEtapaSolicitud = this.appointment.idEtapaSolicitud;\n\n appointmentInfoDataModel.perfilPublico = new PublicProfile();\n appointmentInfoDataModel.perfilPublico.id = this.appointment.idResponsableServicio;\n appointmentInfoDataModel.perfilPublico.nombrePersona = this.appointment.nombreResponsableServicio;\n appointmentInfoDataModel.perfilPublico.sexo = this.appointment.sexoResponsableServicio;\n appointmentInfoDataModel.perfilPublico.ubicacionFoto = this.appointment.urlAvatarResponsableServicio;\n appointmentInfoDataModel.perfilPublico.tipoPerfil = 1; \n appointmentInfoDataModel.perfilPublico.username = this.appointment.identificadorPerfilPublico; \n\n this.model = new AppointmentSummaryDataModel();\n var coordinates = this.appointment.coordenadasLocalidad\n ? this.appointment.coordenadasLocalidad.split(\";\").map(c => parseFloat(c))\n : [0, 0];\n\n this.model.appointmentInfo = appointmentInfoDataModel;\n this.model.specialty = this.appointment.especialidadResponsableServicio;\n this.model.pendingApproval = false;\n this.model.locationLat = coordinates[0];\n this.model.locationLng = coordinates[1];\n this.model.phoneNumber = this.appointment.telefonoLocalidad1? this.appointment.telefonoLocalidad1 : this.appointment.telefonoLocalidad2; \n\n //console.log(this.model);\n }\n\n getPatientRelationship(app: PatientAppointmentInformation) : number {\n let relationship = 0;\n\n if (app.idPacienteOrigen != this.loggedInUser.id) {\n // Search for dependent\n let dependent = this.dependents.find(d => d.idPersona == app.idPacienteOrigen);\n\n if (dependent) {\n relationship = dependent.tipoRelacion; \n }\n } \n\n return relationship;\n }\n\n getPatientGender(app: PatientAppointmentInformation) : string {\n let gender = this.loggedInUser.sexo;\n\n if (app.idPacienteOrigen != this.loggedInUser.id) {\n // Search for dependent\n let dependent = this.dependents.find(d => d.idPersona == app.idPacienteOrigen);\n\n if (dependent) {\n gender = dependent.sexo; \n }\n } \n\n return gender;\n }\n\n \n getName(app: PatientAppointmentInformation) {\n if (app.idPacienteOrigen == this.loggedInUser.id) {\n return this.loggedInUser.nombre;\n }\n\n let dependent = this.dependents.find(d => d.idPersona == app.idPacienteOrigen);\n if (dependent) {\n return dependent?.nombre;\n } \n\n return app.nombrePaciente;\n }\n \n sendComponentFinishLoadingMessage(){\n if (!this.data || !this.data.idFormulario)\n return;\n \n let event = new ComponentFinishLoadingMessage();\n event.idFormulario = this.data.idFormulario;\n event.idControl = this.data.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n }\n\n gotoHome(){\n //this.routeDialogService.closeDialogsAndNavigate('/'); \n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\n\n window.location.href = environment.cliniwebPhrUrl;\n }\n\n showMyAppointments(){\n if(this.licensedCompany || this.isCliniwebCompany){\n //this.routeDialogService.closeDialogsAndNavigate('mis-citas');\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\n\n window.location.href = environment.cliniwebPhrUrl + 'mis-citas';\n }\n else{\n this.authService.getTransferToken()\n .subscribe(token=>{\n window.location.href = environment.cliniwebPhrUrl + 'mis-citas?token=' + token;\n },\n error=>{\n this.baseService.handleServiceError(error, \"Error getting token transfer\");\n });\n } \n }\n\n getCallNumber(){\n return `tel:${this.model.phoneNumber}`;\n }\n\n getWazeUrl(){\n return `https://waze.com/ul?navigate=yes&zoom=${this.model.locationZoom}&ll=${this.model.locationLat},${this.model.locationLng}`;\n }\n\n getVirtualConsultation(): string {\n return `${this.directory?.url}/meet/${this.idTeleconsulta}`;\n }\n\n openDialogContact() {\n /*let routeDialogModel = new ContactRouteDialogModel();\n routeDialogModel.route = 'support/contactus';\n routeDialogModel.queryParams = { returnUrl: this.router.url }\n this.routeDialogService.openDialog(routeDialogModel);*/\n\n let data = new DialogData();\n\n data.data = {\n idEmpresa: this.model.appointmentInfo.idEmpresa,\n id: this.model.appointmentInfo.idResponsableServicio,\n nombrePersona: this.model.appointmentInfo.doctorName\n };\n\n this.dialog.open(DoctorMessageDialogComponent, { \n panelClass: 'doc-message-dialog',\n data: data\n }); \n }\n\n private loadDataModel() {\n if (this.data && this.data.configurationData) {\n this.model = this.data.configurationData as AppointmentSummaryDataModel; \n \n if (this.model.appointmentInfo && this.model.appointmentInfo.idEstado) {\n this.appointmentState = this.model.appointmentInfo.idEstado;\n\n this.appointmentStateName = this.getAppointmentStateName(\n this.model.appointmentInfo.appointmentDate, \n this.model.appointmentInfo.nombreEstado, \n this.model.appointmentInfo.idEstado);\n\n this.appointmentStateClassName = this.getAppointmentStateClassName(this.model.appointmentInfo.appointmentDate ,this.model.appointmentInfo.idEstado);\n this.appointmentStateIconClassName = this.getAppointmentStateIconClassName(this.model.appointmentInfo.appointmentDate ,this.model.appointmentInfo.idEstado);\n \n } \n }\n setTimeout(() => this.initialLoading = false, 500);\n }\n\n private getAppointmentId() {\n var idEtapaSolicitud = 0;\n \n if (this.appointment)\n idEtapaSolicitud = this.appointment.idEtapaSolicitud;\n else \n idEtapaSolicitud = this.model.appointmentInfo.idEtapaSolicitud; \n\n return idEtapaSolicitud;\n } \n\n onCancelAppointmentClick() {\n var idEtapaSolicitud = this.getAppointmentId();\n\n let routeDialogModel = new AppointmentCancelationRouteDialogModel();\n routeDialogModel.route = \"citas/cancelar/\" + idEtapaSolicitud;\n //routeDialogModel.queryParams = { returnUrl: this.router.url };\n routeDialogModel.queryParams = { returnUrl: window.location.pathname };\n\n //routeDialogModel.state = null;\n\n this.routeDialogService.openDialog(routeDialogModel);\n }\n\n onReScheduleAppointmentClick() {\n let publicProfileId = this.model.appointmentInfo.idResponsableServicio;\n\n this.publicProfileService.getPublicProfileById(publicProfileId, this.locale.language, this.baseService.getCompanyName())\n .subscribe(pp => {\n if(pp) {\n //let route = \"perfil/reprogramar/\" + pp.username;\n\n // Close all popups \n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\n\n // Open re-schedule popup\n setTimeout(() => {\n /*let routeDialogModel = new RescheduleAppointmentRouteDialogModel();\n routeDialogModel.route = route;\n routeDialogModel.state = null; \n this.routeDialogService.openDialog(routeDialogModel);*/\n\n let url = this.publicProfileService.getPublicProfileUrl(pp.username);\n this.publicProfileService.openPublicProfile(url);\n }, 1500); \n }\n },\n error=>{\n this.baseService.handleServiceError(error, \"Error getting public profile\");\n }); \n }\n get isVirtual() { return this.model?.appointmentInfo?.appointmentType == AppointmentType.VIRTUAL; }\n\n openMap(){\n let data = new MapDialogData();\n\n data.title = this.model.appointmentInfo.attentionPlaceName; \n data.message = (this.model.locationLat + \";\" + this.model.locationLng);\n data.animationIn = 'map-phr-animation-in';\n data.animationOut = 'map-phr-animation-out';\n data.showCloseTextButton = true;\n data.showWazeButton = false;\n\n this.dialog.open(MapDialogComponent, { \n panelClass: ['map-dialog','map-phr-dialog', 'map-phr-animation-in'],\n data: data\n });\n }\n}\n","","import { Component, OnInit } from '@angular/core';\nimport { BaseService } from 'src/app/core/services/base.service';\n\n@Component({\n selector: 'app-privacy-policies',\n templateUrl: './privacy-policies.component.html',\n styleUrls: ['./privacy-policies.component.css']\n})\nexport class PrivacyPoliciesComponent implements OnInit {\n\n policiesControlName: string;\n\n constructor(\n private baseService: BaseService\n ) {}\n\n ngOnInit(): void {\n this.policiesControlName = this.baseService.getPoliciesControlName();\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { ComponentLookup } from 'src/app/shared/decorators/component-lookup.decorator';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\n\r\n@Component({\r\n selector: 'privacy-policies-sura',\r\n templateUrl: './privacy-policies-sura.component.html',\r\n styleUrls: ['./privacy-policies-sura.component.css']\r\n})\r\n@ComponentLookup('PrivacyPoliciesSuraComponent')\r\nexport class PrivacyPoliciesSuraComponent implements OnInit, IControlComponent { \r\n data: FormComponentData;\r\n \r\n constructor(\r\n @Inject(L10N_LOCALE) public locale: L10nLocale\r\n ) { \r\n }\r\n \r\n ngOnInit(): void {\r\n \r\n }\r\n\r\n}\r\n","
\r\n\r\n

{{ 'policiesSura.text1' | translate:locale.language }}

\r\n \r\n

\r\n {{ 'policiesSura.text2' | translate:locale.language }}\r\n

\r\n \r\n

{{ 'policiesSura.text3' | translate:locale.language }}

\r\n

{{ 'policiesSura.text4' | translate:locale.language }}

\r\n \r\n

{{ 'policiesSura.text5' | translate:locale.language }}

\r\n

\r\n {{ 'policiesSura.text6' | translate:locale.language }}\r\n

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

{{ 'policiesSura.text7' | translate:locale.language }}

\r\n

{{ 'policiesSura.text8' | translate:locale.language }}

\r\n

{{ 'policiesSura.text9' | translate:locale.language }}

\r\n

{{ 'policiesSura.text10' | translate:locale.language }}

\r\n

{{ 'policiesSura.text11' | translate:locale.language }}

\r\n

{{ 'policiesSura.text12' | translate:locale.language }}

\r\n

{{ 'policiesSura.text13' | translate:locale.language }}

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

{{ 'policiesSura.text14' | translate:locale.language }}

\r\n

{{ 'policiesSura.text15' | translate:locale.language }}

\r\n \r\n

{{ 'policiesSura.text16' | translate:locale.language }}

\r\n

{{ 'policiesSura.text17' | translate:locale.language }}

\r\n

{{ 'policiesSura.text18' | translate:locale.language }}

\r\n

{{ 'policiesSura.text19' | translate:locale.language }}{{ 'policiesSura.text20' | translate:locale.language }}

\r\n

{{ 'policiesSura.text21' | translate:locale.language }}

\r\n

{{ 'policiesSura.text22' | translate:locale.language }}

\r\n\r\n
\r\n\r\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { PrivacyPoliciesComponent } from './pages/privacy-policies/privacy-policies.component';\n\nconst privacyPoliciesRoutes: Routes = [\n {\n path: '',\n component: PrivacyPoliciesComponent,\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(privacyPoliciesRoutes)],\n exports: [RouterModule]\n})\nexport class PrivacyPoliciesRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PrivacyPoliciesComponent } from './pages/privacy-policies/privacy-policies.component';\nimport { PrivacyPoliciesSuraComponent } from './components/privacy-policies-sura/privacy-policies-sura.component';\nimport { PrivacyPoliciesRoutingModule } from './privacy-policies-routing.module';\nimport { CoreModule } from 'src/app/core/core.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { L10nTranslationModule } from 'angular-l10n';\n\n@NgModule({\n declarations: [\n PrivacyPoliciesComponent, \n PrivacyPoliciesSuraComponent],\n imports: [\n CommonModule,\n CoreModule,\n SharedModule,\n PrivacyPoliciesRoutingModule,\n L10nTranslationModule \n ],\n /* Every component (that is render dinamically) needs to be added here in order to be rendered after deploy\n If the component is NOT added when angular run the compilaiton and optimization, as these components are render dinamically \n and NOT refereced in any page, angular will remove it from the bundle result.\n */\n bootstrap: [\n PrivacyPoliciesComponent,\n PrivacyPoliciesSuraComponent\n ]\n})\nexport class PrivacyPoliciesModule { }\n","import { IWorkflowDataState } from \"../../../interfaces/workflow-data-state\";\r\nimport { IAuthenticationWorkflowState } from \"../steps/authentication-step.model\";\r\nimport { OnlinePaymentRequest } from \"../../process/online-payment-request.model\";\r\nimport { PayModel, RequestingUser } from \"../../process/base-request.model\";\r\nimport { BaseWorkflowState } from \"./base-workflow-state.model\";\r\nimport { IPaymentAmountWorkflowState } from \"../steps/payment/payment-amount-step.model\";\r\nimport { IPaymentWorkflowState } from \"../steps/payment/payment-form-step.model\";\r\nimport { UserPerson } from \"../../people/user-person.model\";\r\nimport { PublicProfile } from \"../../people/public-profile.model\";\r\nimport { ISelectCountryWorkflowState } from \"../steps/select-country-step.model\";\r\nimport { TerritorialDivision } from \"../../systems/territorial-division.model\";\r\n\r\nexport class OnlinePaymentWorkflowState \r\n extends BaseWorkflowState \r\n implements \r\n IWorkflowDataState,\r\n IAuthenticationWorkflowState,\r\n IPaymentAmountWorkflowState, \r\n IPaymentWorkflowState,\r\n ISelectCountryWorkflowState {\r\n\r\n requestModel: OnlinePaymentRequest;\r\n idVerificacion: string;\r\n request: any;\r\n\r\n constructor(); \r\n \r\n constructor(obj: OnlinePaymentWorkflowState);\r\n constructor(obj?:any){\r\n super();\r\n\r\n this.requestModel = obj && obj.requestModel || new OnlinePaymentRequest();\r\n this.idVerificacion = obj && obj.idVerificacion || null; \r\n } \r\n \r\n /* IWorkflowDataState Members */\r\n public getPosition(): number {\r\n return this.requestModel.workflowPosition;\r\n }\r\n\r\n public setPosition(position: number): void {\r\n this.requestModel.workflowPosition = position;\r\n }\r\n \r\n /* IAuthenticationWorkflowState Members */ \r\n\r\n public getIdVerificacion(): string {\r\n return this.idVerificacion;\r\n }\r\n\r\n getIdTipoSolicitud(): number {\r\n return -1;\r\n }\r\n\r\n public getDoctorAvatarUrl(): string {\r\n return this.requestModel.urlAvatarResponsableServicioDestino;\r\n }\r\n\r\n public setUserData(userPerson: UserPerson): void { \r\n this.requestModel.emailPersonaEmisora = userPerson.emailParticular;\r\n\r\n if(!this.requestModel.usuarioSolicitante){\r\n this.requestModel.usuarioSolicitante = new RequestingUser();\r\n }\r\n\r\n this.requestModel.usuarioSolicitante.id = userPerson.id;\r\n this.requestModel.usuarioSolicitante.username = userPerson.emailParticular;\r\n this.requestModel.usuarioSolicitante.nombre = userPerson.nombre;\r\n this.requestModel.usuarioSolicitante.apellido = userPerson.apellido;\r\n this.requestModel.usuarioSolicitante.sexo = userPerson.sexo;\r\n this.requestModel.usuarioSolicitante.fechaNacimiento = userPerson.fechaNacimiento;\r\n this.requestModel.usuarioSolicitante.urlAvatar = userPerson.ubicacionLogo;\r\n this.requestModel.usuarioSolicitante.idEstadoValidacionIdentidadPersona = userPerson.idEstadoValidacionIdentidadPersona;\r\n this.requestModel.usuarioSolicitante.idPaisResidencia = userPerson.idPaisResidencia;\r\n }\r\n\r\n public getUserId(): number {\r\n return this.requestModel.usuarioSolicitante && this.requestModel.usuarioSolicitante.id\r\n ? this.requestModel.usuarioSolicitante.id \r\n : 0;\r\n }\r\n\r\n public setEmmiterPersonId(personId: number): void {\r\n this.requestModel.idPersonaEmisora = personId;\r\n } \r\n\r\n /* IPaymentAmountWorkflowState Members */ \r\n getTargetUrlAvatar(): string {\r\n return this.requestModel.urlAvatarResponsableServicioDestino;\r\n }\r\n getTargetUsername(): string {\r\n return this.requestModel.nombreResponsableServicioDestino\r\n }\r\n getTargetSpecialty(): string {\r\n return this.requestModel.especialidadResponsableServicioDestino\r\n }\r\n getUserName(): string {\r\n return this.requestModel.usuarioSolicitante?.username;\r\n }\r\n getAmount(): string {\r\n if (this.requestModel.pagoDetalle && this.requestModel.pagoDetalle.monto)\r\n return this.requestModel.pagoDetalle.monto;\r\n else \r\n return \"0.00\";\r\n }\r\n setAmount(amount: string): void {\r\n if (!this.requestModel.pagoDetalle)\r\n this.requestModel.pagoDetalle = new PayModel();\r\n\r\n this.requestModel.pagoDetalle.monto = amount;\r\n }\r\n\r\n setPublicProfile(profile: PublicProfile):void {\r\n this.requestModel.perfilPublico = profile;\r\n }\r\n\r\n getPublicProfile():PublicProfile {\r\n return this.requestModel.perfilPublico;\r\n }\r\n\r\n /* IPaymentWorkflowState Members */\r\n setCreditCardType(creditCardType: string) {\r\n if (!this.requestModel.pagoDetalle)\r\n this.requestModel.pagoDetalle = new PayModel();\r\n\r\n this.requestModel.pagoDetalle.tipoTarjeta = creditCardType;\r\n }\r\n\r\n getCreditCardNumber(): string {\r\n return this.requestModel.pagoDetalle?.numeroTarjeta;\r\n }\r\n setCreditCardNumber(cardNumber: string): void {\r\n if (!this.requestModel.pagoDetalle)\r\n this.requestModel.pagoDetalle = new PayModel();\r\n \r\n this.requestModel.pagoDetalle.numeroTarjeta = cardNumber;\r\n }\r\n getCreditCardExpirationMonth(): string {\r\n return this.requestModel.pagoDetalle?.mesExpiracionTarjeta;\r\n }\r\n setCreditCardExpirationMonth(expMonth: string): void {\r\n if (!this.requestModel.pagoDetalle)\r\n this.requestModel.pagoDetalle = new PayModel();\r\n \r\n this.requestModel.pagoDetalle.mesExpiracionTarjeta = expMonth;\r\n }\r\n getCreditCardExpirationYear(): string {\r\n return this.requestModel.pagoDetalle?.anioExpiracionTarjeta;\r\n }\r\n setCreditCardExpirationYear(expYear: string): void {\r\n if (!this.requestModel.pagoDetalle)\r\n this.requestModel.pagoDetalle = new PayModel();\r\n \r\n this.requestModel.pagoDetalle.anioExpiracionTarjeta = expYear;\r\n }\r\n getCreditCardCvc(): string {\r\n return this.requestModel.pagoDetalle?.cVVTarjeta;\r\n }\r\n setCreditCardCvc(cvc: string): void {\r\n if (!this.requestModel.pagoDetalle)\r\n this.requestModel.pagoDetalle = new PayModel();\r\n \r\n this.requestModel.pagoDetalle.cVVTarjeta = cvc;\r\n }\r\n getCreditCardFullName(): string {\r\n let result = \"\";\r\n\r\n if (this.requestModel.pagoDetalle) {\r\n if (this.requestModel.pagoDetalle.nombre)\r\n result = this.requestModel.pagoDetalle.nombre + \" \";\r\n\r\n if (this.requestModel.pagoDetalle.apellido)\r\n result += this.requestModel.pagoDetalle?.apellido;\r\n }\r\n \r\n return result.trim();\r\n }\r\n setCreditCardFullName(fullName: string): void {\r\n let [firstName, ...rest] = fullName.split(' ');\r\n let lastName = rest.join('_');\r\n\r\n if (!this.requestModel.pagoDetalle)\r\n this.requestModel.pagoDetalle = new PayModel();\r\n\r\n this.requestModel.pagoDetalle.nombre = firstName;\r\n this.requestModel.pagoDetalle.apellido = lastName;\r\n }\r\n getPhoneNumber(): string {\r\n return this.requestModel.pagoDetalle?.numeroTelefono;\r\n }\r\n setPhoneNumber(fullName: string): void {\r\n if (!this.requestModel.pagoDetalle)\r\n this.requestModel.pagoDetalle = new PayModel();\r\n \r\n this.requestModel.pagoDetalle.numeroTelefono = fullName;\r\n }\r\n\r\n public getCountryId(): number {\r\n return this.requestModel.usuarioSolicitante.idPaisResidencia;\r\n }\r\n\r\n public setCountry(country: TerritorialDivision): void {\r\n this.requestModel.usuarioSolicitante.idPaisResidencia = country.idPais;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { AppointmentsByPatient, PatientAppointment, PatientAppointmentInformation } from 'src/app/shared/models/process/appointment.model';\r\nimport { OnlineAppointmentRequest } from 'src/app/shared/models/process/online-appointment-request.model';\r\nimport { ScheduleByLocation } from 'src/app/shared/models/process/schedule-by-location.model';\r\nimport { BaseService } from './base.service';\r\nimport { HttpBaseService } from './http-base-service';\r\nimport { OnlineAppointmentStatus } from 'src/app/shared/enums/online-appointment-status.enum';\r\nimport { AppointmentDoctor } from 'src/app/shared/models/people/appointment-doctor';\r\nimport { AppStorageService, STORAGE } from './app-storage.service';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppointmentService {\r\n\r\n constructor(private http: HttpBaseService, private baseService:BaseService, private appStorageService: AppStorageService) { }\r\n \r\n getAppointmentById(etapaSolicitudId: number, language: string):Observable {\r\n return this.http.get(`api/citas/${etapaSolicitudId}/informacion?lenguaje=${language}`);\r\n }\r\n\r\n getLatestDoctors(language: string, maxAmount: number) : Observable {\r\n return this.getAppointmentsWithCache(language).pipe(map((appointments: AppointmentsByPatient) => {\r\n let latestDoctors : AppointmentDoctor[];\r\n\r\n if (appointments.doctores && appointments.doctores.length > maxAmount) {\r\n latestDoctors = appointments.doctores.slice(0, maxAmount);\r\n } else {\r\n latestDoctors = appointments.doctores;\r\n }\r\n\r\n return latestDoctors;\r\n })); \r\n }\r\n\r\n getNextAppointment(language: string) : Observable {\r\n return this.getAppointmentsWithCache(language).pipe(map((appointments: AppointmentsByPatient) => {\r\n let nextAppointment = appointments.citasFuturas.find(a => a.idEstado != 7);\r\n \r\n return nextAppointment;\r\n }));\r\n }\r\n\r\n getAppointmentLastTimeShown(appointmentId: number): number {\r\n let dateNumber = this.appStorageService.getItem(STORAGE.NEXT_APPOINTMENT_LAST_TIME_SHOWN + \"_\" + appointmentId);\r\n\r\n return dateNumber? dateNumber : 0;\r\n }\r\n\r\n setAppointmentLastTimeShown(appointmentId: number) {\r\n this.appStorageService.setItem(STORAGE.NEXT_APPOINTMENT_LAST_TIME_SHOWN + \"_\" + appointmentId, new Date().getTime());\r\n }\r\n\r\n getAppointmentsWithCache(language: string):Observable {\r\n if (!this.isAppointmentsCacheEmpty()) {\r\n console.log(\"getting appointments from cache\");\r\n return of(this.getFromCache());\r\n }\r\n\r\n return this.getAppointments(language);\r\n }\r\n\r\n getAppointments(language: string):Observable {\r\n console.log(\"getting appointments from server\");\r\n\r\n let url = \"api/citas?language=\" + language;\r\n\r\n return this.http.get(url).pipe(map((appointments: AppointmentsByPatient) => {\r\n this.addToCache(appointments);\r\n return appointments;\r\n })); \r\n }\r\n\r\n clearAppointmentsCache() {\r\n this.appStorageService.setItemSession(STORAGE.APPOINTMENTS, null);\r\n }\r\n\r\n getFutureAppointments(language: string):Observable {\r\n return this.getAppointmentsWithCache(language).pipe(map((appointments: AppointmentsByPatient) => {\r\n return appointments.citasFuturas;\r\n })); \r\n }\r\n\r\n getPastAppointments(language: string):Observable {\r\n return this.getAppointmentsWithCache(language).pipe(map((appointments: AppointmentsByPatient) => {\r\n return appointments.citasPasadas;\r\n })); \r\n }\r\n\r\n getIncompletedAppointments():Observable {\r\n return this.http.get(\"api/citas/incompletas\");\r\n }\r\n\r\n cancelAppointment(idSolicitud: number, idEtapaSolicitud: number, reason: string):Observable {\r\n return this.http.put(\"api/citas/\" + idSolicitud + \"/cancelar/\" + idEtapaSolicitud + \"?razon=\" + reason, {});\r\n }\r\n\r\n getAppointmentsSchedule(\r\n idEmpresa: number,\r\n idResponsableServicio: number, \r\n fechaInicio: string, \r\n fechaFin: string, \r\n idLocalidad: number\r\n ): Observable{\r\n\r\n let url = \"api/citas/horarios/disponibles\";\r\n url+=`?idEmpresa=${idEmpresa}`;\r\n url+=`&idResponsableServicio=${idResponsableServicio}`;\r\n url+=`&fechaInicio=${fechaInicio}`;\r\n url+=`&fechaFin=${fechaFin}`;\r\n url+=`&idLocalidad=${idLocalidad}`;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getAppointmentsScheduleNextItem(\r\n idEmpresa: number,\r\n idResponsableServicio: number, \r\n fechaInicio: string, \r\n idLocalidad: number\r\n ): Observable{\r\n let url = \"api/citas/horarios/disponibles/proximo\";\r\n url+=`?idEmpresa=${idEmpresa}`;\r\n url+=`&idResponsableServicio=${idResponsableServicio}`;\r\n url+=`&fechaInicio=${fechaInicio}`;\r\n url+=`&idLocalidad=${idLocalidad}`;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n getOnlineAppointmentRequest(idVerificacion: string): Observable{\r\n return this.http.get(\"api/citas/por-verificar/\" + idVerificacion, null, false);\r\n }\r\n\r\n createOnlineAppointmentRequest(onlineAppointmentRequest: OnlineAppointmentRequest): Observable{\r\n return this.http.post(\"api/citas/por-verificar\", onlineAppointmentRequest, null, false);\r\n }\r\n\r\n updateOnlineAppointmentRequest(idVerificacion: string, onlineAppointmentRequest: OnlineAppointmentRequest): Observable{\r\n let url = `api/citas/por-verificar/${idVerificacion}`;\r\n return this.http.put(url, onlineAppointmentRequest);\r\n }\r\n\r\n confirmOnlineAppointmentRequest(idVerificacion:string, onlineAppointmentRequest: OnlineAppointmentRequest): Observable{\r\n let url = `api/citas/por-verificar/${idVerificacion}/confirmacion`;\r\n return this.http.put(url, onlineAppointmentRequest);\r\n }\r\n\r\n getStatus(idVerificacion:string): Observable {\r\n let url = `api/citas/por-verificar/${idVerificacion}/estado`;\r\n\r\n return this.http.get(url, null, false);\r\n }\r\n\r\n isAppointmentsCacheEmpty(): boolean {\r\n return !this.appStorageService.getItemSession(STORAGE.APPOINTMENTS);\r\n }\r\n\r\n addToCache(appointments: AppointmentsByPatient) {\r\n this.appStorageService.setItemSession(STORAGE.APPOINTMENTS, appointments);\r\n }\r\n\r\n getFromCache(): AppointmentsByPatient {\r\n return this.appStorageService.getItemSession(STORAGE.APPOINTMENTS);\r\n }\r\n\r\n}","import { ChangeDetectorRef, Directive, OnInit } from '@angular/core';\nimport { MatSelect } from '@angular/material/select';\n\n@Directive({\n selector: 'mat-select'\n})\nexport class MatSelectCustomDirective implements OnInit {\n\n private alturaQuitada = 43;\n private animacion = '0.2s ease-out';\n private clase = 'panel-no-sobre-select';\n\n constructor(private cd: ChangeDetectorRef, private matSelect: MatSelect) {\n this.matSelect.disableOptionCentering = true;\n this.matSelect.openedChange.subscribe(this.matSelectOpenedChange.bind(this));\n }\n\n ngOnInit(): void {\n if (!this.matSelect.panelClass) this.matSelect.panelClass = [];\n this.agregarClaseParaManipularUbicacionDeOptiones();\n this.cd.detectChanges();\n }\n\n private agregarClaseParaManipularUbicacionDeOptiones() {\n if (this.matSelect.panelClass instanceof Set) {\n this.matSelect.panelClass.add(this.clase);\n } else if (typeof this.matSelect.panelClass === 'object' && !Array.isArray(this.matSelect.panelClass)) {\n this.matSelect.panelClass[this.clase] = true;\n } else if (Array.isArray(this.matSelect.panelClass)) {\n this.matSelect.panelClass.push(this.clase)\n } else {\n this.matSelect.panelClass += ` ${this.clase}`;\n }\n }\n\n private matSelectOpenedChange(opened: boolean): void {\n const matSelectPanel: HTMLElement = this.matSelect.panel?.nativeElement;\n if (opened && matSelectPanel.classList.contains(this.clase)) this.procesarPanelPadreAbiertoYqueContieneLaClase(matSelectPanel);\n }\n\n private procesarPanelPadreAbiertoYqueContieneLaClase(matSelectPanel: HTMLElement): void {\n const cdkOverlayPanel: HTMLElement | null | undefined = matSelectPanel.parentElement?.parentElement;\n if (cdkOverlayPanel) this.moficarLaPosicionDelPanel(cdkOverlayPanel);\n }\n\n private moficarLaPosicionDelPanel(cdkOverlayPanel: HTMLElement): void {\n const bottom = parseInt(cdkOverlayPanel.style.bottom);\n const top = parseInt(cdkOverlayPanel.style.top);\n if (!isNaN(bottom)) {\n //cdkOverlayPanel.style.transition = `bottom ${this.animacion}`;\n //cdkOverlayPanel.style.bottom = `${bottom + this.alturaQuitada}px`;\n }\n if (!isNaN(top)) {\n //cdkOverlayPanel.style.transition = `top ${this.animacion}`;\n //cdkOverlayPanel.style.top = `${top + this.alturaQuitada}px`;\n }\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\r\nimport { AppStorageService } from 'src/app/core/services/app-storage.service';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\n\r\n@Component({\r\n selector: 'empty-home',\r\n templateUrl: './empty-home.component.html',\r\n styles: [''] \r\n})\r\n\r\n// Dummy class just to run the login if the user is not logged in\r\n// This is used from Cliniweb before creating an appointment for SURA\r\nexport class EmptyHomeComponent implements OnInit { \r\n\r\n constructor(\r\n private userService: UserService,\r\n private appStorageService: AppStorageService,\r\n private authService : AuthService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n let token = this.authService.getAuthenticationToken().subscribe(token => {\r\n this.userService.getUserPersonLoggedIn().subscribe(user => { \r\n if(user) {\r\n let model = { \r\n userId: user.id, \r\n token: token?.access_token \r\n };\r\n \r\n // Post message indicating a successfull login. Other events like \"before login\" and \"login error\" will be fired on \"auth-callback-component\"\r\n //this.iframeMessageService.postMessage(\"user_id\", model); \r\n \r\n window.parent.postMessage({ eventName: 'user_id', model: { userId: user.id, compId: user.idEmpresa, tel: user.numeroTelCelular, token: token?.access_token } }, '*');\r\n }\r\n }); \r\n }); \r\n } \r\n}\r\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { MenuGuard } from 'src/app/core/guards/menu.guard';\nimport { FormComponent } from 'src/app/shared/components/form/form.component';\nimport { EmptyHomeComponent } from './pages/empty-home/empty-home.component';\nimport { HomeComponent } from './pages/home/home.component';\n\n\nexport const homeRoutes: Routes = [\n {\n path: '',\n component: HomeComponent,\n canActivate: [MenuGuard],\n children: [\n {\n path: '',\n component: FormComponent,\n }\n ]\n },\n {\n path: 'empty',\n component: EmptyHomeComponent,\n canActivate: [MenuGuard]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(homeRoutes)],\n exports: [RouterModule]\n})\nexport class HomeRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { HomeComponent } from './pages/home/home.component';\nimport { EmptyHomeComponent } from './pages/empty-home/empty-home.component';\nimport { CoreModule } from 'src/app/core/core.module';\nimport { CommonModule } from '@angular/common';\nimport { HomeRoutingModule } from './home-routing.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { L10nTranslationModule } from 'angular-l10n';\n\n@NgModule({\n declarations: [\n HomeComponent, \n EmptyHomeComponent\n ],\n imports: [\n CommonModule,\n CoreModule,\n SharedModule,\n HomeRoutingModule,\n L10nTranslationModule,\n ]\n})\nexport class HomeModule { }\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { Link } from 'src/app/shared/models/people/link.model';\nimport { AppStorageService, STORAGE } from '../services/app-storage.service';\nimport { BaseService } from '../services/base.service';\nimport { LayoutService } from '../services/layout.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MenuGuard implements CanActivate {\n\n constructor(\n private baseService: BaseService,\n private layoutService: LayoutService,\n private router: Router,\n private appStorageService: AppStorageService\n ) { }\n\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n\n let menu = this.appStorageService.getItemSession(STORAGE.MENU, true);\n if(menu && menu.length > 0){\n return this.canGo(menu, state.url);\n }\n else{\n return this.layoutService.getMenuLinks().pipe(\n map((links)=>{\n this.appStorageService.setItemSession(STORAGE.MENU, links, true);\n\n return this.canGo(links, state.url);\n }),\n catchError((err) => {\n this.router.navigate(['/not-found']);\n return of(false);\n })\n );\n }\n }\n \n canGo(links: Link[], path: string): boolean {\n path = path.replace(\"/\", \"\").split(\"/\")[0].split('?')[0];\n if(path == ''){\n return true;\n }\n else {\n let linkSelected = links.find(link => this.baseService.getBasePath(link.identificadorUrl) == decodeURIComponent(path));\n\n let sublinkSelected = false;\n\n links.forEach(link => {\n\n let sublink = link.subMenu \n ? link.subMenu.find(link => this.baseService.getBasePath(link.identificadorUrl) == decodeURIComponent(path))\n : null;\n\n if(sublink)\n sublinkSelected = true;\n });\n\n if(linkSelected || sublinkSelected || path == \"empty\") {\n return true;\n } else{\n this.router.navigate(['/not-found']);\n return false;\n }\n }\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\n\n@Component({\n selector: 'app-cliniweb-directory-link',\n templateUrl: './cliniweb-directory-link.component.html',\n styleUrls: ['./cliniweb-directory-link.component.css']\n})\nexport class CliniwebDirectoryLinkComponent implements OnInit {\n\n numberOfDoctors = \"+3K\";\n doctors = [\n \"https://cdn.aspstatic.com/Documentos/cusa/35/18_20200402031800.jpg\",\n \"https://cdn.aspstatic.com/Documentos/CAFE/101/107_20210328115529.jpg\",\n \"https://cdn.aspstatic.com/Documentos/CIF/1/22_20190719095606.jpg\"\n ];\n\n constructor(@Inject(L10N_LOCALE) public locale: L10nLocale) { }\n\n ngOnInit(): void {\n }\n\n}\n","","import { FormControl } from \"./form-control.model\";\n\nexport class Form {\n id: number;\n nombre: string;\n descripcion: string;\n valor: string;\n configuracion: FormConfiguration;\n controles: FormControl[];\n\n constructor();\n constructor(obj:Form);\n constructor(obj?: any){\n this.id = obj && obj.id || 0;\n this.nombre = obj && obj.nombre || '';\n this.descripcion = obj && obj.descripcion || '';\n this.valor = obj && obj.valor || '';\n this.controles = obj && obj.controles || null;\n }\n}\n\n/*\nThis is used by some components to customize how the form is shown\nFor example: symptoms components will hide form title, subtitile and controlTitle if the user already have a virtual attention in progress\n*/\nexport class FormConfiguration {\n formId: number;\n showFormTitle : boolean = true;\n showFormSubtitle : boolean = true;\n showControlTitle : boolean = true;\n waitForComponents : boolean = false;\n\n constructor();\n constructor(obj:FormConfiguration);\n constructor(obj?: any){\n if(obj){\n this.formId = obj.formId;\n this.showFormTitle = obj.showFormTitle;\n this.showFormSubtitle = obj.showFormSubtitle;\n this.showControlTitle = obj.showControlTitle;\n this.waitForComponents = obj.waitForComponents;\n }\n else{\n this.formId = 0;\n this.showFormTitle = false;\n this.showFormSubtitle = false;\n this.showControlTitle = false;\n this.waitForComponents = false;\n }\n }\n}\n","import { PublicProfile } from \"../../people/public-profile.model\";\nimport { UserPerson } from \"../../people/user-person.model\";\nimport { RequestingUser } from \"../../process/base-request.model\";\nimport { WorkflowInitialData } from \"../../process/workflow-initial-data.model\";\nimport { IAuthenticationWorkflowState } from \"../steps/authentication-step.model\";\nimport { IPatientVerificationStep } from \"../steps/patient-verification-step.model\";\nimport { ISummaryMedicalOrderWorkflowState } from \"../steps/medical-orders/summary-medical-order-step.model\";\nimport { BaseWorkflowState } from \"./base-workflow-state.model\";\nimport { ISelectPatientRelationshipWorkflowState } from \"../steps/select-patient-relationship-step.model\";\nimport { Dependent } from \"../../people/dependent.model\";\nimport { ICreatePatientRelationshipWorkflowState } from \"../steps/create-patient-relationship-step.model\";\nimport { Relation } from \"../../people/relation.model\";\n\nexport class MedicalOrderWorkflowState\n extends BaseWorkflowState\n implements IPatientVerificationStep, \n IAuthenticationWorkflowState, \n ISummaryMedicalOrderWorkflowState,\n ISelectPatientRelationshipWorkflowState,\n ICreatePatientRelationshipWorkflowState {\n\n requestModel: WorkflowInitialData;\n idVerificacion: string;\n\n constructor();\n constructor(obj: MedicalOrderWorkflowState);\n constructor(obj?:any){\n super();\n \n this.requestModel = obj && obj.requestModel || new WorkflowInitialData();\n this.idVerificacion = obj && obj.idVerificacion || null;\n \n if (obj && !this.requestModel)\n this.requestModel = obj.request;\n }\n\n getIdVerificacion(): string {\n return this.idVerificacion;\n }\n\n getDoctorAvatarUrl(): string {\n return this.requestModel.publicProfile?.ubicacionFoto;\n }\n\n getUserId(): number {\n return this.requestModel.usuarioSolicitante && this.requestModel.usuarioSolicitante.id\n ? this.requestModel.usuarioSolicitante.id\n : -1;\n }\n\n getIdTipoSolicitud(): number {\n return this.requestModel?.idTipoSolicitud ?? -1;\n }\n\n getPosition(): number {\n return this.requestModel.workflowPosition;\n }\n\n getPublicProfile(): PublicProfile {\n return this.requestModel.perfilPublico;\n }\n\n setUserData(userPerson: UserPerson): void {\n this.requestModel.emailPersonaEmisora = userPerson.emailParticular;\n\n if(!this.requestModel.usuarioSolicitante){\n this.requestModel.usuarioSolicitante = new RequestingUser();\n }\n\n this.requestModel.usuarioSolicitante.id = userPerson.id;\n this.requestModel.usuarioSolicitante.username = userPerson.emailParticular; \n this.requestModel.usuarioSolicitante.sexo = userPerson.sexo;\n this.requestModel.usuarioSolicitante.fechaNacimiento = userPerson.fechaNacimiento;\n this.requestModel.usuarioSolicitante.urlAvatar = userPerson.ubicacionLogo;\n this.requestModel.usuarioSolicitante.nombre = userPerson.nombre;\n this.requestModel.usuarioSolicitante.apellido = userPerson.apellido;\n this.requestModel.usuarioSolicitante.idEstadoValidacionIdentidadPersona = userPerson.idEstadoValidacionIdentidadPersona;\n this.requestModel.usuarioSolicitante.idPaisResidencia = userPerson.idPaisResidencia;\n\n /*if(userPerson.numeroTelCelular) {\n this.requestModel.numeroCelularContacto = userPerson.numeroTelCelular;\n }*/\n }\n\n setEmmiterPersonId(personId: number): void {\n this.requestModel.idPersonaEmisora = personId;\n }\n\n setPosition(position: number): void {\n this.requestModel.workflowPosition = position;\n }\n\n setPublicProfile(profile: PublicProfile): void {\n this.requestModel.perfilPublico = profile;\n }\n\n getPatientName(): string {\n return this.requestModel.nombrePaciente;\n }\n\n setPatientName(nombrePaciente: string): void {\n this.requestModel.nombrePaciente = nombrePaciente;\n }\n\n getPatientEmail(): string {\n return this.requestModel.emailPaciente;\n }\n\n setPatientEmail() {\n this.requestModel.emailPaciente;\n }\n\n getPatientValid(): boolean {\n return this.requestModel.isValid;\n }\n\n setPatientValid(valid: boolean) {\n this.requestModel.isValid = valid;\n }\n\n getDependents(): Dependent[] {\n return this.requestModel.dependents;\n }\n\n setDependents(dependents: Dependent[]): void {\n this.requestModel.dependents = dependents;\n }\n\n getPatientRelationship(): number {\n return this.requestModel.relacionEmisorPaciente;\n }\n\n getPatientIdRelationship(): number {\n return this.requestModel.idPaciente ?? 0;\n }\n\n setPatientRelationship(patientRelationshipType: number): void {\n this.requestModel.relacionEmisorPaciente = patientRelationshipType;\n }\n \n setPatientIdRelationship(patientId: number): void {\n this.requestModel.idPaciente = patientId;\n }\n\n getRelations(): Relation[] {\n return this.requestModel.relations;\n }\n\n setRelations(relations: Relation[]): void {\n this.requestModel.relations = relations;\n }\n \n getPatientId(): number {\n return this.requestModel.idPaciente ?? 0;\n }\n\n getUserPhrId(): number {\n return this.requestModel.idUsuario;\n }\n}\n","export class ProfileDetailModel {\r\n idPerfilPublico : number;\r\n idTipoPerfilPublicoDetalle : number;\r\n idPersona : number;\r\n idObjetoDetalle : number;\r\n objetoDetalle : string;\r\n yipoObjetoDetalle : number;\r\n localizacion : string;\r\n institucionTituloObtenido : string;\r\n fechaTituloObtenido : Date;\r\n ubicacionFoto : string;\r\n fechaCreacion : Date;\r\n idResponsableCreacion : number;\r\n fechaActualizacion : Date;\r\n idResponsableActualizacion : number;\r\n eliminado : string;\r\n fechaEliminacion : Date;\r\n idResponsableEliminacion : number;\r\n descipcionEliminacion : string;\r\n idEmpresa : number;\r\n idPais : number;\r\n idProvincia : number;\r\n idCiudad : number;\r\n nombrePais : string;\r\n nombreProvincia : string;\r\n nombreCiudad : string;\r\n descripcion1 : string;\r\n descripcion2 : string;\r\n descripcion3 : string;\r\n descripcion4 : string;\r\n identificadorPaisCiudad : string;\r\n idEmpresaLocalidad : number;\r\n idEmpresaObjetoDetalle : number;\r\n empresaObjetoDetalle : string;\r\n nombreEmpresaPerfilPublico : string;\r\n direccionLocalidad1 : string;\r\n direccionLocalidad2 : string;\r\n detalleDestacado : string;\r\n citaEnLineaHabilitada : string;\r\n prioridadOrden : number;\r\n teleconsulta : string;\r\n idDivisionTerritorial : number;\r\n identificadorDivisionTerritorial : string;\r\n nombreCanonicoDivisionTerritorial : string;\r\n}\r\n\r\nexport enum PublicProfileDetailType {\r\n Language = 1,\r\n Title = 2,\r\n Treatments = 5,\r\n Conditions = 6,\r\n Photo = 7,\r\n Locality = 8,\r\n Specialty = 9,\r\n Subspecialty = 10,\r\n SocialNetworks = 11,\r\n FocusAreas = 14, // MCWNG-169\r\n AutobiographicalDescription = 17,\r\n LaborExperience = 22,\r\n BrowserTitle = 23,\r\n BrowserDescription = 24,\r\n KeywordsSEO = 25,\r\n Posts = 27,\r\n Titles = 48,\r\n Curses = 43,\r\n Workouts = 45,\r\n Licenses = 50,\r\n Affiliations = 4,\r\n Positions = 53,\r\n AboutMe = 49,\r\n PhotoGallery = 56,\r\n FacebookPixel = 57\r\n}","import { Injectable } from '@angular/core';\nimport { HttpBaseService } from './http-base-service';\nimport { Observable } from 'rxjs';\nimport { AttentionsHistory } from 'src/app/shared/interfaces/attentions-history';\nimport { MedicalOrder } from 'src/app/shared/interfaces/medical-order';\nimport { MedicalOrderViewModel } from 'src/app/shared/models/clinic-history/medical-order.model';\nimport { MEDICAL_REQUEST_TYPE } from 'src/app/shared/enums/medical-request-type.enum';\nimport { HttpParams } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MedicalOrderService {\n\n private url = 'api/ordenes-medicas';\n\n constructor(private http: HttpBaseService) { }\n\n get(id: string) {\n const url = `${this.url}/por-verificar/${id}/historial-atencion`;\n return this.http.get(url);\n }\n\n getById(id: string): Observable {\n const url = `${this.url}/${id}`;\n return this.http.get(url);\n }\n\n getList(idPaciente: number, tipos: string) {\n const url = `${this.url}?idPaciente=${idPaciente}&idTiposSolicitud=${tipos}`;\n return this.http.get(url);\n }\n\n buildRequestNumber(requestTypeId: number = -1, requestNumber: number = -1): string {\n return requestTypeId == MEDICAL_REQUEST_TYPE.MEDICAL_PRESCRIPTION ? requestNumber.toString().padStart(6, '0') : '';\n }\n\n generateByIdHashed(idHashed: string): Observable {\n const url = `${this.url}/generacion`;\n const params = new HttpParams().set('hash', idHashed);\n\n return this.http.post(url, null, { params }, false);\n }\n\n}\n\nexport interface MedicalOrderSummary {\n idResponsableServicio: number;\n idTipoSolicitud: number;\n idVerificacion: string;\n nombrePaciente: string;\n nombreResponsableServicio: string;\n ubicacionFoto: string;\n\n idPaciente?:number;\n idUsuario: number;\n emailUsuario: string;\n idProveedorServicioAutenticacion: number;\n}\n\nexport interface MedicalOrderValidatedUser extends MedicalOrderSummary {\n emailPaciente: string;\n fechaNacimiento: string;\n isValid: boolean;\n tipoRelacionPacienteUsuario: number;\n}\n","
\n
\n
{{iniciales}}
\n
","import { Component, Input, OnInit } from '@angular/core';\nimport { BaseService } from 'src/app/core/services/base.service';\n\n@Component({\n selector: 'app-avatar-initials',\n templateUrl: './avatar-initials.component.html',\n styleUrls: ['./avatar-initials.component.css']\n})\nexport class AvatarInitialsComponent implements OnInit {\n\n @Input() id:number;\n @Input() text:string;\n @Input() url:string;\n\n color:string;\n iniciales: string;\n\n constructor(private baseService: BaseService) { }\n\n ngOnInit(): void {\n if(!this.url){\n let avatarInitialsObject = this.baseService.getAvatarInitialObject(this.id, this.text);\n\n this.iniciales = avatarInitialsObject.initials;\n this.color = avatarInitialsObject.color;\n }\n }\n}\n","
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE } from 'angular-l10n';\r\nimport { PublicProfileType } from '../../models/people/profile-search-results.model';\r\nimport { UtilsService } from 'src/app/core/services/utils.service';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { PublicProfile } from '../../models/people/public-profile.model';\r\n\r\n@Component({\r\n selector: 'app-public-profile-avatar',\r\n templateUrl: './public-profile-avatar.component.html',\r\n styleUrls: ['./public-profile-avatar.component.css'] \r\n})\r\nexport class PublicProfileAvatarComponent implements OnInit, OnDestroy {\r\n _model: PublicProfileAvatarComponentModel;\r\n @Input() \r\n get model(): PublicProfileAvatarComponentModel { return this._model; }\r\n set model(model: PublicProfileAvatarComponentModel) {\r\n this._model = model;\r\n this._model.sex = model.sex?.toLocaleLowerCase();\r\n\r\n if (!this._model.avatarUrl) {\r\n let initials = this.utilsService.getPersonInitials(model.personId, model.fullName);\r\n\r\n this.profileInitials = initials.initials;\r\n this.profileInitialsColor = initials.color;\r\n\r\n this.profileTypeIconClassName = this.getProfileTypeIconClassName(model.profileType);\r\n\r\n if (this._model.profileType != PublicProfileType.Doctor)\r\n this.profileInitialsColor = \"var(--grey3)\";\r\n\r\n //console.log(\"Doc without image\");\r\n //console.log(\"Doc name: '\" + model.fullName + \"'; DocId: \" + model.personId + \"; SelectedColor: \" + initials.color);\r\n }\r\n else \r\n this.profileInitialsColor = this.model.defaultBorderColor;\r\n }\r\n @Input() withoutBorder = false;\r\n \r\n profileType = PublicProfileType;\r\n profileInitials: string;\r\n profileInitialsColor: string;\r\n profileTypeIconClassName: string;\r\n legacyAvatar: boolean = false;\r\n\r\n constructor( \r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n private utilsService: UtilsService,\r\n private baseService: BaseService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n let companyName = this.baseService.getCompanyName();\r\n\r\n if (companyName.toLocaleLowerCase() == \"mapfre-panama-asistencia-pacientes\"\r\n || companyName.toLocaleLowerCase() == \"mapfre-pacientes-pty\") {\r\n this.legacyAvatar = true;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n \r\n }\r\n \r\n private getProfileTypeIconClassName(profileType: PublicProfileType) { \r\n let className: string = 'phr-iconset-';\r\n let companyName = this.baseService.getCompanyName();\r\n\r\n if (companyName.toLocaleLowerCase() == \"mapfre-panama-asistencia-pacientes\")\r\n return this.getProfileTypeIconClassNameForPanamaAsistencia(profileType);\r\n\r\n switch(profileType){\r\n case PublicProfileType.Doctor:\r\n default:\r\n className += 'estetoscopio';\r\n break;\r\n case PublicProfileType.Farmacia:\r\n className += 'farmacia';\r\n break;\r\n case PublicProfileType.Clinica:\r\n className += 'hospital';\r\n break;\r\n case PublicProfileType.Fisioterapia:\r\n className += 'fisioterapia';\r\n break;\r\n case PublicProfileType.Laboratorio:\r\n className += 'laboratorios';\r\n break;\r\n case PublicProfileType.CentroDeImagenes:\r\n className += 'imagenologia';\r\n break; \r\n case PublicProfileType.ServiciosOdontologicos:\r\n className += 'odontologia';\r\n break;\r\n case PublicProfileType.Opticas:\r\n className += 'open-eye';\r\n break;\r\n case PublicProfileType.ClinicasDeAtencionPrimaria:\r\n className += 'clinic';\r\n break;\r\n }\r\n\r\n return className;\r\n }\r\n\r\n private getProfileTypeIconClassNameForPanamaAsistencia(profileType: PublicProfileType) {\r\n let className: string = 'phr-iconset-';\r\n\r\n switch(profileType){\r\n case PublicProfileType.Doctor:\r\n default:\r\n className += 'pa-doc';\r\n break;\r\n case PublicProfileType.Farmacia:\r\n className += 'farmacia';\r\n break;\r\n case PublicProfileType.Clinica:\r\n className += 'pa-hospital'; \r\n break;\r\n case PublicProfileType.Fisioterapia:\r\n className += 'fisioterapia';\r\n break;\r\n case PublicProfileType.Laboratorio:\r\n className += 'pa-lab';\r\n break;\r\n case PublicProfileType.CentroDeImagenes:\r\n className += 'imagenologia';\r\n break; \r\n case PublicProfileType.ServiciosOdontologicos:\r\n className += 'odontologia';\r\n break;\r\n case PublicProfileType.Opticas:\r\n className += 'open-eye';\r\n break;\r\n case PublicProfileType.ClinicasDeAtencionPrimaria:\r\n className += 'pa-clinica';\r\n break;\r\n }\r\n\r\n return className;\r\n }\r\n}\r\n\r\nexport class PublicProfileAvatarComponentModel {\r\n personId: number;\r\n avatarUrl: string;\r\n fullName: string;\r\n sex: string;\r\n profileType: PublicProfileType;\r\n\r\n useAvatarPadding: boolean = true;\r\n defaultBorderColor: string = \"var(--public-profile-avatar-border-color)\";\r\n}\r\n\r\nexport class PublicProfileToPublicProfileAvatarComponentModelConverter extends PublicProfileAvatarComponentModel {\r\n constructor(args: PublicProfile) {\r\n super();\r\n this.avatarUrl = args.ubicacionFoto;\r\n this.fullName = args.nombrePersona;\r\n }\r\n}","import { PublicProfile } from \"../../people/public-profile.model\";\n\nexport class AppointmentCheckout {\n idResponsableServicio: number;\n urlAvatarResponsableServicio: string;\n nombreResponsableServicio: string;\n especialidadResponsableServicio: string;\n\n perfilPublico: PublicProfile; \n\n nickname: string;\n idLocalidad: number;\n nombreLocalidad: string;\n direccionLocalidad: string;\n coordenadasLocalidad: string;\n telefonoLocalidad: string;\n teleconsulta: string;\n fechaInicio: Date;\n fechaFin: Date;\n idVerificacion: string;\n idEmpresa: number;\n}\n","import { Injectable } from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from './auth.service';\nimport { HttpBaseService } from './http-base-service';\n\nexport enum LogLevel {\n Off = 0,\n Error = 1,\n Warning = 2,\n Info = 3,\n Verbose = 4\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LogService {\n\n constructor(\n private http: HttpBaseService,\n private authService: AuthService\n ) { }\n\n logError(text:string){\n this.postLog(text, LogLevel.Error);\n }\n logWarning(text:string){\n this.postLog(text, LogLevel.Warning);\n }\n logInfo(text:string){\n this.postLog(text, LogLevel.Info);\n }\n logVerbose(text:string){\n this.postLog(text, LogLevel.Verbose);\n }\n\n private postLog(text:string, level:LogLevel){\n if(this.authService.isLoggedIn() && environment.logLevel == level){\n\n let body = {\n text: text,\n level: level\n }\n\n this.http.post(\"api/logs\", body)\n .subscribe();\n }\n }\n}\n","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { MessageBusService, NavigationBackMessage, OpenSnackBarMessage, SnackBarType } from 'src/app/core/services/message-bus.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { UpdateUser, UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { AvatarUploadComponentOptions, AvatarUploadedFileModel } from '../../avatar-upload/avatar-upload.component';\r\nimport { StateType } from 'src/app/shared/enums/state-type.enum';\r\nimport { TerritorialDivision } from 'src/app/shared/models/systems/territorial-division.model';\r\nimport { TerritorialDivisionsService } from 'src/app/core/services/territorial-divisions.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\n\r\n@Component({\r\n selector: 'app-edit-user',\r\n templateUrl: './edit-user.component.html',\r\n styleUrls: ['./edit-user.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class EditUserComponent implements OnInit, OnDestroy {\r\n \r\n private ngUnsubscribe = new Subject();\r\n loggedInUser: UserPerson = null as any; \r\n formGroup: FormGroup;\r\n formSubmitted: boolean = false;\r\n saving: boolean = false;\r\n translations = {\r\n man: \"\",\r\n women: \"\", \r\n };\r\n avatarUploadOptions : AvatarUploadComponentOptions;\r\n minDate: Date;\r\n maxDate: Date;\r\n\r\n availableCountries: TerritorialDivision[] = [];\r\n\r\n constructor(\r\n private userService: UserService, \r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n private translation: L10nTranslationService,\r\n private formBuilder: FormBuilder,\r\n private messageBusService: MessageBusService,\r\n private router: Router,\r\n private dialog: MatDialog,\r\n private territorialDivisionService: TerritorialDivisionsService\r\n ) {\r\n this.avatarUploadOptions = new AvatarUploadComponentOptions();\r\n this.avatarUploadOptions.requiredFileType = \"image/png,image/jpeg\";\r\n this.avatarUploadOptions.selectFileLabel = \"añadir foto\";\r\n this.avatarUploadOptions.changeFileLabel = \"Editar\";\r\n this.avatarUploadOptions.showFileOnceUpload = true;\r\n\t this.avatarUploadOptions.edit = true;\r\n\r\n const currentYear = new Date().getFullYear();\r\n this.minDate = new Date(currentYear - 120, 0, 1);\r\n this.maxDate = new Date();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadAvailableCountries();\r\n\r\n this.formGroup = this.formBuilder.group({ \r\n nameControl: ['', [Validators.required, Validators.maxLength(200)]],\r\n lastNameControl: ['', [Validators.required, Validators.maxLength(200)]],\r\n birthDateControl: ['', Validators.required],\r\n sexControl: ['', Validators.required],\r\n countryControl: ['', Validators.required]\r\n });\r\n\r\n this.translation.onChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: () => {\r\n this.translations.man = this.translation.translate('man');\r\n this.translations.women = this.translation.translate('women');\r\n\r\n this.avatarUploadOptions.selectFileLabel = this.translation.translate('shared.viewUser.text8');\r\n this.avatarUploadOptions.changeFileLabel = this.translation.translate('shared.viewUser.text3');\r\n this.avatarUploadOptions.changePictureLabel = this.translation.translate('shared.viewUser.text9');\r\n this.avatarUploadOptions.deleteFileLabel = this.translation.translate('shared.viewUser.text10');\r\n }\r\n });\r\n\r\n this.userService.getUserPersonLoggedIn()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(p => {\r\n if (p)\r\n this.loggedInUser = p;\r\n\r\n /*if (!this.loggedInUser.ubicacionLogo) {\r\n let feNacimiento = this.loggedInUser.fechaNacimiento? new Date(this.loggedInUser.fechaNacimiento) : null;\r\n this.loggedInUser.ubicacionLogo = this.utilsService.getPersonDefaultAvatarUrl(feNacimiento, this.loggedInUser.sexo);\r\n }*/\r\n \r\n //this.loggedInUser.fechaNacimiento = new Date();\r\n //this.loggedInUser.sexo = \"M\";\r\n\r\n this.loadUserData(this.loggedInUser);\r\n });\r\n\r\n // On Header Back click\r\n this.messageBusService.onNavigateBack().pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.onNavigateBackNext.bind(this));\r\n }\r\n\r\n private onNavigateBackNext(_: NavigationBackMessage): void {\r\n if (this.formGroup.dirty && this.formGroup.touched) {\r\n this.beforeCloseAlert();\r\n } else\r\n this.router.navigate(['configuracion/usuario']);\r\n }\r\n\r\n private beforeCloseAlert(): void {\r\n let dialogData = new DialogData();\r\n dialogData.title = this.translation.translate(\"shared.editDependent.cancelTitle\");\r\n dialogData.message = this.translation.translate(\"shared.editDependent.cancelMessage\");\r\n dialogData.confirmText = this.translation.translate(\"shared.editDependent.cancelConfirmText\"); \r\n dialogData.cancelText = this.translation.translate(\"shared.editDependent.cancelCancelText\");\r\n dialogData.headerIconClass = 'phr-iconset-alert';\r\n dialogData.showHeaderIcon = true;\r\n dialogData.showCancelButton = true;\r\n dialogData.loadLicense = true;\r\n\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n data: dialogData,\r\n panelClass: 'cancel-edit-person-dialog'\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(accepted => {\r\n if (accepted) {\r\n this.router.navigate(['configuracion/usuario']);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n this.messageBusService.refreshProfileMenu();\r\n }\r\n\r\n loadAvailableCountries(){\r\n this.availableCountries = this.territorialDivisionService.getAvailableCountries();\r\n }\r\n\r\n loadUserData(user: UserPerson) {\r\n if (user.idPaisResidencia > 0 && user.idPaisResidencia != 9){\r\n\r\n if(!this.availableCountries.find(c=> c.idPais == user.idPaisResidencia)){\r\n let anotherCountry = this.availableCountries.find(c => c.id == 1);\r\n\r\n this.setControlValue(\"countryControl\", anotherCountry?.idPais);\r\n }\r\n else{\r\n this.setControlValue(\"countryControl\", user.idPaisResidencia);\r\n }\r\n }\r\n\r\n if (user.fechaNacimiento && new Date(user.fechaNacimiento).getFullYear() === 1900) {\r\n this.setControlValue(\"nameControl\", undefined);\r\n this.setControlValue(\"lastNameControl\", undefined);\r\n this.setControlValue(\"birthDateControl\", undefined);\r\n this.setControlValue(\"sexControl\", undefined);\r\n\r\n return;\r\n } \r\n\r\n if (user.nombre)\r\n this.setControlValue(\"nameControl\", user.nombre);\r\n\r\n if (user.apellido)\r\n this.setControlValue(\"lastNameControl\", user.apellido);\r\n\r\n if (user.fechaNacimiento)\r\n this.setControlValue(\"birthDateControl\", user.fechaNacimiento);\r\n\r\n if (user.sexo && user.sexo != \"9\")\r\n this.setControlValue(\"sexControl\", user.sexo);\r\n }\r\n\r\n getControl(controlName: string) {\r\n return this.formGroup.controls[controlName];\r\n }\r\n\r\n isControlInvalid(controlName: string) {\r\n let control = this.getControl(controlName);\r\n\r\n // First check if the form is submitted or control is dirty\r\n if (!this.formSubmitted && !control.touched)\r\n return false;\r\n\r\n return control.invalid;\r\n }\r\n\r\n controlHasError(controlName: string, errorName: string) {\r\n return this.getControl(controlName).hasError(errorName);\r\n }\r\n \r\n getControlValue(controlName: string) {\r\n return this.getControl(controlName).value;\r\n }\r\n\r\n setControlValue(controlName: string, value: any) {\r\n this.getControl(controlName).setValue(value);\r\n }\r\n\r\n onUserSaveClick() {\r\n this.formGroup.markAllAsTouched();\r\n this.formSubmitted = true;\r\n\r\n if (!this.formGroup.valid)\r\n return;\r\n\r\n this.saving = true;\r\n\r\n let model: UpdateUser = new UpdateUser();\r\n\r\n model.nombre = this.getControlValue(\"nameControl\");\r\n model.apellido = this.getControlValue(\"lastNameControl\");\r\n model.fechaNacimiento = new Date(this.getControlValue(\"birthDateControl\"));\r\n model.sexo = this.getControlValue(\"sexControl\");\r\n model.idPais = this.getControlValue(\"countryControl\");\r\n model.ubicacionLogo = this.loggedInUser.ubicacionLogo ?? model.ubicacionLogo;\r\n\r\n //console.log(model);\r\n\r\n this.userService.updateUser(model).subscribe(updated => { \r\n this.loggedInUser.nombre = model.nombre;\r\n this.loggedInUser.apellido = model.apellido;\r\n this.loggedInUser.fechaNacimiento = model.fechaNacimiento;\r\n this.loggedInUser.sexo = model.sexo;\r\n this.loggedInUser.idPaisResidencia = model.idPais;\r\n this.loggedInUser.idEstadoValidacionIdentidadPersona = updated.idEstadoValidacionIdentidadPersona ?? StateType.SinValidar;\r\n\r\n this.userService.updateUserLoggedIn(this.loggedInUser);\r\n\r\n this.territorialDivisionService.setCountryApp(model.idPais);\r\n\r\n this.saving = false;\r\n\r\n this.showSuccessToast();\r\n\r\n this.router.navigate(['configuracion/usuario']);\r\n },\r\n error => {\r\n this.saving = false;\r\n });\r\n }\r\n \r\n showSuccessToast() {\r\n let message = new OpenSnackBarMessage();\r\n message.text = this.translation.translate('shared.editUser.text12');\r\n message.type = SnackBarType.SUCCESS;\r\n message.duration = 3000;\r\n \r\n this.messageBusService.openSnackBar(message);\r\n }\r\n\r\n onAvatarUploaded(file: AvatarUploadedFileModel) {\r\n this.loggedInUser.ubicacionLogo = file?.webUrl;\r\n }\r\n\r\n getBirthdateControl():FormControl | null{\r\n return this.formGroup.get('birthDateControl') \r\n ? this.formGroup.get('birthDateControl') as FormControl \r\n : null;\r\n }\r\n}\r\n\r\n","
\r\n \r\n\r\n
\r\n {{'shared.editUser.text1' | translate:locale.language}} \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n {{'shared.editUser.text3' | translate:locale.language}}\r\n \r\n {{'shared.editUser.text4' | translate:locale.language}}\r\n \r\n
\r\n
\r\n \r\n {{'shared.editUser.text5' | translate:locale.language}}\r\n \r\n {{'shared.editUser.text6' | translate:locale.language}}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{'man' | translate:locale.language}}\r\n \r\n \r\n \r\n {{'women' | translate:locale.language}}\r\n \r\n \r\n {{'shared.editUser.text10' | translate:locale.language}}\r\n\r\n
\r\n
\r\n
\r\n \r\n {{'shared.editUser.text13' | translate:locale.language}}\r\n \r\n \r\n {{availableCountry.nombreI18n | i18nText:locale.language}}\r\n \r\n \r\n \r\n {{ 'shared.editUser.text14' | translate:locale.language }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
","import { IControlComponent } from \"../interfaces/control-component\";\r\n\r\nexport type ControlComponentClass = { new (): IControlComponent };\r\n\r\nexport const ComponentLookupRegistry: Map = new Map();\r\n\r\nexport const ComponentLookup = (key: string): any => {\r\n return (cls: ControlComponentClass) => {\r\n ComponentLookupRegistry.set(key, cls);\r\n };\r\n};","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CookieService } from 'ngx-cookie-service';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n HttpClientModule\n ],\n providers: [ \n CookieService\n ]\n})\nexport class CoreModule { }\n","import { IWorkflowDataState } from \"src/app/shared/interfaces/workflow-data-state\";\r\n\r\nexport abstract class BaseWorkflowState implements IWorkflowDataState { \r\n abstract getPosition(): number;\r\n abstract setPosition(position: number): void;\r\n}","import { PublicProfile } from \"../../people/public-profile.model\";\r\n\r\nexport class AppointmentInfoDataModel{\r\n appointmentType: AppointmentType;\r\n appointmentDate:Date;\r\n cancellationDate?:Date;\r\n doctorAvatarUrl: string;\r\n doctorName: string;\r\n doctorSpecialty: string;\r\n perfilPublico: PublicProfile;\r\n attentionPlaceName: string;\r\n attentionPlaceLatLng: string;\r\n attentionPlaceAddress: string;\r\n medicalConsultationType: string;\r\n medicalConsultationAmount: number;\r\n patientName: string;\r\n patientGender: string;\r\n patientRelationshipType: number;\r\n \r\n idEtapaSolicitud: number;\r\n idEstado: number;\r\n nombreEstado: string;\r\n idResponsableServicio: number;\r\n idEmpresa: number;\r\n }\r\n \r\n export enum AppointmentType {\r\n FACE_TO_FACE = 0,\r\n VIRTUAL = 1\r\n }","export class ProfileSearchResultsModel {\r\n \r\n cantidadTotalResulados: number;\r\n perfiles: ProfileResultModel[];\r\n localidades: ProfileLocationResultModel[];\r\n}\r\n\r\nexport class ProfileResultModel {\r\n id: number;\r\n idEmpresa: number;\r\n idPersona: number;\r\n nombre: string;\r\n sexo: string;\r\n pagoEnLineaHab: string;\r\n citaEnLineaHab: string;\r\n foto: string;\r\n rutaNavegacion: string;\r\n especialidad: string;\r\n subespecialidad: string;\r\n email: string;\r\n sitioWeb: string;\r\n telefonoLocalidad: string;\r\n tipoPerfil: PublicProfileType; \r\n redes: string; \r\n delivery: string; \r\n conceptosDestacados: string;\r\n empresasRelacionadas: string;\r\n}\r\n\r\nexport enum PublicProfileType {\r\n Todos = -1,\r\n Doctor = 1,\r\n Clinica = 2,\r\n Laboratorio = 3,\r\n CentroDeImagenes = 4,\r\n Farmacia = 5,\r\n SedeSura = 7,\r\n Fisioterapia = 8,\r\n SaludYBelleza = 9,\r\n ServiciosOdontologicos = 10,\r\n Opticas = 11,\r\n ClinicasDeAtencionPrimaria = 12\r\n}\r\n\r\nexport class ProfileLocationResultModel {\r\n id: number;\r\n idPersona: number;\r\n empresaObjetoPerfilPublico: string;\r\n empresaPerfilPublico: string;\r\n objetoDetalle: string;\r\n objetoDetalle1: string;\r\n objetoDetalle2: string;\r\n objetoDetalle3: string;\r\n objetoDetalle4: string;\r\n objetoDetalle5: string;\r\n diLocalidad1: string;\r\n diLocalidad2: string;\r\n ciudad: string;\r\n pais: string;\r\n canonicoDivisionTerritorial: string;\r\n teleconsulta: string;\r\n citaEnLineaHabilitada: string;\r\n}","export enum OnlineAppointmentStatus{\r\n COMPLETADA = 1,\r\n VENCIDA = 2,\r\n USUARIO_POR_REGISTRAR = 3,\r\n POR_COMPLETAR = 4\r\n}","import { Inject, Injectable } from '@angular/core';\nimport { User, UserManager } from 'oidc-client';\nimport { from, Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { Token, TokenState } from 'src/app/shared/models/token.model';\nimport { BaseService } from './base.service';\nimport { HttpBaseService } from './http-base-service';\nimport { OidcUserManagerSettings } from 'src/app/shared/models/systems/portal-phr.model';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthOidcService {\n\n private clientOidc: OidcUserManagerSettings | null = null;\n private manager: UserManager;\n private user: User | null = null;\n \n constructor(\n private http: HttpBaseService,\n private baseService: BaseService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private translation: L10nTranslationService\n ) {\n }\n\n initManager(){\n this.clientOidc = this.baseService.getDirectoryClientOidc();\n\n if(this.clientOidc){\n this.manager = new UserManager(this.clientOidc);\n\n this.manager.getUser().then(user => {\n this.user = user;\n }, \n error => {\n this.baseService.handleServiceError(error, \"Error getting user info\"); \n });\n }\n }\n\n redirectToAuthOidc(): boolean{\n console.log('redirectToAuthOidc executed!');\n\n if(!this.clientOidc)\n this.initManager();\n\n return this.clientOidc != null && this.clientOidc.authority != null && !this.clientOidc.authority?.includes('google');\n }\n\n existsManager(): boolean {\n return this.manager != null;\n }\n\n isLoggedIn(): boolean {\n return this.user != null && !this.user.expired;\n }\n\n startAuthentication(state:string, username: string = ''): Promise {\n const args = {\n data: state,\n extraQueryParams: username ? { login_hint: username } : undefined\n };\n\n return this.getManager().signinRedirect(args).catch(error => {\n this.baseService.handleServiceError(error, \"Error redirecting to login page\"); \n });\n }\n\n completeAuthentication():Observable {\n return this.requestTokenFromUser(this.getManager().signinRedirectCallback());\n }\n\n startAuthenticationPopup():Observable{\n return this.requestTokenFromUser(this.getManager().signinPopup());\n }\n\n completeAuthenticationPopup():Observable {\n return this.requestTokenFromUser(this.getManager().signinPopupCallback());\n }\n\n private requestTokenFromUser(promiseUser: Promise): Observable{\n return from(promiseUser)\n .pipe(\n switchMap((user:User|undefined) => {\n\n if(user){\n this.user = user;\n\n const clientOidc = this.baseService.getDirectoryClientOidc();\n\n if(clientOidc){\n return this.baseService.getDirectoryDomain()\n .pipe(switchMap((domain:string)=>{\n\n const _manager = this.getManager();\n\n var urlUserInfo = _manager.settings.metadata \n ? _manager.settings.metadata.userinfo_endpoint\n : clientOidc.authority;\n\n var tokenState = this.parseTokenState(user.state);\n\n var email = tokenState && tokenState.email ? tokenState.email : '';\n\n if(email && user.profile && user.profile.email && email != user.profile.email){\n console.log(\"el email ingresado es diferente al email del OIDC\");\n const dummyToken = new Token();\n dummyToken.isInvalid = true;\n dummyToken.invalidMessage = this.translation.translate(\"invalidEmailOidc\", this.locale.language);\n dummyToken.state = user.state;\n return of(dummyToken);\n } \n\n const model = {\n email: email,\n token: user.access_token,\n clientAuthority: urlUserInfo,\n domain: domain,\n proveedorServicioAutenticacion: clientOidc.authenticationServiceProvider\n }\n \n return this.http.post(\"api/authentication/oidc\", model, null, false)\n .pipe(map((token:Token) => {\n token.state = user.state;\n return token;\n }),\n catchError(err => {\n console.log(\"error complete authentication: \" + err);\n\n if(email && user.profile && user.profile.email && email != user.profile.email){\n console.log(\"el email ingresado es diferente al email del OIDC\");\n const dummyToken = new Token();\n dummyToken.isInvalid = true;\n dummyToken.invalidMessage = this.translation.translate(\"invalidEmailOidc\", this.locale.language);\n dummyToken.state = user.state;\n return of(dummyToken);\n }\n else{\n throw err;\n }\n }));\n }));\n }\n else{\n console.log(\"cliente oidc inexistente\");\n const dummyToken = new Token();\n dummyToken.isInvalid = true;\n return of(dummyToken);\n }\n }\n else {\n console.log(\"usuario inexistente\");\n const dummyToken = new Token();\n dummyToken.isInvalid = true;\n return of(dummyToken);\n }\n }),\n catchError(err => {\n console.log(\"error complete authentication: \" + err);\n const dummyToken = new Token();\n dummyToken.isInvalid = true; \n dummyToken.invalidMessage = err.message;\n this.baseService.handleServiceError(err, \"OIDC Error\");\n\n return of(dummyToken);\n })\n );\n }\n\n private getManager(): UserManager{\n if(this.manager == null){\n this.initManager();\n }\n\n return this.manager;\n }\n\n private parseTokenState(state: string): TokenState {\n let tokenState: TokenState;\n \n try {\n tokenState = JSON.parse(state) as TokenState;\n } \n catch (error) {\n tokenState = new TokenState();\n tokenState.returnUrl = state;\n }\n\n return tokenState;\n }\n}","import { ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { L10nTranslationService } from 'angular-l10n';\r\nimport { MessageBusService, OpenSnackBarMessage, SnackBarType } from 'src/app/core/services/message-bus.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\n\r\n@Component({\r\n selector: 'app-avatar-upload',\r\n templateUrl: './avatar-upload.component.html',\r\n styleUrls: ['./avatar-upload.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AvatarUploadComponent {\r\n\r\n @Input() options : AvatarUploadComponentOptions;\r\n @Input() fileUrl = \"\";\r\n @Input() id: number;\r\n @Input() uploadData: AvatarUploadModel;\r\n\r\n @Output() onFileUploaded = new EventEmitter();\r\n\r\n uploading : boolean = false;\r\n\r\n constructor(\r\n private messageBusService: MessageBusService,\r\n private translation: L10nTranslationService,\r\n private userService: UserService,\r\n private cd: ChangeDetectorRef\r\n ) { }\r\n\r\n onFileSelected(event: any) {\r\n const file : File = event.target.files[0];\r\n if (file) {\r\n this.uploading = true;\r\n this.userService.uploadProfilePicture(file).subscribe({\r\n next: this.uploadProfilePictureNext.bind(this),\r\n error: this.uploadProfilePictureError.bind(this)\r\n });\r\n }\r\n }\r\n\r\n deletePicture() {\r\n this.uploading = true;\r\n this.uploadProfilePictureNext();\r\n }\r\n\r\n private uploadProfilePictureNext(args?: AvatarUploadedFileModel): void {\r\n this.onFileUploaded.emit(args);\r\n if (!this.options.edit) {\r\n const uploadData = this.uploadData ?? {ubicacionLogo: null};\r\n uploadData.ubicacionLogo = args?.webUrl;\r\n this.userService.updateProfilePicture(uploadData).subscribe({\r\n next: this.updateProfilePictureNext.bind(this),\r\n error: this.uploadProfilePictureError.bind(this)\r\n });\r\n } else {\r\n this.uploading = false;\r\n }\r\n }\r\n\r\n private updateProfilePictureNext(_: any): void {\r\n this.showToast(this.translation.translate('shared.editUser.text12'), SnackBarType.SUCCESS);\r\n this.uploading = false;\r\n }\r\n\r\n private uploadProfilePictureError(args: any): void {\r\n this.uploading = false;\r\n this.showToast(args, SnackBarType.ERROR);\r\n this.cd.detectChanges();\r\n }\r\n\r\n private showToast(messageText: string, snackBarType: SnackBarType) {\r\n const message = new OpenSnackBarMessage();\r\n message.text = messageText;\r\n message.type = snackBarType;\r\n message.duration = 3000;\r\n this.messageBusService.openSnackBar(message);\r\n }\r\n\r\n}\r\n\r\nexport class AvatarUploadComponentOptions {\r\n requiredFileType: string; // List of file types like 'image/png,image/jpeg' \r\n showFileOnceUpload: boolean = true;\r\n edit = false;\r\n // Labels\r\n selectFileLabel: string;\r\n changeFileLabel: string;\r\n changePictureLabel: string;\r\n deleteFileLabel: string;\r\n}\r\n\r\nexport class AvatarUploadedFileModel {\r\n webUrl: string;\r\n fileName: string;\r\n fileExtension: string;\r\n}\r\n\r\nexport class AvatarUploadModel {\r\n idPersona?: number;\r\n idRelacionDependiente?: number;\r\n ubicacionLogo?: string;\r\n}","
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{options.selectFileLabel}}\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n {{options.changeFileLabel}} \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { CloseRouteDialogMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { AvatarUploadComponentOptions, AvatarUploadedFileModel } from '../../avatar-upload/avatar-upload.component';\r\nimport CommonTypesHelper from 'src/app/shared/helpers/common-types-helper';\r\nimport { StateType } from 'src/app/shared/enums/state-type.enum';\r\nimport { TerritorialDivisionsService } from 'src/app/core/services/territorial-divisions.service';\r\nimport { TextLanguage } from 'src/app/shared/models/people/text-language.model';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'app-view-user',\r\n templateUrl: './view-user.component.html',\r\n styleUrls: ['./view-user.component.css']\r\n})\r\n\r\nexport class ViewUserComponent implements OnInit, OnDestroy {\r\n\r\n private ngUnsubscribe = new Subject();\r\n fechaNacimiento: string | null;\r\n loggedInUser: ViewUserComponentDto = null as any; \r\n translations = {\r\n man: \"\",\r\n women: \"\", \r\n };\r\n avatarUploadOptions : AvatarUploadComponentOptions;\r\n \r\n constructor(\r\n private userService: UserService,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n private translation: L10nTranslationService, \r\n private router: Router,\r\n private messageBusService: MessageBusService,\r\n private territorialDivisionService: TerritorialDivisionsService\r\n ) {\r\n moment.locale(this.locale.language);\r\n this.avatarUploadOptions = new AvatarUploadComponentOptions();\r\n this.avatarUploadOptions.requiredFileType = \"image/png,image/jpeg\";\r\n this.avatarUploadOptions.selectFileLabel = \"añadir foto\";\r\n this.avatarUploadOptions.changeFileLabel = \"Editar\";\r\n this.avatarUploadOptions.showFileOnceUpload = true;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.translation.onChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: () => {\r\n this.translations.man = this.translation.translate('man');\r\n this.translations.women = this.translation.translate('women');\r\n\r\n this.avatarUploadOptions.selectFileLabel = this.translation.translate('shared.viewUser.text8');\r\n this.avatarUploadOptions.changeFileLabel = this.translation.translate('shared.viewUser.text3');\r\n this.avatarUploadOptions.changePictureLabel = this.translation.translate('shared.viewUser.text9');\r\n this.avatarUploadOptions.deleteFileLabel = this.translation.translate('shared.viewUser.text10');\r\n }\r\n });\r\n\r\n this.userService.getUserPersonLoggedIn()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(p => {\r\n if (p) \r\n this.loggedInUser = p as ViewUserComponentDto;\r\n\r\n if (p?.fechaNacimiento && new Date(p?.fechaNacimiento).getFullYear() === 1900) {\r\n this.loggedInUser.fullName = \"\";\r\n this.loggedInUser.sexName = \"\";\r\n this.loggedInUser.residenceCountryName = [];\r\n this.fechaNacimiento = null;\r\n } else {\r\n this.loggedInUser.fullName = `${this.loggedInUser.nombre} ${this.loggedInUser.apellido}`;\r\n let feNacimiento = this.loggedInUser.fechaNacimiento ? new Date(this.loggedInUser.fechaNacimiento) : null;\r\n this.fechaNacimiento = CommonTypesHelper.dateHasValue(feNacimiento) ? moment(feNacimiento).format('D [de] MMMM, yyyy') : null;\r\n \r\n if (CommonTypesHelper.stringHasValue(this.loggedInUser.sexo)) {\r\n if (this.loggedInUser.sexo.toLocaleLowerCase() == \"m\") {\r\n this.loggedInUser.sexName = this.translations.man;\r\n this.loggedInUser.sexIconClass = \"phr-iconset-hombre\"; \r\n } else {\r\n this.loggedInUser.sexName = this.translations.women;\r\n this.loggedInUser.sexIconClass = \"phr-iconset-mujer\";\r\n }\r\n }\r\n }\r\n var country = this.territorialDivisionService.getAvailableCountries().find(c => c.idPais == this.loggedInUser.idPaisResidencia);\r\n\r\n if(country){\r\n this.loggedInUser.residenceCountryName = country.nombreI18n;\r\n } \r\n });\r\n\r\n // On Header Back click\r\n this.messageBusService.onNavigateBack()\r\n .pipe(takeUntil(this.ngUnsubscribe)) \r\n .subscribe(m => {\r\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n this.messageBusService.refreshProfileMenu();\r\n }\r\n\r\n onUserEditClick() {\r\n this.router.navigate(['configuracion/usuario/edicion']); \r\n }\r\n\r\n onAvatarUploaded(file: AvatarUploadedFileModel) {\r\n this.loggedInUser.ubicacionLogo = file?.webUrl;\r\n this.userService.updateUserLoggedIn(this.loggedInUser);\r\n }\r\n \r\n}\r\n\r\nexport class ViewUserComponentDto extends UserPerson {\r\n fullName: string;\r\n sexName: string;\r\n sexIconClass: string;\r\n residenceCountryName: TextLanguage[];\r\n}\r\n\r\n","
\r\n \r\n\r\n
\r\n {{'shared.viewUser.text1' | translate:locale.language}} {{loggedInUser.nombre}}\r\n ({{'shared.viewUser.text2' | translate:locale.language}})\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n {{'shared.viewUser.text4' | translate:locale.language}}\r\n
\r\n
\r\n {{loggedInUser.fullName}}\r\n
\r\n
\r\n
\r\n
\r\n {{'shared.viewUser.text5' | translate:locale.language}}\r\n
\r\n
\r\n {{ fechaNacimiento }} \r\n
\r\n
\r\n
\r\n
\r\n {{'shared.viewUser.text6' | translate:locale.language}}\r\n
\r\n
\r\n \r\n {{loggedInUser.sexName}}\r\n
\r\n
\r\n
\r\n
\r\n {{ 'shared.viewUser.text11' | translate:locale.language }}\r\n
\r\n
\r\n {{loggedInUser.residenceCountryName | i18nText:locale.language}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[appCapitalize]'\n})\nexport class CapitalizeDirective {\n\n constructor(private el: ElementRef) { }\n\n @HostListener('input', ['$event']) onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n input.value = this.capitalize(input.value);\n }\n\n private capitalize(value: string): string {\n if (!value) {\n return value;\n }\n\n return value.charAt(0).toUpperCase() + value.slice(1);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { AppStorageService } from '../app-storage.service';\nimport { BaseService } from '../base.service';\n\n/*\nIt is important for this Service to NOT be a Singleton (avoid adding \"providedIn: 'root'\")\nin order to work properly. If not all the event related to connection and re-connection get mixed between all the clients that use the service\n*/\n@Injectable() \nexport abstract class SignalrService { \n protected url: any = environment.cloudHubUrl;\n protected hubName : string;\n protected connection: any;\n protected proxy: any; \n protected connectionLostRetryTimeInSeconds : number = 2;\n protected waitingConnectionLostRetry = false; \n protected connectionEstablishedSubject = new Subject();\n protected connectionLostSubject = new Subject(); \n\n constructor(\n protected baseService: BaseService,\n protected appStorageService: AppStorageService) { \n } \n\n public init() {\n \n // Create proxy\n this.createConnection();\n \n // Call proper registration methods (this will be implemented in each particular service)\n this.registerOnServerEvents();\n\n // Stablish connection\n this.connect();\n }\n\n public createConnection(): void { \n this.connection = $.hubConnection(this.url); \n this.proxy = this.connection.createHubProxy(this.hubName); \n\n this.connection.disconnected(() => {\n this.handleConnectionLost();\n }); \n }\n\n protected getAuthorizationToken() {\n let token = this.appStorageService.getToken();\n\n return token.access_token;\n }\n\n public connect(): void { \n let token = this.getAuthorizationToken();\n\n // Set authorization token\n this.connection.qs = { 'authorization': token };\n\n // Connection expired after 7 min, so lets send a ping every 5 min to keep connection active\n let pingTime = 5 * 60 * 1000;\n\n this.connection.start({ \n pingInterval: 5 * 60 * 1000 \n }).done((data: any) => {\n console.log('Connected to Processing Hub');\n this.connectionLostRetryTimeInSeconds = 2; \n this.connectionEstablishedSubject.next(); \n })\n .catch((error: any) => {\n console.log('Hub error -> ' + error);\n });\n }\n\n protected handleConnectionLost() {\n if (this.waitingConnectionLostRetry)\n return;\n\n // Skip the first re-connection intent\n if (this.connectionLostRetryTimeInSeconds > 2)\n this.connectionLostSubject.next();\n\n this.waitingConnectionLostRetry = true;\n\n console.log(\"SignalR Connection Lost. Waiting to reconnect: \" + this.connectionLostRetryTimeInSeconds + \" seconds\");\n\n setTimeout(() => {\n this.connectionLostRetryTimeInSeconds = this.connectionLostRetryTimeInSeconds * 2;\n this.waitingConnectionLostRetry = false;\n\n // Re-connect\n this.connect();\n }, this.connectionLostRetryTimeInSeconds * 1000);\n }\n\n public joinGroup(groupId: number): void {\n this.proxy.invoke('JoinGroup', groupId)\n .catch((error: any) => {\n console.log('JoinGroup error -> ' + error); \n });\n }\n\n abstract registerOnServerEvents(): void;\n\n onConnectionStablished() : Observable {\n return this.connectionEstablishedSubject.asObservable();\n }\n\n onConnectionLost() : Observable {\n return this.connectionLostSubject.asObservable();\n }\n}\n\n","export class CompanyModel{\r\n id:number;\r\n name: string;\r\n}","export enum AuthenticationServiceProvider {\n Assa = 12,\n Sura = 13,\n Google = 14,\n Cliniweb = 33\n}\n","\nimport { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-learn-more-dialog',\n templateUrl: './learn-more-dialog.component.html',\n styleUrls: ['./learn-more-dialog.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class LearnMoreDialogComponent implements OnInit {\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private mdDialogRef: MatDialogRef, \n ) { }\n\n ngOnInit(): void {\n }\n\n close(){\n this.mdDialogRef.close();\n }\n}\n","
\n
\n \n
\n
\n \n
\n
","import { Injectable } from '@angular/core';\r\nimport { PortalPhr } from 'src/app/shared/models/systems/portal-phr.model';\r\nimport { HttpBaseService } from './http-base-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PortalPHRService {\r\n\r\n constructor(private http: HttpBaseService) { } \r\n\r\n getByUrl(serverUrl: string) {\r\n let url = \"api/portalphr?url=\" + serverUrl;\r\n\r\n return this.http.get(url, null, false)\r\n } \r\n \r\n}","import { Injectable } from '@angular/core';\nimport { Licence } from 'src/app/shared/models/systems/license.model';\nimport { HttpBaseService } from './http-base-service';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AppStorageService, STORAGE } from './app-storage.service';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LicenseService {\n\n constructor(\n private http: HttpBaseService,\n private appStorageService: AppStorageService\n ) { }\n\n get(idEmpresa:number, idTipo:number, idResponsableServicio:number):Observable{\n const url = `api/licencias?idTipo=${idTipo}&idEmpresa=${idEmpresa}&idResponsableServicio=${idResponsableServicio}`;\n \n return this.http.get(url, null, false);\n }\n\n getLicensePhr(idEmpresa: number, idResponsableServicio?: number):Observable{\n\n idResponsableServicio = idResponsableServicio ?? -1;\n\n const url = `api/licencias?idTipo=${LICENSE_TYPE.PHR}&idEmpresa=${idEmpresa}&idResponsableServicio=${idResponsableServicio}`;\n\n if(idResponsableServicio < 0){\n const license = this.appStorageService.getItemSession(STORAGE.LICENSE, environment.encryptLocalStorage);\n\n if(!license || license === undefined){\n return this.http.get(url, null, false).pipe(map((license:Licence)=>{\n\n this.appStorageService.setItemSession(STORAGE.LICENSE, license, environment.encryptLocalStorage);\n\n return license;\n }));\n }\n else{\n return of(license);\n }\n }\n else{\n return this.http.get(url, null, false);\n } \n }\n}\n\nexport enum LICENSE_TYPE{\n PHR = 6\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { L10nConfig, L10nLocale, L10nTranslationService, L10N_CONFIG, L10N_LOCALE } from 'angular-l10n';\nimport { Observable, of, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Link } from 'src/app/shared/models/people/link.model';\nimport { ConfiguracionServicioAutenticacionPHR, OidcUserManagerSettings, PHRVersion, PortalPhr } from 'src/app/shared/models/systems/portal-phr.model';\nimport { environment } from 'src/environments/environment';\nimport { AppStorageService, STORAGE } from './app-storage.service';\nimport { BaseHttpServiceUnauthorizeException, HttpBaseService } from './http-base-service';\nimport { PortalPHRService } from './portal-phr.service';\nimport { ComponentFinishLoadingMessage, LocaleChangeMessage, MessageBusService, ServiceErrorMessage, SessionExpiredMessage } from 'src/app/core/services/message-bus.service';\nimport * as moment from 'moment';\nimport { Directory, DirectoryType } from 'src/app/shared/models/systems/directory.model';\nimport { DirectoryService } from './directory.service';\nimport { GoogleAnalyticsService } from './google-analytics.service';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\nimport { LegalAgreements } from 'src/app/shared/interfaces/legal-agreements';\nimport { LicenseService } from './license.service';\nimport { Licence } from 'src/app/shared/models/systems/license.model';\nimport { CompanyModel } from 'src/app/shared/models/systems/company.model';\nimport { AuthenticationServiceProvider } from 'src/app/shared/enums/authentication-service-provider';\nimport { LegalAgreementType } from 'src/app/shared/enums/legal-agreements-type.enum';\nimport { LegalAgreementsDialogComponent, LegalAgreementsDialogData } from 'src/app/shared/components/dialogs/legal-agreements-dialog/legal-agreements-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { LearnMoreDialogComponent } from 'src/app/shared/components/dialogs/learn-more-dialog/learn-more-dialog.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BaseService {\n\n private localeChangedSource:Subject; \n localeChanged$:Observable;\n\n constructor(\n private http: HttpBaseService,\n private messageBusService: MessageBusService,\n private router: Router,\n private appStorageService: AppStorageService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n @Inject(L10N_CONFIG) private l10nConfig: L10nConfig,\n private translation: L10nTranslationService,\n private portalPhrService: PortalPHRService,\n private directoryService : DirectoryService,\n private licenseService: LicenseService,\n private dialog: MatDialog,\n ) {\n this.localeChangedSource = new Subject();\n this.localeChanged$ = this.localeChangedSource.asObservable();\n this.setConfigTranslation();\n }\n\n setConfigTranslation(){\n this.translation.onChange().subscribe({\n next: (locale: L10nLocale) => {\n this.localeChangedSource.next(locale);\n }\n });\n this.translation.onError().subscribe({\n next: (error: any) => {\n if (error) console.log(error);\n }\n });\n }\n\n checkVersion(): void{\n const version = this.appStorageService.getItem(STORAGE.VERSION);\n\n if(version){\n if(version !== environment.version){\n this.appStorageService.clearAll();\n this.appStorageService.setItem(STORAGE.VERSION, environment.version);\n }\n }\n else{\n this.appStorageService.setItem(STORAGE.VERSION, environment.version);\n }\n }\n\n getAppConfig():Observable {\n let url = encodeURIComponent(window.location.origin);\n return this.portalPhrService.getByUrl(url)\n .pipe(map((directory: PortalPhr) =>{\n this.appStorageService.setItemSession(STORAGE.DIRECTORY, directory);\n this.setDefaultLanguage(directory.localizacionDefecto);\n this.messageBusService.showSignupLoginHeaderMenu(directory.versionPhr >= PHRVersion.V2);\n if(environment.production){\n GoogleAnalyticsService.loadGoogleAnalytics(directory.analyticsKey);\n }\n }));\n }\n\n getMenuLinks(language: string = ''): Observable{\n language = language ? language : this.getLanguage();\n let companyId = this.getCompanyId();\n\n let _menuLinks: Link[] = this.appStorageService.getItemSession(STORAGE.MENU, true);\n\n if(_menuLinks && _menuLinks.length > 0){\n return of(_menuLinks);\n }\n else {\n return this.http.get(\"api/layout/menu/\" + language + \"?idEmpresa=\" + companyId, null, false)\n .pipe(map((links: Link[])=>{\n this.appStorageService.setItemSession(STORAGE.MENU, links, true);\n\n return links;\n }));\n }\n }\n\n getMenuLinkByAreaId(language: string, areaId: number) : Observable {\n return this.getMenuLinks(language)\n .pipe(map((links: Link[]) => {\n return links? links.find(l => l.idAreaSistema == areaId) : undefined;\n })\n );\n }\n\n getDirectory():PortalPhr {\n let directory = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory;\n }\n\n getAuthenticationProviders():ConfiguracionServicioAutenticacionPHR[]{\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory.clientesOidc;\n } \n\n getCompanyId():number {\n let directory = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory && directory.idEmpresa ? directory.idEmpresa : 0;\n }\n\n getCompanyByLicense():Observable{\n return this.licenseService.getLicensePhr(this.getCompanyId())\n .pipe(map(license=>{\n\n let company: CompanyModel = new CompanyModel();\n\n if(license == null){\n company.id = environment.idEmpresaCliniwebPHR ;\n company.name = this.getCliniwebDomain();\n }\n else{\n company.id = this.getCompanyId();\n company.name = this.getCompanyName();\n }\n\n return company;\n }));\n }\n\n isLicensedCompany(idResponsableServicio?:number):Observable{\n return this.licenseService.getLicensePhr(this.getCompanyId(), idResponsableServicio)\n .pipe(map((license:Licence)=>{\n return license != null;\n }));\n }\n\n getCliniwebDirectoryCompanyId():number {\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory && directory.idEmpresaDestinoDirectorio ? directory.idEmpresaDestinoDirectorio : 0;\n }\n\n getCliniwebDirectoryCompanyName():string {\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory && directory.nombreEmpresaDestinoDirectorio? directory.nombreEmpresaDestinoDirectorio : \"\";\n }\n\n getCliniwebDirectoryLocationCompanyIds():string {\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory && directory.idsEmpresasLocalidades? directory.idsEmpresasLocalidades : \"\";\n }\n\n getCompanyName():string {\n let directory = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory && directory.nombre ? directory.nombre : \"\";\n }\n\n getMenuComponentName():string {\n let directory = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory && directory.nombreMenu ? directory.nombreMenu : \"\";\n }\n\n getBackUrlCompany():string{\n let url = this.appStorageService.getItem(STORAGE.REFERRER);\n return url;\n }\n\n getUrlCompany():string{\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n return directory && directory.urlCorporativo ? directory.urlCorporativo : '';\n }\n\n getDisclaimer(): LegalAgreements | null {\n const directory: PortalPhr = this.getDirectory();\n return directory.descargoResponsabilidad?.trim().length ? JSON.parse(directory.descargoResponsabilidad) : null;\n }\n\n getPrivacyPolicy(): LegalAgreements | null {\n const directory: PortalPhr = this.getDirectory();\n return directory.politicasPrivacidad?.trim().length ? JSON.parse(directory.politicasPrivacidad) : null;\n }\n\n getTermsAndConditions(): LegalAgreements | null {\n const directory: PortalPhr = this.getDirectory();\n return directory.terminosCondiciones?.trim().length ? JSON.parse(directory.terminosCondiciones) : null;\n }\n\n getPublicProfileVersion():string {\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory && directory.versionPerfilPublico ? directory.versionPerfilPublico : \"\";\n }\n\n getLanguage():string {\n let languageString = window.localStorage.getItem(STORAGE.LOCALE);\n\n if(languageString){\n let languageObject = JSON.parse(languageString);\n return languageObject.language;\n }\n else{\n return \"es\";\n }\n }\n\n getCliniwebDomain(){\n return environment.nombreEmpresaCliniwebPHR;\n }\n\n isCliniwebCompany() : boolean {\n let directory = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory && directory.nombre ? directory.nombre == this.getCliniwebDomain() : false;\n }\n\n setDefaultLanguage(language:string){\n let languageString = window.localStorage.getItem(STORAGE.LOCALE);\n\n if(languageString){\n this.setLocale(JSON.parse(languageString));\n }\n else {\n let schema = this.l10nConfig.schema.find(l => l.locale.language == language);\n\n if(!schema)\n schema = this.l10nConfig.schema[0];\n\n this.setLocale(schema.locale);\n }\n }\n\n setLocale(locale: L10nLocale): void {\n this.translation.setLocale(locale);\n let message = new LocaleChangeMessage();\n\n message.language = locale.language;\n\n this.messageBusService.localeChange(message);\n }\n\n getHeaderName():string{\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory? directory.nombreEncabezado : \"\";\n }\n\n getPoliciesControlName():string{\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory? directory.nombrePoliticas : \"\";\n }\n\n getDirectoryClass():string {\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory ? directory.nombreClaseEstilo : \"cliniweb\";\n }\n\n getDirectoryTitle(): string{\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory? directory.titulo : \"\";\n }\n\n getDirectoryUrlFavicon(): string{\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory? directory.urlFavicon : \"\";\n }\n \n getRouteLinkByArea(idAreaSistema:number):string {\n try{\n let menu:Link[] = this.appStorageService.getItemSession(STORAGE.MENU, true);\n\n let link = menu.find(link => link.idAreaSistema == idAreaSistema);\n\n return link ? link.identificadorUrl : '';\n }\n catch{\n return '';\n }\n }\n\n getDirectoryClientOidc() : OidcUserManagerSettings | null {\n try { \n let directory : PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n //TODO allow more than one\n var clienteOidc = directory.clientesOidc.find(c => c.proveedorServicioAutenticacion == AuthenticationServiceProvider.Google \n || c.proveedorServicioAutenticacion == AuthenticationServiceProvider.Sura);\n\n if (clienteOidc && clienteOidc.clienteOidc) {\n var oidcClient : OidcUserManagerSettings = JSON.parse(clienteOidc.clienteOidc);\n oidcClient.authenticationServiceProvider = clienteOidc.proveedorServicioAutenticacion;\n\n return oidcClient;\n }\n }\n catch {\n console.log(\"No se pudo parsear el cliente oidc\");\n }\n\n return null;\n }\n\n getDirectoryDomain(): Observable{\n return this.licenseService.getLicensePhr(this.getCompanyId())\n .pipe(map((license:Licence)=>{\n if(license == null){\n return this.getCliniwebDomain();\n }\n else{\n const directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory? directory.nombreCuentaPaciente : \"\";\n }\n }));\n }\n\n getCliniwebDirectory(companyId: number): Observable{\n let key = STORAGE.CLINIWEB_DIRECTORY + companyId;\n let directory:Directory = this.appStorageService.getItem(key);\n\n if (!directory) {\n return this.directoryService.getByType(companyId, DirectoryType.Cliniweb)\n .pipe(map((directory: Directory) =>{\n this.appStorageService.setItem(key, directory);\n\n return directory;\n }));\n }\n else {\n return of(directory);\n }\n }\n\n isMenuLinksVisible(): boolean{\n let directory:PortalPhr = this.appStorageService.getItemSession(STORAGE.DIRECTORY);\n\n return directory? directory.menuVisible == 'S' : true;\n }\n\n parseObject(json : any) : T {\n let result = {};\n\n // Asign all values\n Object.assign(result, json);\n\n return result as T;\n }\n\n parseObjectDeep(json : any) : T {\n let result = {} as any;\n var keys = Object.keys(json);\n\n for(let i=0; i < keys.length; i++) {\n let camelCasePropName = keys[i].charAt(0).toLowerCase() + keys[i].slice(1);\n result[camelCasePropName] = json[keys[i]];\n } \n\n return result as T;\n }\n\n convertObjectToQS(obj : any) : string {\n let str = [];\n \n for (var p in obj)\n if (obj.hasOwnProperty(p)) {\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p]));\n }\n \n return str.join(\"&\");\n }\n\n goToRoute(path:string) {\n let pathQueryParams = path.split('?');\n let queryParams = pathQueryParams[1];\n\n if(pathQueryParams[1]){\n let params = queryParams.split('&');\n let pair = null;\n let paramsObject:any = {};\n \n params.forEach(p => {\n pair = p.split('=');\n paramsObject[pair[0]] = pair[1];\n });\n \n this.router.navigate([ \"/\" + pathQueryParams[0]], { queryParams: paramsObject });\n }\n else{\n this.router.navigate([ \"/\" + pathQueryParams[0]]);\n }\n }\n\n getSearchSeed() {\n let seed = this.appStorageService.getItem(STORAGE.PROFILE_SEACH_SEED);\n\n if (!seed) {\n // Generate a 6 digits code\n seed = Math.trunc(Math.random() * 1000000);\n\n // Store on local storage\n this.appStorageService.setItem(STORAGE.PROFILE_SEACH_SEED, seed);\n }\n\n return seed;\n }\n\n getLocationFromIdentifier(territorialDivisionIdentifier: string) {\n let parts = territorialDivisionIdentifier? territorialDivisionIdentifier.split(\"/\") : [\"\"];;\n let country = \"\", state = \"\", city = \"\";\n\n // If we search by city or state we will alway get the country. \n // Example \"Panama/bocas-del-toro/chiriqui-grande\" pais=panama&provincia=bocas-del-toro&ciudad=chiriqui-grande\n if (parts.length > 0)\n country = parts[0];\n\n // Second we will alway have the state\n if (parts.length > 1)\n state = parts[1];\n\n // Thrid we will alway have the city\n if (parts.length > 2)\n city = parts[2];\n\n return {\n country: country,\n state: state,\n city: city\n };\n }\n\n // AvatarInitials\n getInitialsString(text:string):string {\n let arrayText = text.trim().replace(/-/g, '').normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").replace(/\\s\\s+/g, ' ').split(\" \");\n\n let result;\n \n if (arrayText.length > 1) {\n\n var lastnamePosition = arrayText.length - 1;\n\n if (lastnamePosition == 0 || (arrayText[lastnamePosition].length >= 2 && arrayText[lastnamePosition].includes('.'))) {\n result = arrayText[0][0] + arrayText[1][0];\n }\n else if (arrayText.length == 4) {\n result = arrayText[0][0] + arrayText[2][0];\n }\n else {\n result = arrayText[0][0] + arrayText[lastnamePosition][0];\n }\n }\n else {\n result = arrayText[0][0];\n }\n \n return result.toUpperCase();\n }\n\n getHashCodeByString(id:number, text:string):number {\n var hash = 0;\n for (var i = 0; i < text.length; i++) {\n hash = text.charCodeAt(i) + ((hash << 5) - hash);\n }\n return hash + id;\n }\n\n getColorByInitials(id:number, initials:string):string {\n var hashCode = this.getHashCodeByString(id, initials);\n\n var colors = [\n \"#0ACBAC\",\n \"#17C65D\",\n \"#C801F2\",\n \"#FD3A58\",\n \"#F06C00\",\n \"#FFC000\",\n \"#296EFA\",\n \"#6B9DFF\",\n \"#7A1FA2\",\n \"#7C59BE\"\n ];\n\n var index = hashCode % colors.length;\n\n return colors[index];\n }\n\n getAvatarInitialObject(id:number, text:string): any{\n \n var initials = this.getInitialsString(text);\n\n var color = this.getColorByInitials(id, initials);\n\n return { initials , color };\n }\n\n public handleServiceError(error: any, errorMessage: string, displayMessage? : string) {\n if (!error || !(error instanceof BaseHttpServiceUnauthorizeException)) {\n let serviceError = new ServiceErrorMessage(errorMessage, displayMessage);\n serviceError.innerError = error;\n this.messageBusService.serviceError(serviceError);\n }\n }\n\n public getBasicDateFormat(date : Date, includeYear: boolean = true, yearSeparator: string = ', ') : string { \n let momentDate = moment(date).locale(this.locale.language);\n let dateDay = momentDate.format('DD');\n let dateMonth = momentDate.format('MMM').toLowerCase().replace(\".\", \"\");\n let dateYear = momentDate.format('YYYY');\n \n dateMonth = dateMonth.charAt(0).toUpperCase() + dateMonth.slice(1);\n\n let yearStr = includeYear? (yearSeparator + dateYear) : \"\";\n\n let resultDateStr = this.locale.language == \"es\"?\n (dateDay + \" \" + dateMonth + yearStr) :\n (dateMonth + \" \" + dateDay + yearStr);\n\n return resultDateStr;\n }\n\n public getMonthName(month: number, uppercaseFirstLetter: boolean = false) : string {\n var monthName = moment(month.toString(), 'M').locale(this.locale.language).format('MMM');\n \n monthName = monthName.toLowerCase().replace(\".\", \"\");\n\n return uppercaseFirstLetter\n ? monthName.charAt(0).toUpperCase() + monthName.slice(1)\n : monthName;\n }\n\n public getBasePath(path: string){\n return path ? path.split(\"/\")[0].split(\"?\")[0] : '';\n }\n\n sendComponentFinishLoadingMessage(formaData: FormComponentData){\n if (!formaData)\n throw \"FormComponentData cannot be null\";\n if (!formaData.idFormulario || !formaData.idControlPadre)\n throw \"FormComponentData cannot be null\";\n\n let event = new ComponentFinishLoadingMessage();\n \n event.idFormulario = formaData.idFormulario;\n event.idControl = formaData.idControlPadre;\n\n this.messageBusService.componentFinishLoading(event); \n }\n\n encryptObj(obj: any): string {\n const _key = CryptoJS.enc.Utf8.parse(environment.cKey);\n const _iv = CryptoJS.enc.Utf8.parse(environment.cKey);\n\n return CryptoJS.AES.encrypt(\n JSON.stringify(obj),\n _key,\n {\n keySize: 16,\n iv: _iv,\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7\n }).toString();\n }\n\n decryptObj(text: string): any {\n const _key = CryptoJS.enc.Utf8.parse(environment.cKey);\n const _iv = CryptoJS.enc.Utf8.parse(environment.cKey);\n const decryptedText = CryptoJS.AES.decrypt(\n text,\n _key,\n {\n keySize: 16,\n iv: _iv,\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7\n }).toString(CryptoJS.enc.Utf8);\n\n return JSON.parse(decryptedText);\n }\n\n openLegalAgreementsDialog(type:LegalAgreementType){\n let data = new LegalAgreementsDialogData();\n\n data.type = type;\n\n this.dialog.open(LegalAgreementsDialogComponent, { data: data, panelClass: ['legal-agreements-dialog'] });\n }\n\n openLearnMoreDialog(){\n this.dialog.open(LearnMoreDialogComponent, { panelClass: ['learn-more-dialog'] });\n }\n\n isIOS() : boolean {\n if (/iPad|iPhone|iPod/.test(navigator.platform)) {\n return true;\n } \n else {\n return typeof(navigator.maxTouchPoints) != 'undefined' \n && navigator.maxTouchPoints > 2 \n && /MacIntel/.test(navigator.platform);\n }\n } \n\n isMacDesktop() : boolean {\n return typeof(navigator.maxTouchPoints) != 'undefined' \n && navigator.maxTouchPoints == 0 \n && /MacIntel/.test(navigator.platform);\n }\n\n getDetailedAgeByDate(birthDate:Date): string{\n const now = new Date();\n let years = now.getFullYear() - birthDate.getFullYear();\n let months = now.getMonth() - birthDate.getMonth();\n let days = now.getDate() - birthDate.getDate();\n\n if (days < 0) {\n months--;\n days += new Date(now.getFullYear(), now.getMonth(), 0).getDate();\n }\n\n if (months < 0) {\n years--;\n months += 12;\n }\n\n return this.getDetailedAge(years, months, days);\n }\n\n getDetailedAge(years: number, months: number, days: number):string{\n const yearSingularText = this.translation.translate('year');\n const yearPluralText = this.translation.translate('years');\n const monthSingularText = this.translation.translate('month');\n const monthPluralText = this.translation.translate('months');\n const daySingularText = this.translation.translate('day');\n const dayPluralText = this.translation.translate('days');\n\n const parts: string[] = [];\n\n if (years > 0) {\n parts.push(`${years} ${years > 1 ? yearPluralText : yearSingularText}`);\n }\n\n if (months > 0) {\n parts.push(`${months} ${months > 1 ? monthPluralText : monthSingularText}`);\n }\n\n if (days > 0) {\n parts.push(`${days} ${days > 1 ? dayPluralText : daySingularText}`);\n }\n\n return parts.join(', ');\n }\n\n isSerializedHtml(text: string): boolean{\n const htmlRegex = /<\\/?[a-z][\\s\\S]*>/i;\n return htmlRegex.test(text);\n }\n}\n","
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{appointment.appointmentStateDisplayName}}\r\n \r\n\r\n \r\n \r\n \r\n {{appointment.appointmentStateDisplayName}}\r\n \r\n \r\n \r\n {{appointment.appointmentStateDisplayName}}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{'shared.cliniwebAppointment.text21' | translate:locale.language}}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {{'shared.cliniwebAppointment.text3' | translate:locale.language}}\r\n \r\n \r\n \r\n\r\n \r\n \r\n
{{appointment.appointmentFormattedDate}}, {{appointment.fechaRequerido | date:'h:mm a' | lowercase}}
\r\n\r\n
\r\n \r\n \r\n \r\n {{appointment.nombreResponsableServicio}} \r\n \r\n \r\n \r\n {{appointment.locationDescription}} \r\n \r\n \r\n \r\n {{'shared.cliniwebAppointment.text11' | translate:locale.language}}\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{'shared.cliniwebAppointment.text4' | translate:locale.language}}\r\n \r\n \r\n \r\n
\r\n\r\n
","import { Component, Inject, OnInit, ViewEncapsulation, Input, OnDestroy, Output, EventEmitter } from '@angular/core';\r\nimport { ComponentLookup } from '../../../decorators/component-lookup.decorator';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { PatientAppointment } from 'src/app/shared/models/process/appointment.model';\r\nimport { IControlComponent } from 'src/app/shared/interfaces/control-component';\r\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { Directory } from 'src/app/shared/models/systems/directory.model';\r\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\r\nimport { Dependent } from 'src/app/shared/models/people/dependent.model';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { AppointmentCancelationRouteDialogModel, AppointmentSummaryRouteDialogModel, PublicProfileRouteDialogModel, RescheduleAppointmentRouteDialogModel } from '../../dialogs/route-dialog/route-dialog.component';\r\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\r\nimport { PublicProfileVersion } from 'src/app/shared/models/systems/portal-phr.model';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { PublicProfileAvatarComponentModel } from '../../public-profile-avatar/public-profile-avatar.component';\r\nimport { PublicProfileType } from 'src/app/shared/models/people/profile-search-results.model';\r\n\r\n@Component({\r\n selector: 'app-cliniweb-appointment',\r\n templateUrl: './cliniweb-appointment.component.html',\r\n styleUrls: ['./cliniweb-appointment.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n@ComponentLookup('CliniwebAppointmentsComponent')\r\nexport class CliniwebAppointmentsComponent implements OnInit, OnDestroy, IControlComponent {\r\n data: FormComponentData;\r\n inProgressState: string;\r\n appointment : CliniwebAppointmentModel;\r\n\r\n //subscribes\r\n private ngUnsubscribe = new Subject();\r\n \r\n // Input / Output\r\n @Input() loading : boolean = false;\r\n @Input() directory : Directory;\r\n @Input() dependents : Dependent[];\r\n @Input() loggedInUser: UserPerson;\r\n @Input() popupView: boolean = false; \r\n @Input() set app(value: PatientAppointment) {\r\n if (!value)\r\n return;\r\n\r\n this.appointment = value as CliniwebAppointmentModel;\r\n\r\n this.avatarModel = new PublicProfileAvatarComponentModel();\r\n this.avatarModel.personId = this.appointment.idResponsableServicio;\r\n this.avatarModel.avatarUrl = this.appointment.urlAvatarResponsableServicio;\r\n this.avatarModel.fullName = this.appointment.nombreResponsableServicio;\r\n this.avatarModel.sex = this.appointment.sexoResponsableServicio;\r\n this.avatarModel.profileType = PublicProfileType.Doctor;\r\n this.avatarModel.defaultBorderColor = \"var(--grayscale11)\"; \r\n\r\n this.setAppointmentExtraData(this.appointment); \r\n };\r\n @Output() onClose: EventEmitter = new EventEmitter();\r\n\r\n translations = {\r\n day: \"\",\r\n hour: \"\",\r\n min: \"\",\r\n me: \"\",\r\n other: \"\",\r\n son: \"\",\r\n daughter: \"\",\r\n father: \"\",\r\n mother: \"\",\r\n completedStateName: \"\",\r\n notCompletedStateName: \"\",\r\n cancelledStateName: \"\",\r\n unconfirmedStateName: \"\",\r\n confirmedStateName: \"\"\r\n };\r\n avatarModel: PublicProfileAvatarComponentModel;\r\n \r\n constructor(\r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n private translation: L10nTranslationService,\r\n public dialog: MatDialog,\r\n private router: Router,\r\n private baseService: BaseService,\r\n private publicProfileService: PublicProfileService,\r\n private routeDialogService: RouteDialogService,\r\n private userService: UserService,\r\n private breakpointObserver: BreakpointObserver) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.translation.onChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: () => {\r\n this.translations.day = this.translation.translate('days'); \r\n this.translations.hour = this.translation.translate('hours'); \r\n this.translations.min = this.translation.translate('minutes'); \r\n this.translations.me = this.translation.translate('me');\r\n this.translations.other = this.translation.translate('other');\r\n this.translations.son = this.translation.translate('son');\r\n this.translations.daughter = this.translation.translate('daughter');\r\n this.translations.father = this.translation.translate('father');\r\n this.translations.mother = this.translation.translate('mother');\r\n this.translations.completedStateName = this.translation.translate('shared.cliniwebAppointment.text8'); \r\n this.translations.notCompletedStateName = this.translation.translate('shared.cliniwebAppointment.text9');\r\n this.translations.cancelledStateName = this.translation.translate('shared.cliniwebAppointment.text10');\r\n this.translations.unconfirmedStateName = this.translation.translate('shared.cliniwebAppointment.text13'); \r\n this.translations.confirmedStateName = this.translation.translate('shared.cliniwebAppointment.text14'); \r\n }\r\n }); \r\n \r\n if (!this.loading)\r\n this.setAppointmentExtraData(this.appointment); \r\n } \r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n setAppointmentExtraData(app: CliniwebAppointmentModel) {\r\n app.patientFirstName = this.getName(app);\r\n app.locationDescription = this.getLocationDescription(app);\r\n app.patientRelationship = this.getPatientRelationship(app);\r\n app.doctorAvatarUrl = this.getAvatarUrl(app);\r\n\r\n app.appointmentExpired = this.isAppointmentExpired(app);\r\n app.appointmentFormattedDate = this.getAppointmentDateStr(app.fechaRequerido, !app.appointmentExpired);\r\n \r\n if (!app.appointmentExpired && (app.idEstado == 2 || app.idEstado == 22 || app.idEstado == 23)) {\r\n app.description = \r\n this.translation.translate('shared.cliniwebAppointment.text1', { \r\n especialidadResponsableServicio: app.especialidadResponsableServicio, \r\n nombreResponsableServicio: app.patientFirstName}); \r\n }\r\n else {\r\n app.description = \r\n this.translation.translate('shared.cliniwebAppointment.text18', { \r\n especialidadResponsableServicio: app.especialidadResponsableServicio, \r\n nombreResponsableServicio: app.patientFirstName});\r\n } \r\n \r\n app.teleconsultation = this.isTeleconsultation(app);\r\n\r\n if (app.teleconsultation)\r\n app.teleconsultationUrl = this.buildTeleconsultationLink(app);\r\n\r\n app.appointmentStateDisplayName = this.getAppointmentStateName(app);\r\n app.appointmentStateClassName = this.getAppointmentStateClassName(app);\r\n app.appointmentStateIconClassName = this.getAppointmentStateIconClassName(app);\r\n }\r\n\r\n getPatientFirstName(item: CliniwebAppointmentModel) {\r\n return item.nombrePaciente.split(\" \")[0];\r\n }\r\n\r\n getName(app: CliniwebAppointmentModel) {\r\n if (app.idPacienteOrigen == this.loggedInUser.id) {\r\n return this.loggedInUser.nombre;\r\n }\r\n\r\n let dependent = this.dependents.find(d => d.idPersona == app.idPacienteOrigen);\r\n if (dependent) {\r\n return dependent?.nombre;\r\n } \r\n\r\n return this.getPatientFirstName(app);\r\n }\r\n\r\n getPatientRelationship(app: CliniwebAppointmentModel) : string {\r\n let relationship = this.translations.other;\r\n\r\n if (app.idPacienteOrigen != this.loggedInUser.id) {\r\n // Search for dependent\r\n let dependent = this.dependents.find(d => d.idPersona == app.idPacienteOrigen);\r\n \r\n relationship = this.userService.getDependentRelationshipName(dependent); \r\n }\r\n else {\r\n relationship = this.translations.me;\r\n }\r\n\r\n return relationship;\r\n } \r\n\r\n getLocationDescription(item : CliniwebAppointmentModel) {\r\n /*let desc = item.direccionLocalidad;\r\n\r\n if (!desc)\r\n desc = item.nombreLocalidad; \r\n\r\n return desc;*/\r\n\r\n return item.nombreLocalidad;\r\n }\r\n\r\n getAvatarUrl(item : CliniwebAppointmentModel) {\r\n let avatarUrl = item.urlAvatarResponsableServicio;\r\n\r\n if (!avatarUrl)\r\n avatarUrl = \"/assets/images/avatar_male_doctor.svg\";\r\n\r\n return avatarUrl;\r\n }\r\n\r\n getAppointmentDateStr(date: Date, includeYear: boolean) {\r\n return this.baseService.getBasicDateFormat(date, includeYear, \" \");\r\n }\r\n\r\n isAppointmentExpired(item : CliniwebAppointmentModel) {\r\n let now = new Date().getTime();\r\n let appDate = new Date(item.fechaRequerido).getTime();\r\n\r\n return appDate <= now;\r\n }\r\n\r\n getAppointmentRemainingTime(item : CliniwebAppointmentModel) {\r\n const dayDiff = 60 * 60 * 24;\r\n const hrDiff = 60 * 60;\r\n let now = new Date();\r\n let appDate = new Date(item.fechaRequerido);\r\n let timeDiff = (appDate.getTime() - now.getTime()) / 1000;\r\n let diffStr = \"\";\r\n\r\n if (timeDiff <= 0) {\r\n diffStr = this.inProgressState;\r\n }\r\n else if (timeDiff > dayDiff) {\r\n diffStr = (Math.ceil(timeDiff / dayDiff)) + \" \" + this.translations.day;\r\n }\r\n else if (timeDiff > hrDiff) {\r\n diffStr = (Math.floor(timeDiff / hrDiff)) + \" \" + this.translations.hour;\r\n }\r\n else {\r\n diffStr = (Math.floor(timeDiff / 60)) + \" \" + this.translations.min;\r\n }\r\n\r\n return diffStr;\r\n }\r\n\r\n isTeleconsultation(item : CliniwebAppointmentModel) : boolean {\r\n return (item.teleconsulta != undefined && item.teleconsulta.toLocaleUpperCase() === \"S\");\r\n }\r\n\r\n getAppointmentStateName(app: CliniwebAppointmentModel) : string {\r\n let stateName = app.nombreEstado; \r\n \r\n if (this.isAppointmentExpired(app)) {\r\n // Cancelado = 7\r\n // No asistio = 28\r\n if (app.idEstado != 7 && app.idEstado != 28)\r\n stateName = this.translation.translate('shared.cliniwebAppointment.text19');\r\n }\r\n else {\r\n // Cobrado = 3\r\n // Sin Cobrar = 27\r\n if (app.idEstado == 3 || app.idEstado == 27)\r\n stateName = this.translation.translate('shared.cliniwebAppointment.text20');\r\n \r\n }\r\n \r\n return stateName;\r\n }\r\n\r\n getAppointmentStateClassName(app: CliniwebAppointmentModel) : string {\r\n let stateClassName = \"\";\r\n \r\n if (this.isAppointmentExpired(app)) {\r\n if (app.idEstado == 7)\r\n stateClassName = \"cancelled\";\r\n else if (app.idEstado == 28)\r\n stateClassName = \"not-completted\"; \r\n }\r\n else {\r\n if (app.idEstado == 23 || app.idEstado == 24 || app.idEstado == 30)\r\n stateClassName = \"confirmed\";\r\n else if (app.idEstado == 7)\r\n stateClassName = \"cancelled\";\r\n else if (app.idEstado == 28)\r\n stateClassName = \"not-completted\";\r\n else if (app.idEstado == 2)\r\n stateClassName = \"not-confirmed\";\r\n else if (app.idEstado == 22)\r\n stateClassName = \"pending\";\r\n }\r\n\r\n return stateClassName;\r\n }\r\n\r\n getAppointmentStateIconClassName(app: CliniwebAppointmentModel) : string {\r\n let stateIconClass = \"phr-iconset-PHR-date-2\";\r\n \r\n if (this.isAppointmentExpired(app)) {\r\n if (app.idEstado == 7 || app.idEstado == 28)\r\n stateIconClass = \"phr-iconset-close-circle\";\r\n }\r\n else {\r\n stateIconClass = \"phr-iconset-validacion\";\r\n\r\n if (app.idEstado == 7 || app.idEstado == 28)\r\n stateIconClass = \"phr-iconset-close-circle\";\r\n else if (app.idEstado == 22 || app.idEstado == 2)\r\n stateIconClass = \"phr-iconset-alert\";\r\n else if (app.idEstado == 3 || app.idEstado == 27)\r\n stateIconClass = \"phr-iconset-PHR-date-2\";\r\n } \r\n \r\n return stateIconClass;\r\n }\r\n\r\n buildTeleconsultationLink(item : CliniwebAppointmentModel) {\r\n return this.directory.url + \"/meet/\" + item.teleconsultaId;\r\n } \r\n \r\n onNewAppointmentClick() { \r\n this.router.navigate([\"/doctores\"]);\r\n }\r\n\r\n onAppointmentViewMoreClick(appointment: CliniwebAppointmentModel) {\r\n let routeDialogModel = new AppointmentSummaryRouteDialogModel();\r\n const isMobile: boolean = this.breakpointObserver.isMatched('(max-width: 800px)');\r\n if (isMobile) routeDialogModel.headerName = 'DefaultBackHeaderComponent';\r\n routeDialogModel.route = \"citas/\" + appointment.idEtapaSolicitud;\r\n //routeDialogModel.state = null;\r\n \r\n this.routeDialogService.openDialog(routeDialogModel);\r\n }\r\n\r\n openVideConsultationLink(link: string) {\r\n window.open(link, \"_blank\");\r\n }\r\n\r\n onNavigateWithWaze(appointment: CliniwebAppointmentModel) {\r\n let coordinates = appointment.coordenadasLocalidad.replace(\";\", \",\");\r\n let url = \"https://www.waze.com/ul?ll=\" + coordinates + \"&navigate=yes&zoom=17\";\r\n\r\n window.open(url, \"_blank\");\r\n }\r\n\r\n onCancelAppointment(appointment: CliniwebAppointmentModel) {\r\n let routeDialogModel = new AppointmentCancelationRouteDialogModel();\r\n routeDialogModel.route = \"citas/cancelar/\" + appointment.idEtapaSolicitud;\r\n routeDialogModel.state = null;\r\n\r\n this.routeDialogService.openDialog(routeDialogModel);\r\n }\r\n\r\n onUnconfirmedAppointmentClick() {\r\n let dialogData = new DialogData();\r\n \r\n dialogData.title = \"\";\r\n dialogData.message = this.translation.translate(\"shared.cliniwebAppointment.text15\"); \r\n dialogData.confirmText = this.translation.translate(\"shared.cliniwebAppointment.text16\"); \r\n dialogData.showHeaderIcon = false;\r\n dialogData.headerIconClass = \"phr-iconset-info\"; \r\n dialogData.showCancelButton = false;\r\n dialogData.cancelText = \"\";\r\n\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n data: dialogData,\r\n panelClass: ['confirm-logout-dialog', 'confirm-logout-animation-in', \"unconfirmed-appointment-info-dialog\"]\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(accepted => {\r\n \r\n });\r\n }\r\n \r\n onReScheduleAppointment(item : CliniwebAppointmentModel) {\r\n this.goToPublicProfile(item); \r\n }\r\n\r\n closePopupView() {\r\n this.onClose.emit();\r\n }\r\n\r\n goToPublicProfile(item : CliniwebAppointmentModel) {\r\n // If the doctor does not have a public profile\r\n if (!item.identificadorPerfilPublico) {\r\n let dialogData = new DialogData();\r\n dialogData.title = this.translation.translate(\"shared.pastAppointments.text4\");\r\n dialogData.message = this.translation.translate(\"shared.pastAppointments.text5\");\r\n dialogData.confirmText = this.translation.translate(\"shared.pastAppointments.text6\");\r\n dialogData.showCancelButton = false;\r\n\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n data: dialogData\r\n });\r\n }\r\n else {\r\n let publicProfileVersion = this.baseService.getPublicProfileVersion();\r\n \r\n if (publicProfileVersion == PublicProfileVersion.V1) {\r\n let url = this.publicProfileService.getPublicProfileUrl(item.identificadorPerfilPublico); \r\n this.router.navigate([url], { queryParams: {rs: true} });\r\n }\r\n else {\r\n /*let routeDialogModel = new RescheduleAppointmentRouteDialogModel();\r\n routeDialogModel.route = \"perfil/reprogramar/\" + item.identificadorPerfilPublico;\r\n routeDialogModel.state = null;*/\r\n \r\n let url = this.publicProfileService.getPublicProfileUrl(item.identificadorPerfilPublico);\r\n let routeDialogModel = new PublicProfileRouteDialogModel();\r\n routeDialogModel.route = url;\r\n \r\n this.routeDialogService.openDialog(routeDialogModel);\r\n } \r\n } \r\n }\r\n\r\n}\r\n\r\nexport class CliniwebAppointmentModel extends PatientAppointment {\r\n appointmentExpired: boolean = false;\r\n teleconsultation: boolean = false;\r\n appointmentFormattedDate: string;\r\n description: string;\r\n patientFirstName: string;\r\n locationDescription: string;\r\n patientRelationship: string;\r\n doctorAvatarUrl: string;\r\n \r\n appointmentStateDisplayName: string;\r\n appointmentStateClassName: string;\r\n appointmentStateIconClassName: string;\r\n teleconsultationUrl: string;\r\n}\r\n\r\n\r\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { Direction } from 'src/app/shared/enums/direction.enum';\nimport { FormComponentData } from 'src/app/shared/models/people/form-control.model';\nimport { Form } from 'src/app/shared/models/people/form.model';\nimport { Link } from 'src/app/shared/models/people/link.model';\nimport { TextLanguage } from 'src/app/shared/models/people/text-language.model';\nimport { BaseService } from './base.service';\nimport { HttpBaseService } from './http-base-service';\nimport { map } from 'rxjs/operators';\nimport { THEMES, Theme } from 'src/themes/theme';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutService {\n\n private mobileDelimiter: number = 800;\n\n private hideComponentSource = new Subject();\n hideComponentSource$ = this.hideComponentSource.asObservable();\n\n private postNavigateSource = new Subject();\n postNavigateSource$ = this.postNavigateSource.asObservable();\n\n private scrollingBodySource = new Subject();\n scrollingBodySource$ = this.scrollingBodySource.asObservable();\n\n constructor(\n private http: HttpBaseService,\n private baseService:BaseService,\n @Inject(THEMES) private themes: Theme[],\n @Inject(DOCUMENT) private document: any\n ) { }\n\n getMenuLinks(language: string = ''):Observable{\n language = language ? language : this.baseService.getLanguage();\n let companyId = this.baseService.getCompanyId();\n \n return this.http.get(\"api/layout/menu/\" + language + \"?idEmpresa=\" + companyId, null, false);\n }\n\n getForm(idAreaSistema:number):Observable
{\n let companyId = this.baseService.getCompanyId(); \n let url = \"api/layout/formulario?idEmpresa=\" + companyId + \"&idAreaSistema=\" + idAreaSistema;\n\n return this.http.get(url, null, false);\n }\n\n getTextByLanguage(objectSerialized: any, language: string): string{\n try { \n let language = this.baseService.getLanguage();\n\n let textArray:TextLanguage[] = (typeof(objectSerialized) == 'object')\n ? objectSerialized\n : JSON.parse(objectSerialized);\n\n let textLanguage = textArray.find(t => t.lenguaje == language);\n\n return textLanguage ? textLanguage.texto : objectSerialized;\n }\n catch {\n return objectSerialized;\n }\n }\n\n hideComponent(data: FormComponentData){\n this.hideComponentSource.next(data);\n }\n\n postNavigate(){\n this.postNavigateSource.next();\n }\n\n onScrollingBody(dir:Direction){\n this.scrollingBodySource.next(dir);\n }\n\n loadLicenseTheme(classNameContainer:string, idResponsableServicio?: number){\n return this.baseService.isLicensedCompany()\n .pipe(\n map((result:boolean)=>{\n\n let directoryClassname: string = 'cliniweb'; \n\n if(result){\n directoryClassname = this.baseService.getDirectoryClass();\n }\n\n const theme = this.themes.find(t => t.name === directoryClassname);\n\n if(!theme) return;\n\n const containerElement = this.document.getElementsByClassName(classNameContainer)[0];\n\n for (const key in theme.properties) {\n containerElement.style.setProperty(key, theme.properties[key]);\n }\n })\n );\n }\n\n isMobile(event?: any):boolean{\n if(event && event.target && event.target.innerWidth){\n return event.target.innerWidth <= this.mobileDelimiter;\n }\n else{\n return window.innerWidth <= this.mobileDelimiter;\n }\n }\n\n overflowBodyDisabled(){\n this.document.documentElement.classList.add('overflow-disabled');\n }\n\n overflowBodyEnabled(){\n this.document.documentElement.classList.remove('overflow-disabled');\n }\n\n addComponentInitClass(componentClass: string){\n this.document.documentElement.classList.add(componentClass);\n }\n\n removeComponentInitClass(componentClass: string){\n this.document.documentElement.classList.remove(componentClass);\n }\n\n isHeaderVisible(){\n return this.document.getElementsByClassName(\"header-dynamic-container\")[0].offsetParent !== null;\n }\n\n addClassToBody(className:string){\n if(className)\n this.document.body.classList.add(className);\n }\n\n removeClassToBody(className:string){\n if(className)\n this.document.body.classList.remove(className);\n }\n}","import { PublicProfile } from \"../../people/public-profile.model\";\r\nimport { UserPerson } from \"../../people/user-person.model\";\r\nimport { RequestingUser } from \"../../process/base-request.model\";\r\nimport { WorkflowInitialData } from \"../../process/workflow-initial-data.model\";\r\nimport { IAuthenticationWorkflowState } from \"../steps/authentication-step.model\";\r\nimport { IPatientVerificationStep } from \"../steps/patient-verification-step.model\";\r\nimport { BaseWorkflowState } from \"./base-workflow-state.model\";\r\nimport { ISelectPatientRelationshipWorkflowState } from \"../steps/select-patient-relationship-step.model\";\r\nimport { ICreatePatientRelationshipWorkflowState } from \"../steps/create-patient-relationship-step.model\";\r\nimport { Dependent } from \"../../people/dependent.model\";\r\nimport { Relation } from \"../../people/relation.model\";\r\n\r\nexport class GrowthCurvesWorkflowState\r\n extends BaseWorkflowState\r\n implements IPatientVerificationStep,\r\n IAuthenticationWorkflowState,\r\n ISelectPatientRelationshipWorkflowState,\r\n ICreatePatientRelationshipWorkflowState {\r\n\r\n requestModel: WorkflowInitialData;\r\n idVerificacion: string;\r\n\r\n constructor();\r\n constructor(obj: GrowthCurvesWorkflowState);\r\n constructor(obj?:any){\r\n super();\r\n \r\n this.requestModel = obj && obj.requestModel || new WorkflowInitialData();\r\n this.idVerificacion = obj && obj.idVerificacion || null;\r\n \r\n if (obj && !this.requestModel)\r\n this.requestModel = obj.request;\r\n }\r\n\r\n getIdVerificacion(): string {\r\n return this.idVerificacion;\r\n }\r\n\r\n getDoctorAvatarUrl(): string {\r\n return this.requestModel.urlAvatarResponsableServicioDestino || this.requestModel.publicProfile?.ubicacionFoto;\r\n }\r\n\r\n getUserId(): number {\r\n return this.requestModel.usuarioSolicitante && this.requestModel.usuarioSolicitante.id\r\n ? this.requestModel.usuarioSolicitante.id\r\n : -1;\r\n }\r\n\r\n getIdTipoSolicitud(): number {\r\n return this.requestModel?.idTipoSolicitud ?? -1;\r\n }\r\n\r\n getPosition(): number {\r\n return this.requestModel.workflowPosition;\r\n }\r\n\r\n getPublicProfile(): PublicProfile {\r\n return this.requestModel.perfilPublico;\r\n }\r\n\r\n setUserData(userPerson: UserPerson): void {\r\n this.requestModel.emailPersonaEmisora = userPerson.emailParticular;\r\n\r\n if(!this.requestModel.usuarioSolicitante){\r\n this.requestModel.usuarioSolicitante = new RequestingUser();\r\n }\r\n\r\n this.requestModel.usuarioSolicitante.id = userPerson.id;\r\n this.requestModel.usuarioSolicitante.username = userPerson.emailParticular; \r\n this.requestModel.usuarioSolicitante.sexo = userPerson.sexo;\r\n this.requestModel.usuarioSolicitante.fechaNacimiento = userPerson.fechaNacimiento;\r\n this.requestModel.usuarioSolicitante.urlAvatar = userPerson.ubicacionLogo;\r\n this.requestModel.usuarioSolicitante.nombre = userPerson.nombre;\r\n this.requestModel.usuarioSolicitante.apellido = userPerson.apellido;\r\n this.requestModel.usuarioSolicitante.idEstadoValidacionIdentidadPersona = userPerson.idEstadoValidacionIdentidadPersona;\r\n this.requestModel.usuarioSolicitante.idPaisResidencia = userPerson.idPaisResidencia;\r\n }\r\n \r\n setEmmiterPersonId(personId: number): void {\r\n this.requestModel.idPersonaEmisora = personId;\r\n }\r\n\r\n setPosition(position: number): void {\r\n this.requestModel.workflowPosition = position;\r\n }\r\n\r\n setPublicProfile(profile: PublicProfile): void {\r\n this.requestModel.perfilPublico = profile;\r\n }\r\n\r\n getPatientName(): string {\r\n return this.requestModel.nombrePaciente;\r\n }\r\n\r\n setPatientName(nombrePaciente: string): void {\r\n this.requestModel.nombrePaciente = nombrePaciente;\r\n }\r\n\r\n getPatientEmail(): string {\r\n return this.requestModel.emailPaciente;\r\n }\r\n\r\n setPatientEmail() {\r\n this.requestModel.emailPaciente;\r\n }\r\n\r\n getPatientValid(): boolean {\r\n return this.requestModel.isValid;\r\n }\r\n\r\n setPatientValid(valid: boolean) {\r\n this.requestModel.isValid = valid;\r\n }\r\n\r\n getDependents(): Dependent[] {\r\n return this.requestModel.dependents;\r\n }\r\n\r\n getPatientRelationship(): number {\r\n return this.requestModel.relacionEmisorPaciente;\r\n }\r\n\r\n getPatientIdRelationship(): number {\r\n return this.requestModel.idPaciente ?? 0;\r\n }\r\n\r\n setDependents(dependents: Dependent[]): void {\r\n this.requestModel.dependents = dependents;\r\n }\r\n\r\n setPatientRelationship(patientRelationshipType: number): void {\r\n this.requestModel.relacionEmisorPaciente = patientRelationshipType;\r\n }\r\n \r\n setPatientIdRelationship(patientId: number): void {\r\n this.requestModel.idPaciente = patientId;\r\n }\r\n\r\n getRelations(): Relation[] {\r\n return this.requestModel.relations;\r\n }\r\n\r\n setRelations(relations: Relation[]): void {\r\n this.requestModel.relations = relations;\r\n }\r\n \r\n getPatientId(): number {\r\n return this.requestModel.idPaciente ?? 0;\r\n }\r\n\r\n getUserPhrId(): number {\r\n return this.requestModel.idUsuario;\r\n }\r\n}\r\n","import { Component, ComponentFactoryResolver, ComponentRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ComponentLookupRegistry } from '../../decorators/component-lookup.decorator';\nimport { DynamicHostDirective } from '../../directives/dynamic-host.directive';\nimport { IControlComponent } from '../../interfaces/control-component';\n\n@Component({\n selector: 'app-dynamic',\n templateUrl: './dynamic.component.html',\n styleUrls: ['./dynamic.component.css']\n})\nexport class DynamicComponent implements OnInit {\n\n @Input() componentName: string;\n @Input() componentData: any;\n @ViewChild(DynamicHostDirective, {static: true}) dynamicHost: DynamicHostDirective;\n\n componentRef: ComponentRef;\n\n constructor(private resolveComponentFactory: ComponentFactoryResolver){}\n\n ngOnInit(): void {\n this.loadComponent();\n }\n\n loadComponent(){\n\n if(!this.componentName) return;\n\n const factoryClass = ComponentLookupRegistry.get(this.componentName);\n\n if(!factoryClass) return;\n\n const factory = this.resolveComponentFactory.resolveComponentFactory(factoryClass);\n\n const viewContainerRef = this.dynamicHost.viewContainerRef;\n viewContainerRef.clear();\n\n this.componentRef = viewContainerRef.createComponent(factory);\n\n this.componentRef.instance.data = this.componentData;\n }\n}\n","","import { Component, ElementRef, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { ViewDependentModelDto } from '../view-dependent/view-dependent.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { DependentRequest } from 'src/app/shared/models/people/dependent.model';\r\nimport { Subject } from 'rxjs';\r\nimport { CloseRouteDialogMessage, MessageBusService, NavigationBackMessage, OpenSnackBarMessage, SnackBarType } from 'src/app/core/services/message-bus.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { AvatarUploadComponentOptions, AvatarUploadedFileModel } from '../../avatar-upload/avatar-upload.component';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { UtilsService } from 'src/app/core/services/utils.service';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmDialogComponent } from '../../dialogs/confirm-dialog/confirm-dialog.component';\r\n\r\n@Component({\r\n selector: 'app-dependent-user',\r\n templateUrl: './edit-dependent.component.html',\r\n styleUrls: ['./edit-dependent.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class EditDependentComponent implements OnInit, OnDestroy {\r\n\r\n private ngUnsubscribe = new Subject();\r\n \r\n dependent: ViewDependentModelDto;\r\n formGroup: FormGroup;\r\n formSubmitted: boolean = false;\r\n saving: boolean = false;\r\n translations = {\r\n other: \"\",\r\n son: \"\",\r\n daughter: \"\",\r\n father: \"\",\r\n mother: \"\",\r\n language: \"\",\r\n man: \"\",\r\n women: \"\" \r\n };\r\n avatarUploadOptions : AvatarUploadComponentOptions;\r\n minDate: Date;\r\n maxDate: Date;\r\n \r\n constructor(\r\n private userService: UserService, \r\n private route: ActivatedRoute,\r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n private translation: L10nTranslationService,\r\n private formBuilder: FormBuilder,\r\n private messageBusService: MessageBusService,\r\n private router: Router,\r\n @Inject(DOCUMENT) private document: Document,\r\n private el: ElementRef,\r\n private dialog: MatDialog,\r\n private utilsService: UtilsService\r\n ) {\r\n this.avatarUploadOptions = new AvatarUploadComponentOptions();\r\n this.avatarUploadOptions.requiredFileType = \"image/png,image/jpeg\";\r\n this.avatarUploadOptions.selectFileLabel = \"añadir foto\";\r\n this.avatarUploadOptions.changeFileLabel = \"Editar\";\r\n this.avatarUploadOptions.showFileOnceUpload = true;\r\n this.avatarUploadOptions.edit = true;\r\n\r\n const currentYear = new Date().getFullYear();\r\n this.minDate = new Date(currentYear - 120, 0, 1);\r\n this.maxDate = new Date();\r\n }\r\n\r\n ngOnInit(): void {\r\n const dependentIdQs = this.route.snapshot.paramMap.get('id');\r\n\r\n if(!dependentIdQs) {\r\n // TODO: redirect to home???\r\n return;\r\n }\r\n\r\n let dependentId = parseInt(dependentIdQs);\r\n\r\n this.formGroup = this.formBuilder.group({ \r\n nameControl: ['', [Validators.required, Validators.maxLength(200)]],\r\n lastNameControl: ['', [Validators.required, Validators.maxLength(200)]],\r\n birthDateControl: ['', Validators.required],\r\n sexControl: ['', Validators.required],\r\n relationshipType: ['', Validators.required] \r\n });\r\n\r\n this.translation.onChange()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe({\r\n next: () => {\r\n this.translations.other = this.translation.translate('shared.profileMenu.text8');\r\n this.translations.son = this.translation.translate('shared.profileMenu.text9');\r\n this.translations.daughter = this.translation.translate('shared.profileMenu.text10');\r\n this.translations.father = this.translation.translate('shared.profileMenu.text11');\r\n this.translations.mother = this.translation.translate('shared.profileMenu.text12');\r\n this.translations.man = this.translation.translate('man');\r\n this.translations.women = this.translation.translate('women');\r\n \r\n this.avatarUploadOptions.selectFileLabel = this.translation.translate('shared.viewUser.text8');\r\n this.avatarUploadOptions.changeFileLabel = this.translation.translate('shared.viewUser.text3');\r\n this.avatarUploadOptions.changePictureLabel = this.translation.translate('shared.viewUser.text9');\r\n this.avatarUploadOptions.deleteFileLabel = this.translation.translate('shared.viewUser.text10');\r\n }\r\n });\r\n\r\n this.userService.getUserDependents()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(d => {\r\n let dependents = d as ViewDependentModelDto[];\r\n\r\n // Lookup dependent by Id\r\n var dependent = dependents.find(d => d.id == dependentId); \r\n\r\n if (!dependent)\r\n this.dependent = new ViewDependentModelDto();\r\n else \r\n this.dependent = dependent as ViewDependentModelDto;\r\n\r\n this.setUpDependentExtraData();\r\n\r\n this.loadDependentFormData(this.dependent);\r\n });\r\n\r\n // On Header Back click\r\n this.messageBusService.onNavigateBack().pipe(takeUntil(this.ngUnsubscribe)).subscribe(this.onNavigateBackNext.bind(this));\r\n\r\n }\r\n\r\n private onNavigateBackNext(_: NavigationBackMessage): void {\r\n if (this.dependent.id > 0) {\r\n if (this.formGroup.dirty && this.formGroup.touched) {\r\n this.beforeCloseAlert();\r\n } else\r\n this.router.navigate(['configuracion/dependiente/' + this.dependent.id]);\r\n } else \r\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\r\n }\r\n\r\n private beforeCloseAlert(): void {\r\n let dialogData = new DialogData();\r\n dialogData.title = this.translation.translate(\"shared.editDependent.cancelTitle\");\r\n dialogData.message = this.translation.translate(\"shared.editDependent.cancelMessage\");\r\n dialogData.confirmText = this.translation.translate(\"shared.editDependent.cancelConfirmText\"); \r\n dialogData.cancelText = this.translation.translate(\"shared.editDependent.cancelCancelText\");\r\n dialogData.headerIconClass = 'phr-iconset-alert';\r\n dialogData.showHeaderIcon = true;\r\n dialogData.showCancelButton = true;\r\n dialogData.loadLicense = true;\r\n\r\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\r\n data: dialogData,\r\n panelClass: 'cancel-edit-person-dialog'\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(accepted => {\r\n\r\n if(accepted){\r\n this.router.navigate(['configuracion/dependiente/' + this.dependent.id]);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n this.messageBusService.refreshProfileMenu();\r\n }\r\n\r\n setUpDependentExtraData() {\r\n if (!this.dependent)\r\n return;\r\n\r\n this.dependent.fullName = this.dependent.nombre + \" \" + this.dependent.apellido; \r\n this.dependent.relationshipName = this.userService.getDependentRelationshipName(this.dependent);\r\n\r\n let feNacimiento = this.dependent.fechaNacimiento? new Date(this.dependent.fechaNacimiento) : null;\r\n\r\n /*if (!this.dependent.ubicacionLogo)\r\n this.dependent.ubicacionLogo = this.utilsService.getPersonDefaultAvatarUrl(feNacimiento, this.dependent.sexo);*/\r\n\r\n if (this.dependent.sexo && this.dependent.sexo != \"9\") {\r\n if (this.dependent.sexo.toLocaleLowerCase() == \"m\") {\r\n this.dependent.sexName = this.translations.man;\r\n this.dependent.sexIconClass = \"phr-iconset-hombre\";\r\n }\r\n else {\r\n this.dependent.sexName = this.translations.women;\r\n this.dependent.sexIconClass = \"phr-iconset-mujer\";\r\n } \r\n }\r\n } \r\n\r\n loadDependentFormData(dependent: ViewDependentModelDto) {\r\n if (dependent.nombre)\r\n this.setControlValue(\"nameControl\", dependent.nombre);\r\n\r\n if (dependent.apellido)\r\n this.setControlValue(\"lastNameControl\", dependent.apellido);\r\n\r\n if (dependent.fechaNacimiento)\r\n this.setControlValue(\"birthDateControl\", dependent.fechaNacimiento);\r\n\r\n if (dependent.sexo && dependent.sexo != \"9\")\r\n this.setControlValue(\"sexControl\", dependent.sexo);\r\n\r\n if (dependent.tipoRelacion)\r\n this.setControlValue(\"relationshipType\", dependent.tipoRelacion.toString());\r\n }\r\n\r\n getControl(controlName: string) {\r\n return this.formGroup.controls[controlName];\r\n }\r\n\r\n isControlInvalid(controlName: string) {\r\n let control = this.getControl(controlName);\r\n\r\n // First check if the form is submitted or control is dirty\r\n if (!this.formSubmitted && !control.touched)\r\n return false;\r\n\r\n return control.invalid;\r\n }\r\n\r\n controlHasError(controlName: string, errorName: string) {\r\n return this.getControl(controlName).hasError(errorName);\r\n }\r\n \r\n getControlValue(controlName: string) {\r\n return this.getControl(controlName).value;\r\n }\r\n\r\n setControlValue(controlName: string, value: any) {\r\n this.getControl(controlName).setValue(value);\r\n }\r\n\r\n onSaveClick() {\r\n this.formGroup.markAllAsTouched();\r\n this.formSubmitted = true;\r\n\r\n if (!this.formGroup.valid) {\r\n this.scrollToInvalidField();\r\n return;\r\n } \r\n\r\n this.saving = true;\r\n\r\n var model = new DependentRequest();\r\n\r\n model.idPersona = this.dependent.idPersona; \r\n model.idRelacionDependiente = this.dependent.id;\r\n model.nombre = this.getControlValue(\"nameControl\");\r\n model.apellido = this.getControlValue(\"lastNameControl\");\r\n model.fechaNacimiento = new Date(this.getControlValue(\"birthDateControl\"));\r\n model.sexo = this.getControlValue(\"sexControl\");\r\n model.tipoRelacion = parseInt(this.getControlValue(\"relationshipType\"));\r\n model.ubicacionLogo = this.dependent.ubicacionLogo;\r\n\r\n this.userService.createOrUpdateDependent(model).subscribe({\r\n next: this.createOrUpdateDependentSuccess.bind(this),\r\n error: _ => this.saving = false\r\n }); \r\n }\r\n\r\n getBirthdateControl():FormControl | null{\r\n return this.formGroup.get('birthDateControl') \r\n ? this.formGroup.get('birthDateControl') as FormControl \r\n : null;\r\n }\r\n\r\n private createOrUpdateDependentSuccess(_: unknown): void {\r\n if (!this.dependent.ubicacionLogo && this.dependent.id && this.dependent.id > 0) {\r\n this.userService.deleteUploadedImage(this.dependent.id, this.dependent.idPersona).subscribe({\r\n next: this.onSuccess.bind(this),\r\n error: error => this.showErrorToast(error)\r\n });\r\n } else {\r\n this.onSuccess();\r\n }\r\n }\r\n\r\n private onSuccess(_?: unknown): void {\r\n this.saving = false;\r\n this.showSuccessToast();\r\n if (this.dependent.id > 0)\r\n this.router.navigate(['configuracion/dependiente/' + this.dependent.id]);\r\n else \r\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\r\n }\r\n\r\n onAvatarUploaded(file: AvatarUploadedFileModel) {\r\n this.dependent.ubicacionLogo = file?.webUrl;\r\n }\r\n\r\n showSuccessToast() {\r\n this.showToast(this.translation.translate('shared.editDependent.text17'), SnackBarType.SUCCESS);\r\n }\r\n\r\n showErrorToast(message: string) {\r\n this.showToast(message, SnackBarType.ERROR);\r\n }\r\n\r\n private showToast(text: string, type: SnackBarType) {\r\n let message = new OpenSnackBarMessage();\r\n message.text = text;\r\n message.type = type;\r\n message.duration = 3000;\r\n \r\n this.messageBusService.openSnackBar(message);\r\n }\r\n\r\n private scrollToInvalidField() { \r\n let container = this.document.getElementsByClassName(\"edit-dependent-container\")[0]; \r\n\r\n for (const key of Object.keys(this.formGroup.controls)) {\r\n if (this.formGroup.controls[key].invalid) {\r\n const invalidControl = this.el.nativeElement.querySelector('[formcontrolname=\"' + key + '\"]') as Element; \r\n \r\n this.utilsService.scrollToElementWithAnimation(container, invalidControl); \r\n break;\r\n }\r\n }\r\n } \r\n}\r\n\r\n","
\r\n \r\n\r\n
0\">\r\n {{'shared.editDependent.text1' | translate:locale.language}} \r\n
\r\n
\r\n {{'shared.editDependent.text16' | translate:locale.language}} \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n {{'shared.editDependent.text3' | translate:locale.language}}\r\n \r\n {{'shared.editDependent.text4' | translate:locale.language}}\r\n \r\n
\r\n
\r\n \r\n {{'shared.editDependent.text5' | translate:locale.language}}\r\n \r\n {{'shared.editDependent.text6' | translate:locale.language}}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{'man' | translate:locale.language}}\r\n \r\n \r\n \r\n {{'women' | translate:locale.language}}\r\n \r\n \r\n {{'shared.editDependent.text10' | translate:locale.language}}\r\n
\r\n
\r\n
\r\n \r\n {{'shared.editDependent.text12' | translate:locale.language}}\r\n \r\n \r\n {{'shared.editDependent.text13' | translate:locale.language}}\r\n \r\n \r\n {{'shared.editDependent.text14' | translate:locale.language}}\r\n \r\n \r\n {{'shared.editDependent.text19' | translate:locale.language}}\r\n \r\n \r\n {{'shared.editDependent.text20' | translate:locale.language}}\r\n \r\n \r\n {{'shared.editDependent.text21' | translate:locale.language}}\r\n \r\n \r\n {{'shared.editDependent.text22' | translate:locale.language}}\r\n \r\n \r\n {{'shared.editDependent.text18' | translate:locale.language}}\r\n \r\n\r\n \r\n {{'shared.editDependent.text15' | translate:locale.language}}\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
","
\n
\n

{{'shared.supporContactMessageDialog.text4' | translate:locale.language}}

\n
\n \n \n \n \n
\n \n \n
\n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ChatComponent } from 'src/app/shared/components/chat/chat.component';\nimport { SupportContactComponent } from './pages/support-contact/support-contact.component';\n\nconst supportRoutes: Routes = [\n {\n path: 'contactus',\n component: SupportContactComponent\n },\n {\n path: ':supportId',\n component: ChatComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(supportRoutes)],\n exports: [RouterModule]\n})\n\nexport class SupportRoutingModule { }\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { L10N_LOCALE, L10nLocale, L10nTranslationService } from 'angular-l10n';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { PatientService } from 'src/app/core/services/patient.service';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { RouteDialogType } from 'src/app/shared/components/dialogs/route-dialog/route-dialog.component';\nimport { PeopleSupportRequest } from 'src/app/shared/interfaces/people-support-request';\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\n\n@Component({\n selector: 'app-support-contact',\n templateUrl: './support-contact.component.html',\n styleUrls: ['./support-contact.component.css']\n})\nexport class SupportContactComponent implements OnInit, OnDestroy {\n private ngUnsubscribe = new Subject();\n formulario = this.fb.group({\n texto: ['', [Validators.required]]\n });\n loading = false;\n\n constructor(\n private baseService: BaseService,\n private fb: FormBuilder,\n private messageBusService: MessageBusService,\n private patientService: PatientService,\n private route: ActivatedRoute,\n private routeDialogService: RouteDialogService,\n private router: Router,\n private toastrService: ToastrService,\n private translation: L10nTranslationService,\n private userService: UserService,\n @Inject(L10N_LOCALE) public locale: L10nLocale\n ) {\n this.messageBusService.onNavigateBack()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(x => this.closeDialog());\n }\n \n ngOnInit(): void {\n }\n \n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n closeDialog(): void {\n const returnUrl: string = this.route.snapshot.queryParams['returnUrl'];\n this.routeDialogService.closeDialog(RouteDialogType.CONTACT);\n this.router.navigateByUrl(returnUrl ?? '/');\n }\n\n onSubmit(): void {\n this.loading = true;\n this.userService.getUserPersonLoggedIn()\n .subscribe({\n next: this.procesarGetUserPersonLoggedIn.bind(this),\n error: this.postSupportError.bind(this)\n });\n }\n\n private procesarGetUserPersonLoggedIn(user: UserPerson | null): void {\n this.baseService.getDirectoryDomain()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((domain:string)=>{\n const directoryDomain:string = domain;\n\n const returnUrl:string = this.route.snapshot.queryParams['returnUrl'];\n\n const model: PeopleSupportRequest = {\n idEmpresa: user?.idEmpresa ?? 0,\n idUsuario: user?.id ?? 0,\n contenido: this.formulario.get('texto')?.value,\n emailParticular: user?.emailParticular ?? '',\n fecha: new Date().toJSON(),\n nombre: `${user?.nombre} ${user?.apellido}`,\n nombreEmpresa: directoryDomain,\n numeroTelCelular: user?.numeroTelCelular ?? '',\n pagina: returnUrl ?? 'No se especificó'\n };\n\n this.patientService.postSupport(model).subscribe({\n next: this.postSupportNext.bind(this),\n error: this.postSupportError.bind(this)\n });\n\n });\n }\n\n private postSupportNext(args: any): void {\n this.loading = false;\n this.closeDialog();\n this.toastrService.success(this.translation.translate(\"shared.supporContactMessageDialog.text6\"), \"\");\n }\n\n private postSupportError(error: any): void {\n this.loading = false;\n this.toastrService.error(this.translation.translate(\"shared.supporContactMessageDialog.text8\"), this.translation.translate(\"shared.supporContactMessageDialog.text7\"));\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { SupportComponent } from './pages/support/support.component';\nimport { CoreModule } from 'src/app/core/core.module';\nimport { CommonModule } from '@angular/common';\nimport { SupportRoutingModule } from './support-routing.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { SupportContactComponent } from './pages/support-contact/support-contact.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { L10nIntlModule, L10nTranslationModule } from 'angular-l10n';\n\n@NgModule({\n declarations: [SupportComponent, SupportContactComponent],\n imports: [\n CommonModule,\n CoreModule,\n L10nTranslationModule,\n L10nIntlModule,\n ReactiveFormsModule,\n SharedModule,\n SupportRoutingModule\n ]\n})\n\nexport class SupportModule { }\n","import { PublicProfileType } from \"../people/profile-search-results.model\";\r\n\r\nexport class DoctorSearchResult {\r\n id : number;\r\n claseId : number; \r\n nombre : string; \r\n descripcion : string; \r\n clase : string; \r\n urlImagen : string; \r\n url : string; \r\n inRedirect : boolean; \r\n prioridadBusqueda : number; \r\n idFuenteReferencia : number;\r\n ciudades : string;\r\n idEmpresa : number;\r\n empresasRelacionadas : string;\r\n idPerfilPublico: number;\r\n idPersona: number;\r\n tipoPerfilPublico: PublicProfileType;\r\n sexo: string;\r\n}","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\n@Directive({\n selector: '[appCenterInput]'\n})\nexport class CenterInputDirective {\n\n @Input() onlyMobile = true;\n private isMobile: boolean = this.breakpointObserver.isMatched([Breakpoints.Handset, Breakpoints.Tablet]);\n private scrollIntoViewOptions: ScrollIntoViewOptions = {behavior: 'smooth', block: 'center'};\n private thisElementRef: HTMLInputElement;\n\n constructor(private breakpointObserver: BreakpointObserver, private elementRef: ElementRef) { }\n\n @HostListener('focus', ['$event'])\n onFocus(event: FocusEvent): void {\n this.setElementRef();\n \n if (!this.isMobile && !this.onlyMobile) \n return;\n\n // Need to wait for Android to open the keyboard before running the scroll\n setTimeout(() => {\n this.thisElementRef.scrollIntoView(this.scrollIntoViewOptions);\n }, 300);\n }\n\n private setElementRef(): void {\n if (!this.thisElementRef) {\n this.thisElementRef = this.elementRef.nativeElement;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpBaseService } from './http-base-service';\nimport { PeopleSupportRequest } from 'src/app/shared/interfaces/people-support-request';\nimport { Observable } from 'rxjs';\nimport { PatientPartial } from 'src/app/shared/interfaces/patient-partial';\nimport { IdentifierPatient } from 'src/app/shared/models/people/identifier-patient.model';\nimport { Relation } from 'src/app/shared/models/people/relation.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PatientService {\n\n private baseUrl = 'api/pacientes';\n\n constructor(private http: HttpBaseService) { }\n\n getPartial(idPaciente: number): Observable {\n return this.http.get(`${this.baseUrl}/partial?idPaciente=${idPaciente}`);\n }\n\n getIdentifierPatient(idPacientePortal: number, idEmpresaPhr: number){\n return this.http.get(`${this.baseUrl}?idPacientePortal=${idPacientePortal}&idEmpresaPhr=${idEmpresaPhr}`, null, false);\n }\n\n getRelations(idPaciente: number){\n return this.http.get(`${this.baseUrl}/${idPaciente}/relaciones`);\n }\n\n postSupport(model: PeopleSupportRequest) {\n const url = `${this.baseUrl}/soporte`;\n return this.http.post(url, model, null, true); \n }\n\n}\n","import { Theme } from \"../theme\";\r\n\r\nexport const cliniwebTheme: Theme = {\r\n name: 'cliniweb',\r\n properties: {\r\n '--primary': '#3F0097',\r\n '--primary2': '#FF0C80',\r\n '--primary3': '#35F3FF',\r\n '--brand-color': '#3F0097',\r\n '--brand-color2': '#3C3C46',\r\n '--variant-color': '#D9BEFF',\r\n '--variant-color2': '#F0ECFF',\r\n '--variant-color3': '#E3DCFF',\r\n '--variant-color4': '#5100BC',\r\n '--variant-color5': '#FFBEDD',\r\n '--variant-color6': '#FFECF5',\r\n '--variant-color7': '#00CEDB',\r\n '--variant-color8': '#CDFCFF',\r\n '--variant-color9': '#FF2D91',\r\n '--variant-color10': '#35E6F1',\r\n '--variant-color11': '#FE208A',\r\n\r\n '--secondary-color': '#FF4C4C',\r\n '--secondary-color2': '#FFE8E6',\r\n '--secondary-color3': '#229F1D',\r\n '--secondary-color4': '#5FCC08',\r\n '--secondary-color5': '#E7FFD4',\r\n '--secondary-color6': '#1976D2',\r\n '--secondary-color7': '#DDF3FF',\r\n '--secondary-color8': '#FF9900',\r\n '--secondary-color9': '#FFEDD2',\r\n\r\n '--primary-50-transparent': '#3F009780',\r\n\r\n '--on-primary': '#fff',\r\n '--accent': '#ff6f00',\r\n '--on-accent': '#fff',\r\n '--accent1': '#a8e1ef33',\r\n '--error': '#FF4C4C',\r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'cliniweb-icons', \r\n '--font-primary': 'Mulish',\r\n '--font-secundary': 'Mulish', \r\n '--font-color': '#000',\r\n '--input-placeholder': '#9E9E9E',\r\n '--input-placeholder-show': '#505050',\r\n '--grey': '#53565A',\r\n '--grey2': '#DDDDDD',\r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692',\r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n\r\n '--public-profile-avatar-border-color': '#35F3FF',\r\n\r\n '--public-profile-title-color': '#505050',\r\n '--public-profile-btn-appointment-color': '#3F0097',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/cliniweb/pwa/Clinweb-512x512.png',\r\n '--company-icon': 'url(assets/images/cliniweb/cliniweb-favicon.png)',\r\n '--company-image': 'url(assets/images/cliniweb/logo-cliniweb-phr.svg)',\r\n '--background-img':'url(assets/images/fondo-cliniweb-1.svg)',\r\n '--background-color': '#F8F6FF'\r\n }\r\n};","import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { L10nLocale, L10N_LOCALE, L10nTranslationService } from 'angular-l10n';\r\nimport { Subject } from 'rxjs';\r\nimport { CloseRouteDialogMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { PaymentService } from 'src/app/core/services/payment-service';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { UserPayment } from 'src/app/shared/models/finance/payments/user-payment.model';\r\nimport { PublicProfileService } from 'src/app/core/services/public-profile.service';\r\nimport { OnlinePaymentModel } from 'src/app/shared/models/workflow/models/online-payment.model';\r\nimport { PaymentRouteDialogModel } from '../../dialogs/route-dialog/route-dialog.component';\r\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\r\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\r\nimport { CustomCurrencyPipe } from 'src/app/shared/pipes/custom-currency.pipe';\r\n\r\n@Component({\r\n selector: 'app-user-payment',\r\n templateUrl: './user-payment.component.html',\r\n styleUrls: ['./user-payment.component.css'],\r\n providers: [CustomCurrencyPipe],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UserPaymentComponent implements OnInit, OnDestroy {\r\n private ngUnsubscribe = new Subject();\r\n payment: UserPayment;\r\n loading: boolean = false;\r\n loadingPayment: boolean = false;\r\n loadingPdf: boolean = false;\r\n \r\n constructor( \r\n @Inject(L10N_LOCALE) public locale: L10nLocale, \r\n private translation: L10nTranslationService,\r\n private messageBusService: MessageBusService,\r\n private paymentsService: PaymentService,\r\n private baseService: BaseService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private publicProfileService: PublicProfileService,\r\n private routeDialogService: RouteDialogService,\r\n private appStorageService: AppStorageService,\r\n private currencyPipe : CustomCurrencyPipe\r\n ) { \r\n }\r\n\r\n ngOnInit(): void {\r\n const transaccionId = this.route.snapshot.paramMap.get('id');\r\n\r\n if (!transaccionId) {\r\n this.gotoPayments();\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n\r\n this.paymentsService.getUserPayment(parseInt(transaccionId))\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(payment => {\r\n if (!payment) {\r\n this.gotoPayments();\r\n return;\r\n }\r\n \r\n this.payment = payment; \r\n\r\n //console.log(payment);\r\n\r\n this.loading = false;\r\n },\r\n error => {\r\n this.baseService.handleServiceError(error, \"Error getting payment\");\r\n\r\n this.loading = false;\r\n });\r\n\r\n // On Header Back click\r\n this.messageBusService.onNavigateBack()\r\n .pipe(takeUntil(this.ngUnsubscribe)) \r\n .subscribe(m => {\r\n this.gotoPayments();\r\n }\r\n );\r\n }\r\n\r\n gotoPayments() {\r\n this.router.navigate([\"/configuracion/pagos\"]);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n getFormatedAmount(amount: number) {\r\n return this.currencyPipe.transform(amount.toFixed(2), 'USD','','1.2-2','en-US');\r\n }\r\n\r\n onPaymentClick() {\r\n /*let url = this.publicProfileService.getPublicProfileUrl(this.payment.identificadorPerfilPublico);\r\n this.routeDialogService.closeDialogsAndNavigate(url, {payment: true});*/\r\n let companyName = this.baseService.getCliniwebDirectoryCompanyName();\r\n\r\n this.loadingPayment = true;\r\n\r\n this.publicProfileService.getPublicProfile(this.payment.identificadorPerfilPublico, this.locale.language, companyName)\r\n .subscribe(publicProfile => {\r\n let dto = new OnlinePaymentModel();\r\n \r\n dto.idResponsableServicio = publicProfile.id;\r\n dto.nombreResponsableServicio = publicProfile.nombrePersona;\r\n dto.urlAvatarResponsableServicio = publicProfile.ubicacionFoto;\r\n dto.nickname = publicProfile.username;\r\n dto.especialidadResponsableServicio = publicProfile.especialidad;\r\n dto.idEmpresa = publicProfile.idEmpresa; \r\n dto.nombreEmpresa = companyName;\r\n dto.emailResponsableServicio = publicProfile.emailRemitenteNotificacion; \r\n dto.idEmpresaResponsableServicio = publicProfile.idEmpresa;\r\n dto.perfilPublico = publicProfile;\r\n \r\n this.loadingPayment = false;\r\n \r\n this.appStorageService.setItemSession(STORAGE.ONLINE_PAYMENT_WORKFLOW_BOOTSTRAP_STATE, dto);\r\n this.routeDialogService.closeDialogsAndNavigate(\"/pagos/checkout\");\r\n\r\n /*let routeDialogModel = new PaymentRouteDialogModel();\r\n routeDialogModel.state = dto; \r\n this.routeDialogService.openDialog(routeDialogModel);*/\r\n },\r\n error => {\r\n this.baseService.handleServiceError(error, \"Public profile not found\");\r\n\r\n this.loadingPayment = false;\r\n });\r\n }\r\n \r\n onDownloadTransactionPdfClick() {\r\n this.loadingPdf = true; \r\n\r\n this.paymentsService.getUserPaymentPdf(this.payment.id).subscribe((doc) => {\r\n let downloadURL = window.URL.createObjectURL(doc);\r\n let companyName = this.baseService.getCliniwebDirectoryCompanyName();\r\n let patientName = this.payment.nombrePacientePhr;\r\n let dateTimestamp = new Date(this.payment.fechaTransaccion).toDateString();\r\n let transactionTranslation = this.translation.translate(\"shared.userPayment.text8\");\r\n\r\n let link = document.createElement('a');\r\n link.href = downloadURL;\r\n link.download = (`${transactionTranslation} ${patientName} - ${companyName} - ${dateTimestamp}`+ \".pdf\");\r\n\r\n link.click(); \r\n\r\n this.loadingPdf = false; \r\n },\r\n (error => {\r\n console.error(\"Error getting pdf\");\r\n\r\n this.loadingPdf = false; \r\n }));\r\n }\r\n}\r\n\r\n\r\n\r\n","
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {{'shared.userPayment.text1' | translate:locale.language}}\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{payment.nombreResponsableServicio | lowercase }}\r\n
\r\n
\r\n ${{getFormatedAmount(payment.monto)}}\r\n
\r\n
\r\n {{payment.fechaPagoElectronico | date:'d MMM, y' }}\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n **** {{payment.numeroTarjeta}}\r\n
\r\n
\r\n \r\n
{{payment.nombrePacientePhr}}
\r\n
\r\n
\r\n \r\n
\r\n {{'shared.userPayment.text4' | translate:locale.language}}\r\n ${{getFormatedAmount(detail.montoDetalleTransaccion)}} \r\n
\r\n
\r\n {{'shared.userPayment.text5' | translate:locale.language}}:\r\n ${{getFormatedAmount(payment.monto)}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
","import { Component, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { MessageBusService } from 'src/app/core/services/message-bus.service';\nimport { RouteDialogService } from 'src/app/core/services/route-dialog.service';\nimport { RouteDialogType } from '../dialogs/route-dialog/route-dialog.component';\nimport { BaseService } from 'src/app/core/services/base.service';\nimport { LegalAgreements } from '../../interfaces/legal-agreements';\nimport { LegalAgreementType } from '../../enums/legal-agreements-type.enum';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'app-legal-agreements',\n templateUrl: './legal-agreements.component.html',\n styleUrls: ['./legal-agreements.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class LegalAgreementsComponent implements OnInit, OnDestroy {\n\n legalAgreements: LegalAgreements = {\n content: `

Contenido no disponible.

`,\n id: 'generico',\n language: 'es',\n title: 'No se encontró el acuerdo legal'\n };\n @Input() type: string;\n\n private ngUnsubscribe = new Subject();\n\n constructor(\n private baseService: BaseService,\n private messageBusService: MessageBusService,\n private route: ActivatedRoute,\n private routeDialogService: RouteDialogService\n ) {\n\n this.messageBusService.onNavigateBack()\n .pipe(takeUntil(this.ngUnsubscribe)) \n .subscribe(x => this.routeDialogService.closeDialog(RouteDialogType.LEGALAGREEMENTS));\n\n this.route.data\n .pipe(takeUntil(this.ngUnsubscribe)) \n .subscribe(data => this.type = data['id']);\n }\n\n ngOnInit(): void {\n switch(this.type) {\n case LegalAgreementType.DISCLAIMER:\n this.legalAgreements = this.baseService.getDisclaimer() ?? this.legalAgreements;\n break;\n case LegalAgreementType.POLITICA_PRIVACIDAD:\n this.legalAgreements = this.baseService.getPrivacyPolicy() ?? this.legalAgreements;\n break;\n case LegalAgreementType.TERMINOS_CONDICIONES:\n this.legalAgreements = this.baseService.getTermsAndConditions() ?? this.legalAgreements;\n break;\n default:\n this.legalAgreements = this.legalAgreements;\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","
\n
\n

{{legalAgreements.title}}

\n
\n
\n
\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthPrivateRoutesGuard implements CanActivate {\n constructor(private authService: AuthService, private router: Router) {}\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable | Promise {\n return this.validar(route, state);\n }\n private validar(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n const isRestrictedRoute: boolean = route.data['isRestrictedRoute'];\n const condicion = isRestrictedRoute && !this.authService.getToken();\n if (condicion) {\n const homeUrl: string = state.url;\n this.router.navigate(['welcome', 'login'], { queryParams: { homeUrl } });\n }\n return !condicion;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Route, Router } from '@angular/router';\nimport { L10nResolver } from 'angular-l10n';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { HomeComponent } from 'src/app/modules/home/pages/home/home.component';\nimport { FormComponent } from 'src/app/shared/components/form/form.component';\nimport { Link } from 'src/app/shared/models/people/link.model';\nimport { MenuGuard } from '../guards/menu.guard';\nimport { BaseService } from './base.service';\nimport { AuthPrivateRoutesGuard } from '../guards/auth-private-routes.guard';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RouteLoaderService {\n\n constructor(private baseService: BaseService, private router: Router) { }\n\n public load():Observable{\n return this.baseService.getMenuLinks().pipe(map((links: Link[])=> this.buildMenuRoutes(links)));\n }\n\n buildMenuRoutes(links: Link[]) {\n let alreadyAdded = this.router.config.find(r=> r.path == links[0].identificadorUrl);\n\n if(alreadyAdded) return;\n\n links.forEach(link=>{\n if (link.identificadorUrl) {\n this.createRoute(link);\n }\n \n if (link.subMenu?.length) {\n link.subMenu.forEach(subLink => this.createRoute(subLink, true));\n }\n });\n\n this.router.resetConfig(this.router.config);\n }\n\n private createRoute(link: Link, isSublink = false) {\n const canActivate: any[] = [MenuGuard];\n let path = link.identificadorUrl;\n\n if (!isSublink) {\n canActivate.push(AuthPrivateRoutesGuard);\n path = this.baseService.getBasePath(link.identificadorUrl)\n }\n\n const alreadyExists = this.router.config.find(r => r.path == path);\n\n if (!alreadyExists) {\n const childrenRoutes = this.buildChildrenRoutebyLink(link);\n \n this.router.config.unshift(\n {\n path, canActivate,\n component: HomeComponent,\n children: childrenRoutes,\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [\n { name: 'home', asset: './assets/i18n/home', options: { version: environment.version } },\n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } }\n ],\n animation: link.nombreAnimacion ?? '',\n isRestrictedRoute: link.accesoPublico === 'N'\n }\n });\n }\n }\n\n private buildChildrenRoutebyLink(link:Link): Route[] {\n let childrenRouteArray: Route[] = [];\n const paramsArray = link.parametrosUrl?.split('/');\n \n if (!paramsArray?.length) {\n childrenRouteArray.push(this.childrenRoute(link));\n } else {\n childrenRouteArray = childrenRouteArray.concat(this.ifHaveParamsArray(paramsArray, link));\n }\n\n return childrenRouteArray;\n }\n\n private ifHaveParamsArray(paramsArray: string[], link: Link): Route[] {\n return paramsArray?.map((_, i) => {\n const path = this.getPathByNumber(link.parametrosUrl, i);\n\n return this.childrenRoute(link, path);\n });\n }\n\n private childrenRoute(link: Link, path = ''): Route {\n return {\n path, component: FormComponent,\n data: {\n idAreaSistema: link.idAreaSistema,\n nombreComponenteAnonimo: link.nombreComponenteAnonimo,\n idsTipoContenidos: link.idsTipoContenidos?.split(',')\n }\n };\n }\n\n private getPathByNumber(originPath: string, index: number): string {\n return originPath.split(\"/\").slice(0, index).join(\"/\");\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { AuthService } from '../services/auth.service';\nimport { MessageBusService } from '../services/message-bus.service';\nimport { RouteLoaderService } from '../services/route-loader.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n\n constructor(\n private authService: AuthService,\n private messageBusService: MessageBusService,\n private routeLoaderService: RouteLoaderService\n ) { }\n\n canActivate(\n route: ActivatedRouteSnapshot, \n state: RouterStateSnapshot\n ): Observable|Promise|boolean|UrlTree {\n\n return this.routeLoaderService.load().pipe(switchMap(()=>{\n\n return this.authService.hasPermissions(state.url).pipe(map((result:boolean) => {\n if(route.queryParams.authIframe){\n this.messageBusService.authIframe();\n }\n \n return result;\n }));\n }));\n }\n}\n","
\r\n \r\n\r\n \r\n \r\n
\r\n {{'shared.locationLanguage.text1' | translate:locale.language}}\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n {{ item.locale.language | l10nDisplayNames:locale.language:{ type: 'language' } | titlecase }}\r\n \r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { L10N_CONFIG, L10N_LOCALE, L10nConfig, L10nLocale, L10nSchema, L10nTranslationService } from 'angular-l10n';\r\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { CloseRouteDialogMessage, MessageBusService } from 'src/app/core/services/message-bus.service';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-location-language',\r\n templateUrl: './location-language.component.html',\r\n styleUrls: ['./location-language.component.css']\r\n})\r\nexport class LocationLanguageComponent implements OnInit, OnDestroy { \r\n \r\n private ngUnsubscribe = new Subject();\r\n selectedLanguage: string; \r\n schema: L10nSchema[];\r\n saving: boolean = false;\r\n\r\n constructor(\r\n @Inject(L10N_LOCALE) public locale: L10nLocale,\r\n @Inject(L10N_CONFIG) private l10nConfig: L10nConfig,\r\n private baseService: BaseService,\r\n private messageBusService: MessageBusService\r\n ) { \r\n }\r\n\r\n ngOnInit(): void { \r\n this.selectedLanguage = this.locale.language;\r\n this.schema = this.l10nConfig.schema;\r\n\r\n // On Header Back click\r\n this.messageBusService.onNavigateBack()\r\n .pipe(takeUntil(this.ngUnsubscribe)) \r\n .subscribe(m => {\r\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\r\n }\r\n );\r\n } \r\n\r\n ngOnDestroy() {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n onSaveClick() {\r\n // Get locale\r\n let schema = this.schema.find(s => s.locale.language == this.selectedLanguage);\r\n\r\n if (!schema)\r\n return;\r\n\r\n this.saving = true;\r\n\r\n this.baseService.setLocale(schema.locale);\r\n\r\n this.saving = false;\r\n\r\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\r\n } \r\n}","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ShowNonProdGuard implements CanActivate {\n\n constructor(private router: Router) {}\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n let resultado = environment.production;\n if (resultado) { \n this.router.navigate(['not-found']);\n }\n return !resultado;\n }\n \n}\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { Routes, RouterModule } from '@angular/router';\nimport { L10nResolver } from 'angular-l10n';\nimport { AuthGuard } from './core/guards/auth.guard';\nimport { NotFoundComponent } from './shared/components/not-found/not-found.component';\nimport { ViewUserComponent } from './shared/components/user/view-user/view-user.component';\nimport { EditUserComponent } from './shared/components/user/edit-user/edit-user.component';\nimport { ViewDependentComponent } from './shared/components/dependent/view-dependent/view-dependent.component';\nimport { EditDependentComponent } from './shared/components/dependent/edit-dependent/edit-dependent.component';\nimport { ProfileMenuComponent } from './shared/components/menu/profile/profile-menu.component';\nimport { LocationLanguageComponent } from './shared/components/location-language/location-language.component';\nimport { ShowNonProdGuard } from './core/guards/show-non-prod.guard';\nimport { LearnMoreComponent } from './shared/components/learn-more/learn-more.component';\nimport { LegalAgreementsComponent } from './shared/components/legal-agreements/legal-agreements.component';\nimport { UserPaymentsListComponent } from './shared/components/user-payments/user-payments-list/user-payments-list.component';\nimport { UserPaymentComponent } from './shared/components/user-payments/user-payment/user-payment.component';\nimport { LegalAgreementType } from './shared/enums/legal-agreements-type.enum';\nimport { AuthPrivateRoutesGuard } from './core/guards/auth-private-routes.guard';\nimport { environment } from 'src/environments/environment';\n\nconst routes: Routes = [\n {\n path: '',\n loadChildren: () => import('./modules/home/home.module').then(m => m.HomeModule),\n canActivate: [AuthGuard],\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [\n { name: 'home', asset: './assets/i18n/home', options: { version: environment.version } },\n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } }\n ],\n animation: 'HomePage'\n }\n },\n {\n path: 'welcome',\n loadChildren: () => import('./modules/welcome/welcome.module').then(m => m.WelcomeModule),\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [\n { name: 'welcome', asset: './assets/i18n/welcome', options: { version: environment.version } },\n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } }\n ]\n }\n },\n {\n path: 'login',\n loadChildren: () => import('./modules/login/login.module').then(m => m.LoginModule),\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [\n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n { name: 'login', asset: './assets/i18n/login', options: { version: environment.version } }\n ]\n }\n },\n {\n path: 'signup',\n loadChildren: () => import('./modules/signup/signup.module').then(m => m.SignupModule),\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [\n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n { name: 'signup', asset: './assets/i18n/signup', options: { version: environment.version } }\n ]\n }\n },\n {\n path: 'busqueda',\n loadChildren: () => import('./modules/search-results/search-results.module').then(m => m.SearchResultsModule),\n canActivate: [],\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n { name: 'search', asset: './assets/i18n/search', options: { version: environment.version } },\n ]\n }\n },\n {\n path: 'perfil-v1',\n loadChildren: () => import('./modules/search-results/search-results.module').then(m => m.SearchResultsModule),\n canActivate: [],\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n { name: 'search', asset: './assets/i18n/search', options: { version: environment.version } },\n ],\n animation: 'PublicProfilePage'\n }\n },\n {\n path: 'perfil',\n loadChildren: () => import('./modules/public-profiles/public-profiles.module').then(m => m.PublicProfilesModule),\n canActivate: [],\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n { name: 'publicProfiles', asset: './assets/i18n/public-profiles', options: { version: environment.version } },\n ],\n animation: 'PublicProfilePage'\n }\n },\n {\n path: 'citas',\n loadChildren: () => import('./modules/appointments/appointments.module').then(m => m.AppointmentsModule),\n canActivate: [],\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n ],\n animation: 'AppointmentsPage'\n }\n },\n {\n path: 'pagos',\n loadChildren: () => import('./modules/payment/payment.module').then(m => m.PaymentsModule),\n canActivate: [],\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n ],\n animation: 'AppointmentsPage'\n }\n },\n {\n path: 'ordenes-medicas',\n loadChildren: () => import('./modules/medical-orders/medical-orders.module').then(m => m.MedicalOrdersModule),\n canActivate: [],\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n ]\n }\n },\n {\n path: 'curvas-crecimiento',\n loadChildren: () => import('./modules/growth-curves/growth-curves.module').then(m => m.GrowthCurvesModule),\n canActivate: [],\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n ],\n animation: 'AppointmentsPage'\n }\n },\n { \n path: 'not-found', component: NotFoundComponent \n },\n {\n path: 'support',\n loadChildren: () => import('./modules/support/support.module').then(m => m.SupportModule),\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n ]\n }\n },\n {\n path: 'politicas',\n loadChildren: () => import('./modules/privacy-policies/privacy-policies.module').then(m => m.PrivacyPoliciesModule),\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'privacypolicies', asset: './assets/i18n/privacy-policies', options: { version: environment.version } } \n ]\n }\n },\n {\n path: 'configuracion', \n canActivate: [AuthGuard, AuthPrivateRoutesGuard],\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n { name: 'search', asset: './assets/i18n/search', options: { version: environment.version } },\n ],\n isRestrictedRoute: true\n },\n children:[\n {\n path: 'menu',\n component: ProfileMenuComponent\n },\n {\n path: 'usuario',\n component: ViewUserComponent\n },\n {\n path: 'usuario/edicion',\n component: EditUserComponent\n },\n {\n path: 'dependiente/:id',\n component: ViewDependentComponent\n }, \n {\n path: 'dependiente/edicion/:id',\n component: EditDependentComponent\n },\n {\n path: 'locale',\n component: LocationLanguageComponent\n },\n {\n path: 'pagos',\n component: UserPaymentsListComponent\n },\n {\n path: 'pagos/:id',\n component: UserPaymentComponent\n }\n ]\n },\n {\n path: 'plantilla',\n canActivate: [ShowNonProdGuard],\n loadChildren: () => import('./modules/template-panel/template-panel.module').then(m => m.TemplatePanelModule)\n },\n {\n\tpath: 'terminos-y-condiciones',\n component: LegalAgreementsComponent,\n data: { id: LegalAgreementType.TERMINOS_CONDICIONES }\n },\n {\n\tpath: 'disclaimer',\n component: LegalAgreementsComponent,\n data: { id: LegalAgreementType.DISCLAIMER }\n },\n {\n path: 'politicas-de-privacidad',\n data: {id: LegalAgreementType.POLITICA_PRIVACIDAD},\n component: LegalAgreementsComponent\n },\n {\n path: 'conoce-mas',\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [ \n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } },\n { name: 'search', asset: './assets/i18n/search', options: { version: environment.version } },\n ]\n },\n component: LearnMoreComponent\n },\n {\n path: 'widget',\n loadChildren: () => import('./modules/widget/widget.module').then(m => m.WidgetModule),\n resolve: { l10n: L10nResolver },\n data:{\n showHeader: false,\n l10nProviders: [\n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } }\n ]\n }\n },\n {\n path: 'charts',\n loadChildren: () => import('./modules/charts/charts.module').then(m => m.ChartsModule),\n resolve: { l10n: L10nResolver },\n data:{\n showHeader: false,\n l10nProviders: [\n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } }\n ]\n }\n },\n {\n path: '**',\n loadChildren: () => import('./modules/home/home.module').then(m => m.HomeModule),\n canActivate: [AuthGuard],\n resolve: { l10n: L10nResolver },\n data: {\n l10nProviders: [\n { name: 'home', asset: './assets/i18n/home', options: { version: environment.version } },\n { name: 'shared', asset: './assets/i18n/shared', options: { version: environment.version } }\n ]\n }\n }, \n];\n\n@NgModule({\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n RouterModule.forRoot(routes, {\n relativeLinkResolution: 'corrected',\n // initialNavigation: 'disabled'\n \n /* useHash: true */\n })\n ],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component } from '@angular/core';\r\n\r\n// A dummy dialog component just to show an overlay\r\n@Component({\r\n selector: 'empty-dialog',\r\n template: '' \r\n })\r\n export class EmptyDialogComponent {\r\n constructor() {} \r\n }","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatSnackBarRef } from '@angular/material/snack-bar';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { OpenSnackBarMessage, SnackBarType } from 'src/app/core/services/message-bus.service';\n\n@Component({\n selector: 'app-custom-snack-bar',\n templateUrl: './custom-snack-bar.component.html',\n styleUrls: ['./custom-snack-bar.component.css']\n})\nexport class CustomSnackBarComponent implements OnInit {\n\n text: string;\n\n constructor(\n public snackBarRef: MatSnackBarRef,\n @Inject(MAT_SNACK_BAR_DATA) public data: OpenSnackBarMessage\n ) { }\n\n ngOnInit(): void {\n this.text = this.data.text;\n }\n\n onClose(){\n this.snackBarRef.dismiss();\n }\n\n getIconClassname(){\n switch(this.data.type){\n case SnackBarType.SUCCESS:\n return 'phr-iconset-PHR-Tup-2';\n case SnackBarType.ERROR:\n return 'phr-iconset-error';\n case SnackBarType.INFO:\n return 'phr-iconset-info';\n case SnackBarType.ALERT:\n return 'phr-iconset-alert';\n }\n }\n\n getTypeClassname(){\n switch(this.data.type){\n case SnackBarType.SUCCESS:\n return 'success';\n case SnackBarType.ERROR:\n return 'error';\n case SnackBarType.INFO:\n return 'info';\n case SnackBarType.ALERT:\n return 'alert';\n } \n }\n}\n","
\n \n {{text}}\n \n
","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { AppStorageService } from '../app-storage.service';\r\nimport { BaseService } from '../base.service';\r\nimport { SignalrService } from './signalr.service';\r\nimport { AppointmentEvent } from 'src/app/shared/models/signalr/appointment-event.model';\r\n\r\n/*\r\nIt is important for this Service to NOT be a Singleton (avoid adding \"providedIn: 'root'\")\r\nin order to work properly. If not all the event related to connection and re-connection get mixed between all the clients that use the service\r\nIn order to use the service on an component add it to the providers of the component like: \"providers: [AppointmentSignalRService]\"\"\r\n*/\r\n@Injectable()\r\nexport class AppointmentsSignalRService extends SignalrService {\r\n\r\n protected appointmentChangedSubject = new Subject();\r\n\r\n constructor(protected baseService: BaseService, protected appStorageService: AppStorageService) { \r\n super(baseService, appStorageService);\r\n \r\n this.hubName = \"CliniwebHub\";\r\n } \r\n\r\n registerOnServerEvents(): void { \r\n\r\n // new appointment event received\r\n this.proxy.on('AppointmentChangeEvent', (appointmentEvent: AppointmentEvent) => { \r\n \r\n console.log(\"SignalR: AppointmentChange event received.\");\r\n \r\n this.appointmentChangedSubject.next(appointmentEvent);\r\n });\r\n }\r\n\r\n onAppointmentChangedReceived() : Observable {\r\n return this.appointmentChangedSubject.asObservable();\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Component, HostListener, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport { Observable, forkJoin, of } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { BaseService } from 'src/app/core/services/base.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\r\nimport { Dependent } from 'src/app/shared/models/people/dependent.model';\r\nimport { UserPerson } from 'src/app/shared/models/people/user-person.model';\r\nimport { PatientAppointment } from 'src/app/shared/models/process/appointment.model';\r\nimport { Directory } from 'src/app/shared/models/systems/directory.model';\r\n\r\n@Component({\r\n selector: 'app-next-appointment-dialog',\r\n templateUrl: './next-appointment-dialog.component.html',\r\n styleUrls: ['./next-appointment-dialog.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class NextAppointmentDialogComponent implements OnInit { \r\n appointment : PatientAppointment; \r\n loading = true; \r\n directory: Directory;\r\n showAll: boolean = true;\r\n dependents: Dependent[]; \r\n loggedInUser: UserPerson;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\r\n @Inject(DOCUMENT) private document: Document,\r\n public mdDialogRef: MatDialogRef,\r\n private baseService: BaseService,\r\n private userService: UserService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loading = true;\r\n\r\n let observables: Observable[] = [];\r\n observables.push(this.getDirectory());\r\n observables.push(this.getUser());\r\n observables.push(this.getDependents());\r\n\r\n forkJoin(observables) \r\n .subscribe(results => { \r\n this.directory = results[0] as Directory;\r\n this.loggedInUser = results[1] as UserPerson;\r\n this.dependents = results[2] as Dependent[];\r\n \r\n this.appointment = this.baseService.parseObject(this.data.data);\r\n \r\n this.loading = false;\r\n });\r\n } \r\n\r\n getDirectory() : Observable {\r\n let companyId = this.baseService.getCliniwebDirectoryCompanyId();\r\n\r\n return this.baseService.getCliniwebDirectory(companyId);\r\n }\r\n\r\n getUser() : Observable {\r\n return this.userService.getUserPersonLoggedIn().pipe(\r\n tap(() => {\r\n \r\n }),\r\n catchError((e => { \r\n this.baseService.handleServiceError(e, \"Error getting user\"); \r\n \r\n return of(null);\r\n })));\r\n }\r\n\r\n getDependents() : Observable{\r\n return this.userService.getUserDependents().pipe(\r\n tap(() => {\r\n \r\n }),\r\n catchError((e => { \r\n this.baseService.handleServiceError(e, \"Error getting dependents\"); \r\n \r\n return of([]);\r\n })));\r\n }\r\n\r\n public close() {\r\n if(this.data.animationOut){\r\n this.document.getElementsByClassName(this.data.id)[0].classList.remove(this.data.animationIn);\r\n this.document.getElementsByClassName(this.data.id)[0].classList.add(this.data.animationOut);\r\n\r\n setTimeout(()=>{ \r\n this.mdDialogRef.close();\r\n }, 300);\r\n }\r\n else{\r\n this.mdDialogRef.close();\r\n }\r\n } \r\n \r\n @HostListener(\"keydown.esc\") \r\n public onEsc() {\r\n this.close();\r\n }\r\n}","
\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { error } from 'jquery';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { AppStorageService, STORAGE } from 'src/app/core/services/app-storage.service';\nimport { TerritorialDivisionsService } from 'src/app/core/services/territorial-divisions.service';\nimport { UserService } from 'src/app/core/services/user.service';\nimport { CountryModel, TerritorialDivision } from 'src/app/shared/models/systems/territorial-division.model';\n\n@Component({\n selector: 'app-select-country-dialog',\n templateUrl: './select-country-dialog.component.html',\n styleUrls: ['./select-country-dialog.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectCountryDialogComponent implements OnInit {\n\n\n errorSubject = new BehaviorSubject('');\n get errorObservable(): Observable {\n return this.errorSubject.asObservable();\n }\n \n constructor(\n private userService: UserService,\n private territorialDivisionService: TerritorialDivisionsService,\n private appStorageService: AppStorageService,\n private mdDialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any, \n @Inject(L10N_LOCALE) public locale: L10nLocale,\n ) { }\n\n ngOnInit(): void {\n }\n\n countrySelected(country: TerritorialDivision){\n this.userService.updateUserResidenceCountry(country.idPais).subscribe(result=>{\n\n // SET COUNTRY APP\n this.territorialDivisionService.setCountryApp(country.idPais);\n\n // UPDATE USER\n this.userService.getUserPersonLoggedIn().subscribe(user=>{\n\n if(user){\n user.idPaisResidencia = country.idPais;\n\n this.userService.updateUserLoggedIn(user);\n }\n });\n\n this.mdDialogRef.close();\n this.appStorageService.removeSessionItem(STORAGE.SELECT_COUNTRY);\n }, error =>{\n \n this.errorSubject.next(\"Hubo un error al grabar el país, intente nuevamente\");\n });\n }\n}\n","
\n
\n \n \n
\n
","import { DOCUMENT } from '@angular/common';\nimport { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { L10N_LOCALE, L10nLocale } from 'angular-l10n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { LayoutService } from 'src/app/core/services/layout.service';\nimport { DialogData } from 'src/app/shared/models/dialog-data.model';\n\n@Component({\n selector: 'app-error-dialog',\n templateUrl: './error-dialog.component.html',\n styleUrls: ['./error-dialog.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ErrorDialogComponent implements OnDestroy, OnInit {\n\n private ngUnsubscribe = new Subject();\n licenseLoading: boolean = true;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\n @Inject(DOCUMENT) private document: Document,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n private layoutService: LayoutService,\n private mdDialogRef: MatDialogRef\n ) { }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngOnInit(): void {\n if(this.data.loadLicense){\n this.layoutService.loadLicenseTheme('error-dialog-wrapper')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(_ => this.licenseLoading = false);\n }\n else{\n this.licenseLoading = false;\n }\n }\n\n public close(value = false): void {\n if (this.data.animationOut) {\n this.document.getElementsByClassName(this.data.id)[0].classList.remove(this.data.animationIn);\n this.document.getElementsByClassName(this.data.id)[0].classList.add(this.data.animationOut);\n\n setTimeout(()=> this.mdDialogRef.close(value), 300);\n } else {\n this.mdDialogRef.close(value);\n }\n }\n\n\n}\n","
\n
\n

Upsss

\n

\n {{ 'shared.errorDialog1.message' | translate:locale.language }}\n

\n \n
\n
\n \n
\n
\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeLoaderService {\n insertedElement: HTMLElement;\n\n init(themeName: string) {\n\n\n import(\n /* webpackChunkName: \"[request]\" */\n `../../../themes/${themeName}/theme.js`\n )\n .then((s) => s.default)\n .then(this.insertToDom);\n\n\n // const head = document.getElementsByTagName('head')[0];\n\n // const link = document.createElement('link');\n // link.rel = 'stylesheet';\n // link.href = `${themeName}.css`;\n // head.appendChild(link);\n }\n\n insertToDom = (content: string) => {\n const element = document.createElement('style');\n element.textContent = content;\n document.head.appendChild(element);\n\n if (this.insertedElement) this.insertedElement.remove();\n this.insertedElement = element;\n };\n}","
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n
0\">\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { ChangeDetectorRef, Component, HostListener, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Theme, THEMES } from 'src/themes/theme';\nimport { BaseService } from './core/services/base.service';\nimport { DOCUMENT, Location } from '@angular/common';\nimport { LayoutService } from './core/services/layout.service';\nimport { Direction } from './shared/enums/direction.enum';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { IframeMessageService } from './core/services/iframe-message.service';\nimport { EmptyDialogComponent } from './shared/components/dialogs/empty-dialog.component';\nimport { Debounce } from './shared/decorators/debounce.decorator';\nimport { Title, Meta } from '@angular/platform-browser';\nimport { UserService } from './core/services/user.service';\nimport { ActivatedRoute, ActivatedRouteSnapshot, ChildrenOutletContexts, NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { LoadChatMessage, LoginCompletedMessage, MessageBusService, PageScrollMessage, TerritorialDivionCountryMessage } from './core/services/message-bus.service';\nimport { VirtualAttentionService } from './core/services/virtual-attention.service';\nimport { AuthService } from './core/services/auth.service';\nimport { DialogData } from './shared/models/dialog-data.model';\nimport { L10nLocale, L10nTranslationService, L10N_LOCALE } from 'angular-l10n';\nimport { ConfirmDialogComponent } from './shared/components/dialogs/confirm-dialog/confirm-dialog.component';\nimport { DateAdapter } from '@angular/material/core';\nimport { GoogleAnalyticsService } from './core/services/google-analytics.service';\nimport { environment } from 'src/environments/environment';\nimport { fadeAnimation } from './shared/animations';\nimport { ThemeLoaderService } from './core/services/theme-loader.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { CustomSnackBarComponent } from './shared/components/custom-snack-bar/custom-snack-bar.component';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { FormComponentData } from './shared/models/people/form-control.model';\nimport { ContainerType } from './shared/enums/container-type.enum';\nimport { AppointmentsSignalRService } from './core/services/signalR/appointments-signalr.service';\nimport { AppointmentEvent } from './shared/models/signalr/appointment-event.model';\nimport { AppointmentService } from './core/services/appointment.service';\nimport { AppStorageService, STORAGE } from './core/services/app-storage.service';\nimport { TerritorialDivisionsService } from './core/services/territorial-divisions.service';\nimport { PatientAppointment } from './shared/models/process/appointment.model';\nimport { NextAppointmentDialogComponent } from './shared/components/dialogs/next-appointment-dialog/next-appointment-dialog.component';\nimport { SelectCountryDialogComponent } from './shared/components/dialogs/select-country-dialog/select-country-dialog.component';\nimport { ErrorDialogComponent } from './shared/components/dialogs/error-dialog/error-dialog.component';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css'],\n animations: [ fadeAnimation ],\n providers: [AppointmentsSignalRService],\n encapsulation: ViewEncapsulation.None\n})\nexport class AppComponent implements OnInit, OnDestroy {\n title = 'PHR';\n headerName = '';\n directoryClass= 'cliniweb';\n iframeZIndex = 1;\n dummyDialog : MatDialogRef; \n showHeader = true;\n sessionExpiredPopupOpen = false;\n serviceErrorPopupOpen = false;\n isIframeModalOpen = false;\n hasJointGroup = false;\n lastUrl = '';\n\n routeDialogOpened: boolean = false;\n reloadPage: boolean = false;\n\n floatingComponents: FormComponentData[] = [];\n\n private selectCountryDialogOpened:boolean = false;\n\n private scrollTop: number = 0;\n private routeQueryParamsSubscribe:Subscription;\n\n ID_AREA_SISTEMA_MIS_CITAS: number = 3459;\n ID_AREA_SISTEMA_INICIO: number = 3457;\n ID_AREA_SISTEMA_DOCTORES: number = 3741;\n\n isDesktopMac: boolean = false;\n isIOS: boolean = false;\n\n pathName: string;\n\n constructor(\n @Inject(THEMES) public themes: Theme[],\n @Inject(DOCUMENT) private _document: any,\n private baseService: BaseService,\n private overlayContainer: OverlayContainer,\n private layoutService: LayoutService,\n private dialog: MatDialog,\n private iframeMessageService: IframeMessageService,\n private googleAnalyticsService: GoogleAnalyticsService,\n private matIconRegistry: MatIconRegistry,\n private titleService: Title,\n private userService: UserService,\n private messageBusService: MessageBusService,\n private authService: AuthService, \n private virtualAttentionService: VirtualAttentionService,\n private appointmentService: AppointmentService,\n private themeLoaderService: ThemeLoaderService,\n private translation: L10nTranslationService,\n private router: Router,\n private route: ActivatedRoute,\n private location: Location,\n private dateAdapter: DateAdapter,\n private contexts: ChildrenOutletContexts,\n private meta: Meta,\n private snackBar: MatSnackBar,\n private changeDetector: ChangeDetectorRef,\n private appointmentSignalRService: AppointmentsSignalRService,\n private appStorageService: AppStorageService,\n private territorialDivisionService: TerritorialDivisionsService,\n @Inject(L10N_LOCALE) public locale: L10nLocale,\n @Inject(DOCUMENT) private document: Document\n ) \n {\n this.matIconRegistry.registerFontClassAlias('phr-iconset');\n\n this.messageBusService.onAuthIframe().subscribe((a) =>{\n this.showHeader = false;\n });\n \n this.messageBusService.onHideHeader().subscribe((a) =>{\n this.showHeader = false;\n this.changeDetector.detectChanges();\n });\n\n this.messageBusService.onShowHeader().subscribe((a) =>{\n this.showHeader = true;\n });\n\n this.messageBusService.onOpenSnackBar().subscribe((message)=>{\n this.snackBar.openFromComponent(CustomSnackBarComponent, {\n data: message, \n duration: message.duration,\n horizontalPosition: 'left'\n }); \n });\n\n this.messageBusService.onSendFloatingComponents().subscribe((message)=>{\n if(this.document.body.classList.contains('route-dialog-opened'))\n return;\n\n this.floatingComponents = message.componentsData.filter(c=>c.contenedor == ContainerType.MAIN);\n });\n\n if(environment.production){\n this.location.onUrlChange(url =>{\n let snapshotUrl = this.router.routerState.snapshot.url;\n \n let exceptedUrls = ['', '/', '/es', '/en'];\n let languages = ['es', 'en'];\n \n let isntExceptedUrl = exceptedUrls.filter(e => e == snapshotUrl).length == 0;\n let containsLanguage = languages.filter( l => l == url.split('/')[1]).length > 0;\n let sameUrlAsAbove = this.lastUrl && this.lastUrl == url;\n \n if(isntExceptedUrl && containsLanguage && !sameUrlAsAbove){\n this.lastUrl = url;\n this.googleAnalyticsService.logPageView(url);\n }\n });\n }\n\n this.router.events.subscribe((val)=>{\n\n if(val instanceof NavigationStart){\n if(document.body.classList.contains('route-dialog-opened') && val.navigationTrigger == 'popstate'){\n window.location.reload();\n }\n }\n\n if(val instanceof NavigationEnd){\n\n //add classname by page\n if(!document.body.classList.contains('route-dialog-opened')){\n\n var path = this.router.url.split('/')[1].split('?')[0];\n\n if(path != this.pathName){\n this.layoutService.removeClassToBody(this.pathName);\n\n this.pathName = path;\n\n this.layoutService.addClassToBody(this.pathName);\n }\n }\n\n // show header by data\n let showHeader = this.route.snapshot?.data?.showHeader;\n\n if(showHeader && showHeader == 'false'){\n this.showHeader = false;\n }\n \n if(this.reloadPage && !document.body.classList.contains('route-dialog-opened')){\n this.reloadPage = false;\n window.location.reload();\n }\n\n setTimeout(() => {\n if(document.body.classList.contains('route-dialog-opened')){\n this.routeDialogOpened = true;\n }\n else if(this.routeDialogOpened) {\n console.log('actualizar route config!');\n\n this.routeDialogOpened = false;\n this.reloadPage = true;\n }\n\n // Check if there is a next appointment alert to show\n this.checkNextAppointmentAlert();\n }, 600);\n\n\n if(!val.url.includes('checkout') \n && this.appStorageService.getItemSession(STORAGE.SELECT_COUNTRY) \n && !this.selectCountryDialogOpened){\n this.selectCountryDialogOpened = true;\n this.dialog.open(SelectCountryDialogComponent, {disableClose: true});\n }\n }\n });\n }\n\n ngOnInit(): void {\n //this.headerName = this.baseService.getHeaderName();\n this.setHeaderComponentName();\n\n this.toggleHeaderView();\n\n this.loadDirectoryTheme();\n\n this.setOverlayMaterial();\n\n this.setTitlePage();\n\n this.setFavicon();\n\n this.setManifestUrl();\n\n this.setIframeModalActions();\n\n this.manageVirtualAttentionActions();\n\n this.manageSessionExpiredAction();\n\n this.manageServiceErrorAction();\n\n this.setDateAdapter();\n\n this.startNewAppointmentsListener();\n\n this.setCountryByUser();\n\n this.setZIndexInitialValue();\n\n this.isIOS = this.baseService.isIOS();\n this.isDesktopMac = this.baseService.isMacDesktop();\n }\n\n private setHeaderComponentName() {\n if (location.pathname.indexOf(\"/perfil/\") >= 0) {\n this.headerName = \"PublicProfilePageHeaderComponent\";\n }\n else {\n this.headerName = this.baseService.getHeaderName();\n }\n }\n\n @HostListener('window:beforeunload')\n ngOnDestroy() {\n\n if(this.routeQueryParamsSubscribe) {\n this.routeQueryParamsSubscribe.unsubscribe();\n }\n\n this.appointmentService.clearAppointmentsCache();\n }\n\n loadDirectoryTheme(){\n this.directoryClass = this.baseService.getDirectoryClass();\n\n this.document.body.classList.add(this.getDirectoryClassName());\n\n this.setThemeProperties();\n\n this.setThemeColor();\n\n this.themeLoaderService.init(this.directoryClass);\n }\n\n toggleHeaderView(){\n // Get QS parameters\n this.route.queryParams.subscribe(params => {\n if (params && params.hideHeader == 'true') {\n this.showHeader = false;\n }\n });\n }\n\n startNewAppointmentsListener() {\n this.userService.getUserPersonLoggedIn().subscribe(\n user => { user != null && user.id > 0 ? this.initAppointmentSignalR(user.id) : 0 },\n error => {}\n );\n }\n\n setCountryByUser(){\n this.messageBusService.onLoginCompleted().subscribe(message=>{\n\n this.userService.getUserCountry().subscribe(country=>{\n if(country){\n let msg = new TerritorialDivionCountryMessage();\n msg.country = country;\n \n this.messageBusService.sendTerritorialDivisionCountry(msg);\n }\n else{\n this.appStorageService.setItemSession(STORAGE.SELECT_COUNTRY, true);\n }\n });\n });\n }\n\n initAppointmentSignalR(userId: number) {\n if (!this.hasJointGroup) {\n this.appointmentSignalRService.onConnectionLost().subscribe(m => {\n console.log(\"Appointments: Connection lost\");\n });\n \n this.appointmentSignalRService.onConnectionStablished().subscribe(m => {\n \n console.log(\"Appointments: Connection stablished\");\n this.hasJointGroup = true;\n // Join group that will receive appointments\n this.appointmentSignalRService.joinGroup(userId);\n });\n \n // Init signalR\n this.appointmentSignalRService.init();\n \n // Subscribe to events\n this.subscribeToSignalREvents(userId);\n }\n }\n\n subscribeToSignalREvents(userId: number): void { \n \n // NEW MESSAGE\n this.appointmentSignalRService.onAppointmentChangedReceived().subscribe((message: AppointmentEvent) => { \n \n // second layer user validation\n if (message && message.IdUsuario == userId) {\n this.appointmentService.getAppointments(this.locale.language).subscribe(\n appointments => this.messageBusService.appointmentChangeReceived(appointments),\n error => {}\n );\n }\n });\n } \n\n getRouteAnimationData(route?: ActivatedRouteSnapshot): string {\n if (!route) {\n route = this.contexts.getContext('primary')?.route?.snapshot;\n }\n \n let result = route?.data?.['animation'];\n \n if (route?.children?.length) {\n const response = result = this.getRouteAnimationData(route.children[0]);\n if (response) {\n result = response;\n }\n }\n\n return result ?? '';\n }\n\n getActiveVirtualAttention() {\n this.virtualAttentionService.getActive().subscribe(va => { \n if (!va)\n return;\n \n let msg = new LoadChatMessage();\n msg.idEtapaSolicitud = va.idEtapaSolicitud;\n \n this.messageBusService.loadChat(msg);\n });\n }\n\n setOverlayMaterial(){\n const overlayContainerClasses = this.overlayContainer.getContainerElement().classList;\n const themeClassesToRemove = Array.from(overlayContainerClasses).filter((item: string) => item.includes('-theme'));\n if (themeClassesToRemove.length) {\n overlayContainerClasses.remove(...themeClassesToRemove);\n }\n overlayContainerClasses.add(this.getDirectoryClassName());\n }\n\n getDirectoryClassName(){\n return this.directoryClass + \"-theme\";\n }\n\n setThemeProperties(){\n const element = this._document.body;\n const theme = this.themes.find(t => t.name === this.directoryClass);\n\n if(!theme) return;\n\n for (const key in theme.properties) {\n element.style.setProperty(key, theme.properties[key]);\n }\n }\n\n setTitlePage(){\n const title = this.baseService.getDirectoryTitle();\n\n this.titleService.setTitle(title);\n }\n\n setFavicon(){\n const urlFavicon = this.baseService.getDirectoryUrlFavicon();\n\n const htmlElement:HTMLLinkElement | null = document.querySelector('#faviconLink');\n const appleHtmlElement:HTMLLinkElement | null = document.querySelector('#applefaviconLink');\n\n const currentTheme = this.themes.find(t => t.name === this.directoryClass);\n\n if(htmlElement) \n htmlElement.href = urlFavicon;\n\n if (appleHtmlElement && currentTheme)\n appleHtmlElement.href = currentTheme.properties[\"--favicon-big\"];\n }\n\n setManifestUrl(){\n const manifestUrl = \"pwa/manifest/manifest-\" + this.directoryClass + \".json\";\n\n const htmlElement:HTMLLinkElement | null = document.querySelector('#manifestLink');\n\n if(htmlElement)\n htmlElement.href = manifestUrl;\n }\n\n setThemeColor() { \n const currentTheme = this.themes.find(t => t.name === this.directoryClass);\n\n this.meta.addTag({ name: 'theme-color', content: currentTheme?.properties[\"--primary\"] }); \n }\n\n @HostListener('scroll', ['$event'])\n //@Debounce(100)\n onScroll($event:Event){\n\n const scrollTop = ($event.target as Element).scrollTop;\n const offset = this.scrollTop - scrollTop;\n const elOffsetTop = ($event.target as HTMLElement).offsetTop\n\n if(Math.abs(offset) < 50) return; \n\n const direction = offset < 0\n ? Direction.Down\n : Direction.Up;\n\n this.scrollTop = scrollTop;\n\n this.layoutService.onScrollingBody(direction);\n\n this.messageBusService.pageScroll(new PageScrollMessage(direction, scrollTop, elOffsetTop, false));\n }\n\n @HostListener('touchmove', ['$event'])\n @Debounce(200)\n onTouchMove($event: Event) {\n const activeElement = this.document.activeElement;\n if (activeElement && (activeElement as HTMLElement).blur) {\n (activeElement as HTMLElement).blur();\n }\n }\n\n onDialogOpen() { \n // This dummy dialog will provide the overlay we need on the page when openning a modal inside the iframe\n this.dummyDialog = this.dialog.open(EmptyDialogComponent, {\n panelClass: 'dummy-dialog', \n disableClose: true\n });\n\n // We need to change the page main div z-index in this case to show the iframe above the overlay and modal we just onpened\n this.iframeZIndex = 9999;\n\n this.isIframeModalOpen = true;\n }\n\n onDialogClose() {\n if (this.dummyDialog)\n this.dummyDialog.close();\n\n //this.iframeZIndex = 1;\n this.setZIndexInitialValue();\n\n this.isIframeModalOpen = false;\n }\n\n setZIndexInitialValue() {\n /*let isMobile = window.innerWidth < 800;\n\n this.iframeZIndex = isMobile? 1 : 2;*/\n\n this.iframeZIndex = 1;\n }\n\n onRequestUserId() {\n this.userService.processRequestUserId();\n }\n\n private setIframeModalActions(){\n // Register to ModalOpen and ModalClose events that are fired from an iframe\n this.iframeMessageService.onModalOpen().subscribe(msg => {\n this.onDialogOpen();\n });\n this.iframeMessageService.onModalClose().subscribe(msg => {\n this.onDialogClose();\n });\n \n this.iframeMessageService.onRequestUserId().subscribe(msg => {\n this.onRequestUserId();\n });\n \n // We will get this event when user login using the popup of Cliniweb, as the PHR instance of the popup is in another window\n // Cliniweb need to send us a message to let us know the user loged in\n this.iframeMessageService.onRefreshUser().subscribe(m => {\n this.userService.getUserPersonLoggedIn().subscribe(p => {\n if (p)\n this.messageBusService.loginCompleted(new LoginCompletedMessage(p));\n });\n });\n }\n\n private manageVirtualAttentionActions(){\n // Get active virtual attention\n if (this.authService.isLoggedIn()) {\n this.getActiveVirtualAttention();\n }\n \n // On SSO when the ngOnInit the user is not yet logged in, so for those cases we will subscribe to this event\n this.messageBusService.onLoginCompleted().subscribe(msg => { \n this.getActiveVirtualAttention();\n this.startNewAppointmentsListener();\n });\n }\n\n private manageSessionExpiredAction(){\n // On Session expired\n this.messageBusService.onSessionExpired().subscribe(msg => {\n\n if (this.sessionExpiredPopupOpen)\n return;\n \n this.sessionExpiredPopupOpen = true;\n\n let dialogData = new DialogData();\n dialogData.title = this.translation.translate(\"sessionExpired.title\");\n dialogData.message = this.translation.translate(\"sessionExpired.message\");\n dialogData.confirmText = this.translation.translate(\"sessionExpired.btnText\"); \n dialogData.showHeaderIcon = false;\n //dialogData.headerIconClass = \"phr-iconset-info\"; \n dialogData.showCancelButton = false;\n\n const dialogRef = this.dialog.open(ConfirmDialogComponent, {\n data: dialogData,\n panelClass: ['cliniweb-theme-dialog', 'session-expired-dialog']\n });\n\n dialogRef.afterClosed().subscribe(accepted => { \n this.sessionExpiredPopupOpen = false;\n \n this.authService.logout();\n this.appStorageService.removeSessionItem(STORAGE.SIGNUP_WORKFLOW_VERIFICATION_TYPE);\n window.location.href = `${window.location.origin}/login?homeUrl=${msg.returnUrl}`;\n }); \n });\n }\n\n private manageServiceErrorAction(){\n // On Service Error\n this.messageBusService.onServiceError().subscribe(msg => {\n\n if (msg.innerError && msg.innerError.message == \"Popup window closed\" || this.sessionExpiredPopupOpen) {\n // popups closed should not return error.\n return;\n }\n \n if (this.serviceErrorPopupOpen)\n return;\n \n this.serviceErrorPopupOpen = true;\n\n let messageText = msg.displayMessage? msg.displayMessage : this.translation.translate(\"serviceError.message\");\n\n let dialogData = new DialogData();\n dialogData.title = this.translation.translate(\"serviceError.title\");\n dialogData.message = messageText;\n dialogData.confirmText = this.translation.translate(\"serviceError.btnText\"); \n dialogData.showHeaderIcon = true;\n dialogData.headerIconClass = \"phr-iconset-warning\"; \n dialogData.showCancelButton = false;\n\n const dialogRef = this.dialog.open(ErrorDialogComponent, {\n data: dialogData\n });\n\n dialogRef.afterClosed().subscribe(accepted => { \n this.serviceErrorPopupOpen = false; \n });\n });\n }\n\n private setDateAdapter(){\n // When language change we need to set the propper locale to the datepicker\n this.dateAdapter.setLocale(this.locale.dateLanguage);\n\n this.baseService.localeChanged$.subscribe(l => {\n this.dateAdapter.setLocale(l.dateLanguage);\n });\n }\n\n private checkNextAppointmentAlert() {\n let companyName = this.baseService.getCompanyName();\n\n if (companyName.toLocaleLowerCase() == \"sura-pacientes-pa\")\n return;\n\n // If user is logged in\n this.userService.getUserPersonLoggedIn().subscribe(p => {\n if (!p)\n return;\n \n // If account has \"citas\" on the menu\n this.baseService.getMenuLinks(this.locale.language).subscribe(links => {\n if (links && links.length > 0 && links.find(l => l.idAreaSistema == this.ID_AREA_SISTEMA_MIS_CITAS)) {\n \n let path = document.location.pathname.replace(this.locale.language, \"\").replace(/\\//g, \"\"); \n\n // If we are now on \"Inicio\" or \"doctors\" page\n if (links.find(l => \n (l.idAreaSistema == this.ID_AREA_SISTEMA_INICIO || l.idAreaSistema == this.ID_AREA_SISTEMA_DOCTORES)\n && l.identificadorUrl == path\n )) {\n this.hasNextAppointmentAlert();\n }\n }\n });\n });\n }\n\n private hasNextAppointmentAlert() {\n this.appointmentService.getNextAppointment(this.locale.language).subscribe(appointment => {\n if (!appointment)\n return;\n\n let now = new Date().getTime();\n let lastTimeShown = this.appointmentService.getAppointmentLastTimeShown(appointment.idEtapaSolicitud);\n let creationDate = new Date(appointment.fechaRegistro).getTime(); \n \n if (lastTimeShown <= 0)\n lastTimeShown = creationDate;\n \n let timeDiff = now - lastTimeShown;\n let hrsDiff = (24 * 60 * 60 * 1000); // 24 hrs\n\n if (timeDiff > hrsDiff) { \n this.appointmentService.setAppointmentLastTimeShown(appointment.idEtapaSolicitud);\n\n // Show the alert\n this.showNextAppointmentAlert(appointment);\n }\n });\n }\n\n showNextAppointmentAlert(appointment: PatientAppointment) {\n let dialogData = new DialogData();\n dialogData.data = appointment;\n \n const dialogRef = this.dialog.open(NextAppointmentDialogComponent, {\n data: {\n id: 'next-appointment-dialog', \n data: appointment,\n animationIn: 'next-appointment-animation-in',\n animationOut: 'next-appointment-animation-out'\n },\n panelClass: ['next-appointment-dialog', 'next-appointment-animation-in']\n });\n \n dialogRef.afterClosed().subscribe(() => {\n\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { catchError } from 'rxjs/operators';\nimport { LogService } from '../services/log.service';\nimport { AuthService } from '../services/auth.service';\nimport { MessageBusService, ServiceErrorMessage } from '../services/message-bus.service';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n\n constructor(\n private router: Router,\n private logService: LogService,\n private authService: AuthService,\n private messageBusService: MessageBusService\n ) {}\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n// this.messageBusService.serviceError(new ServiceErrorMessage(''));\n return next.handle(request).pipe(catchError(this.catchError.bind(this)));\n }\n\n private catchError(err: HttpErrorResponse): Observable {\n const error: string = err?.error?.message || err.statusText;\n \n /*if ([401, 403].includes(err.status) || (err.error && err.error.error == 'invalid_grant')) {\n this.authService.sessionExpired(this.router.routerState.snapshot.url); \n \n //this.router.navigate(['/login'], { queryParams: { returnUrl: this.router.routerState.snapshot.url } });\n }\n else if(err && err.error && err.error.error && err.error.error != 'invalid_grant') {\n this.logService.logError(error);\n }*/\n\n this.sendLogs(err, error);\n\n this.showErrorDialog(err);\n\n return throwError(error);\n }\n\n private sendLogs(err: any, error: string) {\n if(err?.error?.error && err.error.error != 'invalid_grant') {\n this.logService.logError(error);\n }\n }\n\n private showErrorDialog(err: any): void {\n if (err.status > 404) {\n this.messageBusService.serviceError(new ServiceErrorMessage(''));\n }\n}\n\n}\n","import { Injectable, Inject, Optional } from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport {\r\n L10nConfig,\r\n L10nLoader,\r\n L10nStorage,\r\n L10nLocale,\r\n L10nTranslationLoader,\r\n L10nProvider,\r\n L10nValidation,\r\n L10N_LOCALE,\r\n L10nNumberFormatOptions,\r\n L10nDateTimeFormatOptions,\r\n parseDigits,\r\n L10nTranslationService\r\n} from \"angular-l10n\";\r\n\r\n\r\nexport const l10nConfig: L10nConfig = {\r\n format: 'language',\r\n providers: [\r\n { name: 'app', asset: './assets/i18n/app', options: { version: '1.0.0' } }\r\n ],\r\n fallback: false,\r\n cache: true,\r\n keySeparator: '.',\r\n defaultLocale: { language: 'es', currency: 'USD', dateLanguage: 'es-ES' },\r\n schema: [\r\n { locale: { language: 'es', currency: 'USD', dateLanguage: 'es-ES' }, dir: 'ltr', text: 'Panamá' },\r\n { locale: { language: 'en', currency: 'USD', dateLanguage: 'en-US' }, dir: 'ltr', text: 'United States' } \r\n ],\r\n defaultRouting: false\r\n};\r\n\r\nexport function l10nPreload(translation: L10nTranslationService, translationLoader: L10nTranslationLoader): () => Promise {\r\n return () => new Promise((resolve) => {\r\n translationLoader.get('es', { name: 'app', asset: './assets/i18n/app', options: { version: '1.0.0' } })\r\n .subscribe({\r\n next: (data) => {\r\n translation.addData(data, 'es');\r\n },\r\n complete: () => resolve()\r\n });\r\n });\r\n}\r\n\r\nexport function initL10n(l10nLoader: L10nLoader): () => Promise {\r\n return () => l10nLoader.init();\r\n}\r\n\r\n@Injectable() export class AppStorage implements L10nStorage {\r\n\r\n private hasStorage: boolean;\r\n\r\n constructor() {\r\n this.hasStorage = typeof Storage !== 'undefined';\r\n }\r\n\r\n public async read(): Promise {\r\n if (this.hasStorage) {\r\n let locale = JSON.parse(localStorage.getItem('locale') || '{}');\r\n\r\n if (!locale || !locale.language)\r\n locale = l10nConfig.defaultLocale;\r\n\r\n return Promise.resolve(locale);\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n public async write(locale: L10nLocale): Promise {\r\n if (this.hasStorage) {\r\n localStorage.setItem('locale', JSON.stringify(locale));\r\n }\r\n }\r\n}\r\n\r\n@Injectable() export class HttpTranslationLoader implements L10nTranslationLoader {\r\n\r\n private headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n\r\n constructor(@Optional() private http: HttpClient) { }\r\n\r\n public get(language: string, provider: L10nProvider): Observable<{ [key: string]: any }> {\r\n\r\n const url = `${provider.asset}-${language}.json`;\r\n const options = {\r\n headers: this.headers,\r\n params: new HttpParams().set('v', provider.options.version)\r\n };\r\n return this.http.get(url, options);\r\n }\r\n}\r\n\r\n@Injectable() export class LocaleValidation implements L10nValidation {\r\n\r\n constructor(@Inject(L10N_LOCALE) private locale: L10nLocale) { }\r\n\r\n public parseNumber(value: string, options?: L10nNumberFormatOptions, language = this.locale.language): number | null {\r\n if (value === '' || value == null) return null;\r\n\r\n let format = {\r\n ...parseDigits(options && options.digits ? options.digits : '') \r\n };\r\n\r\n format.minimumIntegerDigits = 1;\r\n format.minimumFractionDigits = 0;\r\n format.maximumFractionDigits = 0;\r\n\r\n let decimalSeparator: string;\r\n switch (language) {\r\n case 'es':\r\n decimalSeparator = ',';\r\n break;\r\n default:\r\n decimalSeparator = '.';\r\n }\r\n\r\n const pattern = `^-?[\\\\d]{${format.minimumIntegerDigits},}(\\\\${decimalSeparator}[\\\\d]{${format.minimumFractionDigits},${format.maximumFractionDigits}})?$`;\r\n const regex = new RegExp(pattern);\r\n return regex.test(value) ? parseFloat(value.replace(decimalSeparator, '.')) : null;\r\n }\r\n\r\n public parseDate(value: string, options?: L10nDateTimeFormatOptions, language = this.locale.language): Date | null {\r\n return null;\r\n }\r\n\r\n}","import { BaseService } from \"../services/base.service\";\r\nimport { MessageBusService, ServiceErrorMessage } from \"../services/message-bus.service\";\r\nimport { RouteLoaderService } from \"../services/route-loader.service\";\r\nimport { AuthService } from \"../services/auth.service\";\r\nimport { take } from \"rxjs/operators\";\r\nimport { TerritorialDivisionsService } from \"../services/territorial-divisions.service\";\r\nimport { forkJoin } from \"rxjs\";\r\n\r\nexport function appInitializer(\r\n authService: AuthService,\r\n baseService: BaseService,\r\n routeLoader: RouteLoaderService,\r\n messageBusService: MessageBusService,\r\n territorialDivisionService: TerritorialDivisionsService) {\r\n return () => new Promise(resolve => {\r\n baseService.checkVersion();\r\n\r\n const countryObservable = territorialDivisionService.getCountryByIp()\r\n .pipe(take(1));\r\n const appConfigObservable = baseService.getAppConfig()\r\n .pipe(take(1));\r\n\r\n forkJoin([countryObservable, appConfigObservable]).subscribe(([country, results]) => {\r\n\r\n routeLoader.load().subscribe().add(resolve);\r\n\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const transferToken = urlParams.get('token');\r\n\r\n if (transferToken) {\r\n authService.loginByTransferToken(transferToken).subscribe().add(resolve);\r\n }\r\n\r\n console.log(\"app initializer finished\");\r\n }, error => {\r\n console.log(\"app initializer error\");\r\n \r\n // It is very important to resolve this promise, \r\n // if not the initialization process will be interrupted and the app.component (and others) will NOT run the initialize\r\n resolve(\"\");\r\n\r\n setTimeout(() => {\r\n messageBusService.serviceError(new ServiceErrorMessage(\"\"));\r\n }, 100); \r\n });\r\n });\r\n}","import { Injectable } from '@angular/core';\nimport { Subject } from \"rxjs\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoadingService {\n\n private _loading: boolean = false;\n loadingStatus = new Subject();\n\n constructor() { }\n\n get loading():boolean {\n return this._loading;\n }\n\n set loading(value) {\n this._loading = value;\n this.loadingStatus.next(value);\n }\n\n startLoading() {\n this.loading = true;\n }\n\n stopLoading() {\n this.loading = false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { LoadingService } from '../services/loading.service';\nimport { finalize } from 'rxjs/operators';\n\n@Injectable()\nexport class LoadingInterceptor implements HttpInterceptor {\n\n activeRequests: number = 0;\n\n constructor(private loadingService: LoadingService) {\n }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n if (this.activeRequests === 0) {\n this.loadingService.startLoading();\n }\n\n this.activeRequests++;\n return next.handle(request).pipe(\n finalize(() => {\n this.activeRequests--;\n if (this.activeRequests === 0) {\n this.loadingService.stopLoading();\n }\n })\n )\n };\n}\n","import { Theme } from \"../theme\";\r\n\r\nexport const suraTheme: Theme = {\r\n name: 'sura',\r\n properties: {\r\n '--primary': '#0033a0',\r\n '--primary2': '#0033a0',\r\n '--primary3': '#0033a0',\r\n '--on-primary': '#fff',\r\n '--accent': '#00aec7',\r\n '--on-accent': '#fff',\r\n '--accent1': '#E3E829',\r\n '--error': '#FF4C4C',\r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'sura',\r\n '--font-primary': 'Barlow, FSJoey',\r\n '--font-secundary': 'Montserrat, sans-serif',\r\n '--grey': '#404040',\r\n '--grey2': '#DDDDDD', \r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692',\r\n\r\n '--variant-color2': '#0033a0',\r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n\r\n '--public-profile-avatar-border-color': '#C8C8C8',\r\n\r\n '--public-profile-title-color': '#0033a0',\r\n '--public-profile-btn-appointment-color': '#0033a0',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/sura/pwa/Sura-512x512.png',\r\n }\r\n};","\r\nimport { Injectable } from '@angular/core';\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { L10nTranslationService } from 'angular-l10n';\r\n\r\n@Injectable()\r\nexport class MatPaginatorI18nService extends MatPaginatorIntl {\r\n \r\n private ofStr : string;\r\n\r\n public constructor(private translation: L10nTranslationService) {\r\n super();\r\n\r\n this.translation.onChange().subscribe({\r\n next: () => { \r\n this.itemsPerPageLabel = this.translation.translate('paginator.itemPerPage'); \r\n this.nextPageLabel = this.translation.translate('paginator.nextPage'); \r\n this.previousPageLabel = this.translation.translate('paginator.previousPage'); \r\n this.firstPageLabel = this.translation.translate('paginator.firstPage'); \r\n this.lastPageLabel = this.translation.translate('paginator.lastPage'); \r\n this.ofStr = this.translation.translate('paginator.of'); \r\n }\r\n }); \r\n }\r\n\r\n public getRangeLabel = (page: number, pageSize: number, length: number): string => {\r\n if (length === 0 || pageSize === 0) {\r\n return `0 / ${length}`;\r\n }\r\n\r\n length = Math.max(length, 0);\r\n\r\n const of = this.ofStr;\r\n const startIndex: number = page * pageSize;\r\n const endIndex: number = startIndex < length\r\n ? Math.min(startIndex + pageSize, length)\r\n : startIndex + pageSize;\r\n\r\n //return `${startIndex + 1} - ${endIndex} / ${length}`;\r\n return `${endIndex} ${of} ${length}`;\r\n }\r\n\r\n}","import { Theme } from \"../theme\";\r\n\r\nexport const mapfrePanamaTheme: Theme = {\r\n name: 'mapfre-panama',\r\n properties: {\r\n '--primary': '#d81e05',\r\n '--primary2': '#d81e05',\r\n '--primary3': '#d81e05',\r\n '--on-primary': '#fff',\r\n '--accent': '#404040',\r\n '--on-accent': '#fff',\r\n '--accent1': '#E3E829',\r\n '--error': '#FF4C4C',\r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'cliniweb-icons',\r\n '--font-primary': 'SegoeUI',\r\n '--font-secundary': 'Montserrat',\r\n '--font-color': '#000',\r\n '--input-placeholder': '#9E9E9E',\r\n '--input-placeholder-show': '#505050',\r\n '--grey': '#404040',\r\n '--grey2': '#DDDDDD',\r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692',\r\n\r\n '--variant-color2': '#d81e05',\r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n\r\n '--public-profile-avatar-border-color': '#C8C8C8',\r\n '--public-profile-title-color': '#000',\r\n '--public-profile-btn-appointment-color': '#d81e05',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/mapfre/pwa/Mapfre-512x512.png',\r\n }\r\n};","import { Theme } from \"../theme\";\r\n\r\nexport const mapfreGuatemalaTheme: Theme = {\r\n name: 'mapfre-guatemala',\r\n properties: {\r\n '--primary': '#d81e05',\r\n '--primary2': '#d81e05',\r\n '--primary3': '#d81e05',\r\n '--on-primary': '#fff',\r\n '--accent': '#404040',\r\n '--on-accent': '#fff',\r\n '--accent1': '#E3E829',\r\n '--error': '#FF4C4C',\r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'cliniweb-icons',\r\n '--font-primary': 'SegoeUI',\r\n '--font-secundary': 'Montserrat',\r\n '--font-color': '#000',\r\n '--input-placeholder': '#9E9E9E',\r\n '--input-placeholder-show': '#505050', \r\n '--grey': '#404040',\r\n '--grey2': '#DDDDDD',\r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692',\r\n\r\n '--variant-color2': '#d81e05',\r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n\r\n '--public-profile-avatar-border-color': '#C8C8C8',\r\n '--public-profile-title-color': '#000',\r\n '--public-profile-btn-appointment-color': '#d81e05',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/mapfre/pwa/Mapfre-512x512.png',\r\n }\r\n};","import { Theme } from \"../theme\";\r\n\r\nexport const mapfrePanamaAsistenciaTheme: Theme = {\r\n name: 'mapfre-panama-asistencia',\r\n properties: {\r\n '--primary': '#d81e05',\r\n '--primary2': '#d81e05',\r\n '--primary3': '#d81e05',\r\n '--on-primary': '#fff',\r\n '--accent': '#404040',\r\n '--on-accent': '#fff',\r\n '--accent1': '#E3E829',\r\n '--error': '#FF4C4C',\r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'cliniweb-icons',\r\n '--font-primary': 'SegoeUI',\r\n '--font-secundary': 'Montserrat',\r\n '--font-color': '#000',\r\n '--input-placeholder': '#9E9E9E',\r\n '--input-placeholder-show': '#505050',\r\n '--grey': '#404040',\r\n '--grey2': '#DDDDDD',\r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692',\r\n\r\n '--variant-color2': '#d81e05',\r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n\r\n '--public-profile-avatar-border-color': '#C8C8C8',\r\n \r\n '--public-profile-title-color': '#000',\r\n '--public-profile-btn-appointment-color': '#d81e05',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/mapfre-panama-asistencia/pwa/PanamaAsistencia-512x512.png',\r\n }\r\n};","import { Theme } from \"../theme\";\r\n\r\nexport const townCenterTheme: Theme = {\r\n name: 'town-center',\r\n properties: { \r\n '--primary': '#1F4381',\r\n '--primary2': '#2D6A8E',\r\n '--primary3': '#A8E1EF',\r\n\r\n '--brand-color': '#1F4381',\r\n '--brand-color2': '#1F4381',\r\n \r\n '--variant-color': '#AAC9FF',\r\n '--variant-color2': '#E0ECFF',\r\n '--variant-color3': '#CCDFFF',\r\n '--variant-color4': '#234A8D',\r\n '--variant-color5': '#C2DCEC',\r\n '--variant-color6': '#E6F4FC',\r\n '--variant-color7': '#7CC3D4',\r\n '--variant-color8': '#CDFCFF',\r\n '--variant-color9': '#FF2D91',\r\n '--variant-color10': '#87DAEE',\r\n '--variant-color11': '#32739A',\r\n\r\n '--secondary-color': '#FF4C4C',\r\n '--secondary-color2': '#FFE8E6',\r\n '--secondary-color3': '#229F1D',\r\n '--secondary-color4': '#5FCC08',\r\n '--secondary-color5': '#E7FFD4',\r\n '--secondary-color6': '#1976D2',\r\n '--secondary-color7': '#DDF3FF',\r\n '--secondary-color8': '#FF9900',\r\n '--secondary-color9': '#FFEDD2',\r\n\r\n '--primary-50-transparent': '#1F438180',\r\n\r\n '--on-primary': '#fff',\r\n '--accent': '#404040',\r\n '--on-accent': '#fff',\r\n '--accent1': '#a8e1ef33',\r\n '--error': '#FF4C4C',\r\n\r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'cliniweb-icons',\r\n '--font-primary': 'Mulish',\r\n '--font-secundary': 'Mulish',\r\n '--font-color': '#000',\r\n '--input-placeholder': '#9E9E9E',\r\n '--input-placeholder-show': '#505050',\r\n \r\n '--grey': '#404040',\r\n '--grey2': '#DDDDDD',\r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692', \r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n \r\n '--public-profile-avatar-border-color': '#C8C8C8',\r\n\r\n '--public-profile-title-color': '#505050',\r\n '--public-profile-btn-appointment-color': '#1F4381',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/town-center/pwa/TownCenter-512x512.png',\r\n '--company-icon': 'url(assets/images/logos/townCenter.png)',\r\n '--company-image': 'url(assets/images/town-center/logo.svg)',\r\n // '--background-img':'url(assets/images/town-center/tow-center-background.svg)',\r\n '--background-color': '#F5F9FF'\r\n }\r\n};","import { Theme } from \"../theme\";\r\n\r\nexport const hospitalPaitillaTheme: Theme = {\r\n name: 'hospital-paitilla',\r\n properties: {\r\n '--primary': '#009BDF',\r\n '--primary2': '#185A7D',\r\n '--primary3': '#64ECF4',\r\n\r\n '--brand-color': '#1F4381',\r\n '--brand-color2': '#1F4381',\r\n \r\n '--variant-color': '#7DD7FF',\r\n '--variant-color2': '#D6F2FF',\r\n '--variant-color3': '#B4E8FF',\r\n '--variant-color4': '#18A2DF',\r\n '--variant-color5': '#C5DAE4',\r\n '--variant-color6': '#E8F3F9',\r\n '--variant-color7': '#55CAD1',\r\n '--variant-color8': '#CDFCFF',\r\n '--variant-color9': '#FF2D91',\r\n '--variant-color10': '#60E3EB',\r\n '--variant-color11': '#1D6286',\r\n\r\n '--secondary-color': '#FF4C4C',\r\n '--secondary-color2': '#FFE8E6',\r\n '--secondary-color3': '#229F1D',\r\n '--secondary-color4': '#5FCC08',\r\n '--secondary-color5': '#E7FFD4',\r\n '--secondary-color6': '#1976D2',\r\n '--secondary-color7': '#DDF3FF',\r\n '--secondary-color8': '#FF9900',\r\n '--secondary-color9': '#FFEDD2',\r\n\r\n '--primary-50-transparent': '#009BDF80',\r\n\r\n '--on-primary': '#fff',\r\n '--accent': '#404040',\r\n '--on-accent': '#fff',\r\n '--accent1': '#a8e1ef33',\r\n '--error': '#FF4C4C',\r\n \r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'cliniweb-icons',\r\n '--font-primary': 'Mulish',\r\n '--font-secundary': 'Mulish',\r\n '--font-color': '#000',\r\n '--input-placeholder': '#9E9E9E',\r\n '--input-placeholder-show': '#505050',\r\n \r\n '--grey': '#404040',\r\n '--grey2': '#DDDDDD',\r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692', \r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n\r\n '--public-profile-avatar-border-color': '#C8C8C8',\r\n '--public-profile-title-color': '#505050',\r\n '--public-profile-btn-appointment-color': '#009BDF',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/hospital-paitilla/logo-paitilla.png',\r\n '--company-icon': 'url(assets/images/logos/paitilla-round.png)',\r\n '--company-image': 'url(assets/images/hospital-paitilla/logo-paitilla.png)',\r\n // '--background-img':'url(assets/images/hospital-paitilla/paitilla-background.svg)',\r\n '--background-color': '#F3FBFF'\r\n }\r\n};","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { WorkflowService } from '../services/workflow.service';\r\nimport { STORAGE } from '../services/app-storage.service';\r\nimport { MedicalOrderWorkflowState } from 'src/app/shared/models/workflow/states/medical-order-workflow-state.model';\r\n\r\n@Injectable()\r\nexport class OidcWorkflowInterceptor implements HttpInterceptor {\r\n\r\n constructor(private workflowService: WorkflowService) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n const workflowType: string = this.workflowService.getWorkflowTypeActive();\r\n let request2: HttpRequest = request.clone();\r\n if (workflowType == STORAGE.MEDICAL_ORDER_WORKFLOW_STATE || workflowType == STORAGE.GROWTH_CURVES_WORKFLOW_STATE) {\r\n this.procesarMedicalOrderWorklow(request2);\r\n }\r\n return next.handle(request2);\r\n }\r\n\r\n private procesarMedicalOrderWorklow(request: HttpRequest) {\r\n if (request.url.includes('api/authentication/oidc')) {\r\n const workflowState: MedicalOrderWorkflowState = this.workflowService.getWorkflowDataState();\r\n const idVerificacionSolicitudPorVerificar = workflowState.getIdVerificacion();\r\n request.body.idVerificacionSolicitudPorVerificar = idVerificacionSolicitudPorVerificar;\r\n }\r\n }\r\n}\r\n","import { Theme } from \"../theme\";\r\n\r\nexport const pacificaSaludPhrTheme: Theme = {\r\n name: 'pacifica-salud-phr',\r\n properties: {\r\n '--primary': '#062a5e',\r\n // '--primary2': '#185A7D',\r\n // '--primary3': '#64ECF4',\r\n\r\n // '--brand-color': '#1F4381',\r\n // '--brand-color2': '#1F4381',\r\n \r\n '--variant-color': '#A3C8FF',\r\n '--variant-color2': '#DFECFE',\r\n '--variant-color3': '#C8DEFF',\r\n '--variant-color4': '#0A326B',\r\n // '--variant-color5': '#C5DAE4',\r\n // '--variant-color6': '#E8F3F9',\r\n // '--variant-color7': '#55CAD1',\r\n // '--variant-color8': '#CDFCFF',\r\n // '--variant-color9': '#FF2D91',\r\n // '--variant-color10': '#60E3EB',\r\n // '--variant-color11': '#1D6286',\r\n\r\n '--secondary-color': '#FF4C4C',\r\n '--secondary-color2': '#FFE8E6',\r\n '--secondary-color3': '#229F1D',\r\n '--secondary-color4': '#5FCC08',\r\n '--secondary-color5': '#E7FFD4',\r\n '--secondary-color6': '#1976D2',\r\n '--secondary-color7': '#DDF3FF',\r\n '--secondary-color8': '#FF9900',\r\n '--secondary-color9': '#FFEDD2',\r\n\r\n '--primary-50-transparent': '#062A5E',\r\n\r\n '--on-primary': '#fff',\r\n '--accent': '#404040',\r\n '--on-accent': '#fff',\r\n '--accent1': '#a8e1ef33',\r\n '--error': '#FF4C4C',\r\n \r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'cliniweb-icons',\r\n '--font-primary': 'Mulish',\r\n '--font-secundary': 'Mulish',\r\n '--font-color': '#000',\r\n '--input-placeholder': '#9E9E9E',\r\n '--input-placeholder-show': '#505050',\r\n \r\n '--grey': '#404040',\r\n '--grey2': '#DDDDDD',\r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692', \r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n\r\n '--public-profile-avatar-border-color': '#C8C8C8',\r\n '--public-profile-title-color': '#505050',\r\n '--public-profile-btn-appointment-color': '#062a5e',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/pacifica-salud-phr/logo-pacifica-salud-phr.png',\r\n '--company-icon': 'url(assets/images/logos/paitilla-round.png)',\r\n '--company-image': 'url(assets/images/pacifica-salud-phr/logo-paitilla.png)',\r\n '--background-img':'url(assets/images/pacifica-salud-phr/paitilla-background.svg)',\r\n '--background-color': '#F4F9FF'\r\n }\r\n};","import { Theme } from \"../theme\";\r\n\r\nexport const hsantafePhrTheme: Theme = {\r\n name: 'hsantafe-phr',\r\n properties: {\r\n '--primary': '#00816D',\r\n '--primary2': '#FF8065',\r\n '--primary3': '#7474C1',\r\n\r\n // '--brand-color': '#7474C1',\r\n // '--brand-color2': '#1F4381',\r\n \r\n '--variant-color': '#C5FBB2',\r\n '--variant-color2': '#9DFFEF',\r\n '--variant-color3': '#00F9D1',\r\n '--variant-color4': '#008A74',\r\n '--variant-color5': '#FFCBC0',\r\n '--variant-color6': '#FFEEEB',\r\n '--variant-color7': '#6363A7',\r\n '--variant-color8': '#F2F2FF',\r\n // '--variant-color9': '#FF2D91',\r\n '--variant-color10': '#CDCDFF',\r\n '--variant-color11': '#FF8B72',\r\n\r\n '--secondary-color': '#FF4C4C',\r\n '--secondary-color2': '#FFE8E6',\r\n '--secondary-color3': '#229F1D',\r\n '--secondary-color4': '#5FCC08',\r\n '--secondary-color5': '#E7FFD4',\r\n '--secondary-color6': '#1976D2',\r\n '--secondary-color7': '#DDF3FF',\r\n '--secondary-color8': '#FF9900',\r\n '--secondary-color9': '#FFEDD2',\r\n\r\n '--primary-50-transparent': '#00816D',\r\n\r\n '--on-primary': '#fff',\r\n '--accent': '#404040',\r\n '--on-accent': '#fff',\r\n '--accent1': '#a8e1ef33',\r\n '--error': '#FF4C4C',\r\n \r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'cliniweb-icons',\r\n '--font-primary': 'Mulish',\r\n '--font-secundary': 'Mulish',\r\n '--font-color': '#000',\r\n '--input-placeholder': '#9E9E9E',\r\n '--input-placeholder-show': '#505050',\r\n \r\n '--grey': '#404040',\r\n '--grey2': '#DDDDDD',\r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692', \r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n\r\n '--public-profile-avatar-border-color': '#C5FBB2',\r\n '--public-profile-title-color': '#505050',\r\n '--public-profile-btn-appointment-color': '#009BDF',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/hsantafe-phr/logo-paitilla.png',\r\n '--company-icon': 'url(assets/images/logos/paitilla-round.png)',\r\n '--company-image': 'url(assets/images/hsantafe-phr/logo-hsantafe-phr.svg)',\r\n // '--background-img':'url(assets/images/hsantafe-phr/paitilla-background.svg)',\r\n '--background-color': '#FCFAF7'\r\n }\r\n};","import { ErrorHandler, Injectable } from '@angular/core';\r\nimport { MessageBusService, ServiceErrorMessage } from '../services/message-bus.service';\r\n\r\n@Injectable()\r\nexport class GlobalErrorHandler implements ErrorHandler {\r\n\r\n constructor(private messageBusService: MessageBusService){\r\n\r\n }\r\n\r\n handleError(error: any): void {\r\n\r\n console.error('GlobalErrorHandler' + error);\r\n console.log(error)\r\n var message = new ServiceErrorMessage(error || 'Error desconocido', error);\r\n this.messageBusService.serviceError(message);\r\n }\r\n}","import { Theme } from \"../theme\";\r\n\r\nexport const chpanamericanoPhrTheme: Theme = {\r\n name: 'chpanamericano-phr',\r\n properties: {\r\n '--primary': '#002F87',\r\n '--primary2': '#0082CA',\r\n // '--primary3': '#64ECF4',\r\n\r\n // '--brand-color': '#1F4381',\r\n // '--brand-color2': '#1F4381',\r\n \r\n '--variant-color': '#A6C5FF',\r\n '--variant-color2': '#E1ECFF',\r\n '--variant-color3': '#CADCFF',\r\n '--variant-color4': '#003597',\r\n '--variant-color5': '#A0DDFF',\r\n '--variant-color6': '#E0F4FF',\r\n '--variant-color7': '#F3F8FB',\r\n // '--variant-color8': '#CDFCFF',\r\n '--variant-color9': '#FF2D91',\r\n // '--variant-color10': '#60E3EB',\r\n '--variant-color11': '#008AD7',\r\n\r\n '--secondary-color': '#FF4C4C',\r\n '--secondary-color2': '#FFE8E6',\r\n '--secondary-color3': '#229F1D',\r\n '--secondary-color4': '#5FCC08',\r\n '--secondary-color5': '#E7FFD4',\r\n '--secondary-color6': '#1976D2',\r\n '--secondary-color7': '#DDF3FF',\r\n '--secondary-color8': '#FF9900',\r\n '--secondary-color9': '#FFEDD2',\r\n\r\n '--primary-50-transparent': '#009BDF',\r\n\r\n '--on-primary': '#fff',\r\n '--accent': '#404040',\r\n '--on-accent': '#fff',\r\n '--accent1': '#a8e1ef33',\r\n '--error': '#FF4C4C',\r\n \r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'cliniweb-icons',\r\n '--font-primary': 'Mulish',\r\n '--font-secundary': 'Mulish',\r\n '--font-color': '#000',\r\n '--input-placeholder': '#9E9E9E',\r\n '--input-placeholder-show': '#505050',\r\n \r\n '--grey': '#404040',\r\n '--grey2': '#DDDDDD',\r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692', \r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n\r\n '--public-profile-avatar-border-color': '#C8C8C8',\r\n '--public-profile-title-color': '#505050',\r\n '--public-profile-btn-appointment-color': '#009BDF',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/chpanamericano-phr/logo-paitilla.png',\r\n '--company-icon': 'url(assets/images/logos/paitilla-round.png)',\r\n '--company-image': 'url(assets/images/chpanamericano-phr/logo-paitilla.png)',\r\n // '--background-img':'url(assets/images/chpanamericano-phr/paitilla-background.svg)',\r\n '--background-color': '#F3F8FB'\r\n }\r\n};","import { Theme } from \"../theme\";\r\n\r\nexport const chsfPhrTheme: Theme = {\r\n name: 'chsf-phr',\r\n properties: {\r\n '--primary': '#003A5D',\r\n '--primary2': '#636569',\r\n '--primary3': '#F4F4F4',\r\n\r\n // '--brand-color': '#1F4381',\r\n // '--brand-color2': '#1F4381',\r\n \r\n '--variant-color': '#82B6EC',\r\n // '--variant-color2': '#D6F2FF',\r\n // '--variant-color3': '#B4E8FF',\r\n '--variant-color4': '#00446D',\r\n // '--variant-color5': '#C5DAE4',\r\n // '--variant-color6': '#E8F3F9',\r\n // '--variant-color7': '#55CAD1',\r\n // '--variant-color8': '#CDFCFF',\r\n // '--variant-color9': '#FF2D91',\r\n '--variant-color10': '#ECECEC',\r\n '--variant-color11': '#6C6E73',\r\n\r\n '--secondary-color': '#FF4C4C',\r\n '--secondary-color2': '#FFE8E6',\r\n '--secondary-color3': '#229F1D',\r\n '--secondary-color4': '#5FCC08',\r\n '--secondary-color5': '#E7FFD4',\r\n '--secondary-color6': '#1976D2',\r\n '--secondary-color7': '#DDF3FF',\r\n '--secondary-color8': '#FF9900',\r\n '--secondary-color9': '#FFEDD2',\r\n\r\n '--primary-50-transparent': '#009BDF80',\r\n\r\n '--on-primary': '#fff',\r\n '--accent': '#404040',\r\n '--on-accent': '#fff',\r\n '--accent1': '#a8e1ef33',\r\n '--error': '#FF4C4C',\r\n \r\n '--button-disabled': 'rgba(129, 137, 169, 0.27)',\r\n '--on-button-disabled': '#8189A9',\r\n '--hint-color': '#768692',\r\n '--dialog-text-color': '#53565A',\r\n '--nav-list-active': 'rgba(236, 240, 241, 0.5)',\r\n '--border-color-inactive': '#ECF0F1',\r\n '--box-shadow-color': '#ECF0F1',\r\n '--background-color-disabled': '#FBFBFB',\r\n '--font-icon': 'cliniweb-icons',\r\n '--font-primary': 'Mulish',\r\n '--font-secundary': 'Mulish',\r\n '--font-color': '#000',\r\n '--input-placeholder': '#9E9E9E',\r\n '--input-placeholder-show': '#505050',\r\n \r\n '--grey': '#404040',\r\n '--grey2': '#DDDDDD',\r\n '--grey3': '#F2F2F2',\r\n '--grey4': '#C4C4C4',\r\n '--grey5': '#757575',\r\n '--grey6': '#636363',\r\n '--grey7': '#BEBEBE',\r\n '--grey8': '#9E9E9E',\r\n '--grey9': '#505050',\r\n '--grey10': '#53565A',\r\n '--grey11': '#768692', \r\n\r\n '--grayscale': '#1E1E1E',\r\n '--grayscale2': '#2D2D2D',\r\n '--grayscale3': '#3C3C3C',\r\n '--grayscale4': '#505050',\r\n '--grayscale5': '#646464',\r\n '--grayscale6': '#787878',\r\n '--grayscale7': '#8C8C8C',\r\n '--grayscale8': '#A0A0A0 ',\r\n '--grayscale9': '#B4B4B4',\r\n '--grayscale10': '#C8C8C8',\r\n '--grayscale11': '#DCDCDC',\r\n '--grayscale12': '#F0F0F0 ',\r\n\r\n '--public-profile-avatar-border-color': '#C8C8C8',\r\n '--public-profile-title-color': '#505050',\r\n '--public-profile-btn-appointment-color': '#009BDF',\r\n '--public-profile-btn-pay-color': '#505050',\r\n '--favicon-big': '../../assets/images/chsf-phr/logo-paitilla.png',\r\n '--company-icon': 'url(assets/images/logos/paitilla-round.png)',\r\n '--company-image': 'url(assets/images/chsf-phr/logo-paitilla.png)',\r\n // '--background-img':'url(assets/images/chsf-phr/paitilla-background.svg)',\r\n '--background-color': '#F9F9F9'\r\n }\r\n};","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA, APP_INITIALIZER, InjectionToken, LOCALE_ID, ErrorHandler } from '@angular/core';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { LoginModule } from './modules/login/login.module';\r\nimport { HomeModule } from './modules/home/home.module';\r\nimport { SupportModule } from './modules/support/support.module';\r\nimport { CoreModule } from './core/core.module';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { ErrorInterceptor } from './core/interceptors/error.interceptor';\r\nimport { L10nIntlModule, L10nLoader, L10nRoutingModule, L10nTranslationModule, L10nValidationModule } from 'angular-l10n';\r\nimport { AppStorage, HttpTranslationLoader, initL10n, l10nConfig, LocaleValidation } from './core/l10n-config';\r\nimport { appInitializer } from './core/helpers/app.initializer';\r\nimport { BaseService } from './core/services/base.service';\r\nimport { LoadingInterceptor } from './core/interceptors/loading.interceptor';\r\nimport { suraTheme } from 'src/themes/sura/sura';\r\nimport { cliniwebTheme } from 'src/themes/cliniweb/cliniweb';\r\nimport { THEMES } from 'src/themes/theme';\r\nimport { PrivacyPoliciesModule } from './modules/privacy-policies/privacy-policies.module';\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { MatPaginatorI18nService } from './core/services/mat-paginator-i18n.service';\r\nimport { mapfrePanamaTheme } from 'src/themes/mapfre-panama/mapfre-panama';\r\nimport { mapfreGuatemalaTheme } from 'src/themes/mapfre-guatemala/mapfre-guatemala';\r\nimport { mapfrePanamaAsistenciaTheme } from 'src/themes/mapfre-panama-asistencia/mapfre-panama-asistencia';\r\nimport { RouteLoaderService } from './core/services/route-loader.service';\r\nimport { MessageBusService } from './core/services/message-bus.service';\r\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MAT_MOMENT_DATE_FORMATS, MomentDateAdapter } from '@angular/material-moment-adapter';\r\nimport { townCenterTheme } from 'src/themes/town-center/town-center';\r\nimport { hospitalPaitillaTheme } from 'src/themes/hospital-paitilla/hospital-paitilla';\r\nimport { ServiceWorkerModule } from '@angular/service-worker';\r\nimport localeEsES from '@angular/common/locales/es';\r\nimport localeEnUS from '@angular/common/locales/en';\r\nimport { registerLocaleData } from '@angular/common';\r\nimport { WidgetModule } from './modules/widget/widget.module';\r\nimport { AuthService } from './core/services/auth.service';\r\nimport { TerritorialDivisionsService } from './core/services/territorial-divisions.service';\r\nimport { OidcWorkflowInterceptor } from './core/interceptors/oidc-workflow.interceptor';\r\nimport { pacificaSaludPhrTheme } from 'src/themes/pacifica-salud-phr/pacifica-salud-phr';\r\nimport { hsantafePhrTheme } from 'src/themes/hsantafe-phr/hsantafe-phr';\r\nimport { GlobalErrorHandler } from './core/handlers/global-error.handler';\r\nimport { environment } from 'src/environments/environment';\r\nimport { chpanamericanoPhrTheme } from 'src/themes/chpanamericano-phr/chpanamericano-phr';\r\nimport { chsfPhrTheme } from 'src/themes/chsf-phr/chsf-phr';\r\n\r\nregisterLocaleData(localeEsES, 'es');\r\nregisterLocaleData(localeEsES, 'es-ES');\r\nregisterLocaleData(localeEnUS, 'en-US');\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n HttpClientModule,\r\n BrowserAnimationsModule,\r\n FlexLayoutModule,\r\n CoreModule,\r\n LoginModule,\r\n HomeModule,\r\n SupportModule,\r\n WidgetModule,\r\n SharedModule,\r\n PrivacyPoliciesModule,\r\n L10nTranslationModule.forRoot(\r\n l10nConfig,\r\n {\r\n storage: AppStorage,\r\n translationLoader: HttpTranslationLoader\r\n }\r\n ),\r\n L10nIntlModule,\r\n L10nValidationModule.forRoot({ validation: LocaleValidation }),\r\n L10nRoutingModule.forRoot(),\r\n ServiceWorkerModule.register(\"ngsw-worker.js\", {enabled: true})\r\n ],\r\n providers: [\r\n //{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: LoadingInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: OidcWorkflowInterceptor, multi: true },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initL10n,\r\n deps: [L10nLoader],\r\n multi: true\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: appInitializer,\r\n deps: [AuthService, BaseService, RouteLoaderService, MessageBusService, TerritorialDivisionsService],\r\n multi: true\r\n },\r\n {\r\n provide: THEMES,\r\n useValue: [\r\n cliniwebTheme,\r\n suraTheme,\r\n cliniwebTheme,\r\n mapfrePanamaTheme, \r\n mapfreGuatemalaTheme, \r\n mapfrePanamaAsistenciaTheme,\r\n townCenterTheme,\r\n hospitalPaitillaTheme,\r\n pacificaSaludPhrTheme,\r\n hsantafePhrTheme,\r\n chpanamericanoPhrTheme,\r\n chsfPhrTheme\r\n ]\r\n },\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorI18nService,\r\n },\r\n {provide: MAT_DATE_LOCALE, useValue: 'es-ES'},\r\n {provide: LOCALE_ID, useValue: 'es' },\r\n {provide: LOCALE_ID, useValue: 'es-ES' },\r\n {provide: LOCALE_ID, useValue: 'en-US' },\r\n {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},\r\n {provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS},\r\n MessageBusService,\r\n { provide: ErrorHandler, useClass: GlobalErrorHandler }\r\n ],\r\n bootstrap: [AppComponent],\r\n schemas: [ CUSTOM_ELEMENTS_SCHEMA ]\r\n})\r\nexport class AppModule { }","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","import { Inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ActivatedRoute, NavigationExtras, Router, Routes } from '@angular/router';\nimport { RouteDialogComponent, RouteDialogModel, RouteDialogType } from 'src/app/shared/components/dialogs/route-dialog/route-dialog.component';\nimport { CloseRouteDialogMessage, MessageBusService } from './message-bus.service';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RouteDialogService {\n\n private dialogs:MatDialogRef[] = [];\n\n constructor(\n private router: Router,\n private messageBusService: MessageBusService,\n private dialog: MatDialog,\n @Inject(DOCUMENT) private document: Document,\n ) { }\n\n openDialog(model: RouteDialogModel){\n\n // this.checkRouteConfig(model);\n\n this.document.body.classList.add('route-dialog-opened');\n\n let currentRoute = window.location.pathname + window.location.search;\n\n let dialogRef = this.dialog.open(RouteDialogComponent, {\n data:model,\n panelClass: ['route-dialog-modal', model.className, model.animationIn, model.backgroundClassName],\n id: model.id.toString(),\n disableClose: model.disableClose\n }); \n\n dialogRef.beforeClosed().subscribe(x=>{ \n dialogRef.componentInstance.onCloseClick(true); \n });\n\n dialogRef.afterClosed().subscribe(x=>{\n this.router.navigateByUrl(currentRoute); \n });\n\n this.dialogs.push(dialogRef);\n\n this.messageBusService.openRouteDialog();\n }\n\n closeDialog(type:RouteDialogType){\n\n let dialogRef = this.dialogs.find(d=> d.id == type.toString());\n\n if(dialogRef){\n let comp = dialogRef.componentInstance as RouteDialogComponent;\n\n comp.onCloseClick();\n\n this.dialogs = this.dialogs.filter(d => d.id != type.toString());\n }\n\n if(this.dialogs.length == 0){\n this.messageBusService.allRouteDialogClosed();\n }\n }\n\n isOpen(type:RouteDialogType){\n\n let dialogRef = this.dialog.getDialogById(type.toString());\n\n return dialogRef ? true : false;\n }\n\n closeDialogsAndNavigate(url: string, params: NavigationExtras | null = null){\n this.messageBusService.closeRouteDialog(new CloseRouteDialogMessage());\n\n if (!params)\n this.router.navigate([url]);\n else \n this.router.navigate([url], params);\n\n setTimeout(()=>{\n window.location.reload();\n }, 200); \n }\n\n anyOpen(): boolean{\n return this.dialogs.length > 0;\n }\n\n checkRouteConfig(model: RouteDialogModel){\n if(this.router.config.filter(r => r.outlet == model.id.toString()).length == 0){\n\n\n const route = this.router.config.find(r => r.path && model.route.includes(r.path));\n\n if(route)\n route.outlet = '3';\n\n\n\n // const routesForDialogType = this.duplicateRoutes(this.router.config, model.id.toString());\n\n // this.router.config.unshift(...routesForDialogType);\n\n this.router.resetConfig(this.router.config);\n }\n }\n\n duplicateRoutes(routes:Routes, outlet: string){\n\n return routes.map(route => {\n const duplicatedRoute = { ...route };\n if (route.children) {\n duplicatedRoute.children = this.duplicateRoutes(route.children, outlet);\n }\n duplicatedRoute.outlet = outlet;\n return duplicatedRoute;\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 = \"zn8P\";"]}