{"version":3,"file":"app_b803af7ce98ccb1475df.js","mappings":"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","sources":["webpack://customer/../common/components/appInsights/TelemetryService.ts","webpack://customer/../common/components/appInsights/TelemetryProvider.tsx","webpack://customer/../common/utils/domUtility.ts","webpack://customer/../common/models/Enums/Environment.ts","webpack://customer/../common/models/Enums/AppointmentFlowActionOperations.ts","webpack://customer/../common/models/Enums/AppointmentFlowSteps.ts","webpack://customer/../common/models/Enums/VisitCompletionType.ts","webpack://customer/../common/models/Enums/AppointmentStatus.ts","webpack://customer/../common/models/Enums/AuthApplicationIds.ts","webpack://customer/../common/models/Enums/AuthApplicationKeys.ts","webpack://customer/../common/models/Enums/AuthOperationRoleNames.ts","webpack://customer/../common/models/Enums/AuthOperationStrings.ts","webpack://customer/../common/models/Enums/BlobEntityType.ts","webpack://customer/../common/models/Enums/CommunicationDirection.ts","webpack://customer/../common/models/Enums/CommunicationEventType.ts","webpack://customer/../common/models/Enums/CommunicationMethod.ts","webpack://customer/../common/models/Enums/CommunicationType.ts","webpack://customer/../common/models/Enums/ClinicTaskStatus.ts","webpack://customer/../common/models/Enums/CommunicationStatus.ts","webpack://customer/../common/models/Enums/DocumentType.ts","webpack://customer/../common/models/Enums/EntityScheduleType.ts","webpack://customer/../common/models/Enums/EventTypes.ts","webpack://customer/../common/models/Enums/VisitStatus.ts","webpack://customer/../common/models/Enums/ExamLockedStatus.ts","webpack://customer/../common/models/Enums/ExamResultType.ts","webpack://customer/../common/models/Enums/MimeType.ts","webpack://customer/../common/models/Enums/OrganizationTypes.ts","webpack://customer/../common/models/Enums/PetAlertType.ts","webpack://customer/../common/models/Enums/QuestionType.ts","webpack://customer/../common/models/Enums/ReservationAssignmentStatuses.ts","webpack://customer/../common/models/Enums/ReservationEventTypes.ts","webpack://customer/../common/models/Enums/ScheduleBlockType.ts","webpack://customer/../common/models/Enums/VisitNoteType.ts","webpack://customer/../common/models/Enums/VisitSalesItemAttributeType.ts","webpack://customer/../common/models/Enums/WeekDay.ts","webpack://customer/../common/models/Enums/WeightConversion.ts","webpack://customer/../common/models/Enums/WellnessExamPrognosisScore.ts","webpack://customer/../common/models/Enums/ConsentType.ts","webpack://customer/../common/models/Enums/SalesItemAttributeProcessingType.ts","webpack://customer/../common/models/Enums/SalesItemAttributeType.ts","webpack://customer/../common/models/Enums/SalesItemType.ts","webpack://customer/../common/models/Enums/BusinessLineEnum.ts","webpack://customer/../common/models/Enums/DiscountTypes.ts","webpack://customer/../common/models/Enums/VisitSalesAttributesName.ts","webpack://customer/../common/models/Enums/OrganizationVersions.ts","webpack://customer/../common/models/Enums/VisitSectionTypes.ts","webpack://customer/../common/models/Enums/PaymentMethods.ts","webpack://customer/../common/models/Enums/HospitalPrescriptionRefillStatus.ts","webpack://customer/../common/models/Enums/HospitalPrescriptionStatus.ts","webpack://customer/../common/models/Enums/HospitalScheduleDateRangeType.ts","webpack://customer/../common/models/Enums/IdexxStatus.ts","webpack://customer/../common/models/Enums/AnesthesiaSectionTypes.ts","webpack://customer/../common/models/Enums/MedicationTypes.ts","webpack://customer/../common/models/Enums/Traits.ts","webpack://customer/../common/models/Enums/FeatureFlags.ts","webpack://customer/../common/models/Enums/NoteTypes.ts","webpack://customer/../common/models/Enums/Templates.ts","webpack://customer/../common/models/Enums/IntakeCompletionStatuses.ts","webpack://customer/../common/models/Enums/SpeciesType.ts","webpack://customer/../common/models/Enums/PetAlerts.ts","webpack://customer/../common/models/Enums/PetGenders.ts","webpack://customer/../common/models/Enums/ClinicClientSearchModalType.ts","webpack://customer/../common/models/Enums/LabelPosition.ts","webpack://customer/../common/models/Enums/ReminderDays.ts","webpack://customer/../common/models/Enums/ExamCategory.ts","webpack://customer/../common/utils/mathUtility.ts","webpack://customer/../common/utils/globalUtilities.ts","webpack://customer/../common/contexts/ContextWrapper.ts","webpack://customer/../common/contexts/RouteContext.tsx","webpack://customer/../common/contexts/AppStoreContext.ts","webpack://customer/../common/contexts/RecentClientSearchStoreContextWrapper.ts","webpack://customer/../common/contexts/ClientStoreContextWrapper.ts","webpack://customer/../common/contexts/ZipCodeStoreContextWrapper.ts","webpack://customer/../common/models/Model.ts","webpack://customer/../common/utils/componentUtility.tsx","webpack://customer/../common/utils/http.ts","webpack://customer/../common/utils/listUtility.ts","webpack://customer/../common/utils/searchQueryGenerator.ts","webpack://customer/../common/utils/guard.ts","webpack://customer/../common/utils/stringUtility.ts","webpack://customer/../common/utils/fileUtil.ts","webpack://customer/../common/utils/ImageResizerUtil.ts","webpack://customer/../common/_assets/color-constants.js","webpack://customer/../common/utils/colorUtils.ts","webpack://customer/../common/utils/ordinal.ts","webpack://customer/../common/utils/datetimeUtils.ts","webpack://customer/../common/utils/formatting.ts","webpack://customer/../common/utils/htmlParser.ts","webpack://customer/../common/utils/objectUtility.ts","webpack://customer/../common/utils/numberUtils.ts","webpack://customer/../common/utils/boolUtility.ts","webpack://customer/../common/utils/calendarUtility.ts","webpack://customer/../common/utils/promiseTrail.ts","webpack://customer/../common/utils/attributeUtils.ts","webpack://customer/../common/utils/cacheUtils.ts","webpack://customer/../common/models/requests/AppointmentRequest.ts","webpack://customer/../common/models/requests/AppointmentCheckInRequest.ts","webpack://customer/../common/models/requests/HospitalScheduleTemplateRequest.ts","webpack://customer/../common/models/requests/EntityScheduleOverridePreferenceRequest.ts","webpack://customer/../common/models/requests/HospitalScheduleRequestModel.ts","webpack://customer/../common/models/requests/VisitConsentClientRequest.ts","webpack://customer/../common/models/requests/VisitConsentDentalExtractionRequest.ts","webpack://customer/../common/models/requests/VisitConsentEuthanasiaRequest.ts","webpack://customer/../common/models/requests/VisitConsentSurgeryRequest.ts","webpack://customer/../common/models/requests/VisitConsentTreatmentRequest.ts","webpack://customer/../common/models/requests/SignAndStoreConsentRequest.ts","webpack://customer/../common/models/requests/AddSalesItemRequest.ts","webpack://customer/../common/models/PrognosisScoreModel.ts","webpack://customer/../common/models/VisitWellnessExamModel.ts","webpack://customer/../common/models/requests/VisitChangeStatusRequest.ts","webpack://customer/../common/models/Security/AuthApplicationModel.ts","webpack://customer/../common/models/Security/AuthOperationModel.ts","webpack://customer/../common/models/Security/AuthRoleModel.ts","webpack://customer/../common/models/Security/UserModel.ts","webpack://customer/../common/models/Security/AuthUserModel.ts","webpack://customer/../common/models/Schedule/ScheduleEntityTypeModel.ts","webpack://customer/../common/models/Schedule/BaseEntitySchedulePreference.ts","webpack://customer/../common/models/Schedule/EntitySchedulePreference.ts","webpack://customer/../common/models/Schedule/DefaultEntitySchedulePreference.ts","webpack://customer/../common/models/Schedule/EntityOverrideSchedulePreference.ts","webpack://customer/../common/models/Schedule/ComputedSchedulePreference.ts","webpack://customer/../common/models/HospitalScheduleTemplateListingModel.ts","webpack://customer/../common/models/Schedule/ScheduleHospitalScheduleTemplateListingModel.ts","webpack://customer/../common/models/Schedule/HospitalScheduleDayEntityModel.ts","webpack://customer/../common/models/Schedule/HospitalScheduleDayModel.ts","webpack://customer/../common/models/Schedule/HospitalScheduleWrapperModel.ts","webpack://customer/../common/models/Schedule/ProcessedHospitalScheduleModel.ts","webpack://customer/../common/models/Schedule/HospitalScheduleVeterinarianModel.ts","webpack://customer/../common/models/VeterinarianListingModel.ts","webpack://customer/../common/models/UserListingModel.ts","webpack://customer/../common/models/Schedule/HospitalScheduleVetTechModel.ts","webpack://customer/../common/models/Schedule/ScheduleEntityBlockTypeModel.ts","webpack://customer/../common/models/AdditionalInfoLabelModel.ts","webpack://customer/../common/models/AppointmentAuditLogModel.ts","webpack://customer/../common/models/requests/AppointmentStatusRequest.ts","webpack://customer/../common/models/AppointmentListingModel.ts","webpack://customer/../common/models/AppointmentManagementGroupingModel.ts","webpack://customer/../common/models/AppointmentManagementItem.ts","webpack://customer/../common/models/AppointmentManagementListModel.ts","webpack://customer/../common/models/IdexxSpeciesModel.ts","webpack://customer/../common/models/SpeciesModel.ts","webpack://customer/../common/models/AppointmentTypeModel.ts","webpack://customer/../common/models/VisitAnesthesiaFormModel.ts","webpack://customer/../common/models/VisitAnesthesiaFormPreOpModel.ts","webpack://customer/../common/components/table/SurgeryGridHelpers.ts","webpack://customer/../common/models/VisitAnesthesiaFormSurgeryModel.ts","webpack://customer/../common/models/VisitAnesthesiaFormPostSurgeryModel.ts","webpack://customer/../common/models/VisitAnesthesiaFormPreOpMedicationModel.ts","webpack://customer/../common/models/VisitAnesthesiaFormSurgeryVitalModel.ts","webpack://customer/../common/models/VisitAnesthesiaFormPostSurgeryVitalModel.ts","webpack://customer/../common/models/MedicationTypeModel.ts","webpack://customer/../common/models/StorageContentModel.ts","webpack://customer/../common/models/AssessmentRecommendationModel.ts","webpack://customer/../common/models/AssessmentReferralModel.ts","webpack://customer/../common/models/AutoRecommendationTypeModel.ts","webpack://customer/../common/models/AutoAddToVisitTypeModel.ts","webpack://customer/../common/models/BlobSasModel.ts","webpack://customer/../common/models/BrandModel.ts","webpack://customer/../common/models/BreedModel.ts","webpack://customer/../common/models/BusinessLineModel.ts","webpack://customer/../common/models/CallCodeModel.ts","webpack://customer/../common/models/CallOriginModel.ts","webpack://customer/../common/models/ClientCommunicationListingModel.ts","webpack://customer/../common/models/ClientListingModel.ts","webpack://customer/../common/models/ClientVerificationRequest.ts","webpack://customer/../common/models/ClinicIncentiveModel.ts","webpack://customer/../common/models/ClinicIncentivePeriodModel.ts","webpack://customer/../common/models/ClinicRoleTypeModel.ts","webpack://customer/../common/models/ClinicRoleModel.ts","webpack://customer/../common/models/ClinicSalesItems.ts","webpack://customer/../common/models/ClientCommunicationStatModel.ts","webpack://customer/../common/models/ClinicTaskAssigneeListingModel.ts","webpack://customer/../common/models/ClinicTaskFollowupListingModel.ts","webpack://customer/../common/models/ClinicTaskListingModel.ts","webpack://customer/../common/models/ClinicTaskTypeModel.ts","webpack://customer/../common/models/ClinicUserListingModel.ts","webpack://customer/../common/models/PhotoModel.ts","webpack://customer/../common/models/VeterinarianModel.ts","webpack://customer/../common/models/CommunicationPreferenceModel.ts","webpack://customer/../common/models/CommunicationTypeModel.ts","webpack://customer/../common/models/ConsentModel.ts","webpack://customer/../common/models/DiagnosisModel.ts","webpack://customer/../common/models/DiscountTypeModel.ts","webpack://customer/../common/models/DocumentTypeModel.ts","webpack://customer/../common/models/EnsurePetAlertsRequest.ts","webpack://customer/../common/models/ExamCategoryModel.ts","webpack://customer/../common/models/ExamResultTypeModel.ts","webpack://customer/../common/models/ExamObservationModel.ts","webpack://customer/../common/models/FeatureFlagModel.ts","webpack://customer/../common/models/FollowUpAppointmentModel.ts","webpack://customer/../common/models/FollowUpTypeModel.ts","webpack://customer/../common/models/GenderModel.ts","webpack://customer/../common/models/HospitalHoursModel.ts","webpack://customer/../common/models/MarketModel.ts","webpack://customer/../common/models/PartnerModel.ts","webpack://customer/../common/models/PaymentTypeModel.ts","webpack://customer/../common/models/RegionModel.ts","webpack://customer/../common/models/StateModel.ts","webpack://customer/../common/models/StoreTypeModel.ts","webpack://customer/../common/models/StoreModel.ts","webpack://customer/../common/models/HospitalScheduleTemplateModel.ts","webpack://customer/../common/models/IvlsDeviceModel.ts","webpack://customer/../common/models/HospitalModel.ts","webpack://customer/../common/models/Enums/MacroType.ts","webpack://customer/../common/models/OrganizationListingModel.ts","webpack://customer/../common/models/HospitalOrganizationListingModel.ts","webpack://customer/../common/models/OrganizationRelationListingModel.ts","webpack://customer/../common/models/HospitalOrganizationRelationListingModel.ts","webpack://customer/../common/models/HospitalPrescriptionEventModel.ts","webpack://customer/../common/models/HospitalPrescriptionRequestListingModel.ts","webpack://customer/../common/models/TraitModel.ts","webpack://customer/../common/models/ModelWithTrait.ts","webpack://customer/../common/models/SalesItemTraitModel.ts","webpack://customer/../common/models/HospitalPrescriptionRefillStatusModel.ts","webpack://customer/../common/models/VisitSalesItemPublicModel.ts","webpack://customer/../common/models/VisitSalesItemModel.ts","webpack://customer/../common/models/HospitalPrescriptionRefillModel.ts","webpack://customer/../common/models/HospitalPrescriptionStatusModel.ts","webpack://customer/../common/models/SalesItemOptionModel.ts","webpack://customer/../common/models/HospitalPrescriptionModel.ts","webpack://customer/../common/models/HospitalPrescriptionRefillListingModel.ts","webpack://customer/../common/models/HospitalPrescriptionListingModel.ts","webpack://customer/../common/models/HospitalScheduleModel.ts","webpack://customer/../common/models/ScheduleBlockTypeModel.ts","webpack://customer/../common/models/IdexxBreedModel.ts","webpack://customer/../common/models/IntakeModel.ts","webpack://customer/../common/models/IntakePetModel.ts","webpack://customer/../common/models/IntakePetSection.ts","webpack://customer/../common/models/IntakePetSectionQuestionListValue.ts","webpack://customer/../common/models/IntakePetSectionQuestionModel.ts","webpack://customer/../common/models/InvoiceListingModel.ts","webpack://customer/../common/models/InvoicePaymentModel.ts","webpack://customer/../common/models/InvoiceSalesItemModel.ts","webpack://customer/../common/models/NoteTypeModel.ts","webpack://customer/../common/models/InvoiceNoteModel.ts","webpack://customer/../common/models/InvoiceDiscrepancyReasonModel.ts","webpack://customer/../common/models/InvoiceModel.ts","webpack://customer/../common/models/LicenseModel.ts","webpack://customer/../common/models/LicenseTypeModel.ts","webpack://customer/../common/models/MacroTypeModel.ts","webpack://customer/../common/models/MacroModel.ts","webpack://customer/../common/models/VisitSalesItemTraitListingModel.ts","webpack://customer/../common/models/VisitAttachmentModel.ts","webpack://customer/../common/models/VisitSalesItemAttributeListValueModel.ts","webpack://customer/../common/models/VisitSalesItemAttributeModel.ts","webpack://customer/../common/models/MedicalHistoryModel.ts","webpack://customer/../common/models/MacroListingModel.ts","webpack://customer/../common/models/OrganizationVersionModel.ts","webpack://customer/../common/models/PaymentMethodModel.ts","webpack://customer/../common/models/PetAlertModel.ts","webpack://customer/../common/models/PetAlertPetModel.ts","webpack://customer/../common/models/PetAppointmentRemindersModel.ts","webpack://customer/../common/models/PetColorModel.ts","webpack://customer/../common/models/PGRBreedModel.ts","webpack://customer/../common/models/PGRColorModel.ts","webpack://customer/../common/models/PrescriptionEventTypeModel.ts","webpack://customer/../common/models/PrescriptionFulfillmentModel.ts","webpack://customer/../common/models/PrescriptionStatusModel.ts","webpack://customer/../common/models/PrescriptionLabelModel.ts","webpack://customer/../common/models/PrescriptionPharmacyModel.ts","webpack://customer/../common/models/PronounModel.ts","webpack://customer/../common/models/QuestionListValueModel.ts","webpack://customer/../common/models/QuestionModel.ts","webpack://customer/../common/models/QuestionSpeciesModel.ts","webpack://customer/../common/models/QuestionStateModel.ts","webpack://customer/../common/models/QuestionTypeModel.ts","webpack://customer/../common/models/RecentClientListingModel.ts","webpack://customer/../common/models/RecommendationTypeModel.ts","webpack://customer/../common/models/ReferralTypeModel.ts","webpack://customer/../common/models/RelationshipType.ts","webpack://customer/../common/models/ReportingGroupModel.ts","webpack://customer/../common/models/ClientModel.ts","webpack://customer/../common/models/EntityMappingModel.ts","webpack://customer/../common/models/PetNoteModel.ts","webpack://customer/../common/models/PetModel.ts","webpack://customer/../common/models/Enums/SourceSystem.ts","webpack://customer/../common/models/ReservationModel.ts","webpack://customer/../common/models/SalesCategoryModel.ts","webpack://customer/../common/models/UnitOfMeasureModel.ts","webpack://customer/../common/models/SalesItemUpgradeListingModel.ts","webpack://customer/../common/models/SalesItemOptionTagAlongListingModel.ts","webpack://customer/../common/models/SalesItemAttributeListValueModel.ts","webpack://customer/../common/models/SalesItemAttributeProcessingTypeModel.ts","webpack://customer/../common/models/SalesItemAttributeTypeModel.ts","webpack://customer/../common/models/SalesItemAttributeModel.ts","webpack://customer/../common/models/SalesItemPriceRuleBrandModel.ts","webpack://customer/../common/models/SalesItemPriceRuleOrganizationModel.ts","webpack://customer/../common/models/SalesItemPriceRuleStateModel.ts","webpack://customer/../common/models/SalesItemPriceRuleModel.ts","webpack://customer/../common/models/SalesItemTypeModel.ts","webpack://customer/../common/models/SalesItemListingModel.ts","webpack://customer/../common/models/SalesItemModel.ts","webpack://customer/../common/models/SalesItemPriceModel.ts","webpack://customer/../common/models/SalesItemResetCategoryModel.ts","webpack://customer/../common/models/SalesItemSimpleListingModel.ts","webpack://customer/../common/models/SalesPackageContentModel.ts","webpack://customer/../common/models/SalesPackageModel.ts","webpack://customer/../common/models/SalesPackagePriceModel.ts","webpack://customer/../common/models/SalesPackagePriceRuleBrandModel.ts","webpack://customer/../common/models/SalesPackagePriceRuleModel.ts","webpack://customer/../common/models/SalesPackagePriceRuleOrganizationModel.ts","webpack://customer/../common/models/SalesPackagePriceRuleStateModel.ts","webpack://customer/../common/models/SalesPlanModel.ts","webpack://customer/../common/models/SalesPlanContentModel.ts","webpack://customer/../common/models/SalesRequirementModel.ts","webpack://customer/../common/models/SalesSubCategoryModel.ts","webpack://customer/../common/models/SearchResponse.ts","webpack://customer/../common/models/SectionListingModel.ts","webpack://customer/../common/models/SectionModel.ts","webpack://customer/../common/models/StoreCommunicationStatModel.ts","webpack://customer/../common/models/TemplateTypeModel.ts","webpack://customer/../common/models/TemplateModel.ts","webpack://customer/../common/models/TrustedApplicationModel.ts","webpack://customer/../common/models/UserFeatureFlagModel.ts","webpack://customer/../common/models/UserModel.ts","webpack://customer/../common/models/VaccineAdministeredModel.ts","webpack://customer/../common/models/VaccineManufacturerModel.ts","webpack://customer/../common/models/VaccineNameModel.ts","webpack://customer/../common/models/VaccineVirusTypeModel.ts","webpack://customer/../common/models/VeterinarianSignatureModel.ts","webpack://customer/../common/models/VisitCompletionTypeModel.ts","webpack://customer/../common/models/VisitConsentModel.ts","webpack://customer/../common/models/VisitDiagnosisModel.ts","webpack://customer/../common/models/VisitNoteModel.ts","webpack://customer/../common/models/VisitPublicModel.ts","webpack://customer/../common/models/EstimateSalesItemModel.ts","webpack://customer/../common/models/EstimateModel.ts","webpack://customer/../common/models/VisitStatusModel.ts","webpack://customer/../common/models/ZipCode.ts","webpack://customer/../common/models/VisitEventModel.ts","webpack://customer/../common/models/VisitExamResultObservationModel.ts","webpack://customer/../common/models/VisitExamResultModel.ts","webpack://customer/../common/models/VisitSectionTypeModel.ts","webpack://customer/../common/models/VisitSectionVersionModel.ts","webpack://customer/../common/models/VisitReferralModel.ts","webpack://customer/../common/models/VisitModel.ts","webpack://customer/../common/models/ConsentTypeModel.ts","webpack://customer/../common/models/RabiesInformationContentModel.ts","webpack://customer/../common/models/RabiesInformationModel.ts","webpack://customer/../common/models/ClinicCancellationReasonModel.ts","webpack://customer/../common/models/VisitTagModel.ts","webpack://customer/../common/models/ReminderSourceModel.ts","webpack://customer/../common/models/ReminderDeactivationReasonModel.ts","webpack://customer/../common/models/ClientConfigurationModel.ts","webpack://customer/../common/models/SalesItemDiscountSalesItem.ts","webpack://customer/../common/models/SalesItemDiscountSubcategory.ts","webpack://customer/../common/models/SalesItemRebateSalesItemModel.ts","webpack://customer/../common/models/PetAttachmentModel.ts","webpack://customer/../common/models/ClientNoteModel.ts","webpack://customer/../common/models/ClinicListingModel.ts","webpack://customer/../common/models/ClinicVeterinarianModel.ts","webpack://customer/../common/models/ClinicUserModel.ts","webpack://customer/../common/models/VisitListingModel.ts","webpack://customer/../common/models/ClinicModel.ts","webpack://customer/../common/models/VisitClientModel.ts","webpack://customer/../common/models/VisitIntakeCompletionStatusModel.ts","webpack://customer/../common/models/VisitPetModel.ts","webpack://customer/../common/models/LabOrderModel.ts","webpack://customer/../common/models/responses/RebookReservationResponse.ts","webpack://customer/../common/models/forms/IWellnessExamForm.ts","webpack://customer/../common/models/ui/AppointmentFlowLaneCard.ts","webpack://customer/../common/models/ui/AppointmentFlowLaneDetails.ts","webpack://customer/../common/models/ui/MacroKeywords.ts","webpack://customer/../common/services/serviceHelper.ts","webpack://customer/../common/services/configurationService.ts","webpack://customer/../common/stores/NotificationStore.ts","webpack://customer/../common/stores/AppStore.ts","webpack://customer/../common/services/storageService.ts","webpack://customer/../common/stores/AzureBlobStore.ts","webpack://customer/../common/services/searchService.ts","webpack://customer/../common/stores/QueryCacheStore.ts","webpack://customer/../common/stores/SearchStore.ts","webpack://customer/../common/services/systemTables/additionalInfoLabelService.ts","webpack://customer/../common/services/systemTables/assessmentReferralService.ts","webpack://customer/../common/services/systemTables/breedService.ts","webpack://customer/../common/services/systemTables/callCodeService.ts","webpack://customer/../common/services/systemTables/callOriginService.ts","webpack://customer/../common/services/systemTables/clinicIncentiveService.ts","webpack://customer/../common/services/systemTables/clinicIncentivePeriodService.ts","webpack://customer/../common/services/systemTables/clinicRoleService.ts","webpack://customer/../common/services/systemTables/clinicTaskTypeService.ts","webpack://customer/../common/services/systemTables/diagnosisService.ts","webpack://customer/../common/services/systemTables/examCategoryService.ts","webpack://customer/../common/services/systemTables/sectionService.ts","webpack://customer/../common/services/systemTables/featureFlagService.ts","webpack://customer/../common/services/systemTables/idexxService.ts","webpack://customer/../common/services/systemTables/marketService.ts","webpack://customer/../common/services/systemTables/petAlertService.ts","webpack://customer/../common/services/systemTables/petColorService.ts","webpack://customer/../common/services/systemTables/pgrService.ts","webpack://customer/../common/services/systemTables/prescriptionLabelService.ts","webpack://customer/../common/services/systemTables/referralTypeService.ts","webpack://customer/../common/services/systemTables/reportingGroupService.ts","webpack://customer/../common/services/systemTables/salesCategoryService.ts","webpack://customer/../common/services/systemTables/salesItemResetCategoryService.ts","webpack://customer/../common/services/systemTables/salesRequirementService.ts","webpack://customer/../common/services/systemTables/salesSubCategoryService.ts","webpack://customer/../common/services/systemTables/stateService.ts","webpack://customer/../common/services/systemTables/templateService.ts","webpack://customer/../common/services/systemTables/zipCodeService.ts","webpack://customer/../common/services/systemTables/trustedApplicationService.ts","webpack://customer/../common/services/systemTables/vaccineAdministeredService.ts","webpack://customer/../common/services/systemTables/vaccineVirusTypeService.ts","webpack://customer/../common/services/systemTables/vaccineNameService.ts","webpack://customer/../common/services/systemTables/vaccineManufacturerService.ts","webpack://customer/../common/models/ClinicSalesPackages.ts","webpack://customer/../common/services/salesPackage/salesPackageService.ts","webpack://customer/../common/services/salesPlan/salesPlanService.ts","webpack://customer/../common/services/pingService.ts","webpack://customer/../common/models/RXServiceDispensingHistoryItemModel.ts","webpack://customer/../common/models/RxSKUItemQuantityModel.ts","webpack://customer/../common/models/RxSKUItemModel.ts","webpack://customer/../common/services/prescriptionService.ts","webpack://customer/../common/services/authApplicationService.ts","webpack://customer/../common/models/CustomerInteractionModel.ts","webpack://customer/../common/services/clientService.ts","webpack://customer/../common/models/requests/MacroRequest.ts","webpack://customer/../common/services/hospitalService.ts","webpack://customer/../common/services/hospitalServiceHooks.ts","webpack://customer/../common/services/imageService.ts","webpack://customer/../common/services/visitService.ts","webpack://customer/../common/models/PetWeightHistoryModel.ts","webpack://customer/../common/models/PetCustomReminders.ts","webpack://customer/../common/services/petService.ts","webpack://customer/../common/services/reservationService.ts","webpack://customer/../common/services/veterinarianService.ts","webpack://customer/../common/services/salesItemService.ts","webpack://customer/../common/services/invoiceService.ts","webpack://customer/../common/services/appointmentTypeService.ts","webpack://customer/../common/services/licenseService.ts","webpack://customer/../common/services/intakeService.ts","webpack://customer/../common/services/clinicService.ts","webpack://customer/../common/services/labOrderService.ts","webpack://customer/../common/services/visitAnesthesiaFormService.ts","webpack://customer/../common/services/petNoteService.ts","webpack://customer/../common/services/clientNoteService.ts","webpack://customer/../common/services/clinicListingService.ts","webpack://customer/../common/services/entityPersistenceService.ts","webpack://customer/../common/stores/ClientStore.ts","webpack://customer/../hospital/contexts/HospitalAppStoreContextWrapper.ts","webpack://customer/../hospital/contexts/UserStoreContextWrapper.ts","webpack://customer/../hospital/contexts/LocationStoreContextWrapper.ts","webpack://customer/../hospital/contexts/ClientStoreContextWrapper.ts","webpack://customer/../hospital/contexts/ExamStoreContextWrapper.ts","webpack://customer/../hospital/views/clients/ClientStore.ts","webpack://customer/../common/stores/hooks/useCreateClientStore.ts","webpack://customer/../common/stores/search/StoreSearchStore.ts","webpack://customer/../common/stores/search/ClientSearchStore.ts","webpack://customer/../common/stores/search/OrganizationSearchStore.ts","webpack://customer/../common/stores/CommunicationTemplateSearchStore.ts","webpack://customer/../common/stores/PaginationStore.ts","webpack://customer/../common/services/userService.ts","webpack://customer/../common/stores/ClientRecentResultsStore.ts","webpack://customer/../common/stores/StateStore.ts","webpack://customer/../common/components/forms/button/CancelNextActions.tsx","webpack://customer/../common/components/forms/controls/FieldSet.tsx","webpack://customer/../common/components/richTextBox/richTextEditorTypes.tsx","webpack://customer/../common/components/richTextBox/RichTextBoxUtils.ts","webpack://customer/../common/components/richTextBox/RichTextBoxSerialization.tsx","webpack://customer/../common/components/richTextBox/RichTextDisplay.tsx","webpack://customer/../hospital/hooks/useHospitalApp.tsx","webpack://customer/../hospital/hooks/useHospitalTime.tsx","webpack://customer/../common/components/modals/YesNoConfirmModal.tsx","webpack://customer/../common/components/tabs/TabsHelperComponents.tsx","webpack://customer/../common/components/modals/NotificationModal.tsx","webpack://customer/../common/components/modals/SuspenseConfirmationModal.tsx","webpack://customer/../hospital/components/search/QuerySearchButton.tsx","webpack://customer/../hospital/stores/SignatureStore.ts","webpack://customer/../hospital/stores/AppointmentStore.ts","webpack://customer/../hospital/stores/AppointmentTypesStore.ts","webpack://customer/../hospital/stores/DuplicateClientStore.ts","webpack://customer/../hospital/stores/HospitalOrganizationsSearchStore.ts","webpack://customer/../hospital/stores/UserSearchStore.ts","webpack://customer/../hospital/stores/VeterinarianStore.ts","webpack://customer/../hospital/stores/HospitalScheduleTemplateSearchStore.ts","webpack://customer/../hospital/stores/HospitalScheduleTemplateStore.ts","webpack://customer/../hospital/stores/ClinicTaskSearchStore.ts","webpack://customer/../hospital/utils/componentUtility.tsx","webpack://customer/../common/models/Enums/AppointmentTypes.ts","webpack://customer/../hospital/stores/HospitalScheduleStore.ts","webpack://customer/../hospital/utils/calendarUtils.ts","webpack://customer/../hospital/stores/HospitalPrescriptionRefillStore.ts","webpack://customer/../common/models/requests/AddHospitalPrescriptionRefillRequest.ts","webpack://customer/../common/models/requests/CheckOutHospitalPrescriptionRefillRequest.ts","webpack://customer/../common/models/requests/UpdateHospitalPrescriptionRefillRequest.ts","webpack://customer/../hospital/stores/VisitStore.ts","webpack://customer/../hospital/stores/MacroStore.ts","webpack://customer/../hospital/stores/HospitalPrescriptionStore.ts","webpack://customer/../hospital/stores/SalesBuilderSearchStore.ts","webpack://customer/../hospital/stores/SalesStore.tsx","webpack://customer/../hospital/stores/PriceCheckSalesBuilderSearchStore.ts","webpack://customer/../hospital/stores/PriceCheckStore.ts","webpack://customer/../common/stores/hubs/BaseHub.ts","webpack://customer/../hospital/stores/Hubs/HospitalHub.ts","webpack://customer/../hospital/stores/Hubs/AppointmentSubscriberStore.ts","webpack://customer/../common/services/storeService.ts","webpack://customer/../common/stores/hubs/ClientSMSHub.ts","webpack://customer/../common/stores/subscribers/ClientSMSHubSubscriberStore.ts","webpack://customer/../common/components/utility/NotificationToastLinkBody.tsx","webpack://customer/../hospital/stores/rootStores/HospitalAppStore.ts","webpack://customer/../hospital/models/HospitalOrganizationRelationListingModel.ts","webpack://customer/../hospital/views/_shared/userprofile/UserStore.ts","webpack://customer/../hospital/stores/hooks/useCreateUserStore.tsx","webpack://customer/../common/hooks/useApp.ts","webpack://customer/../common/components/layout/PageCard.tsx","webpack://customer/../common/components/layout/FlexContainer.tsx","webpack://customer/../common/components/layout/nav/BreadCrumbTrail.tsx","webpack://customer/../common/components/layout/EnvironmentBanner.tsx","webpack://customer/../common/components/layout/SlimPageCard.tsx","webpack://customer/../common/components/pagination/Pager.tsx","webpack://customer/../common/components/pagination/BasicDataTablePagination.tsx","webpack://customer/../common/components/pagination/DataTablePagination.tsx","webpack://customer/../common/components/skeleton/TableSkeleton.tsx","webpack://customer/../common/components/trimming/Authorized.tsx","webpack://customer/../common/components/layout/nav/NavBarLink.tsx","webpack://customer/../common/components/layout/nav/NavBarProfile.tsx","webpack://customer/../hospital/components/layout/nav/AdminNavBar.tsx","webpack://customer/../hospital/components/layout/nav/AdminNavList.tsx","webpack://customer/../common/components/layout/nav/ClientSearchButton.tsx","webpack://customer/../common/hooks/useRecentClients.tsx","webpack://customer/../common/components/priceCheck/PriceCheckDiscountTable.tsx","webpack://customer/../common/components/priceCheck/PriceCheckItemTable.tsx","webpack://customer/../common/components/priceCheck/PriceCheckPackageTable.tsx","webpack://customer/../hospital/hooks/usePriceCheck.tsx","webpack://customer/../hospital/components/layout/nav/HospitalMainNavBar.tsx","webpack://customer/../hospital/components/layout/Page.tsx","webpack://customer/../hospital/components/layout/HospitalPage.tsx","webpack://customer/../hospital/views/admin/locations/LocationsContainer.tsx","webpack://customer/../hospital/views/admin/locations/LocationStore.ts","webpack://customer/../hospital/views/admin/locations/LocationsFilter.tsx","webpack://customer/../hospital/views/_shared/userprofile/User.tsx","webpack://customer/../hospital/stores/hooks/useCreateVeterinarianStore.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserLocationsAddStore.ts","webpack://customer/../hospital/views/_shared/userprofile/UserLocationsAddTable.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserLocationsAdd.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserLocations.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserInactiveProfileBanner.tsx","webpack://customer/../hospital/views/_shared/communicationTemplates/CommunicationTemplatesFilter.tsx","webpack://customer/../common/components/table/TableStyles.ts","webpack://customer/../common/components/pagination/UnknownPageCountPagination.tsx","webpack://customer/../common/components/table/RemoteDataTable.tsx","webpack://customer/../hospital/views/_shared/communicationTemplates/CommunicationTemplatesTable.tsx","webpack://customer/../hospital/views/_shared/communicationTemplates/CommunicationTemplateForm.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfileCommunicationTemplates.tsx","webpack://customer/../hospital/views/_shared/communicationTemplates/CommunicationTemplateContainer.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfile.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfileDetail.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfileLicenseAddUpdate.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfileLicenses.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfileRolesModalAdd.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfileRolesModalDelete.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfileRoles.tsx","webpack://customer/../common/components/wrappers/SignaturePad.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfileSignatureAdd.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfileSignatureDelete.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserProfileSignature.tsx","webpack://customer/../hospital/views/_shared/userprofile/UsersTable.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserListContainer.tsx","webpack://customer/../hospital/views/_shared/userprofile/UsersFilter.tsx","webpack://customer/../hospital/components/calendar/PetcoCalendarTheme.tsx","webpack://customer/../hospital/views/_shared/userprofile/UserSchedulePreferences.tsx","webpack://customer/../hospital/views/_shared/locations/LocationDetailsUserListContainer.tsx","webpack://customer/../hospital/views/_shared/schedule/SchedulePreferences.tsx","webpack://customer/../hospital/views/_shared/schedule/LocationScheduleTemplateModal.tsx","webpack://customer/../common/hooks/useUniqueKey.ts","webpack://customer/../hospital/views/_shared/schedule/LocationScheduleTemplateTable.tsx","webpack://customer/../hospital/views/_shared/schedule/LocationScheduleTemplateDetail.tsx","webpack://customer/../common/components/forms/fields/DisplayLabel.tsx","webpack://customer/../common/components/forms/fields/DisplayField.tsx","webpack://customer/../common/components/forms/fields/DisplayGroup.tsx","webpack://customer/../common/utils/phoneUtils.ts","webpack://customer/../hospital/views/admin/locations/LocationDetailStaticInfo.tsx","webpack://customer/../common/components/forms/CancelAndEditActions.tsx","webpack://customer/../common/components/utility/SuspenseButton.tsx","webpack://customer/../hospital/views/admin/locations/IvlsDeviceTable.tsx","webpack://customer/../hospital/views/admin/locations/LocationDiagnosticDisplay.tsx","webpack://customer/../hospital/views/admin/locations/LocationDiagnosticDetail.tsx","webpack://customer/../common/components/forms/controls/ToggleButton.tsx","webpack://customer/../hospital/views/admin/locations/LocationFlagDetail.tsx","webpack://customer/../common/models/SendSMSResponseModel.ts","webpack://customer/../common/services/smsService.ts","webpack://customer/../hospital/views/admin/locations/LocationDetailsDisplay.tsx","webpack://customer/../hospital/views/admin/locations/LocationHospitalDetail.tsx","webpack://customer/../common/components/time/LocationHours.tsx","webpack://customer/../hospital/views/admin/locations/LocationHoursDetail.tsx","webpack://customer/../hospital/views/admin/locations/LocationDetailForm.tsx","webpack://customer/../hospital/views/admin/locations/LocationDetailView.tsx","webpack://customer/../hospital/views/admin/locations/LocationDetailContainer.tsx","webpack://customer/../hospital/views/admin/locations/LocationsTable.tsx","webpack://customer/../hospital/stores/hooks/useCreateLocationStore.tsx","webpack://customer/../hospital/stores/Hubs/ExamMessageHub.ts","webpack://customer/../hospital/views/exam/ExamStore.ts","webpack://customer/../hospital/stores/hooks/useCreateHospitalPrescriptionStore.tsx","webpack://customer/../hospital/views/pets/ThirdPartyReminders/ThirdPartyRemindersDueDateModal.tsx","webpack://customer/../hospital/views/pets/ThirdPartyReminders/ThirdPartyRemindersSalesItemTable.tsx","webpack://customer/../hospital/views/pets/ThirdPartyReminders/ThirdPartyRemindersTable.tsx","webpack://customer/../hospital/views/pets/ThirdPartyReminders/ThirdPartyRemindersAttachments.tsx","webpack://customer/../common/components/richTextBox/useMacros.ts","webpack://customer/../common/components/richTextBox/MacroDropdown.tsx","webpack://customer/../common/_assets/listOfColors.js","webpack://customer/../common/components/richTextBox/toolbar/RichTextBoxColorPickerButton.tsx","webpack://customer/../common/components/richTextBox/toolbar/RichTextBoxToolbarButton.tsx","webpack://customer/../common/components/richTextBox/toolbar/RichTextBoxIndentButton.tsx","webpack://customer/../common/components/richTextBox/toolbar/RichTextBoxToolbarBlockButton.tsx","webpack://customer/../common/components/richTextBox/toolbar/RichTextBoxToolbarFormatButton.tsx","webpack://customer/../common/components/richTextBox/toolbar/RichTextBoxToolbarMenu.tsx","webpack://customer/../common/components/richTextBox/toolbar/RichTextBoxToolbar.tsx","webpack://customer/../common/components/richTextBox/withRichTextBox.ts","webpack://customer/../common/components/richTextBox/RichTextBox.tsx","webpack://customer/../common/components/forms/controls/FormGroup.tsx","webpack://customer/../common/models/Enums/CommonAlertMessages.ts","webpack://customer/../common/components/forms/controls/ValidationRules.ts","webpack://customer/../common/components/forms/controls/FormInput/FormInput.tsx","webpack://customer/../common/components/forms/controls/FormSelect.tsx","webpack://customer/../common/components/forms/controls/ColorPickerPopover.tsx","webpack://customer/../common/components/forms/controls/ActionButton.tsx","webpack://customer/../common/components/forms/controls/CustomDatePicker.tsx","webpack://customer/../common/components/forms/controls/DeleteButton.tsx","webpack://customer/../common/components/forms/controls/FileUpload.tsx","webpack://customer/../hospital/views/exam/ExamFormVisitBuilderAddNewLotNumber.tsx","webpack://customer/../common/utils/validationUtils.ts","webpack://customer/../common/components/forms/controls/SalesItemAttributeEditors.tsx","webpack://customer/../common/hooks/useIsMounted.ts","webpack://customer/../common/components/forms/controls/FormDateRangePicker.tsx","webpack://customer/../common/hooks/modals/useScheduleDoctorModal.tsx","webpack://customer/../common/hooks/usePrompt.ts","webpack://customer/../common/hooks/useUnsavedChangesWarning.tsx","webpack://customer/../common/hooks/useDoubleClickHandler.ts","webpack://customer/../common/hooks/useQuery.tsx","webpack://customer/../common/hooks/useClickOutside.tsx","webpack://customer/../common/hooks/useCurrentRoute.tsx","webpack://customer/../common/hooks/useCurrentRouteMatches.tsx","webpack://customer/../common/hooks/useRouteBreadcrumb.tsx","webpack://customer/../common/hooks/usePetDetailsStore.tsx","webpack://customer/../common/hooks/useExamNotesAreAllowed.ts","webpack://customer/../common/hooks/useZipCodeStore.ts","webpack://customer/../common/hooks/useZipCodeChanged.ts","webpack://customer/../common/components/utility/NotificationToast.tsx","webpack://customer/../common/components/utility/NotificationList.tsx","webpack://customer/../common/components/utility/Suspense.tsx","webpack://customer/../common/components/utility/EnvironmentWarning.tsx","webpack://customer/../common/stores/PetDetailsStore.ts","webpack://customer/../common/components/utility/Filter.tsx","webpack://customer/../common/stores/ZipCodeStore.ts","webpack://customer/./components/routes/ExtRouteObject.tsx","webpack://customer/../common/components/utility/BreadCrumbRoute.tsx","webpack://customer/../common/utils/routerUtil.ts","webpack://customer/../common/components/appSpinner/AppSpinner.tsx","webpack://customer/./components/layout/nav/NavBar.tsx","webpack://customer/./components/layout/Page.tsx","webpack://customer/./stores/IntakeStore.tsx","webpack://customer/./stores/IntakePetStore.tsx","webpack://customer/./stores/VisitPublicStore.ts","webpack://customer/./stores/RebookStore.ts","webpack://customer/./stores/AppointmentsStore.ts","webpack://customer/./views/appointments/AppointmentsContainer.tsx","webpack://customer/./views/appointments/AppointmentsList.tsx","webpack://customer/./components/modals/CancelReservationModal.tsx","webpack://customer/./components/modals/ConfirmReservationModal.tsx","webpack://customer/./views/appointments/AppointmentGroup.tsx","webpack://customer/./views/appointments/WhatToExpect.tsx","webpack://customer/./views/appointments/CommunicationPreferenceMessages.tsx","webpack://customer/./views/appointments/CommunicationPreference.tsx","webpack://customer/./views/error/ErrorView.tsx","webpack://customer/./contexts/IntakeStoreContextWrapper.ts","webpack://customer/./contexts/intakePetStoreContextWrapper.ts","webpack://customer/./stores/hooks/useCreateIntakeStore.ts","webpack://customer/./views/intake/IntakeView.tsx","webpack://customer/./views/intake/IntakeCustomerDetail.tsx","webpack://customer/./views/intake/IntakePetDetail.tsx","webpack://customer/../common/components/questionTypes/ComboQuestionType.tsx","webpack://customer/./views/intake/IntakeQuestion.tsx","webpack://customer/../common/components/photo/photoUtils.ts","webpack://customer/../common/components/photo/PetPhoto.tsx","webpack://customer/./views/intake/PetPhotoUpload.tsx","webpack://customer/../common/components/photo/AttachmentPhoto.tsx","webpack://customer/./views/rebook/RebookContainer.tsx","webpack://customer/./views/validation/ValidationView.tsx","webpack://customer/./views/validation/ValidationViewStore.tsx","webpack://customer/./views/AppLandingOutlet.tsx","webpack://customer/../common/utils/pricingUtils.ts","webpack://customer/./views/consent/TreatmentPlanConsent.tsx","webpack://customer/./views/consent/ConsentContainer.tsx","webpack://customer/./views/intake/IntakePetContainer.tsx","webpack://customer/./stores/hooks/useCreateIntakePetStore.ts","webpack://customer/./components/routes/OutletWithDefaultRedirect.tsx","webpack://customer/./components/routes/RenderWithRouteAccess.tsx","webpack://customer/./views/error/ErrorBoundary.tsx","webpack://customer/./CustomerApp.tsx","webpack://customer/./components/routes/app/AppRoute.tsx","webpack://customer/./index.tsx"],"sourcesContent":["import { ApplicationInsights } from '@microsoft/applicationinsights-web';\r\nimport { ReactPlugin } from '@microsoft/applicationinsights-react-js';\r\n\r\n// Copied from https://github.com/Azure-Samples/application-insights-react-demo/blob/master/src/TelemetryService.js\r\n\r\nconst reactPlugin: ReactPlugin = new ReactPlugin();\r\nlet appInsights: ApplicationInsights | undefined = undefined;\r\n\r\n\r\n/**\r\n * Create the App Insights Telemetry Service\r\n * @return {{reactPlugin: ReactPlugin, appInsights: Object, initialize: Function}} - Object\r\n */\r\nconst createTelemetryService = () => {\r\n\r\n /**\r\n * Initialize the Application Insights class\r\n * @param {string} instrumentationKey - Application Insights Instrumentation Key\r\n * @param {Object} browserHistory - client's browser history, supplied by the withRouter HOC\r\n * @return {void}\r\n */\r\n const initialize = (instrumentationKey: string, browserHistory: any) => {\r\n if (!browserHistory) {\r\n throw new Error('Could not initialize Telemetry Service');\r\n }\r\n if (!instrumentationKey) {\r\n throw new Error('Instrumentation key not provided in ./src/telemetry-provider.jsx')\r\n }\r\n\r\n appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: instrumentationKey,\r\n enableAutoRouteTracking: true,\r\n enableRequestHeaderTracking: true,\r\n maxBatchInterval: 0,\r\n disableFetchTracking: false,\r\n extensions: [reactPlugin],\r\n extensionConfig: {\r\n [reactPlugin.identifier]: {\r\n history: browserHistory\r\n }\r\n }\r\n }\r\n });\r\n\r\n appInsights.loadAppInsights();\r\n };\r\n\r\n return { reactPlugin, appInsights, initialize };\r\n};\r\n\r\nexport const ai = createTelemetryService();\r\nexport const getAppInsights = () => appInsights;\r\n","import { withAITracking } from '@microsoft/applicationinsights-react-js';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\r\nimport { ai } from './TelemetryService';\r\n\r\n// A hooks-based replacement for the react router v5 withRouter HOC\r\n// AppInsights needs this in order to watch the browser history and track page changes.\r\n// Copied from https://stackoverflow.com/a/71097818/1453907\r\nfunction withRouter(Component: any) {\r\n function ComponentWithRouterProp(props: any) {\r\n let location = useLocation();\r\n let navigate = useNavigate();\r\n let params = useParams();\r\n return (\r\n \r\n );\r\n }\r\n\r\n return ComponentWithRouterProp;\r\n}\r\n\r\n\r\n// P\r\n// Copied from https://github.com/Azure-Samples/application-insights-react-demo/blob/master/src/telemetry-provider.jsx\r\ninterface ITelemetryProviderProps {\r\n instrumentationKey: string,\r\n router: any\r\n}\r\n/**\r\n * This Component provides telemetry with Azure App Insights\r\n *\r\n * NOTE: the package '@microsoft/applicationinsights-react-js' has a HOC withAITracking that requires this to be a Class Component rather than a Functional Component\r\n * Copied from\r\n */\r\nclass TelemetryProvider extends Component> {\r\n override state = {\r\n initialized: false\r\n };\r\n\r\n override componentDidMount() {\r\n if (!this.state.initialized) {\r\n ai.initialize(this.props.instrumentationKey, this.props.router);\r\n this.setState({ initialized: true });\r\n }\r\n }\r\n\r\n override render() {\r\n this.props.router\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default withRouter(withAITracking(ai.reactPlugin, TelemetryProvider));\r\n","export const blurActiveElement = () => {\r\n if (document.activeElement) {\r\n const htmlElement = document.activeElement as HTMLElement;\r\n if (htmlElement.blur)\r\n htmlElement.blur();\r\n }\r\n}\r\n","export enum Environment {\r\n local = 0,\r\n alpha = 5,\r\n dev = 10,\r\n training = 15,\r\n prod = 20,\r\n dr = 40,\r\n import = 60,\r\n test = 80,\r\n feature = 100\r\n}\r\n","export enum AppointmentFlowActionOperations {\r\n Book = \"BOOK\",\r\n Confirm = \"CONFIRM\",\r\n Cancel = \"CANCEL\",\r\n NoShow = \"NO SHOW\",\r\n CheckIn = \"CHECK-IN\",\r\n StartVisit = \"START VISIT\",\r\n Admit = \"ADMIT\",\r\n Open = \"OPEN\",\r\n CheckOut = \"CHECK-OUT\",\r\n CompleteVisit = \"COMPLETE VISIT\",\r\n Holding = \"HOLDING\"\r\n}\r\n","export enum AppointmentFlowSteps {\r\n Scheduled = \"Scheduled\",\r\n CheckedIn = \"Checked-In\",\r\n InProgress = \"In-Progress\",\r\n Admitted = \"Admitted\",\r\n Finalized = \"Finalized\",\r\n Paid = \"Paid\",\r\n CompleteVisit = \"Complete Visit\",\r\n NotShown = \"Not Shown\"\r\n}\r\n","export enum VisitCompletionType {\r\n NotComplete = 1,\r\n CompletedNormally = 2,\r\n CompletedwithOverride = 3,\r\n IssueswithLegalBacker = 4,\r\n Abandoned = 5,\r\n Other = 6,\r\n CompletedviaDI = 7,\r\n Customerdidnotshowforthisappointment = 8,\r\n Duplicatevisitandorpet = 9,\r\n PetunabletoseeDVM = 10,\r\n Priceforserviceswastoohigh = 11,\r\n Clientconfusiononhospitalvsvaccinationclinic = 12,\r\n Petwasreferredout = 13,\r\n Petwasaggressive = 14,\r\n Clientchosetodiscontinueservices = 15,\r\n Petwasnoteligibleforservices = 16\r\n}\r\n\r\nexport namespace VisitCompletionType {\r\n export const visitIsAborted = (visitCompletionTypeId?: number | undefined) => {\r\n return [VisitCompletionType.Priceforserviceswastoohigh,\r\n VisitCompletionType.Clientconfusiononhospitalvsvaccinationclinic,\r\n VisitCompletionType.Petwasreferredout,\r\n VisitCompletionType.Petwasaggressive,\r\n VisitCompletionType.Clientchosetodiscontinueservices,\r\n VisitCompletionType.Petwasnoteligibleforservices,\r\n VisitCompletionType.Other].includes(visitCompletionTypeId ?? 0);\r\n }\r\n}\r\n","import { VisitCompletionType } from \"./VisitCompletionType\";\r\n\r\nexport enum AppointmentStatus {\r\n Invalid = 0,\r\n Booked = 1,\r\n Confirmed = 2,\r\n Cancelled = 3,\r\n Rescheduled = 4,\r\n Showed = 5,\r\n ClinicCancelled = 7,\r\n NoShow = 8,\r\n In_Progress = 9,\r\n Admitted = 10,\r\n Finalized = 11,\r\n Paid = 12,\r\n Check_In = 500,\r\n Consultation = 501,\r\n VetServices = 502,\r\n Check_Out = 503,\r\n Walk_In = 9999 // UI only Appointment Status that maps to \"Showed\" with a Reservation Trait of: Reservation - Walk In\r\n}\r\n\r\nexport namespace AppointmentStatus {\r\n export const statusFormattedName = (status: string | number | undefined, visitCompletionTypeId?: number | undefined) => {\r\n if (typeof status === 'number') status = AppointmentStatus[status];\r\n if (!status) return \"Unknown\";\r\n\r\n switch (status) {\r\n case \"Check_In\": return \"Checked-in\";\r\n case \"In_Progress\": return \"In Progress\";\r\n case \"VetServices\": return \"Vet Services\";\r\n case \"Check_Out\":\r\n if (VisitCompletionType.visitIsAborted(visitCompletionTypeId)) return \"Aborted\";\r\n else return \"Completed\";\r\n case \"ClinicCancelled\": return \"Clinic Cancelled\";\r\n case \"NoShow\": return \"No Show\";\r\n default: return status; // Booked, Confirmed, Completed, Cancelled\r\n }\r\n }\r\n\r\n export const cssFormattedStatus = (status: string | number | undefined) => {\r\n if (typeof status === 'number') status = AppointmentStatus[status];\r\n if (!status) return \"Unknown\";\r\n\r\n switch (status) {\r\n case \"In_Progress\": return \"inprogress\";\r\n case \"Check_In\": return \"checkedin\";\r\n default:\r\n return status;\r\n }\r\n }\r\n\r\n export const statusIcon = (status: string | number | undefined, visitCompletionTypeId?: number | undefined) => {\r\n if (typeof status === 'number') status = AppointmentStatus[status];\r\n if (!status) return \"Unknown\";\r\n\r\n switch (status) {\r\n case \"Booked\": return \"fa fa-calendar\";\r\n case \"Rescheduled\": return \"fa fa-rotate-right\";\r\n case \"Confirmed\": return \"fa fa-check\";\r\n case \"Showed\": return \"fa fa-thumbs-o-up\";\r\n case \"Check_In\": return \"fa fa-thumbs-o-up\";\r\n case \"In_Progress\": return \"fa fa-clock-o\";\r\n case \"Consultation\": return \"fa fa-clock-o\";\r\n case \"Admitted\": return \"fa fa-clock-o\";\r\n case \"VetServices\": return \"fa fa-clock-o\";\r\n case \"Check_Out\":\r\n if (VisitCompletionType.visitIsAborted(visitCompletionTypeId)) return \"fa fa-times\";\r\n else return \"fa fa-check-square-o\";\r\n case \"Finalized\": return \"fa fa-check-square-o\";\r\n case \"Paid\": return \"fa fa-check-square-o\";\r\n case \"Cancelled\": return \"fa fa-times\";\r\n case \"NoShow\": return \"fa fa-times\";\r\n case \"ClinicCancelled\": return \"fa fa-times\";\r\n default: return \"\";\r\n }\r\n }\r\n\r\n export const showAsDormant = (status: AppointmentStatus) => {\r\n return status === AppointmentStatus.NoShow || status === AppointmentStatus.Paid || status === AppointmentStatus.Check_Out;\r\n }\r\n}\r\n","export enum AuthApplicationIds {\r\n Clinic = 1,\r\n Hospital = 2,\r\n Admin = 3\r\n}\r\n","export enum AuthApplicationKeys {\r\n PetPass = '059710B6-E0A7-E911-A79B-000D3A52D59C',\r\n SWIFT = '8BD7A87F-C14A-47B5-98F3-E5C41C54F2B1',\r\n Admin = 'C30CD63D-0657-41A0-9D92-61AD13B5E125'\r\n}\r\n","export enum AuthOperationRoleNames {\r\n PetPass_Admin = \"PetPass_Admin\",\r\n PetPass_CSR = \"PetPass_CSR\",\r\n PetPass_CSR_L2 = \"PetPass_CSR_L2\",\r\n PetPass_Greeter = \"PetPass_Greeter\",\r\n PetPass_DVM = \"PetPass_DVM\",\r\n PetPass_VetTech = \"PetPass_VetTech\",\r\n PetPass_DI = \"PetPass_DI\",\r\n PetPass_Ops_Leader = \"PetPass_Ops_Leader\",\r\n PetPass_ReadOnly = \"PetPass_ReadOnly\",\r\n Admin = \"Admin\",\r\n Veterinarian = \"Veterinarian\",\r\n Veterinary_Technician = \"Veterinary Technician\",\r\n Veterinary_Assistant = \"Veterinary Assistant\",\r\n Hospital_Office_Manager = \"Hospital Office Manager\",\r\n Area_Office_Manager = \"Area Office Manager\",\r\n Concierge_Customer_Service = \"Concierge/Customer Service\",\r\n Hospital_Medical_Leader = \"Hospital Medical Leader\",\r\n Leader_on_Duty = \"Leader on Duty\",\r\n Area_Medical_Director = \"Area Medical Director\"\r\n\r\n}\r\n","export enum AuthOperationUINames {\r\n \"UI_HospitalFlags_CanToggleDoubleBooking\" = \"UI_HospitalFlags_CanToggleDoubleBooking\",\r\n \"UI_HospitalFlags_CanEditUserRoles\" = \"UI_HospitalFlags_CanEditUserRoles\",\r\n \"UI_HospitalFlags_CanEditUserLocations\" = \"UI_HospitalFlags_CanEditUserLocations\",\r\n \"UI_HospitalFlags_CanEditDvmLicenses\" = \"UI_HospitalFlags_CanEditDvmLicenses\",\r\n \"UI_HospitalFlags_CanEditDvmSchedule\" = \"UI_HospitalFlags_CanEditDvmSchedule\",\r\n \"UI_HospitalFlags_CanEditDvmSignature\" = \"UI_HospitalFlags_CanEditDvmSignature\",\r\n \"UI_HospitalFlags_CanEditHospitalDetails\" = \"UI_HospitalFlags_CanEditHospitalDetails\",\r\n \"UI_HospitalFlags_CanEditHospitalSchedule\" = \"UI_HospitalFlags_CanEditHospitalSchedule\",\r\n \"UI_HospitalFlags_CanEditAllCommunicationTemplates\" = \"UI_HospitalFlags_CanEditAllCommunicationTemplates\",\r\n \"UI_HospitalFlags_CanEditLocationCommunicationTemplates\" = \"UI_HospitalFlags_CanEditLocationCommunicationTemplates\",\r\n \"UI_HospitalFlags_CanEditProviderCommunicationTemplates\" = \"UI_HospitalFlags_CanEditProviderCommunicationTemplates\",\r\n \"UI_HospitalFlags_CanReopenVisitWithoutDateRestriction\" = \"UI_HospitalFlags_CanReopenVisitWithoutDateRestriction\",\r\n \"UI_HospitalFlags_CanAccessHospitalAdmin\" = \"UI_HospitalFlags_CanAccessHospitalAdmin\",\r\n \"UI_HospitalFlags_CanAccessGlobalAdmin\" = \"UI_HospitalFlags_CanAccessGlobalAdmin\",\r\n \"UI_HospitalFlags_CanEditAppointmentTypes\" = \"UI_HospitalFlags_CanEditAppointmentTypes\",\r\n \"UI_HospitalFlags_CanManageClientCommunicationPreferences\" = \"UI_HospitalFlags_CanManageClientCommunicationPreferences\",\r\n \"UI_HospitalFlags_CanDeleteClientInteractions\" = \"UI_HospitalFlags_CanDeleteClientInteractions\",\r\n \"UI_HospitalFlags_CanAbortVisit\" = \"UI_HospitalFlags_CanAbortVisit\",\r\n \"UI_HospitalFlags_CancelPrescriptionPickup\" = \"UI_HospitalFlags_CancelPrescriptionPickup\",\r\n \"UI_HospitalFlags_CanAddInvoiceDiscrepancy\" = \"UI_HospitalFlags_CanAddInvoiceDiscrepancy\",\r\n \"UI_HospitalFlags_CanUpdateVisitSalesItemOption\" = \"UI_HospitalFlags_CanUpdateVisitSalesItemOption\",\r\n \"UI_HospitalFlags_CancelPetNotPresentInvoice\" = \"UI_HospitalFlags_CancelPetNotPresentInvoice\",\r\n \"UI_CanOpenFutureClinics\" = \"UI_CanOpenFutureClinics\",\r\n \"Clinic_CancelClinic\" = \"Clinic_CancelClinic\",\r\n \"UI_CanSeeFutureAppointments\" = \"UI_CanSeeFutureAppointments\",\r\n \"Role_PetPass_DVM\" = \"Role_PetPass_DVM\",\r\n \"Role_PetPass_Admin\" = \"Role_PetPass_Admin\",\r\n \"UI_CanCancelPendingApprovalPrescriptionRequest\" = \"UI_CanCancelPendingApprovalPrescriptionRequest\",\r\n \"LabOrder_AddNotesLabResults\" = \"LabOrder_AddNotesLabResults\",\r\n \"CanUpdateDVMCloseVisit\"=\"CanUpdateDVMCloseVisit\",\r\n \"UI_CanUsePccSmAnimalIncidentPaymentMethod\" = \"UI_CanUsePccSmAnimalIncidentPaymentMethod\"\r\n}\r\n","export enum BlobEntityType {\r\n AssessmentReferral = \"AssessmentReferral\",\r\n AssessmentRecommendation=\"AssessmentRecommendation\",\r\n Attachment = \"Attachment\",\r\n IntakePet = \"IntakePet\",\r\n License = \"License\",\r\n Pet = \"Pet\",\r\n Question = \"Question\",\r\n SalesItem = \"SalesItem\",\r\n Signatures = \"Signatures\",\r\n SMSAttachment = \"smsattachment\",\r\n SMSPhoto = \"smsphoto\"\r\n}\r\n","export enum CommunicationDirection {\r\n Inbound = 1,\r\n Outbound = 2\r\n}\r\n","export enum CommunicationEventType {\r\n NewInboundCommunication = 1,\r\n NewOutboundCommunication = 2,\r\n CommunicationRead = 3,\r\n}\r\n","export enum CommunicationMethod {\r\n Call = 1,\r\n SMS = 2,\r\n Email = 3\r\n}\r\n","export enum CommunicationType {\r\n VisitSummary = 1,\r\n MedicalHistory = 2,\r\n RabiesCertificate = 3,\r\n LabResult = 4,\r\n Prescription = 5,\r\n VisitCompletionSummary = 6,\r\n VisitConsent = 7,\r\n IntakeNotification = 8,\r\n CancelledClinic = 9,\r\n CancelledClinicOpsLeader = 10,\r\n AppointmentManagementVerification = 11,\r\n TreatmentPlanConsent = 12,\r\n Invoice = 13,\r\n Estimate = 14,\r\n HospitalPatientChart = 15,\r\n DischargeSummary = 16,\r\n DischargeAgainstMedicalAdviceConsent = 17,\r\n ClientConsent = 18,\r\n DentalExtractionConsent = 19,\r\n EuthanasiaConsent = 20,\r\n TreatmentConsent = 21,\r\n SurgeryConsent = 22,\r\n AnesthesiaMonitoring = 23,\r\n WellnessAndPreventativeCareSummary = 24,\r\n HospitalPrescriptions = 25,\r\n HospitalVisitPrescriptions = 26,\r\n LabReqForm = 27\r\n}\r\n\r\nexport namespace CommunicationType {\r\n export const displayName = (communicationType: CommunicationType) => {\r\n switch (communicationType) {\r\n case CommunicationType.VisitSummary: return \"Visit Summary\";\r\n case CommunicationType.MedicalHistory: return \"Medical History\";\r\n case CommunicationType.RabiesCertificate: return \"Rabies Certificate\";\r\n case CommunicationType.LabResult: return \"Lab Result\";\r\n case CommunicationType.Prescription: return \"Prescription\";\r\n case CommunicationType.VisitCompletionSummary: return \"Visit Completion\";\r\n case CommunicationType.VisitConsent: return \"Visit Consent\";\r\n case CommunicationType.IntakeNotification: return \"Intake Notification\";\r\n case CommunicationType.CancelledClinic: return \"Cancelled Clinic\";\r\n case CommunicationType.CancelledClinicOpsLeader: return \"Cancelled Clinic Ops Leader\";\r\n case CommunicationType.AppointmentManagementVerification: return \"Appointment Management Verification\";\r\n case CommunicationType.TreatmentPlanConsent: return \"Treatment Plan Consent\";\r\n case CommunicationType.Invoice: return \"Visit Invoice\";\r\n case CommunicationType.Estimate: return \"Estimate\";\r\n case CommunicationType.HospitalPatientChart: return \"Patient Chart\";\r\n case CommunicationType.DischargeSummary: return \"Discharge Summary\";\r\n case CommunicationType.AnesthesiaMonitoring: return \"Anesthesia Monitoring\";\r\n case CommunicationType.WellnessAndPreventativeCareSummary: return \"Wellness And Preventative Care Summary\";\r\n case CommunicationType.LabReqForm: return \"Lab Req Form\";\r\n case CommunicationType.HospitalVisitPrescriptions: return \"Hospital Visit Prescription\";\r\n default: return \"\";\r\n }\r\n }\r\n}\r\n","export enum ClinicTaskStatus {\r\n Open = 10,\r\n \"In Progress\" = 20,\r\n Resolved = 30\r\n}\r\n","export enum CommunicationStatus {\r\n Read = 1,\r\n Unread = 2\r\n}\r\n","export enum DocumentType {\r\n MigratedVisitRecord = 1,\r\n MedicalDocument = 2,\r\n Photo = 3,\r\n Other = 4,\r\n DentalChart = 5,\r\n Anesthesia = 6,\r\n TreatmentPlanConsent = 7,\r\n DischargeAgainstMedicalAdviceConsent = 8,\r\n ClientConsent = 9,\r\n DentalExtractionsConsent = 10,\r\n EuthanasiaConsent = 11,\r\n TreatmentConsent = 12,\r\n SurgeryConsent = 13,\r\n Diagnostics = 14,\r\n OutsidePrescription = 15,\r\n UltrasoundRadiology = 16,\r\n ERRecord = 17,\r\n}\r\n\r\nexport const ConsentDocumentTypes = [\r\n DocumentType.TreatmentPlanConsent,\r\n DocumentType.DischargeAgainstMedicalAdviceConsent,\r\n DocumentType.ClientConsent,\r\n DocumentType.DentalExtractionsConsent,\r\n DocumentType.EuthanasiaConsent,\r\n DocumentType.TreatmentConsent,\r\n DocumentType.SurgeryConsent\r\n];\r\n\r\nexport namespace DocumentType {\r\n export const displayName = (documentType: DocumentType) => {\r\n switch (documentType) {\r\n case DocumentType.MigratedVisitRecord: return \"Migrated Visit Record\";\r\n case DocumentType.MedicalDocument: return \"Previous Medical Records\";\r\n case DocumentType.Photo: return \"Pictures\";\r\n case DocumentType.Other: return \"Other\";\r\n case DocumentType.DentalChart: return \"Dental Chart\";\r\n case DocumentType.Anesthesia: return \"Anesthesia\";\r\n case DocumentType.TreatmentPlanConsent: return \"Treatment Plan Consent\";\r\n case DocumentType.DischargeAgainstMedicalAdviceConsent: return \"Discharge Against Medical Advice Consent\";\r\n case DocumentType.ClientConsent: return \"Client Consent\";\r\n case DocumentType.DentalExtractionsConsent: return \"Dental Extractions Consent\";\r\n case DocumentType.EuthanasiaConsent: return \"Euthanasia Consent\";\r\n case DocumentType.TreatmentConsent: return \"Treatment Consent\";\r\n case DocumentType.SurgeryConsent: return \"Surgery Consent\";\r\n case DocumentType.Diagnostics: return \"Diagnostics\";\r\n case DocumentType.OutsidePrescription: return \"Outside Prescription\";\r\n case DocumentType.UltrasoundRadiology: return \"Ultrasound / Radiology\";\r\n case DocumentType.ERRecord: return \"ER Record\";\r\n default: return \"\";\r\n }\r\n }\r\n}\r\n","/**\r\n * This enum is used in the GetHospitalSchedule SPROC to merge similar tables where the only main difference is between a template ID and a vet id, so we give them an EntityID (vet or template id) and an entity type, 0 for vet and 100 for template.\r\n */\r\nexport enum EntityScheduleType {\r\n Veterinarian = 1,\r\n Template = 100,\r\n Unassigned = 200,\r\n Technician = 400\r\n}\r\n","export enum EventTypes {\r\n CheckedIn = \"Checked In\",\r\n SMSConfirmationSent = \"SMS Confirmation Sent\",\r\n ConsultationSMS1Sent = \"Consultation SMS 1 Sent\",\r\n ConsultationSMS2Sent = \"Consultation SMS 2 Sent\",\r\n VetServicesStarted = \"Vet Services Started\",\r\n CheckedOut = \"Checked Out\",\r\n Consultation = \"Consultation\",\r\n InProgressStarted = \"In Progress Started\",\r\n Admitted = \"Admitted\",\r\n FinalizeStarted = \"Finalize Started\",\r\n PaidStarted = \"Paid Started\",\r\n EnteredVisitAdminMode = \"Entered Visit Admin Mode\",\r\n ExitedVisitAdminMode = \"Exited Visit Admin Mode\"\r\n}\r\n","import { VisitCompletionType } from \"./VisitCompletionType\";\r\n\r\nexport enum VisitStatus {\r\n Check_In = 1,\r\n Consultation = 2,\r\n VetServices = 3,\r\n Check_Out = 4,\r\n In_Progress = 10,\r\n Admitted = 20,\r\n Finalized = 30,\r\n Paid = 40\r\n}\r\n\r\nexport enum VisitStatusString {\r\n Check_In = \"Check-In\",\r\n Consultation = \"Consultation\",\r\n VetServices = \"Vet Services\",\r\n Check_Out = \"Check-Out\"\r\n}\r\n\r\nexport namespace VisitStatus {\r\n export const statusFormattedName = (status: string | number | undefined, visitCompletionTypeId?: number | undefined) => {\r\n if (typeof status === 'number') status = VisitStatus[status];\r\n if (!status) return \"Unknown\";\r\n\r\n switch (status) {\r\n case \"Check_In\": return \"Checked-in\";\r\n case \"In_Progress\": return \"In Progress\";\r\n case \"VetServices\": return \"Vet Services\";\r\n case \"Check_Out\":\r\n if (VisitCompletionType.visitIsAborted(visitCompletionTypeId)) return \"Aborted\";\r\n else return \"Completed\";\r\n default: return status; //Consultation, Admitted, Finalized, Paid\r\n }\r\n }\r\n}\r\n","import { VisitStatus } from \"./VisitStatus\";\r\n\r\nexport enum ExamLockedStatus {\r\n ExamNotesAreAllowed,\r\n ExamLevelOnly,\r\n NoLock\r\n}\r\n\r\nexport namespace ExamLockedStatus {\r\n /**\r\n * Determines if exam section notes can be added given the current lock status.\r\n * @param currentLockStatus lock status applied to the exam\r\n * @returns Exam section followup visit notes can be added. Regular exam fields will remain locked.\r\n */\r\n export const examNotesAreAllowed = (currentLockStatus: ExamLockedStatus) =>\r\n currentLockStatus == ExamLockedStatus.ExamNotesAreAllowed;\r\n\r\n /**\r\n * Determines if there is any lock applied to the exam and if regular exam entry can occur. \r\n * @param currentLockStatus lock status applied to the exam\r\n * @returns Exam entry can proceed without any blocks. Followup visit notes and exam level notes will not apply.\r\n */\r\n export const noExamLock = (currentLockStatus: ExamLockedStatus) =>\r\n currentLockStatus == ExamLockedStatus.NoLock;\r\n\r\n /**\r\n * Determines if there is any lock applied to the exam that would only allow exam level notes to be entered. \r\n * @param currentLockStatus lock status applied to the exam\r\n * @returns Only exam level notes can be entered for the visit. Individual exam sections cannot have data entry or followup visit notes. \r\n */\r\n export const ExamLevelAreAllowed = (currentLockStatus: ExamLockedStatus) =>\r\n currentLockStatus == ExamLockedStatus.ExamLevelOnly;\r\n\r\n export const VisitSalesItemsAreAllowed = (lockStatus: ExamLockedStatus, visitStatus: VisitStatus) => {\r\n return lockStatus === ExamLockedStatus.NoLock && ![VisitStatus.Finalized, VisitStatus.Paid, VisitStatus.Check_Out].includes(visitStatus);\r\n }\r\n}\r\n","export enum ExamResultType {\r\n Normal = 1,\r\n Abnormal = 2,\r\n UnableToExamine = 3\r\n}\r\n","export enum MimeType {\r\n JPEG = \"image/jpeg\",\r\n PNG = \"image/png\",\r\n SVG = \"image/svg+xml\"\r\n}\r\n","export enum OrganizationTypes {\r\n Corp = 1,\r\n Region = 2,\r\n Market = 3,\r\n Store = 4,\r\n BusinessLine = 5,\r\n Hospital = 6,\r\n State= 7,\r\n PricingTier = 8\r\n\r\n}\r\n","export enum PetAlertType {\r\n PetAlert = 1,\r\n MedicalAlert = 2\r\n}\r\n","export enum QuestionType {\r\n DataEntry = 1,\r\n YesNo = 2,\r\n List = 3,\r\n Informational = 4,\r\n Combo = 5\r\n}\r\n","export enum ReservationAssignmentStatuses {\r\n Unassigned = 1,\r\n Unassigned_Technician = 2,\r\n Assigned_Template = 90,\r\n Assigned = 100,\r\n Assigned_Technician = 200\r\n}\r\n","export enum ReservationEventTypes {\r\n Created = \"Created\",\r\n SMSSent = \"SMS Sent\",\r\n IntakeSent = \"Intake Sent\",\r\n Confirmed = \"Confirmed\",\r\n Cancelled = \"Cancelled\",\r\n UnCancelled = \"Un-Cancelled\",\r\n Rescheduled = \"Rescheduled\",\r\n ClinicCancelled = \"Clinic Cancelled\",\r\n ClientArrived = \"Client Arrived\",\r\n UpdatedViaIntake = \"Updated Via Intake\",\r\n ClientIndicatesNotComing = \"Client Indicates Not Coming\",\r\n\tLinkedToClient = \"Linked To Client\"\r\n}\r\n","export enum ScheduleBlockType {\r\n Appointments = 1,\r\n Lunch = 2,\r\n Surgery = 3,\r\n Meeting = 4,\r\n Notes = 5,\r\n Event = 6,\r\n HolidayPTO = 7,\r\n Training = 8,\r\n Technician_Appointments = 9,\r\n Vaccine_Appointment = 10\r\n}\r\n","export enum VisitNoteType {\r\n Intake = 1,\r\n Subjective = 2,\r\n Vitals = 3,\r\n Objective = 4,\r\n Assessment = 5,\r\n Plan = 6,\r\n Prognosis = 7,\r\n VisitBuilder = 9,\r\n Discharge = 10,\r\n AttachmentsandConsents = 11,\r\n Surgery = 12,\r\n AbortVisit = 13,\r\n Private = 14\r\n}\r\n","export enum VisitSalesItemAttributeType {\r\n DataEntry = 1,\r\n YesNo = 2,\r\n List = 3,\r\n Barcode = 4,\r\n Rabies = 5,\r\n Refill = 6,\r\n PrescriptionLabel = 7,\r\n PrescriptionQuantity = 8\r\n}\r\n","import { DateTime } from \"luxon\";\r\n\r\n/**\r\n * A namespace for day of week instead of an enum. There is still an enum but it's WeekDay.Day now instead of just DayOfWeek\r\n * Namespace is useful because you can put functions in it, kind of like a static class and access all the functions in the namespace from a single import statement\r\n * ------------------------------------\r\n * Use Example:\r\n * import { WeekDay } from '@common/models/enums';\r\n * console.log(WeekDay.fromDateTime(DateTime.now()));\r\n * ------------------------------------\r\n * Final Note: DayOfWeekFull was condensed into just WeekDay.Day, you can use the exported getShortNames and getLongNames to get a day of week name, i.e.\r\n * WeekDay.getShortName(WeekDay.Day.SUNDAY) => 'Sun'\r\n * WeekDay.getLongName(WeekDay.Day.TUESDAY) => 'Tuesday'\r\n */\r\nexport namespace WeekDay {\r\n const microNames = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA']; //added for override display\r\n const shortNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\n const longNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\r\n\r\n export enum Day {\r\n Sunday = 0,\r\n Monday = 1,\r\n Tuesday = 2,\r\n Wednesday = 3,\r\n Thursday = 4,\r\n Friday = 5,\r\n Saturday = 6\r\n }\r\n\r\n export const getMicroName = (day: Day) => microNames[day];\r\n export const getShortName = (day: Day) => shortNames[day];\r\n export const getLongName = (day: Day) => longNames[day];\r\n\r\n export const Resources = shortNames.map((title, index) => { return { id: index.toString(), title: title } });\r\n export const FullResources = longNames.map((title, index) => { return { id: index.toString(), title: title } });\r\n\r\n export const fromDateTime = (date: DateTime) => {\r\n return date.weekday % 7; //luxon is mon - sun 1 - 7, the only difference between DayofWeek (c#) and luxon is sunday is 7 in luxon and 0 in c#\r\n }\r\n}\r\n","export enum WeightConversion {\r\n PoundToKg = 0.45359237,\r\n PoudnToGrams = 453.59237\r\n}\r\n","\r\nexport enum WellnessExamPrognosisScore {\r\n Grave = 1,\r\n Poor = 2,\r\n Fair = 3,\r\n Good = 4,\r\n Excellent = 5,\r\n}\r\n","export enum ConsentType {\r\n VetcoClinicsWellness = 1,\r\n TreatmentPlanConsent = 2,\r\n DischargeAgainstMedicalAdviceConsent = 3,\r\n ClientConsent = 4,\r\n DentalExtractionsConsent = 5,\r\n EuthanasiaConsent = 6,\r\n TreatmentConsent = 7,\r\n SurgeryConsent = 8\r\n}\r\n\r\nexport const HospitalConsents = [\r\n ConsentType.TreatmentPlanConsent,\r\n ConsentType.DischargeAgainstMedicalAdviceConsent,\r\n ConsentType.ClientConsent,\r\n ConsentType.DentalExtractionsConsent,\r\n ConsentType.EuthanasiaConsent,\r\n ConsentType.TreatmentConsent,\r\n ConsentType.SurgeryConsent\r\n];\r\n","export enum SalesItemAttributeProcessingType {\r\n NoProcessing = 1,\r\n SaveasPetRabiesTag = 2,\r\n SaveasPetMicrochip = 3,\r\n TestResult = 4\r\n}\r\n","export enum SalesItemAttributeType {\r\n DataEntry = 1,\r\n YesNo = 2,\r\n List = 3,\r\n Barcode = 4,\r\n Rabies = 5,\r\n Refill = 6,\r\n InstructionLabel = 7,\r\n PrescriptionQuantity = 8\r\n}\r\n","export enum SalesItemType {\r\n ClinicService = 1,\r\n PrescriptionProduct = 2,\r\n LicenseFee = 3,\r\n VetcoPrescription = 4,\r\n CouponDiscountMonetary = 5,\r\n CouponDiscountPercentage = 6,\r\n RebateProducts = 7,\r\n RebateServices = 8,\r\n FeeNonTaxable = 9,\r\n FeeTaxable = 10\r\n}\r\n\r\nexport const DiscountItemTypes = [\r\n SalesItemType.CouponDiscountMonetary,\r\n SalesItemType.CouponDiscountPercentage,\r\n SalesItemType.RebateProducts,\r\n SalesItemType.RebateServices\r\n];\r\n","export enum BusinessLineEnum {\r\n Global = 1,\r\n Clinic = 2,\r\n Hospital = 3,\r\n}\r\n\r\nexport enum BusinessLineName {\r\n Global = \"Global\",\r\n Clinic = \"Clinic\",\r\n Hospital = \"Hospital\",\r\n}\r\n","export enum DiscountType {\r\n NonDiscountItem = 1,\r\n ServicesOnlyDiscount = 2,\r\n ProductsOnlyDiscount = 3,\r\n EntireOrderDiscount = 4,\r\n SalesSubcategoryDiscount = 5,\r\n SalesItemDiscount = 6\r\n}\r\n","export enum VisitSalesItemAttributesName {\r\n PrescribedProduct = \"Prescribed Product:\",\r\n ExpiresBy = \"Expiration:\",\r\n Quantity = \"QTY:\",\r\n Refills = \"Refills:\",\r\n Notes = \"Notes:\",\r\n UnitOfMeasure = \"Unit of Measure:\",\r\n Dose = \"Dose:\",\r\n Frequency = \"Frequency:\",\r\n Instructions = \"Instructions:\"\r\n}\r\n","export enum OrganizationVersions {\r\n CorpV1 = 1,\r\n}\r\n","export enum VisitSectionTypes {\r\n None = 0,\r\n Intake = 1,\r\n Subjective = 2,\r\n Vitals = 3,\r\n Objective = 4,\r\n Assessment = 5,\r\n Plan = 6,\r\n Prognosis = 7,\r\n VisitBuilder = 9,\r\n Discharge = 10,\r\n AttachmentsandConsents = 11,\r\n Assignment = 12,\r\n Signature = 13,\r\n PostVisit = 14,\r\n PrivateNotes = 15,\r\n Diagnostics = 16,\r\n\r\n\r\n // This enum value is only used on the FrontEnd.\r\n // We need this so we're able to store information about objective notes\r\n // whilst saving objective values(normal/abnormal/etc..)\r\n // It is not stored in the DB nor it is stored/used on the backend.\r\n ObjectiveWithoutNotes = 999,\r\n}\r\n","export enum PaymentMethods {\r\n PetcoPOS = 1,\r\n Credit = 2,\r\n Cash = 3,\r\n SplitPayment = 4,\r\n Check = 5,\r\n CareCredit = 6,\r\n Insurance = 7,\r\n PCCSmAnimalIncident = 8\r\n}\r\n","export enum HospitalPrescriptionRefillStatus {\r\n Undefined = 0,\r\n\tPendingPickup = 1,\r\n ReadyforPickup = 2,\r\n Fulfilled = 3,\r\n Cancelled = 4,\r\n Abandoned = 5,\r\n PendingCheckout=6,\r\n}\r\n\r\nexport namespace HospitalPrescriptionRefillStatus {\r\n export const statusFormattedName = (status: string | number | undefined) => {\r\n if (typeof status === 'number') status = HospitalPrescriptionRefillStatus[status];\r\n if (!status) return \"Unknown\";\r\n\r\n switch (status) {\r\n case \"PendingPickup\": return \"Pending Pickup\";\r\n case \"PendingCheckout\": return \"Pending Checkout\";\r\n case \"ReadyforPickup\": return \"Ready for Pickup\";\r\n default: return status; // Fulfilled, Cancelled, Abandoned\r\n }\r\n }\r\n}\r\n","export enum HospitalPrescriptionStatus {\r\n Approved = 1,\r\n ApprovedPendingPickup = 2,\r\n PendingVeterinarianApproval = 3,\r\n Declined = 4,\r\n Cancelled = 5,\r\n Transferred = 6,\r\n Recalled = 7,\r\n TransferredPermanent = 8\r\n}\r\n\r\nexport namespace HospitalPrescriptionStatus {\r\n export const statusFormattedName = (status: string | number | undefined) => {\r\n if (typeof status === 'number') status = HospitalPrescriptionStatus[status];\r\n if (!status) return \"Unknown\";\r\n\r\n switch (status) {\r\n case \"ApprovedPendingPickup\": return \"Approved - Pending Pickup\";\r\n case \"PendingVeterinarianApproval\": return \"Pending Veterinarian Approval\";\r\n default: return status; // Approved, Declined\r\n }\r\n }\r\n}\r\n","/**\r\n * Used for GetHospitalSchedule to indicate what range of schedules are being request from the specified date.\r\n */\r\nexport enum HospitalScheduleDateRangeType {\r\n Year = 0,\r\n Month = 1,\r\n Week = 2,\r\n Day = 3\r\n}\r\n","export enum IdexxLabOrderStatus {\r\n CREATED = 'CREATED',\r\n SUBMITTED = 'SUBMITTED',\r\n CANCELLED = 'CANCELLED',\r\n}\r\n\r\nexport enum IdexxResultStatus {\r\n ATLAB = 'ATLAB',\r\n PARTIAL = 'PARTIAL',\r\n COMPLETE = 'COMPLETE',\r\n}\r\n","export enum AnesthesiaSectionTypes {\r\n None = 0,\r\n PreOp = 1,\r\n Surgery = 2,\r\n PostOp = 3,\r\n Vital = 4\r\n}\r\n","export enum MedicationTypes {\r\n PREANESTHETIC_SEDATIVE_MEDICATIONS = 1,\r\n ANESTHETIC_INDUCTION_MEDICATIONS = 2,\r\n CONSTANT_RATE_INFUSION = 3,\r\n ADDITIONAL_MEDICATIONS = 4\r\n}\r\n","export enum Traits {\r\n SendPrescriptionsToRX = 1,\r\n BlockUsersFromManuallyAddingToVisit = 2,\r\n DisallowRemovalFromVisit = 3,\r\n HeartwormProtection = 4,\r\n FleaTickProtection = 5,\r\n AllowDecline = 6,\r\n MinimumWeight = 7,\r\n MaximumWeight = 8,\r\n IDEXXHeadlessOrder = 9,\r\n IDEXXOrder = 10,\r\n ReservationPreConfirmed = 11,\r\n ReservationOverbooked = 12,\r\n ReservationWalkIn = 13,\r\n SendLabResultstoPetParent = 14,\r\n IDEXXInHouseTest = 15,\r\n IsEuthanasia = 16,\r\n IsSpayNeuter = 17,\r\n IsControlled = 18,\r\n BarcodeNotRequired = 19,\r\n IsAnesthesiaMedication = 20,\r\n IncludeInWellnessSummary = 21,\r\n AllowedInPnpNewOrder = 22,\r\n AllowVisitSalesItemOptionUpdates = 23,\r\n DefaultQuantity = 24,\r\n DefaultRefills = 25,\r\n IsExam = 26,\r\n AllowCustomRemindersVaccines = 27,\r\n AllowCustomRemindersNonVaccines = 28\r\n}\r\n","export enum FeatureFlags {\r\n OrganizationBasedClinicJoin = 1,\r\n SQLBasedCustomerSearch = 3,\r\n AllowSettingVisitTag = 4,\r\n AllowAppointments = 5,\r\n AllowOpeningFutureClinics = 6,\r\n VisitObservations = 7,\r\n ReferralsandRecommendations = 8,\r\n IHD = 9,\r\n AbortVisit = 10,\r\n AllowVisitSalesItemOptionUpdates = 11,\r\n PnpNewOrder = 12,\r\n InAppSms = 13,\r\n AllowAddNewReminder = 14\r\n}\r\n","export enum NoteTypes {\r\n General = 1,\r\n Medical = 2,\r\n DataMigration = 3,\r\n Vaccination = 4,\r\n Medication = 5,\r\n PetProfile = 6,\r\n ClientProfile = 7,\r\n Invoice = 8\r\n}\r\n","export enum Templates {\r\n AppointmentConfirmation2UnconfirmedSMS = 1,\r\n AppointmentConfirmation1ConfirmedSMS = 2,\r\n AppointmentConfirmation1UnconfirmedSMS = 3,\r\n AppointmentPreVisitSMS = 4,\r\n ConfirmationSMS = 5,\r\n Consult1SMS = 6,\r\n Consult2SMS = 7,\r\n CSREmailSubject = 8,\r\n CSREmailTemplate = 9,\r\n LabResultEmailSubject = 10,\r\n LabResultEmailTemplate = 11,\r\n AppointmentPreVisitActionLabel = 12,\r\n AppointmentPreVisitLegendLabel = 13,\r\n ConfirmationSMSButtonLabel = 14,\r\n Consult1SMSButtonLabel = 15,\r\n Consult2SMSButtonLabel = 16,\r\n AppointmentConfirmation2ConfirmedSMS = 17,\r\n AppointmentConfirmation3ConfirmedSMS = 18,\r\n AppointmentConfirmation3UnConfirmedSMS = 19,\r\n VisitCompletionEmailSubject = 20,\r\n VisitCompletionEmailTemplate = 21,\r\n CSREmailFromDisplayname = 22,\r\n LabResultFromDisplayname = 23,\r\n VisitCompletionEmailFromDisplayname = 24,\r\n VisitThankYou = 25,\r\n VetAssistantTitle = 26,\r\n NotOkToReceiveServices = 27,\r\n ChangeVisitStatusWarning = 28,\r\n BookingSMS = 29,\r\n IntakeEmailFromDisplayname = 30,\r\n IntakeEmailSubject = 31,\r\n IntakeEmailTemplate = 32,\r\n CancelledClinicSMS = 33,\r\n CancelledClinicEmailFromDisplayname = 34,\r\n CancelledClinicEmailSubject = 35,\r\n CancelledClinicEmailBody = 36,\r\n CancelledClinicOpsLeaderEmailFromDisplayname = 37,\r\n CancelledClinicOpsLeaderEmailSubject = 38,\r\n CancelledClinicOpsLeaderEmailBody = 39,\r\n AppointmentManagementVerificationEmailFromDisplayname = 40,\r\n AppointmentManagementVerificationEmailSubject = 41,\r\n AppointmentManagementVerificationEmailBody = 42,\r\n AppointmentManagementVerificationSMS = 43,\r\n PrescriptionFooter = 44,\r\n UnpublishedTimeFrameNotification = 45,\r\n ConsentReviewRequest_SMS = 46,\r\n IntakeVerbiageandLink_SMS = 47,\r\n IntakeVerbiageandLink_Email = 48,\r\n InvoiceEmailSubject = 49,\r\n InvoiceEmailDisplayname = 50,\r\n InvoiceEmailTemplate = 51,\r\n MissedAppointmentSMS = 52,\r\n RabiesNewLotNumberEmailFromDisplayName = 53,\r\n RabiesNewLotNumberEmailSubject = 54,\r\n RabiesNewLotNumberEmailTemplate = 55,\r\n RabiesNewLotNumberEmailReceivers = 56,\r\n WellnessAndPreventativeCareSummaryEmailFromDisplayName = 57,\r\n WellnessAndPreventativeCareSummaryEmailSubject = 58,\r\n WellnessAndPreventativeCareSummaryEmailTemplate = 59,\r\n HospitalHomepage = 60,\r\n HospitalFAQs = 64,\r\n EligibleForOnlineFulfillmentModal = 69,\r\n InvoiceMemo = 70,\r\n}\r\n","export enum IntakeCompletionStatuses {\r\n\tUnopened = 1,\r\n\tIncomplete,\r\n\tComplete,\r\n}\r\n","export enum SpeciesType {\r\n\tCanine = 1,\r\n\tFeline,\r\n\tEquine,\r\n\tBird,\r\n\tPorcine,\r\n\tVulpine,\r\n\tLagomorph,\r\n\tReptile,\r\n\tFerret,\r\n\tExotic,\r\n\tSmall_Animal,\r\n\tOther,\r\n\tFish,\r\n\tSpiders_Insects,\r\n\tFarm_Animal,\r\n\tAmphibian,\r\n\tUnknown,\r\n}\r\n","/** PetAlerts SQL Table */\r\n\r\nexport enum PetAlerts {\r\n\tPetRequiresSpecialHandling = 1,\r\n\tBlind = 2,\r\n\tDeaf = 3,\r\n\tHeartMurmur = 4,\r\n\tHeartwormPositive = 5,\r\n\tMuzzle = 6,\r\n\tVaccineReaction = 7,\r\n\tFelineLeukemia = 21,\r\n\tMWIBordetella = 45,\r\n\tMWIBordetellaDA2hHPPLepto = 46,\r\n\tMWIBordetellaDA2HPPLepto = 47,\r\n\tMWIBordetellaDA2HPPLeptoH3N2H3N8 = 48,\r\n\tMWIBordetellaDA2HPPV = 49,\r\n\tMWIBordetellaDA2HPPvH3N2H3N8 = 50,\r\n\tMWIBordetellaDA2HPPvH3N2H3N8Lepto = 51,\r\n\tMWIBordetellaDA2HPPvLepto = 52,\r\n\tMWIBordetellaH3N2H3N8Lepto = 53,\r\n\tMWIBordetellaLepto = 54,\r\n\tMWIDA2HPPLepto = 55,\r\n\tMWIDA2HPPLeptoH3N2H3N8 = 56,\r\n\tMWIDA2HPPv = 57,\r\n\tMWIDA2HPPvH3N2H3N8 = 58,\r\n\tMWIDa2HPPvLepto = 59,\r\n\tMWIFelineLeukemia = 60,\r\n\tMWIFVRCP = 61,\r\n\tMWIFVRCPFelineLeukemia = 62,\r\n\tMWIFVRCPFeLv = 63,\r\n\tMWIFVRCPFeLvFelineLeukemia = 64,\r\n\tMWIH3N2H3N8 = 65,\r\n\tMWIH3N2H3N8Lepto = 66,\r\n\tMWILepto = 67,\r\n\tLunges = 68,\r\n\tWillBite = 69,\r\n\tCaution = 70,\r\n\tAggressive = 71,\r\n\tFearful = 72,\r\n\tWearGloves = 73,\r\n\tContagious = 74,\r\n\tDiabetic = 75,\r\n\tEpileptic = 76,\r\n\tChemotherapy = 77,\r\n\tFIVPositive = 78,\r\n\tMedicationReaction = 79,\r\n\tSeizures = 80,\r\n\tFoodAllergy = 81,\r\n\tDogAggressive = 82,\r\n\tRequiresSedation = 83,\r\n\tNoJugularBloodDraw = 84,\r\n\tExamineAwayfromOwner = 85,\r\n\tBloodworkExamDue = 86,\r\n\tCheckCommunications = 87,\r\n\tNoTabletop = 88,\r\n\tBottomKennelOnly = 89,\r\n\tSpanishSpeaking = 90,\r\n\tAnesthesiaReaction = 91,\r\n}\r\n","export enum PetGenders {\r\n NO_GENDER = \"No Gender\",\r\n FEMALE = \"Female\",\r\n MALE = \"Male\",\r\n NEUTERED_MALE = \"Neutered Male\",\r\n SPAYED_FEMALE = \"Spayed Female\",\r\n UNKNOWN = \"Unknown\"\r\n}\r\n\r\nexport enum PetGendersIds {\r\n NO_GENDER = 0,\r\n FEMALE = 1,\r\n MALE = 2,\r\n NEUTERED_MALE = 3,\r\n SPAYED_FEMALE = 4,\r\n UNKNOWN = 5\r\n}\r\n","export enum ClientSearchModalType {\r\n\tCLIENT = \"client\",\r\n\tPET = \"pet\",\r\n}\r\n","export enum LabelPosition {\r\n LEFT,\r\n TOP\r\n}\r\n","export enum ReminderDays {\r\n Four_Weeks = 28,\r\n One_Month=30,\r\n Three_Months=90,\r\n Six_Months=180,\r\n Year=365,\r\n Three_Years=1095\r\n}\r\n","export enum ExamCategory {\r\n Circulatory = \"Circulatory\",\r\n SkinCoatNails = \"Skin/Coat/Nails\",\r\n Respiratory = \"Respiratory\",\r\n Eyes = \"Eyes\",\r\n LympNodes = \"Lymp Nodes\",\r\n Ears = \"Ears\",\r\n GeneralApprearance = \"General Apprearance\",\r\n MouthDental = \"Mouth/Dental\",\r\n MucusMembranes = \"Mucus Membranes\",\r\n Musculoskeletal = \"Musculoskeletal\",\r\n ClinicCategory = \"Clinic Category\",\r\n}\r\n","import { WeightConversion } from '@common/models/Enums';\r\n/**\r\n * Takes any number that might have decimal places and truncates it exactly, with no rounding errors to the desired decimal places\r\n * Math.trunc was observed to be producing the incorrect truncation on certain scenarios, like 4.26 becoming 4.25, which is incorrect.\r\n * Using a string based method, guarantees that we do not round.\r\n * @param number\r\n * @param numberOfDecimals\r\n * @returns\r\n */\r\nexport const toFixedTruncate = (number: number, numberOfDecimals: number = 2) => {\r\n const regex = \"^-?\\\\d+(?:\\\\.\\\\d{0,\" + numberOfDecimals + \"})?\"\r\n const pattern = RegExp(regex, \"g\");\r\n const match = number.toString().match(pattern);\r\n return parseFloat(match?.[0] ?? '0');\r\n}\r\n\r\nexport const convertToKG = (weight?: number) =>\r\n weight ? Number(weight * WeightConversion.PoundToKg).toFixed(2) : 0;\r\n","import * as domUtility from './domUtility';\r\nimport * as mathUtility from './mathUtility';\r\n\r\nexport const utils = {\r\n dom: domUtility,\r\n math: mathUtility\r\n};\r\n\r\nexport const initializeUtilities = () => {\r\n (globalThis as unknown as any)['utils'] = utils;\r\n}\r\n","import React from 'react';\r\nexport class ContextWrapper{\r\n private context!: React.Context;\r\n\r\n constructor(contextType?: T) {\r\n if (contextType)\r\n this.set(contextType);\r\n }\r\n\r\n set(value: T) {\r\n this.context = React.createContext(value);\r\n }\r\n get() {\r\n return this.context;\r\n }\r\n}\r\n","import { ContextWrapper } from '@common/contexts/ContextWrapper';\r\nimport { RouteObject } from 'react-router';\r\n\r\nexport const RouteContext = new ContextWrapper();\r\nRouteContext.set([])\r\n","import { AppStore } from \"@common/stores\";\r\nimport { ContextWrapper } from \"./ContextWrapper\";\r\n\r\nexport const AppStoreContextWrapper = new ContextWrapper();\r\n","import { ContextWrapper } from \"@common/contexts\";\r\nimport { ClientRecentResultsStore } from \"@common/stores\";\r\n\r\nexport const RecentClientSearchStoreContextWrapper = new ContextWrapper();\r\n","import { ContextWrapper } from '@common/contexts/ContextWrapper';\r\nimport { ClientStore } from '@common/stores';\r\n\r\n\r\nexport const ClientStoreContextWrapper = new ContextWrapper();\r\n","import { ZipCodeStore } from \"@common/stores\";\r\nimport { ContextWrapper } from \"./ContextWrapper\";\r\n\r\nexport const ZipCodeStoreContextWrapper = new ContextWrapper();\r\n","import { defaultTo } from \"lodash\";\r\n\r\nexport interface IModel {\r\n rowVersion: string\r\n}\r\n\r\nexport type ModelRecord = Record & IModel;\r\n\r\nexport class Model implements IModel {\r\n rowVersion: string\r\n\r\n constructor(params?: Partial) {\r\n this.rowVersion = defaultTo(params?.rowVersion, '');\r\n }\r\n\r\n}\r\n","import React from 'react';\r\nexport class componentUtility {\r\n static findByType(children: any, component: any): JSX.Element {\r\n const result: any = [];\r\n const type = component.displayName || component.name;\r\n React.Children.forEach(children, (child) => {\r\n const childType = child && child.type && (child.type.displayName || child.type.name);\r\n if (type.includes(childType)) {\r\n result.push(child);\r\n }\r\n });\r\n return result[0];\r\n }\r\n\r\n static createNewComponent(name: string, constructor: Function, render: Function) {\r\n let newComponent = function(this: any, props: React.PropsWithChildren): React.ReactElement {\r\n this.state = null;\r\n this.displayName = name;\r\n constructor.call(this, props);\r\n //return this because react calls the function with the new keyword, not returning this means typescript will complain that the component isn't a valid jsx element etc.\r\n return this;\r\n }\r\n\r\n newComponent.prototype.render = function() {\r\n return render();\r\n }\r\n\r\n Object.setPrototypeOf(newComponent.prototype, React.Component.prototype);\r\n return newComponent;\r\n }\r\n}\r\n\r\nexport default componentUtility;\r\n","import { IModel } from '@common/models';\r\nimport { CacheUtils, ObjectMetadataManager, ObjectUtility } from '@common/utils';\r\nimport { isObservableObject, toJS } from 'mobx';\r\ninterface ICacheParams {\r\n key: string,\r\n value: IModel\r\n}\r\n\r\nconst globalHeaders: { [key: string]: string } = {\r\n}\r\n\r\nconst getFetchOptions = (): RequestInit => {\r\n return {\r\n mode: 'cors', // no-cors, *cors, same-origin\r\n cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached\r\n credentials: 'same-origin', // include, *same-origin, omit\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache',\r\n ...globalHeaders\r\n },\r\n redirect: 'follow', // manual, *follow, error\r\n referrerPolicy: 'origin',\r\n };\r\n}\r\n\r\nfunction getUrlWithQuery(url: string, query: any) {\r\n var queryString = Object.keys(query).map(key => key + '=' + query[key]).join('&');\r\n var ret = queryString ? url + '?' + queryString : url;\r\n return ret;\r\n}\r\n\r\nexport function getRandomWaitInterval(minMilliseconds: number, maxMilliseconds: number) {\r\n // Generate a random number between 0 and 1\r\n var random = Math.random();\r\n\r\n // Calculate the random amount of milliseconds within the desired range\r\n var randomMilliseconds = Math.floor(random * (maxMilliseconds - minMilliseconds + 1)) + minMilliseconds;\r\n\r\n return randomMilliseconds;\r\n}\r\n\r\nexport function getQueryParams(url: string | undefined = undefined): { [key: string]: string } {\r\n const search = url ? url : window.location.search.substring(1); // Get the query string without the \"?\" character\r\n const params = search.split('&'); // Split the query string into an array of key-value pairs\r\n const queryParams: { [key: string]: string } = {}; // Initialize an empty object to store the results\r\n for (let i = 0; i < params.length; i++) {\r\n const param = params[i].split('=');\r\n queryParams[param[0]] = decodeURIComponent(param[1]);\r\n }\r\n return queryParams;\r\n}\r\n\r\nexport interface ISignalRConnectionHeaderValue {\r\n hubName: string,\r\n connectionId: string | null\r\n}\r\n\r\nexport const SignalRRequestHeaderName = \"SIGNALR_CONNECTIONS\";\r\nexport interface IFetchParams {\r\n addQuery: (query: Object) => Omit;\r\n mergeOptions: (fetchOptions: RequestInit) => Omit;\r\n onError: (onError: (error: DOMException) => void) => Omit;\r\n get: () => Promise;\r\n getVersioned: (cacheKey: string) => Promise;\r\n post: (body: Object) => Promise;\r\n put: (body: Object) => Promise;\r\n delete: () => Promise;\r\n deleteWithResponse: () => Promise;\r\n}\r\n//I updated this to a class to get rid of the hacky casting so we'd actually get ts errors if we forget to implement something.\r\nclass FetchParams implements IFetchParams {\r\n constructor(url: string) {\r\n let method: \"GET\" | \"PUT\" | \"POST\" | \"DELETE\" = \"GET\";\r\n let queryObject: any = undefined;\r\n let bodyObject: Object | undefined = undefined;\r\n let options = getFetchOptions();\r\n let cacheParams: ICacheParams | undefined = undefined;\r\n let onErrorCallBack: ((error: DOMException) => void) | undefined = undefined;\r\n\r\n this.onError = (onError) => {\r\n if (onError)\r\n onErrorCallBack = onError;\r\n return this;\r\n }\r\n this.addQuery = (query: Object): Omit => {\r\n if (!query)\r\n throw new DOMException('unable to addQuery, query is undefined or null', DOMException.NOT_SUPPORTED_ERR.toString());\r\n queryObject = query;\r\n\r\n return this;\r\n }\r\n this.mergeOptions = (fetchOptions: RequestInit): Omit => {\r\n if (!fetchOptions)\r\n throw new DOMException('unable to mergeOptions, mergeOptions is undefined or null', DOMException.NOT_SUPPORTED_ERR.toString());\r\n options = { ...options, ...fetchOptions };\r\n return this;\r\n }\r\n this.get = function (): Promise {\r\n method = 'GET';\r\n const promise = run();\r\n return promise;\r\n }\r\n this.getVersioned = function (cacheKey: string): Promise {\r\n method = 'GET';\r\n // attempt to find a cached blob by the provided cache key\r\n return CacheUtils.get(cacheKey)\r\n .then(value => {\r\n // stash any found blob and its associated cache key\r\n cacheParams = {\r\n key: cacheKey,\r\n value: value as T\r\n }\r\n // if there is a cached model and it has a rowversion, set the request if-none-match (etag) header.\r\n if (cacheParams?.value?.rowVersion) {\r\n options.headers = {\r\n ...options.headers,\r\n \"if-none-match\": cacheParams.value.rowVersion\r\n }\r\n }\r\n })\r\n // finally, run the fetch request.\r\n .then(() => run())\r\n }\r\n this.put = function (body: Object): Promise {\r\n method = 'PUT';\r\n bodyObject = body;\r\n const promise = run();\r\n return promise;\r\n }\r\n this.post = function (body: Object): Promise {\r\n method = 'POST';\r\n bodyObject = body;\r\n const promise = run();\r\n return promise;\r\n }\r\n this.delete = function (): Promise {\r\n method = 'DELETE';\r\n const promise = run();\r\n return promise;\r\n }\r\n this.deleteWithResponse = function (): Promise {\r\n method = 'DELETE';\r\n const promise = run();\r\n return promise;\r\n }\r\n\r\n let run = (): Promise => {\r\n if (queryObject) {\r\n queryObject = isObservableObject(queryObject) ? toJS(queryObject) : queryObject;\r\n url = getUrlWithQuery(url, queryObject)\r\n }\r\n if (bodyObject) {\r\n bodyObject = isObservableObject(bodyObject) ? toJS(bodyObject) : bodyObject;\r\n options = { ...options, body: JSON.stringify(bodyObject) }\r\n }\r\n options = { ...options, method: method };\r\n let promise = fetch(url, options);\r\n let retPromise = new Promise((resolve, reject) => {\r\n promise.then((response) => {\r\n if (response.status === 400) {\r\n return response.json().then(exceptionStatus => {\r\n if (Array.isArray(exceptionStatus)) {\r\n const errorMessages = exceptionStatus.map((exceptionStatus) => {\r\n const message = ObjectUtility.getPropertyCaseInsensitive(exceptionStatus, \"message\")\r\n return message ? message : exceptionStatus;\r\n }).join('\\n ');\r\n throw new DOMException(errorMessages);\r\n }\r\n else {\r\n throw new DOMException(ObjectUtility.getPropertyCaseInsensitive(exceptionStatus, \"message\"));\r\n }\r\n });\r\n }\r\n else if (response.status === 404) {\r\n throw new DOMException('Not Found')\r\n }\r\n else if (response.status === 409) {\r\n throw new DOMException('Another user updated this record. Refresh your page to see the latest changes.')\r\n }\r\n // if the API returns a 304 Unmodified, return the cached blob\r\n if (response.status === 304) {\r\n return cacheParams?.value;\r\n }\r\n else if (response.status < 200 || response.status > 299) {\r\n throw new DOMException('Request was not successful.');\r\n }\r\n const contentType = response.headers.get(\"content-type\");\r\n if (contentType && contentType.indexOf(\"application/json\") > -1)\r\n return response.json();\r\n if (method === 'DELETE')\r\n return true;\r\n // response is a 200. Nothing was returned as part of the response. Just return it and let caller deal with it.\r\n if (response.status === 200) {\r\n return response;\r\n }\r\n throw new DOMException(\"Unknown http response, no handler for content type or method...\", DOMException.NOT_SUPPORTED_ERR.toString());\r\n }).then((data) => {\r\n ObjectMetadataManager.processApiResponseData(data);\r\n return data;\r\n }).then(data => {\r\n // if we received a new cacheable blob, then cache it and resole the promise. \r\n if (cacheParams?.key) {\r\n CacheUtils.set(cacheParams.key, data).then(resolve);\r\n // otherwise just resolve the promise as normal.\r\n } else {\r\n resolve(data);\r\n }\r\n }).catch((exception) => {\r\n // pass exception to user-defined callback if provided,\r\n // otherwise reject the promise\r\n if (onErrorCallBack) {\r\n onErrorCallBack(exception);\r\n } else {\r\n reject(exception);\r\n }\r\n\r\n });\r\n });\r\n return retPromise;\r\n }\r\n }\r\n addQuery: (query: Object) => Omit;\r\n mergeOptions: (fetchOptions: RequestInit) => Omit;\r\n onError: (onError: (error: DOMException) => void) => Omit;\r\n get: () => Promise;\r\n getVersioned: (cacheKey: string) => Promise;\r\n post: (body: Object) => Promise;\r\n put: (body: Object) => Promise;\r\n delete: () => Promise;\r\n deleteWithResponse: () => Promise;\r\n\r\n\r\n}\r\nFetchParams.bind({});\r\n\r\nfunction http(url: string): IFetchParams {\r\n let chainFluent = new FetchParams(url);\r\n return chainFluent;\r\n}\r\n\r\n//namespace merge some functions on the http function, so you can do \r\n//http.setGlobalHeader or http('url').put...\r\nnamespace http {\r\n export function setGlobalHeader(key: string, value: string) {\r\n globalHeaders[key] = value;\r\n }\r\n export function deleteGlobalHeader(key: string) {\r\n if (Object.prototype.hasOwnProperty.call(globalHeaders, key))\r\n delete globalHeaders[key];\r\n }\r\n /**\r\n * The server side services send signalr messages, we need them to know the connected client signalr connectionId (per request) so we can exclude connection ids from \r\n * redundant group messages. Otherwise the ajax call will trigger a refresh and then the signalr message will trigger another one.\r\n * This will set a header called \"SIGNALR_CONNECTIONS\" with a json value containing all the connected hubs and their connection ids.\r\n * @param hubName The name of the hub the connectionId is for\r\n * @param connectionId the connection id (or null) of the user.\r\n */\r\n export function updateSignalRConnection(hubName: string, connectionId: string | null) {\r\n if (!Object.prototype.hasOwnProperty.call(globalHeaders, SignalRRequestHeaderName))\r\n globalHeaders[SignalRRequestHeaderName] = JSON.stringify([]);\r\n var connections = JSON.parse(globalHeaders[SignalRRequestHeaderName]) as ISignalRConnectionHeaderValue[]\r\n\r\n let connection = _.first(connections.filter(a => _.isEqual(a.hubName, hubName)));\r\n\r\n if (!connectionId) {\r\n if (connection)\r\n _.remove(connections, connection);\r\n } else {\r\n if (!connection) {\r\n connection = { hubName, connectionId };\r\n connections.push(connection);\r\n }\r\n else\r\n connection.connectionId = connectionId;\r\n }\r\n\r\n globalHeaders[SignalRRequestHeaderName] = JSON.stringify(connections);\r\n }\r\n}\r\n\r\nexport {\r\n http\r\n}\r\n\r\nexport default http;\r\n","import { isArray, isObject } from \"lodash\";\r\n\r\nexport class ListUtility {\r\n\r\n /**\r\n * \r\n * @param lst List of strings that need to be \r\n * @param conjunction \r\n * @param ifEmpty \r\n * @returns \r\n */\r\n static toOxford(lst: string[], conjunction: string, ifEmpty: string) {\r\n // https://stackoverflow.com/questions/15069587/is-there-a-way-to-join-the-elements-in-an-js-array-but-let-the-last-separator-b\r\n\r\n const l = lst.length;\r\n if (!l) return ifEmpty;\r\n if (l < 2) return lst[0];\r\n if (l < 3) return lst.join(` ${conjunction} `);\r\n return lst.join(', ').replace(/, ([^,]*)$/, ` ${conjunction} $1`);\r\n }\r\n\r\n /**\r\n * Creates a Array of key-value of an array\r\n * @param enumme Any enum\r\n * @returns an array of key-value\r\n */\r\n static enumToArray(enumme: any): { key: number, value: string }[] {\r\n /** https://stackoverflow.com/a/43101184 */\r\n let map: { key: number; value: string }[] = [];\r\n\r\n for (var n in enumme) {\r\n if (typeof enumme[n] === 'number') {\r\n map.push({ key: enumme[n], value: n });\r\n }\r\n }\r\n\r\n return map;\r\n }\r\n\r\n static reduceEnumToListValue(enumme: any) {\r\n const StringIsNumber = (val: any) => isNaN(Number(val)) === false;\r\n\r\n return Object.keys(enumme)\r\n .filter(StringIsNumber)\r\n .map(key => enumme[key]);\r\n }\r\n}\r\n\r\ninterface SyncableArray {\r\n __modelSyncSetName: string,\r\n items: Array\r\n}\r\n\r\nexport class ObjectMetadataManager {\r\n\r\n /**\r\n * This function post-processes deserialized API responses.\r\n * + convert all 'null' to 'undefined'\r\n * + flatten all model sync set to their constituent items. Viz:\r\n * \r\n * Before: `foo: { __modelSyncSetName: string, items: Array }` \r\n * After: `foo: Array`\r\n */\r\n static processApiResponseData(obj: any): T {\r\n\r\n function process(target: any) {\r\n if (target === null) {\r\n return undefined;\r\n }\r\n\r\n if (!isObject(target))\r\n return target;\r\n\r\n const syncArray: SyncableArray = target as SyncableArray;\r\n\r\n if (syncArray.__modelSyncSetName && isArray(syncArray.items)) {\r\n target = syncArray.items;\r\n }\r\n\r\n for (const key in target) {\r\n if (!Object.prototype.hasOwnProperty.call(target, key)) {\r\n continue;\r\n }\r\n\r\n target[key] = process(target[key]);\r\n }\r\n\r\n return target;\r\n }\r\n\r\n let returnObj: T = process(obj);\r\n return returnObj;\r\n }\r\n}\r\n","// UNUSED WARNING\r\n// const isPrimitiveArray = (obj: any) => {\r\n// return obj != null\r\n// && obj.getClass().isArray()\r\n// && obj.getClass().getComponentType() != null\r\n// && obj.getClass().getComponentType().isPrimitive();\r\n// }\r\n\r\nconst generateSearchQuery = (params: any) => {\r\n if (params === null || params === undefined)\r\n return undefined;\r\n\r\n const queryParams = Object.keys(params)\r\n .filter((key) => params[key] != null) // ignore null properties\r\n .filter(\r\n (key) =>\r\n params[key] !== Object(params[key]) ||\r\n (Array.isArray(params[key]) &&\r\n (typeof params[key][0] === \"string\" ||\r\n typeof params[key][0] === \"number\"))\r\n ) //primitives only, unless an array\r\n .filter((key) => params[key].toString().trim() !== \"\") // ignore empty\r\n .map((key) => `(${key}: ${params[key].toString().trim()})`)\r\n .join(\" AND \");\r\n\r\n return queryParams === \"\" ? undefined : queryParams;\r\n};\r\n\r\nexport {\r\n generateSearchQuery\r\n}\r\n","export class guard {\r\n static fromNull (obj:any, name:string) {\r\n if (obj === null || obj === undefined) \r\n throw `${name} is required`;\r\n }\r\n static fromEmpty(arr:Array, name:string) {\r\n guard.fromNull(arr, name);\r\n if (arr.length === 0)\r\n throw `${name} must not be empty`;\r\n } \r\n} \r\n\r\n\r\n","import { DateTime } from \"luxon\";\r\n\r\nexport class StringUtility {\r\n\r\n static toPossessiveName(s: string) {\r\n const APOSTROPHE_CHAR = '\\'';\r\n const lastChar = s.slice(-1);\r\n const endOfWord = lastChar.toLowerCase() == 's' ? APOSTROPHE_CHAR : `${APOSTROPHE_CHAR}s`;\r\n return `${s}${endOfWord}`;\r\n }\r\n\r\n static SanitizeString = (val: string | undefined | null): string | undefined =>\r\n (val === undefined || val === null || val === \"\") ? undefined : val;\r\n\r\n static SanitizeStringWithEmpty = (val: string | undefined | null): string | undefined =>\r\n (val === undefined || val === null) ? undefined : val;\r\n\r\n\r\n static SanitizeNumber = (val: number | undefined | null): number | undefined =>\r\n (val === undefined || val === null || isNaN(val)) ? undefined : val;\r\n\r\n static SanitizeDateTimeISO = (val: string | undefined | null): DateTime | undefined =>\r\n (val === undefined || val === null || val === \"\") ? undefined : DateTime.fromISO(val);\r\n\r\n static SanitizeDateTimeISOAsUtc = (val: string | undefined | null): DateTime | undefined =>\r\n (val === undefined || val === null || val === \"\") ? undefined : DateTime.fromISO(val, { zone: 'UTC' });\r\n\r\n static SanitizeBool = (val: boolean | null | undefined): boolean | undefined =>\r\n (val === undefined || val === null) ? undefined : val;\r\n\r\n static hasValue = (val: string | undefined | null) =>\r\n val !== null && val !== undefined && val.trim() !== \"\"\r\n\r\n static getFullName = ({ firstName, lastName }: { firstName: string | undefined, lastName: string | undefined }) => {\r\n if (firstName && lastName) {\r\n return `${firstName} ${lastName}`\r\n }\r\n return ''\r\n }\r\n static formattedUserName = (first: string | undefined, last: string | undefined, title: string | undefined) =>\r\n `${title ? title + \" \" : \"\"}${first} ${last}`\r\n\r\n static extractNumberFromPxStyle = (pxStyle: string): number | null => {\r\n const numberRegex = /(\\d+(\\.\\d+)?)\\s*px/;\r\n const match = pxStyle.match(numberRegex);\r\n\r\n if (match === null) {\r\n return null;\r\n }\r\n\r\n return parseFloat(match[1]);\r\n }\r\n static buildSentenceFromList = (list: string[] | undefined, normalSeparator: string = \", \", finalSeparator: string = \" and \"): string => {\r\n if (!list || list.length === 0) {\r\n return \"\";\r\n }\r\n \r\n const listLength = list.length;\r\n const lastItem = list[listLength - 1];\r\n const result =\r\n list.slice(0, listLength - 1).join(normalSeparator) +\r\n (listLength <= 1 ? \"\" : finalSeparator) +\r\n lastItem;\r\n \r\n return result;\r\n };\r\n}\r\n","export class fileUtil {\r\n static dataURItoBlob(dataURI: string) {\r\n // convert base64 to raw binary data held in a string\r\n // doesn't handle URLEncoded DataURIs - see SO answer // #6850276 for code that does this\r\n var byteString = atob(dataURI.split(',')[1]);\r\n\r\n // separate out the mime component\r\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]\r\n\r\n // write the bytes of the string to an ArrayBuffer\r\n var ab = new ArrayBuffer(byteString.length);\r\n\r\n // create a view into the buffer\r\n var ia = new Uint8Array(ab);\r\n\r\n // set the bytes of the buffer to the correct values\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n // write the ArrayBuffer to a blob, and you're done\r\n var blob = new Blob([ab], { type: mimeString });\r\n return blob;\r\n\r\n }\r\n\r\n static async readFileAsDataURL(file: File): Promise {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.addEventListener('load', () => {\r\n if (reader.result) {\r\n resolve(reader.result as string);\r\n } else {\r\n reject('FileReader has no result');\r\n }\r\n });\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n\r\n static getFileNameWithoutExtension(fileName: string | File) {\r\n const lFileName: string = typeof(fileName) ==='string' ? fileName : fileName.name;\r\n return lFileName.length > 0 ? lFileName.replace(/\\.[^/.]+$/, \"\") : lFileName;\r\n }\r\n\r\n}\r\n","import { IPhotoModel } from \"@common/models\";\r\nimport Resizer from 'react-image-file-resizer';\r\nimport { fileUtil } from '@common/utils';\r\nexport interface IAzureImageResizerOptions {\r\n [propName: string]: any;\r\n mode?: 'max' | 'pad' | 'crop' | 'stretch' | 'carve',\r\n height?: number,\r\n width?: number\r\n}\r\n\r\n/**\r\n * The result type of the promise from \r\n */\r\ninterface IResizeImageWithPreviewResult {\r\n fileToSave: File,\r\n previewDataUrl: string\r\n}\r\n\r\n/**\r\n * Used for react-image-resize\r\n */\r\ninterface IResizeImageWithPreviewOptions {\r\n saveMaxWidth: number,\r\n saveMaxHeight: number,\r\n saveMinWidth?: number,\r\n saveMinHeight?: number,\r\n previewMaxWidth: number,\r\n previewMaxHeight: number,\r\n previewMinWidth?: number,\r\n previewMinHeight?: number\r\n}\r\n\r\ninterface IResizeImageOptions {\r\n saveMaxWidth: number,\r\n saveMaxHeight: number,\r\n saveMinWidth?: number,\r\n saveMinHeight?: number\r\n}\r\n\r\nexport class ImageResizerUtil {\r\n\r\n static getAzureImageUrl(blobContainerName?: string, fileName?: string, options?: IAzureImageResizerOptions): string | undefined {\r\n if (!blobContainerName || !fileName)\r\n return undefined;\r\n\r\n const encodedFileName = encodeURIComponent(decodeURIComponent(fileName));\r\n const imageResizerQuery: string | undefined = options ? Object.keys(options).map(key => key + '=' + options[key]).join('&') : undefined;\r\n\r\n if (imageResizerQuery)\r\n return `/azure/${blobContainerName}/${encodedFileName}?${imageResizerQuery}`;\r\n return `/azure/${blobContainerName}/${encodedFileName}`;\r\n }\r\n\r\n static getAzureImageUrlByPhoto(photo?: IPhotoModel, options?: IAzureImageResizerOptions): string | undefined {\r\n return ImageResizerUtil.getAzureImageUrl(photo?.container, photo?.fileName, options);\r\n }\r\n\r\n /**\r\n * This function will resize an image\r\n * image.\r\n * @param originalFile The File you want to resize, you can create a File Instance yourself from a blob, or one from a File Input\r\n * @param options Set the max/min size of the resize file being saved. Images are typically saved at 640 width\r\n * @returns \r\n */\r\n static ResizeImage(originalFile: File, options: IResizeImageOptions): Promise {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n Resizer.imageFileResizer(\r\n originalFile,\r\n options.saveMaxWidth,\r\n options.saveMaxHeight,\r\n \"PNG\",\r\n 100,\r\n 0,\r\n (fileToSave: File) => {\r\n const adjustedNameToSave = new File([fileToSave], `${fileUtil.getFileNameWithoutExtension(fileToSave)}${'.png'}`);\r\n resolve(adjustedNameToSave);\r\n },\r\n \"file\",\r\n options.saveMinWidth,\r\n options.saveMinHeight\r\n );\r\n }\r\n catch (err: any) {\r\n reject(err);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * This function will resize an image twice with the intent of giving you a resized file you want to save and a resized file you want to render for a preview via a dataUrl\r\n * So you can specify the saveMaxWidth, saveMaxHeight to contrain the demensions of the file you want to use for saving to azure etc, and then previewMaxHeight previewMaxWidth to constraint your preview\r\n * image.\r\n * @param originalFile The File you want to resize, you can create a File Instance yourself from a blob, or one from a File Input\r\n * @param options Set the max size of the resize file being saved, and max size of the preview image \r\n * @returns \r\n */\r\n static ResizeImageWithPreview(originalFile: File, options: IResizeImageWithPreviewOptions): Promise {\r\n originalFile.name\r\n return new Promise((resolve, reject) => {\r\n try {\r\n Resizer.imageFileResizer(\r\n originalFile,\r\n options.saveMaxWidth,\r\n options.saveMaxHeight,\r\n \"PNG\",\r\n 100,\r\n 0,\r\n (fileToSave: File) => {\r\n //resize for preview\r\n try {\r\n Resizer.imageFileResizer(\r\n fileToSave,\r\n options.previewMaxWidth,\r\n options.previewMaxHeight,\r\n \"PNG\",\r\n 100,\r\n 0,\r\n (previewDataUrl: string) => {\r\n const adjustedNameToSave = new File([fileToSave], `${fileUtil.getFileNameWithoutExtension(fileToSave)}${'.png'}`);\r\n resolve({\r\n fileToSave: adjustedNameToSave,\r\n previewDataUrl: previewDataUrl\r\n });\r\n },\r\n \"base64\",\r\n options.previewMinWidth,\r\n options.previewMinHeight\r\n )\r\n }\r\n catch (err) {\r\n reject(err);\r\n }\r\n },\r\n \"file\",\r\n options.saveMinWidth,\r\n options.saveMinHeight\r\n );\r\n }\r\n catch (err: any) {\r\n reject(err);\r\n }\r\n });\r\n }\r\n}\r\n","/* custom variables */ // references: (js + scss)\r\nexport const petcoBlue = \"#001952\"; // 1 + 35\r\nexport const blueNeutral = \"#7792C6\"; // 0 + 4\r\nexport const neutralFog = \"#F8F7F9\";\r\nexport const petcoSecondaryGreen = \"#A9F4CD\";\r\n\r\nexport const petcoBodyBG = \"#F5F5F5\"; // 1 + 4\r\nexport const petcoText = \"#000000\"; // 10 + 0\r\nexport const petcoWhite = \"#FFFFFF\" // 16 + 29\r\nexport const petcoRed = \"#FF5630\"; // 0 + 1 // diff\r\nexport const petcoSmoke = \"#EBECEE\"; // 0 + 1 // diff\r\nexport const petcoGray = \"#E2E2E2\"; // 0 + 1\r\nexport const petcoGreen = \"#007500\"; // 0 + 1\r\nexport const petcoWarning = \"#FFF3CD\"; // 1 + 1 // diff\r\nexport const petcoDanger = \"#E02924\"; // 2 + 7 // diff\r\nexport const petcoLightBlue = \"#73EAFF\"; // 0 + 4\r\nexport const petcoPastelRed = \"#FC6666\"; // 0 + 1\r\n\r\n/* new custom variables, potentially to be removed */\r\n// colors that also exist in figma\r\nexport const petcoCyan = \"#8BE8D7\"; // 0 + 3\r\n\r\nexport const petcoSpanishGray = \"#979797\" // 10 + 2\r\nexport const petcoGraniteGray = \"#656565\" // 2 + 12\r\nexport const petcoCharcoal = \"#333333\" // 3 + 12\r\nexport const petcoCharcoal10 = \"#3333331A\" // 3 + 12\r\n\r\nexport const petcoGreenSuccess = \"#007500\" // 0 + 0\r\nexport const petcoMyrtleGreen = \"#2F7B6E\" // 1 + 6\r\nexport const petcoUCLABlue = \"#4C699E\" // 1 + 0\r\nexport const petcoTintGreen = \"#E9FDF2\"; // 1 + 5\r\nexport const petcoTintBlue = \"#E8FAFE\"; // 0 + 6\r\nexport const petcoTintRed = \"#FBEEEC\"\r\n\r\nexport const petcoPlatinum = \"#E5E5E5\"; // 0 + 2\r\nexport const petcoBrightGray3 = \"#EBEBEB\"; // 0 + 1\r\nexport const petcoAntiFlashWhite = \"#F2F3F6\"; // 0 + 3\r\nexport const petcoAntiFlashWhite2 = \"#F2F4F6\"; // 0 + 1\r\nexport const petcoLavenderPink = \"#F8B1CA\"; // 0 + 2\r\nexport const petcoBrightYellowCrayola = \"#FFA826\"; // 0 + 1\r\nexport const petcoDeepGreenCyanTurquoise = \"#217465\"; // 0 + 2 // calendar pills\r\nexport const petcoDeepGreenCyanTurquoise2 = \"#1F6D60\" // 0 + 2 // calendar pills\r\nexport const petcoAeroBlue = \"#C3F4EB\"; // 0 + 2 // calendar pills\r\nexport const petcoMagicMint = \"#9BF1E1\"; // 0 + 2 // calendar pills\r\nexport const petcoDiamond2 = \"#B9EDFF\"; // 0 + 2 // calendar pills\r\nexport const petcoWater = \"#D0F3FF\";// 0 + 1 // calendar pills\r\nexport const petcoChineseSilver = \"#CCCCCC\"; // 0 + 2\r\nexport const petcoGreenSheen = \"#71C2B4\";\r\n\r\n\r\nexport const petcoChalk = \"#F2F2F2\"; // 0 + 5\r\nexport const petcoPink = \"#F26E9D\";\r\nexport const petcoLightPink = \"#FCE0EA\";\r\n\r\n// do not exist in figma\r\nexport const petcoBrightGray2 = \"#EDEDED\" // 1 + 1\r\nexport const petcoPewterBlue = \"#84C0B4\" // 6 + 0\r\nexport const petcoGrayX11 = \"#BBBBBB\" // 12 + 0\r\nexport const petcoBrightGray = \"#EEEEEE\" // 7 + 0\r\nexport const petcoChineseWhite = \"#E0E0E0\"; // 0 + 5\r\nexport const petcoLotion = \"#FAFAFA\"; // 0 + 1\r\nexport const petcoCetaceanBlue = \"#040D4A\"; // 1 + 0\r\nexport const petcoOxfordBlue = \"#06184E\"; // 0 + 1\r\nexport const petcoDarkJungleGreen = \"#151E27\"; // 0 + 1\r\nexport const petcoDarkGunmetal = \"#1A252F\"; // 0 + 2\r\nexport const petcoYankeesBlue = \"#1E2B37\"; // 0 + 1\r\nexport const petcoDarkGunmetal2 = \"#212529\"; // 0 + 2\r\nexport const petcoDodgerBlue = \"#2684FF\"; // 0 + 2\r\nexport const petcoPalatinateBlue = \"#2842F7\"; // 1 + 0\r\nexport const petcoJapaneseIndigo = \"#2C3E50\"; // 0 + 2\r\nexport const petcoOnyx = \"#343A40\"; // 1 + 1\r\nexport const petcoJet = \"#363636\"; // 0 + 2\r\nexport const petcoTuftsBlue = \"#3788D8\"; // 0 + 2\r\nexport const petcoCeruleanBlue = \"#2C60C0\"; // 0 + 3\r\nexport const petcoPhilippineBronze = \"#663300\"; // 1 + 0\r\nexport const petcoPewterBlue2 = \"#83C0B4\"; // 0 + 1\r\nexport const petcoPaleRobinEggBlue = \"#8BE8D7\"; // 0 + 1\r\nexport const petcoInternationalOrange = \"#C73025\"; // 0 + 2\r\nexport const petcoFieldDrab = \"#786025\"; // 0 + 2\r\nexport const petcoTintYellow = \"#FDFBE8\"; // 0 + 1\r\nexport const petcoLavender = \"#DEEBFF\"; // 0 + 1\r\nexport const petcoCultured2 = \"#F4F6F6\"; // 0 + 1\r\nexport const petcoCultured = \"#F6F6F6\"; // 2 + 0\r\nexport const petcoAliceBlue = \"#EAEFF9\"; // 2 + 0\r\nexport const petcoSnow = \"#FEF7F7\"; // 0 + 1\r\nexport const petcoAmericanSilver = \"#D0D0D0\"; // 0 + 1\r\nexport const petcoRustyRed = \"#DC3545\"; // 1 + 0\r\nexport const petcoLightCyan2 = \"#E2F9F5\"; // 0 + 1\r\nexport const petcoLightCarminePink = \"#EA706B\"; // 1 + 0\r\nexport const petcoRed2 = \"#FF0000\"; // 1 + 0\r\nexport const petcoMikadoYellow = \"#FFC107\"; // 1 + 0\r\nexport const petcoGainsboro2 = \"#DDDDDD\";\r\nexport const petcoTawny = \"#B45F06\";\r\nexport const petcoOldLace = \"#FCF5E8\"; // aka, (tint orange);\r\nexport const petcoWindsorTan = \"#B85300\"; // 1 + 2 // aka, (Extended Burnt-WarningAttn);\r\nexport const petcoCornsilk = \"#FFF2DE\"; // 0 + 1 // aka, Extended/LightBurnt\r\nexport const petcoBlueSeaMonday = \"#0047bbff\";\r\n\r\nexport const getHexAlphaValue = (percentAsInteger) => {\r\n const percent = (percentAsInteger / 100);\r\n return percent.toString(16).slice(2, 4); // .15 returns 26\r\n}\r\n\r\nconst transformObject = (object1) => Object.entries(object1)\r\n// export const currentVariables = transformObject({\r\n// petcoBlue, blueNeutral, petcoBodyBG, petcoText, petcoWhite, petcoRed, petcoSmoke, petcoGray, petcoGreen,\r\n// petcoWarning, petcoDanger, petcoLightBlue, petcoTintGreen, petcoTintBlue,\r\n// })\r\nexport const newVariablesInFigma = transformObject({\r\n petcoBlue, blueNeutral, petcoBodyBG, petcoText, petcoWhite, petcoRed, petcoSmoke, petcoGray, petcoGreen,\r\n petcoWarning, petcoDanger, petcoLightBlue, petcoTintGreen, petcoTintBlue,\r\n petcoCyan, petcoSpanishGray, petcoGraniteGray, petcoCharcoal,\r\n petcoGreenSuccess, petcoMyrtleGreen, petcoUCLABlue,\r\n petcoPlatinum, petcoBrightGray3, petcoAntiFlashWhite, petcoAntiFlashWhite2, petcoLavenderPink, petcoBrightYellowCrayola,\r\n petcoChineseSilver, petcoChalk, petcoPaleRobinEggBlue, petcoCeruleanBlue, petcoFieldDrab, petcoOldLace,\r\n petcoWindsorTan, petcoCornsilk, neutralFog, petcoTintYellow\r\n})\r\n\r\nexport const newVariablesNotFigma = transformObject({\r\n petcoPewterBlue, petcoPewterBlue2, petcoOxfordBlue, petcoTuftsBlue, petcoJapaneseIndigo, petcoYankeesBlue,\r\n petcoDarkGunmetal, petcoDarkJungleGreen, petcoGrayX11, petcoAmericanSilver, petcoBrightGray, petcoChineseWhite,\r\n petcoCultured2, petcoCultured, petcoAliceBlue, petcoGainsboro2, petcoLightCarminePink, petcoPhilippineBronze,\r\n petcoInternationalOrange, petcoSnow, petcoMikadoYellow, petcoRustyRed, petcoOnyx, petcoDodgerBlue, petcoLavender,\r\n petcoPalatinateBlue, petcoCetaceanBlue, petcoJet, petcoDarkGunmetal2, petcoLotion, petcoSmoke, petcoWarning,\r\n petcoBrightGray2, petcoRed2, petcoTawny, petcoPastelRed, petcoTintRed, petcoDeepGreenCyanTurquoise2, petcoAeroBlue,\r\n petcoMagicMint, petcoDiamond2, petcoWater, petcoGreenSheen, petcoLightCyan2\r\n // do not exist in figma\r\n // blue\r\n // petcoPewterBlue, // suggestion, change to Green Sheen\r\n // petcoPewterBlue2, // suggestion, change to Green Sheen\r\n\r\n // petcoOxfordBlue, // _scheduling.scss no preferences warning. suggestion, change to petcoBlue, \r\n // petcoTuftsBlue, // _calendar.scss seems to have no effect. suggestion, change to petcoBlue\r\n // petcoJapaneseIndigo, // _calendar.scss seems to have no effect. suggestion, change to petcoBlue\r\n // petcoYankeesBlue, // _calendar.scss seems to have no effect. suggestion, change to petcoPrimaryLight\r\n // petcoDarkGunmetal, // _calendar.scss seems to have no effect. suggestion, change to petcoPrimaryLight\r\n // petcoDarkJungleGreen, // _calendar.scss seems to have no effect. suggestion, change to petcoBlue\r\n\r\n // // gray\r\n // petcoGrayX11, // exam form borders, invoice\r\n // petcoAmericanSilver, // _calendar.scss, no current suggestion.\r\n // petcoBrightGray, // form select, exam form, disabled, recommendation petcoChalk.\r\n // petcoChineseWhite, // _page.scss border for section break and navbar accordion. recommendation petcoPlatinum\r\n\r\n // petcoCultured2, // _common, mainBody bgColor, recommendation: petcoBodyBG\r\n // petcoCultured,\r\n // petcoAliceBlue,\r\n\r\n // petcoGainsboro2, // _calendar.scss, _petcoCalendarTheme timegrid slotlane border\r\n // petcoLightCarminePink, // discussion\r\n // petcoPhilippineBronze, // discussion\r\n // petcoInternationalOrange, // discussion\r\n // petcoSnow, // discussion, _calendarPage, change to figma lavendarBlush\r\n // petcoMikadoYellow, // forms\r\n // petcoRustyRed, // forms\r\n // petcoOnyx, // forms\r\n // petcoDodgerBlue, // react-select ui fix.\r\n // petcoLavender, // react-select ui fix hover\r\n // petcoPalatinateBlue, // calendar container warning triangle, getVetTitle\r\n // petcoCetaceanBlue, // calendar container warning triangle, getVetTitle\r\n // petcoJet, // _calendarPage\r\n // petcoDarkGunmetal2, // _table.scss\r\n // petcoLotion, // suggestion, change to Neutral/Fog\r\n // petcoSmoke, // suggestion, change to platinum\r\n // petcoWarning, // suggestion, change to tintYellow\r\n\r\n // petcoBrightGray2, // no show color on card.\r\n})\r\n// petcoCharcoal10,\r\n\r\n// export const quickDiscussion = transformObject({})\r\n\r\n// export const discussion = transformObject({})\r\n\r\n// export const laterDiscussion = transformObject({})\r\n\r\n/* notes for alvar:\r\n #FB4341, coral red from figma is petco red\r\n #73EAFF, current lightBlue is also in the foundation design system as petco light blue\r\n*/\r\n\r\n// others to look at\r\n// background-color: $orange;\r\n","\r\nimport { petcoText, petcoWhite } from '@common/_assets/color-constants.js';\r\n\r\nfunction padZero(str: any, len?: any) {\r\n len = len || 2;\r\n var zeros = new Array(len).join('0');\r\n return (zeros + str).slice(-len);\r\n}\r\nexport namespace ColorUtils {\r\n export function invertColor(hex: string, bw: boolean, lightColor?: string, darkColor?: string) {\r\n if (hex.indexOf('#') === 0) {\r\n hex = hex.slice(1);\r\n }\r\n // convert 3-digit hex to 6-digits.\r\n if (hex.length === 3) {\r\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\r\n }\r\n if (hex.length !== 6) {\r\n throw new Error('Invalid HEX color: ' + hex);\r\n }\r\n var r = parseInt(hex.slice(0, 2), 16),\r\n g = parseInt(hex.slice(2, 4), 16),\r\n b = parseInt(hex.slice(4, 6), 16);\r\n if (bw) {\r\n // https://stackoverflow.com/a/3943023/112731\r\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186\r\n ? (darkColor ?? petcoText)\r\n : (lightColor ?? petcoWhite);\r\n }\r\n // invert color components\r\n const red = (255 - r).toString(16);\r\n const green = (255 - g).toString(16);\r\n const blue = (255 - b).toString(16);\r\n // pad each with zeros and return\r\n return \"#\" + padZero(red) + padZero(green) + padZero(blue);\r\n }\r\n\r\n const componentFromStr = (numStr: string, percent: string) => {\r\n var num = Math.max(0, parseInt(numStr, 10));\r\n return percent ?\r\n Math.floor(255 * Math.min(100, num) / 100) : Math.min(255, num);\r\n }\r\n /**\r\n * StackOverflow: //https://stackoverflow.com/a/13070569/2419089\r\n * Converts an rgb(0,0,0) css color string to a hex color string #000000\r\n * the hex string will be returned all upper case. This was to fix serialized colors not matching our #hex colors causing isDirty false positives.\r\n */\r\n export function rgbToHex(cssRgbString: string) {\r\n var rgbRegex = /^rgb\\(\\s*(-?\\d+)(%?)\\s*,\\s*(-?\\d+)(%?)\\s*,\\s*(-?\\d+)(%?)\\s*\\)$/;\r\n var result, r, g, b, hex = \"\";\r\n if ((result = rgbRegex.exec(cssRgbString))) {\r\n r = componentFromStr(result[1], result[2]);\r\n g = componentFromStr(result[3], result[4]);\r\n b = componentFromStr(result[5], result[6]);\r\n\r\n hex = \"#\" + (0x1000000 + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase();\r\n }\r\n return hex;\r\n }\r\n\r\n\r\n /**\r\n * StackOverflow: https://stackoverflow.com/a/51567564/2419089\r\n *\r\n * Returns true if a color has a hrightness over 155 and false if it doesn't.\r\n * useful if you need to display text on a background color and need to flip between white/black text based on background color darkness.\r\n * @param colorHex a color hex rgb in #001952 format or 001952 format\r\n * @returns\r\n */\r\n export function isHexLightColor(colorHex: string) {\r\n if (colorHex === null || colorHex === undefined) return true;\r\n let hex = colorHex.replace(\"#\", \"\");\r\n // convert 3-digit hex to 6-digits.\r\n if (hex.length === 3) {\r\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\r\n }\r\n if (hex.length !== 6) {\r\n throw new Error('Invalid HEX color: ' + hex);\r\n }\r\n const c_r = parseInt(hex.substr(0, 2), 16);\r\n const c_g = parseInt(hex.substr(2, 2), 16);\r\n const c_b = parseInt(hex.substr(4, 2), 16);\r\n const brightness = (c_r * 299 + c_g * 587 + c_b * 114) / 1000;\r\n return brightness > 155;\r\n }\r\n\r\n}\r\n\r\nexport const invertColor = ColorUtils.invertColor;\r\n","export class ordinal {\r\n\r\n /**\r\n * Converts a number to its english spoken ordinal value. \r\n * i.e. 1,2,3,4 => 1st, 2nd, 3rd, 4th, etc.\r\n * @param n Number used to produce ordinal value\r\n * @returns String ordinal representation of a number\r\n */\r\n static getNumberOrdinal(n: number) {\r\n var s = [\"th\", \"st\", \"nd\", \"rd\"];\r\n var v = n % 100;\r\n return n + (s[(v - 20) % 10] || s[v] || s[0]);\r\n }\r\n\r\n}\r\n","import { WeekDay } from \"@common/models/Enums\";\r\nimport { DateTime, DurationUnit } from \"luxon\";\r\n\r\n/**\r\n * Generate all days between two dates.\r\n * @param start the starting date. Time information is ignored.\r\n * @param end the ending date.\r\n * @param inclusive whether to inclue the end date in the resulting list.\r\n */\r\nfunction* allDaysBetweenImpl(start: DateTime, end: DateTime, inclusive: boolean = true) {\r\n let cursor = start.startOf(\"day\");\r\n while (inclusive ? (cursor <= end) : (cursor < end)) {\r\n yield cursor;\r\n cursor = cursor.plus({ days: 1 });\r\n }\r\n}\r\n\r\nexport const sortAscDateTimesImpl = (a: DateTime, b: DateTime) => a < b ? -1 : a > b ? 1 : 0;\r\nexport const sortDescDateTimesImpl = (b: DateTime, a: DateTime) => a < b ? -1 : a > b ? 1 : 0;\r\n// DayOfWeek: 0=Sunday; 6=Saturday\r\n// DateTime.Weekday: 1=Monday; 7=Sunday\r\n// Mod DateTime.Weekday by 7 to get equivalent DayOfWeek.\r\nexport const fallsOnDayOfWeekImpl = (dayOfWeek: WeekDay.Day, date: DateTime) =>\r\n dayOfWeek === (date.weekday % 7);\r\n\r\n/**\r\n * A namespace for DateTime Utilities, previous functions that were directly exported were left alone and implemented in the namespace and reexported to prevent refactoring everything that uses them.\r\n */\r\nnamespace DateTimeUtils {\r\n export const allDaysBetween = allDaysBetweenImpl;\r\n\r\n export const fallsOnDayOfWeek = fallsOnDayOfWeekImpl;\r\n\r\n export const sortAscDateTimes = sortAscDateTimesImpl;\r\n\r\n export const sortDescDateTimes = sortDescDateTimesImpl;\r\n\r\n export const getZoneDateAsLocal = (dateVal: string | DateTime, timeZone: string): DateTime => {\r\n let date: DateTime;\r\n if (typeof dateVal === 'string') {\r\n const utcDateVal = DateTime.fromISO(dateVal as string, { zone: \"UTC\" });\r\n const hospitalDateVal = utcDateVal.setZone(timeZone, { keepLocalTime: false });\r\n date = hospitalDateVal;\r\n\r\n }\r\n else\r\n date = dateVal.setZone(timeZone, { keepLocalTime: false });\r\n const objectDate = date.toObject(); //convert to object which doesn't have any time offsets\r\n const forcedLocalDate = DateTime.fromObject(objectDate); //using local browser timezone, load the object from the specified timezone as if it were that time locally\r\n return forcedLocalDate;\r\n }\r\n\r\n /**\r\n * Convert an ISO Date or a DateTime to a time in the specified offset, then converts back to UTC while keeping the time the same from the timezone\r\n * Put another way, if you have an Date that's 6 AM in Eastern time, this convert's it to say \"America/Phoenix\" which would be 4 AM\r\n * And then converts it to UTC while maintaining the time of 4AM\r\n * This allows us to keep Calendar in UTC zone and give it UTC selected Date's etc in specific time zones, basically making timezones a non thing\r\n * and allowing the calendar to act like it's in the timezone where the hospital is.\r\n * There are bugs with FullCalendar and Luxon preventing us from using Luxon for TimeZone stuff and JS Date's don't have time zones, just browser local and utc.\r\n * @param dateVal The ISO Date string or DateTime you want to convert to another timezone and then shift to UTC\r\n * @param timeZone The timezone you want to shift the time in UTC too, (i.e. you can go from any offset/timesone on dateVal to whatever timezone you specify here IANA timezone format (matches petpass db on Store table))\r\n * @returns\r\n */\r\n export const keepTimeInZoneAsUtc = (dateVal: string | DateTime, timeZone: string): DateTime => {\r\n let date: DateTime;\r\n if (typeof dateVal === 'string')\r\n date = DateTime.fromISO(dateVal as string, { zone: timeZone });\r\n else\r\n date = dateVal.setZone(timeZone, { keepLocalTime: false });\r\n const utcDate = date.setZone(\"UTC\", { keepLocalTime: true }); //important, keepLocalTime keeps the time on conversions\r\n return utcDate;\r\n }\r\n\r\n export const getAsDateTimeUTC = (dateTimeOrString: DateTime | string | undefined | null) => {\r\n if (!dateTimeOrString)\r\n return null;\r\n const dateTime = typeof (dateTimeOrString) === 'string'\r\n ? DateTime.fromISO(dateTimeOrString, { zone: 'UTC' })\r\n : dateTimeOrString as DateTime;\r\n return dateTime;\r\n }\r\n\r\n export const getDayOfWeek = (date: DateTime): WeekDay.Day => {\r\n return date.weekday % 7 as WeekDay.Day;\r\n }\r\n\r\n export const getDuration = (startDate: string | DateTime, endDate: string | DateTime, durationUnits: DurationUnit): number => {\r\n const start = typeof startDate == 'string' ? DateTime.fromISO(startDate, { zone: \"UTC\" }) : startDate;\r\n const end = typeof endDate == 'string' ? DateTime.fromISO(endDate, { zone: \"UTC\" }) : endDate;\r\n const duration = end.diff(start, durationUnits);\r\n return duration.as(durationUnits);\r\n }\r\n\r\n export const getOldestDateTime = (firstDate: string | DateTime, secondDate: string | DateTime): DateTime => {\r\n const first = typeof firstDate == 'string' ? DateTime.fromISO(firstDate, { zone: \"UTC\" }) : firstDate;\r\n const second = typeof secondDate == 'string' ? DateTime.fromISO(secondDate, { zone: \"UTC\" }) : secondDate;\r\n\r\n const firstDuration = DateTimeUtils.getDuration(first, DateTime.utc(), \"minutes\");\r\n const secondDuration = DateTimeUtils.getDuration(second, DateTime.utc(), \"minutes\");\r\n\r\n if (firstDuration > secondDuration) {\r\n return first;\r\n }\r\n else {\r\n return second;\r\n }\r\n }\r\n\r\n /**\r\n * Convert 24-hour DateTime to 12 hour string.\r\n * @param dateVal always 24-hour DateTime\r\n * @returns format like '09:30 AM'\r\n */\r\n export const getTimehour12 = (dateVal: DateTime): string => {\r\n\r\n return ((dateVal.hour % 12) ? (dateVal.hour % 12).toString() : \"12\") +\r\n \":\" + (dateVal.minute < 10 ? \"0\" + dateVal.minute.toString() : dateVal.minute.toString()) +\r\n (dateVal.hour >= 12 ? \" PM\" : \" AM\");\r\n }\r\n\r\n export const objToDateTime = (inputValues: T): T => {\r\n\r\n if (!inputValues) {\r\n return inputValues;\r\n }\r\n const transformValue = (value: any): any => {\r\n if (value === undefined) {\r\n return null;\r\n } else if (Array.isArray(value)) {\r\n return value.map(item => transformValue(item));\r\n } else if (value instanceof Date) {\r\n // was returning {} instead of Date obj\r\n return value;\r\n } else if (DateTime.isDateTime(value)) {\r\n return DateTime.fromObject((value as any).c, { zone: 'utc' });\r\n } else if (typeof value === \"object\") {\r\n return objToDateTime(value);\r\n } else {\r\n return value;\r\n }\r\n };\r\n\r\n return Object.fromEntries(Object.entries(inputValues).map(([key, value]) => [key, transformValue(value)])) as T;\r\n };\r\n}\r\n\r\n\r\n\r\nconst getRoundedDate = (minutes: number, d = new Date()) => {\r\n if (!(d instanceof Date))\r\n d = new Date();\r\n let ms = 1000 * 60 * minutes; // convert minutes to ms\r\n let roundedDate = new Date(Math.round(d.getTime() / ms) * ms);\r\n\r\n return roundedDate\r\n}\r\n\r\nconst getOutOfBoundsDate = (time: Date, openTime: string, closeTime: string) => {\r\n const openingHours = DateTime.fromISO(openTime).toJSDate()\r\n const closingHours = DateTime.fromISO(closeTime).toJSDate()\r\n\r\n const greaterThanMin = openingHours.getTime() < time.getTime();\r\n const lessThanMax = time.getTime() < closingHours.getTime();\r\n\r\n if (!greaterThanMin) return openingHours;\r\n if (!lessThanMax) return closingHours;\r\n return undefined;\r\n};\r\n\r\nexport const resetDateTimeTimeZoneToCurrentTimezone = (date: DateTime, timeZone: string) => {\r\n // Both dates:\r\n // \"2023-04-20T07:45:00.000Z\"\r\n // \"2023-04-20T07:45:00.000-10:00\"\r\n // Will convert to:\r\n // \"2023-04-20T07:45:00.000-10:00\"\r\n const fixedDateAsTimeZone = date.setZone(timeZone, { keepLocalTime: true });\r\n return fixedDateAsTimeZone;\r\n}\r\n\r\nexport const checkIsToday = ({ timeZone, compareDate }: { timeZone: string, compareDate: DateTime | undefined }) => {\r\n const visitDateAsLocalTime = compareDate ? resetDateTimeTimeZoneToCurrentTimezone(compareDate, timeZone) : undefined;\r\n const todayShiftedAtTimeZone = resetDateTimeTimeZoneToCurrentTimezone(DateTime.now().setZone(timeZone), timeZone);\r\n\r\n return todayShiftedAtTimeZone.toLocaleString(DateTime.DATE_SHORT) === visitDateAsLocalTime?.toLocaleString(DateTime.DATE_SHORT);\r\n}\r\n\r\n/* timezone range for the application currently:\r\n pacific, mountain, central, eastern, utc\r\n -7 , -6 , -5 , -4 , 0\r\n this leads to days changing during the following day range.\r\n 5pm , 6pm , 7pm , 8pm , 11:59pm - time when day changes.\r\n 7am utc, 6am utc , 5am utc, 4am utc, 11:59pm utc, - utc time when each timezone hits midnight.\r\n*/\r\n\r\nconst todayDateTime = () => DateTime.utc()\r\nconst yesterday = () => todayDateTime().minus({ days: 1 }).toISO();\r\nconst today = () => todayDateTime().toISO();\r\nconst tomorrow = () => todayDateTime().plus({ days: 1 }).toISO();\r\nconst dayAfterTomorrow = () => todayDateTime().plus({ days: 2 }).toISO();\r\nconst maxExpirationDate = () => {\r\n return todayDateTime().plus({ years: 1 }).toJSDate();\r\n};\r\n\r\nexport {\r\n DateTimeUtils,\r\n allDaysBetweenImpl as allDaysBetween, //reexport the original functions so nothing breaks (TODO, refactor later to just use the namespace)\r\n fallsOnDayOfWeekImpl as fallsOnDayOfWeek,\r\n yesterday, today, tomorrow, dayAfterTomorrow,\r\n getRoundedDate, getOutOfBoundsDate,\r\n maxExpirationDate \r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { camelCase, startCase } from \"lodash\";\r\n\r\nexport const stringDateToISODate = (date?: string) => (date ? DateTime.fromISO(date).toFormat(\"MM/dd/yyyy\") : date);\r\n\r\nexport const prettyPrintAge = (birthDate?: string) => (birthDate ? prettyPrintTimespan(birthDate, DateTime.now().toISO()) : birthDate);\r\n\r\nexport const prettyPrintTimespan = (start: string, end: string) => {\r\n\tconst s = DateTime.fromISO(start);\r\n\tconst e = DateTime.fromISO(end);\r\n\t//\r\n\tlet days = Math.floor(e.diff(s, [\"days\"]).days);\r\n\tif (days < 28) return `${days} dy`;\r\n\t//\r\n\tlet weeks = Math.floor(e.diff(s, [\"weeks\"]).weeks);\r\n\tif (weeks < 21) return `${weeks} wk`;\r\n\t//\r\n\tlet months = Math.floor(e.diff(s, [\"months\"]).months);\r\n\tif (months < 12) return `${months} mo`;\r\n\t//\r\n\tlet span = e.diff(s, [\"years\", \"months\"]);\r\n\tlet years = Math.floor(span.years!);\r\n\tmonths = Math.floor(span.months!);\r\n\tif (months === 12) return \"1 yr\";\r\n\tif (months < 1) return `${years} yr`;\r\n\treturn `${years} yr, ${months} mo`;\r\n};\r\n\r\n/**\r\n *\r\n * @param value Unit value\r\n * @param units Unit Type e.g., Min, Hour, Day\r\n * @returns formatted string constructed from value and units\r\n * Example usage:\r\n * formatUnits(0, \"min\") = < 1 min\r\n * formatUnits(1, \"min\") = 1 min\r\n * formatUnits(45, \"min\") = 45 mins\r\n */\r\nexport const formatUnits = (value: number, units: string) => {\r\n\tif (value < 1) {\r\n\t\treturn `< 1 ${units}`;\r\n\t} else if (value == 1) {\r\n\t\treturn `1 ${units}`;\r\n\t} else {\r\n\t\treturn `${value} ${units}s`;\r\n\t}\r\n};\r\n\r\n/**\r\n * Serialized pascal object array to camel case\r\n * @param obj data array of Pascal Case formatting\r\n */\r\nexport const pascalizeKeys = (obj: any): any => {\r\n\tif (obj === null || obj === undefined) return undefined;\r\n\tif (Array.isArray(obj)) return obj.map(v => pascalizeKeys(v));\r\n\tif (obj.constructor === Object) {\r\n\t\treturn Object.keys(obj).reduce(\r\n\t\t\t(result, key) => ({\r\n\t\t\t\t...result,\r\n\t\t\t\t[toPascalCase(key)]: pascalizeKeys(obj[key]),\r\n\t\t\t}),\r\n\t\t\t{}\r\n\t\t);\r\n\t}\r\n\treturn obj;\r\n};\r\n\r\nconst toPascalCase = (str: string) => startCase(camelCase(str)).replace(/ /g, \"\");\r\n\r\nexport const decimalToPercentage = (val?: number) => (val ? Math.round(val * Math.pow(10, 4)) / Math.pow(10, 2) : val);\r\n\r\n/** Using luxon DateTime.TIME_SIMPLE to format string date from \"2024-03-21T09:00:00\" to \"09:00 AM\" */\r\nexport const getTimeFromDateString = (date: string) => {\r\n\tconst dt = DateTime.fromISO(date);\r\n\treturn dt.toLocaleString(DateTime.TIME_SIMPLE);\r\n};\r\n","import parse from 'html-react-parser';\r\nimport { sanitize } from 'dompurify';\r\nimport { isEmpty, uniq } from 'lodash';\r\n\r\n/**\r\n * Takes a string and a desired containing keyword, returns html as JSX\r\n * @param originalString non-modified partial or full text for modification \r\n * @param keyword string to match against\r\n * @returns Bolded HTML string as JSX elemenet\r\n */\r\nconst makeBold = (originalString: string | undefined, keyword: string | undefined, withoutHTMLFrom?:boolean) => {\r\n if (originalString === undefined || isEmpty(originalString) || isEmpty(keyword)) return originalString;\r\n try {\r\n var reg = new RegExp('(' + keyword + ')', 'ig');\r\n return (withoutHTMLFrom?originalString.replace(reg, '$1'): htmlFrom(originalString.replace(reg, '$1')));\r\n }\r\n catch (e) {\r\n return originalString;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Embolden portions of `originalString` matching any of the supplied `keywords`.\r\n * @param originalString candidate text\r\n * @param keyword kewords to embolden\r\n * @returns a string with any matching keywords wrapped in a tag. Render as JSX with `htmlFrom`.\r\n */\r\nconst makeAllBold = (originalString: string, keywords: string[]) => {\r\n let bolded = originalString;\r\n uniq(keywords).forEach(k => {\r\n bolded = bolded.replaceAll(new RegExp('(' + k + ')', 'ig'), '$1')\r\n });\r\n return bolded;\r\n}\r\n\r\nconst buildFormattedKeywords = (keywords: Array | undefined) => {\r\n const formattedKeywords = Array();\r\n if (keywords) {\r\n keywords.forEach(value => {\r\n if (value) {\r\n formattedKeywords.push(value.replace(/\\D/g, \"\"));\r\n }\r\n })\r\n }\r\n return formattedKeywords;\r\n}\r\n\r\nconst buildRegex = (formattedKeywords: string[]) => {\r\n let reg = '';\r\n formattedKeywords.forEach((value, index, array) => {\r\n if (!isEmpty(value)) {\r\n if (index === array.length - 1) {\r\n reg += value;\r\n }\r\n else {\r\n reg += value + \"|\";\r\n }\r\n }\r\n })\r\n return reg\r\n}\r\nconst getBoldedText = (slimmedString: string, formattedKeywords: string[], reg: string) => {\r\n // bold the text using regex.\r\n if (!isEmpty(formattedKeywords)) {\r\n var expression = new RegExp('(' + reg + ')', 'ig');\r\n // get bolded text if appropriate \r\n return slimmedString.replace(expression, '$1');\r\n }\r\n return slimmedString;\r\n}\r\nconst hidePhoneWithAsteriskIfNeeded = (canCall: boolean, boldedText: string) => {\r\n if (!canCall) {\r\n return boldedText.replace(/^(\\D*\\d\\D*){6}/gm, function (match) {\r\n return match.replace(/\\d/g, '*');\r\n })\r\n }\r\n return boldedText\r\n}\r\nconst makePhoneNumberBoldAndHiddenIfNeeded = (canCall: boolean, originalPhone: string, keywords: Array | undefined) => {\r\n var phoneRegex = new RegExp(/^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/gm);\r\n if (phoneRegex.test(originalPhone)) {\r\n // remove all special characters from the phone number\r\n let slimmedString = originalPhone.replace(/\\D/g, \"\");\r\n\r\n const formattedKeywords = buildFormattedKeywords(keywords);\r\n const reg = buildRegex(formattedKeywords);\r\n const boldedText = getBoldedText(slimmedString, formattedKeywords, reg);\r\n const indexesOfSeparation = findIndexesOfPhonePattern(boldedText);\r\n const handledPhoneNumber = hidePhoneWithAsteriskIfNeeded(canCall, boldedText);\r\n\r\n const formattedPhone = insertTextAtIndices(handledPhoneNumber, indexesOfSeparation);\r\n return (htmlFrom(formattedPhone));\r\n } else {\r\n return originalPhone;\r\n }\r\n}\r\n\r\n/**\r\n * Returns npa and nxx positions in a phone number string\r\n * Source string can have any special characters that normally throw off regex pattern matching\r\n * @param source unformatted phone number\r\n * @returns object of indexes of dashes to be updated in string\r\n */\r\nconst findIndexesOfPhonePattern = (source: string) => {\r\n let count = 0;\r\n let npa = 4;\r\n let nxx = 11;\r\n for (let i = 0; i < source.length; i++) {\r\n if (isNumeric(source[i])) {\r\n count++;\r\n if (count == 3) {\r\n npa = i + 1;\r\n } else if (count == 6) {\r\n nxx = i + 1;\r\n }\r\n }\r\n }\r\n\r\n var text = {\r\n [npa]: \"-\",\r\n [nxx]: \"-\"\r\n };\r\n\r\n return text;\r\n}\r\n\r\n/**\r\n * Determines if string is numeric only\r\n * @param str source string\r\n * @returns true or false if the string is a number\r\n */\r\nconst isNumeric = (str: string) => {\r\n return /^-?\\d+$/.test(str);\r\n}\r\n\r\n/**\r\n * Inserts provided values at their indexes\r\n * Shifts array to right to account for insertions\r\n * @param originalString string to manipulate with text indices\r\n * @param stringInsertions indexes and values to insert into the string\r\n * @returns string updated with values inserted at indexes \r\n */\r\nconst insertTextAtIndices = (originalString: string, stringInsertions: Record): string => {\r\n return originalString.replace(/./g, function (character: string, index: number) {\r\n return stringInsertions[index] ? stringInsertions[index] + character : character;\r\n });\r\n};\r\n\r\n\r\n/**\r\n * Sanitizes string and returns html as JSX \r\n * @param htmlString \r\n * @returns html as converted JSX element\r\n */\r\nconst htmlFrom = (htmlString: string) => {\r\n const cleanHtmlString = sanitize(htmlString,\r\n { USE_PROFILES: { html: true } });\r\n const html = parse(cleanHtmlString);\r\n return html;\r\n}\r\n\r\n/**\r\n * Strips html from string \r\n * @param htmlString \r\n * @returns string with html parsed out\r\n */\r\nconst stripHTML = (htmlString: string) => {\r\n const stripRegex = /(<([^>]+)>)/ig;\r\n const result = htmlString.replace(stripRegex, '');\r\n return result;\r\n}\r\n\r\n/**\r\n * Finds contents of the first paragraph tag and strips out html\r\n * @param htmlString \r\n * @returns content of first paragraph\r\n */\r\nconst cleanseFirstParagraph = (htmlString: string) => {\r\n const firstParagraphRegex = /

(.*?)<\\/p>/;\r\n const corresp = firstParagraphRegex.exec(htmlString);\r\n const firstParagraph = (corresp) ? corresp[1] : \"\";\r\n const stripRegex = /(<([^>]+)>)/ig;\r\n const result = firstParagraph.replace(stripRegex, '');\r\n return result;\r\n}\r\n\r\nexport {\r\n makePhoneNumberBoldAndHiddenIfNeeded,\r\n makeBold,\r\n makeAllBold,\r\n htmlFrom,\r\n stripHTML,\r\n cleanseFirstParagraph\r\n}\r\n","import { DateTime } from \"luxon\";\r\n\r\nexport class ObjectUtility {\r\n\r\n /**\r\n * Converts the properties of an object to strings.\r\n * \r\n * This function takes an object and returns a new object where each \r\n * property value has been converted to a string. If a property value \r\n * is `null` or `undefined`, it will be omitted from the result. \r\n * Additionally, if a property value is an instance of `DateTime`, \r\n * it will be converted to an ISO date string.\r\n * \r\n * @param obj - The object whose properties will be converted to strings.\r\n * @returns A new object with the same keys as the input object, \r\n * but with all values converted to strings.\r\n */\r\n static convertPropsToString(obj: T): { [K in keyof T]: string } {\r\n const result = {} as { [K in keyof T]: string };\r\n \r\n for (const key in obj) {\r\n if(!Object.prototype.hasOwnProperty.call(obj, key)) continue;\r\n\r\n const value = obj[key];\r\n\r\n if(_.isNil(value)) continue;\r\n\r\n if (value instanceof DateTime) {\r\n result[key] = value.toISODate();\r\n } else {\r\n result[key] = String(value);\r\n }\r\n }\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * Case-insensitive retrieval of object properties\r\n * @param object object to parse\r\n * @param key property to return\r\n * @returns property if found\r\n */\r\n static getPropertyCaseInsensitive(object: any, key: string) {\r\n const asLowercase = key.toLowerCase();\r\n const property = Object.keys(object)\r\n .find(k => k.toLowerCase() === asLowercase);\r\n\r\n if (property) {\r\n return object[property];\r\n }\r\n }\r\n\r\n /**\r\n * Deep compare two arrays of the same type to determine if they have the same contents.\r\n */\r\n static sequenceEquals(arr1: T[], arr2: T[]) {\r\n return _(arr1).differenceWith(arr2, _.isEqual).isEmpty();\r\n }\r\n}\r\n","export const formatCurrency = (value: number) =>\r\n new Intl.NumberFormat(`en-US`, {\r\n currency: `USD`,\r\n style: 'currency',\r\n }).format(value);\r\n\r\nexport const floorToTwoDecimals = (value: number) => _.floor(value, 2);\r\n\r\nexport const convertToNumber = (value: any) => _.isNil(value) ? undefined : Number(value);\r\n","\r\nexport class BoolUtility {\r\n static hasValue = (val: boolean | undefined | null) =>\r\n val !== null && val !== undefined\r\n\r\n}\r\n","/**\r\n * If the event id is one of our number_number strings, this will get the first part of the id\r\n * @param rawId \r\n * @returns \r\n */\r\nexport const getCalendarEventItemId = (rawId: string | number) => {\r\n const id = typeof (rawId) === 'string' ? (rawId.indexOf('_') > -1 ? parseInt(rawId.split('_')[0]) : parseInt(rawId)) : rawId;\r\n return id;\r\n}\r\n","import { usePromiseTracker } from \"react-promise-tracker\";\r\n\r\n\r\n/**\r\n * Creates a React Promise Tracker custom hook that exposes the `promiseInProgress` boolean\r\n * @param param tag - string promiseTracker tag\r\n * @param delay number - optional parameter for delay promise in progress. Default value is 0\r\n * @returns boolean - promise tracker boolean hook\r\n */\r\nconst PromiseByTag = ({ tag, delay = 0 }: { tag: string, delay: number }) => {\r\n const { promiseInProgress } = usePromiseTracker({ area: tag, delay: delay});\r\n\r\n return promiseInProgress;\r\n}\r\n\r\n/**\r\n * Provided an array of tags, returns an array of booleans to follow promises in progress\r\n * @param tags string[] - promiseTracker tags you wish to observe\r\n * @param delay number - optional parameter for delay promise in progress. Default value is 0\r\n * @returns boolean[] - all promised hooks associated to the tags\r\n */\r\nconst createPromisesFromTags = (tags: string[], delay: number = 0): boolean[] => {\r\n if (tags !== undefined && tags.length > 0) {\r\n // iterate over each tags and get add to a list of promise trackers\r\n let promisesInProgress = tags.map((t) => {\r\n return PromiseByTag({ tag: t, delay: delay })\r\n })\r\n\r\n return promisesInProgress;\r\n }\r\n\r\n return [];\r\n}\r\n\r\n/**\r\n * Provided an array of tags, returns a boolean if any are considered still in progress of a promise\r\n * @param tags string[] - promiseTracker tags you wish to observe\r\n * @param delay number - optional parameter for delay promise in progress. Default value is 0\r\n * @returns boolean - if one or more tags is still in progress\r\n */\r\nconst anyPromiseTrackerTagsInProgress = (tags: string[], delay: number = 0): boolean => {\r\n return createPromisesFromTags(tags, delay).some(p => p === true);\r\n}\r\n\r\n\r\nexport {\r\n createPromisesFromTags,\r\n anyPromiseTrackerTagsInProgress\r\n}\r\n","import { BusinessLineModel, SalesItemAttributeModel, SalesItemModel, VisitSalesItemAttributeModel } from \"@common/models\";\r\nimport { BusinessLineName, BusinessLineEnum, SalesItemAttributeProcessingType, VisitSalesItemAttributesName } from \"@common/models/Enums\";\r\n\r\nexport class AttributeUtils {\r\n\r\n private static hospitalMedicationAttributeNames: string[] = [\r\n 'QTY:', 'Unit of Measure:', 'Dose:', 'Frequency:',\r\n 'Refills:', 'Instructions:', 'Expiration:', 'Notes:'\r\n ];\r\n\r\n static generatePredefinedAttributes = (attributeGroup: PredefinedAttributes, salesItem: SalesItemModel) => {\r\n const attributes: SalesItemAttributeModel[] = [];\r\n let order = salesItem.salesItemAttributes.length + 1;\r\n switch (attributeGroup) {\r\n case PredefinedAttributes.HospitalMedicationAttributes:\r\n // This is the only attribute with default value for this group.\r\n attributes.push(new SalesItemAttributeModel({\r\n businessLineId: BusinessLineEnum.Hospital,\r\n businessLine: new BusinessLineModel({ businessLineId: BusinessLineEnum.Hospital, name: BusinessLineName.Hospital }),\r\n salesItemAttributeTypeId: 1,\r\n name: 'Prescribed Product:',\r\n salesItemAttributeProcessingTypeId: SalesItemAttributeProcessingType.NoProcessing,\r\n // Using FullName since \"Description\" is just a FE Label.\r\n defaultValue: salesItem.fullName,\r\n sortOrder: order\r\n }));\r\n order++;\r\n AttributeUtils.hospitalMedicationAttributeNames.map(attName => {\r\n attributes.push(new SalesItemAttributeModel({\r\n businessLineId: BusinessLineEnum.Hospital,\r\n businessLine: new BusinessLineModel({ businessLineId: BusinessLineEnum.Hospital, name: BusinessLineName.Hospital }),\r\n salesItemAttributeTypeId: 1,\r\n name: attName,\r\n salesItemAttributeProcessingTypeId: SalesItemAttributeProcessingType.NoProcessing,\r\n sortOrder: order,\r\n }))\r\n order++;\r\n });\r\n return attributes;\r\n default:\r\n // Do we need to do something here or just break?\r\n return [];\r\n }\r\n }\r\n\r\n static getSalesItemAttributeValueByName = (visitSalesItemAttributes: VisitSalesItemAttributeModel[], nameKey: VisitSalesItemAttributesName, defaultValue = \"\") => {\r\n return _.defaultTo(visitSalesItemAttributes.find((v) => v.name == nameKey)?.stringValue, defaultValue)\r\n }\r\n}\r\n\r\nexport enum PredefinedAttributes {\r\n HospitalMedicationAttributes = 0,\r\n}\r\n","import localforage from \"localforage\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport class CacheUtils {\r\n\r\n static LastAccessedSuffix = \"_PPLastAccessed\"\r\n\r\n private static getLastAccessedKey = (key: string) => key + this.LastAccessedSuffix\r\n private static getObjectKey = (lastAccessedKey: string) => lastAccessedKey.replace(this.LastAccessedSuffix, '');\r\n private static isLastAccessedKey = (key: string) => key.endsWith(this.LastAccessedSuffix);\r\n\r\n /** \r\n * Determine if the given value key has expired by evaluating its corresponding lastAccessed key.\r\n * */\r\n private static async hasExpired(key: string, maxAgeMs: number): Promise {\r\n // fetch the cached timestamp (if any)\r\n const timestamp = await localforage.getItem(this.getLastAccessedKey(key));\r\n // attempt to convert the timestamp string to an ISO DateTime.\r\n const timestampDT = DateTime.fromISO(timestamp ?? \"\", { zone: \"utc\" });\r\n // the cached object has expired if the timestamp can't be resolved,\r\n // OR it is older than our defined maxCacheAgeMs.\r\n return !timestampDT.isValid // not a valid timestamp\r\n || DateTime.utc().diff(timestampDT).milliseconds > maxAgeMs // too old\r\n }\r\n\r\n /**\r\n * Set the last accessed time of this key to now.\r\n */\r\n private static async updateLastAccessed(key: string): Promise {\r\n const timestamp = DateTime.utc().toISO()\r\n await localforage.setItem(this.getLastAccessedKey(key), timestamp);\r\n }\r\n\r\n /** \r\n * Get a value from storage.\r\n * */\r\n static async get(key: string): Promise {\r\n const value = await localforage.getItem(key);\r\n if (value === null) {\r\n return undefined;\r\n } else {\r\n await this.updateLastAccessed(key);\r\n return value;\r\n }\r\n }\r\n\r\n /** \r\n * Add a value to storage.\r\n * */\r\n static async set(key: string, value: T): Promise {\r\n await Promise.all([\r\n localforage.setItem(key, value),\r\n this.updateLastAccessed(key)\r\n ])\r\n return value;\r\n }\r\n\r\n /**\r\n * Remove a value from storage.\r\n */\r\n static async remove(key: string): Promise {\r\n // remove the cached value and corresponding timestamp\r\n await Promise.all([\r\n localforage.removeItem(key),\r\n localforage.removeItem(this.getLastAccessedKey(key))\r\n ]);\r\n }\r\n\r\n /** \r\n * Remove all expired keys from storage.\r\n * */\r\n static async evictExpiredKeys(maxAgeMs: number): Promise {\r\n // fetch all cached keys.\r\n const keys = await localforage.keys();\r\n // filter to only 'lastAccessed` keys to prevent removal of objects not managed by CacheUtils.\r\n for (const key of keys.filter(this.isLastAccessedKey).map(this.getObjectKey)) {\r\n // if cached object has expired remove it.\r\n if (await this.hasExpired(key, maxAgeMs))\r\n await this.remove(key)\r\n }\r\n }\r\n}\r\n","import { ISelectOption } from \"@common/components/forms\";\r\nimport { DateTimeUtils } from \"@common/utils\";\r\nimport { filter, includes } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { AppointmentListingModel, AppointmentStatusOptions, IModel, ModelRecord } from \"..\";\r\nimport { AppointmentStatus, ReservationAssignmentStatuses } from '../Enums';\r\n\r\nexport interface IAppointmentRequest extends IModel {\r\n reservationId: number | undefined,\r\n hospitalId: number,\r\n clientId: number,\r\n petId: number,\r\n appointmentTypeId: number,\r\n appointmentTypeName: string, //extra field UI\r\n veterinarianId: number | undefined,\r\n hospitalScheduletemplateId: number | undefined,\r\n startDate: string,\r\n endDate: string,\r\n reasonForVisit: string,\r\n notes: string,\r\n appointmentStatus: AppointmentStatus;\r\n statusId: number\r\n length: string;\r\n duration: number; //extra field UI\r\n startTime: string, //extra field UI\r\n endTime: string, //extra field UI\r\n veterinarianFullName: string //extra field UI....\r\n assignmentStatus: ReservationAssignmentStatuses | undefined,\r\n isWalkIn: boolean;\r\n}\r\n\r\nexport class AppointmentRequest implements ModelRecord {\r\n reservationId: number | undefined;\r\n hospitalId: number;\r\n clientId: number;\r\n petId: number;\r\n duration: number;\r\n appointmentTypeId: number;\r\n appointmentTypeName: string;\r\n veterinarianId: number | undefined;\r\n hospitalScheduletemplateId: number | undefined;\r\n startDate: string;\r\n startTime: string;\r\n endDate: string;\r\n endTime: string;\r\n reasonForVisit: string;\r\n veterinarianFullName: string;\r\n notes: string;\r\n appointmentStatus: AppointmentStatus;\r\n statusId: number;\r\n length: string;\r\n assignmentStatus: ReservationAssignmentStatuses | undefined;\r\n isWalkIn: boolean\r\n rowVersion: string;\r\n\r\n constructor(params: Partial) {\r\n const {\r\n reservationId = undefined,\r\n hospitalId = 0,\r\n clientId = 0,\r\n petId = 0,\r\n duration = 900,\r\n appointmentTypeId = 0,\r\n appointmentTypeName = '',\r\n veterinarianId = undefined,\r\n hospitalScheduletemplateId = undefined,\r\n startDate = DateTime.utc().toISO(),\r\n startTime = DateTime.utc().toISO(),\r\n endDate = DateTime.utc().toISO(),\r\n endTime = DateTime.utc().toISO(),\r\n reasonForVisit = '',\r\n notes = '',\r\n length = '',\r\n appointmentStatus = AppointmentStatus.Booked,\r\n statusId = 1,\r\n veterinarianFullName = '',\r\n assignmentStatus = ReservationAssignmentStatuses.Unassigned,\r\n isWalkIn = false,\r\n rowVersion = ''\r\n\t\t} = params;\r\n\r\n this.reservationId = reservationId;\r\n this.hospitalId = hospitalId;\r\n this.clientId = clientId;\r\n this.petId = petId;\r\n this.veterinarianFullName = veterinarianFullName;\r\n this.appointmentTypeId = appointmentTypeId;\r\n this.appointmentTypeName = appointmentTypeName;\r\n this.veterinarianId = veterinarianId;\r\n this.hospitalScheduletemplateId = hospitalScheduletemplateId;\r\n this.startDate = startDate;\r\n this.endDate = endDate;\r\n this.reasonForVisit = reasonForVisit;\r\n this.notes = notes;\r\n this.duration = duration;\r\n this.startTime = startTime;\r\n this.endTime = endTime;\r\n this.length = length;\r\n this.appointmentStatus = appointmentStatus;\r\n this.assignmentStatus = assignmentStatus;\r\n this.statusId = statusId;\r\n this.isWalkIn = isWalkIn;\r\n this.rowVersion = rowVersion;\r\n }\r\n\r\n /**\r\n * Provides a dropdown list of all appointment status options that exist provided the business rules exist\r\n * @returns all appointment status options applicable for the current appointment\r\n */\r\n getAvailableAppointmentStatuses(isAppointmentForCurrentDay?: boolean): ISelectOption[] {\r\n let appointmentStatuses: ISelectOption[] = [];\r\n if (this.reservationId == 0) {\r\n appointmentStatuses = filter(AppointmentStatusOptions, (appointmentStatus) => { return includes(['Confirmed', 'Booked', isAppointmentForCurrentDay ? 'Walk-in' : ''], appointmentStatus.label); });\r\n }\r\n else if (this.statusId == 5) {\r\n appointmentStatuses = filter(AppointmentStatusOptions, (appointmentStatus) => { return includes(['Cancelled', 'Showed'], appointmentStatus.label); });\r\n }\r\n else if (this.statusId > 3) {\r\n appointmentStatuses = filter(AppointmentStatusOptions, (appointmentStatus) => { return includes([AppointmentStatus.statusFormattedName(AppointmentStatus[this.statusId])], appointmentStatus.label); });\r\n }\r\n else {\r\n appointmentStatuses = filter(AppointmentStatusOptions, (appointmentStatus) => { return includes(['Confirmed', 'Booked', 'Cancelled'], appointmentStatus.label); });\r\n }\r\n\r\n return appointmentStatuses;\r\n }\r\n\r\n static FromListingModel(hospitalId: number, model: AppointmentListingModel) {\r\n return new AppointmentRequest({\r\n reservationId: model.reservationId,\r\n hospitalId: hospitalId,\r\n clientId: model.clientId,\r\n petId: model.petId,\r\n appointmentTypeId: model.appointmentTypeId,\r\n appointmentTypeName: model.appointmentTypeName,\r\n veterinarianId: model.veterinarianId,\r\n hospitalScheduletemplateId: model.hospitalScheduleTemplateId,\r\n startDate: model.startDate,\r\n endDate: model.endDate,\r\n reasonForVisit: model.reasonForVisit,\r\n notes: model.notes,\r\n duration: (model.startDate != undefined && model.endDate != undefined) ? DateTimeUtils.getDuration(model.startDate, model.endDate, \"seconds\") : 900,\r\n statusId: model.appointmentStatusId,\r\n appointmentStatus: model.appointmentStatusId == AppointmentStatus.Walk_In ? AppointmentStatus.Showed : model.appointmentStatusId,\r\n assignmentStatus: model.assignmentStatus,\r\n isWalkIn: model.appointmentStatusId == AppointmentStatus.Walk_In ? true : false,\r\n rowVersion: model.rowVersion\r\n });\r\n }\r\n}\r\n","import { AppointmentListingModel, IModel, ModelRecord } from \"@common/models\";\r\nimport { ICheckInModel } from \"@models/forms/ICheckInModel\";\r\nimport { defaultTo } from \"lodash\";\r\nexport interface IAppointmentCheckInRequest extends IModel {\r\n reservationId: number\r\n veterinarianId: number,\r\n veterinarianFirstName: string,\r\n veterinarianLastName: string,\r\n veterinarianEmailName: string,\r\n veterinarianLicenseNumber: string,\r\n veterinarianLicenseStateId: number | undefined,\r\n veterinarianLicenseExpirationDate: string,\r\n createAsInProgress: boolean,\r\n dispensingAuthUserId: number | undefined,\r\n dispensingUserFirstName: string | undefined,\r\n dispensingUserLastName: string | undefined,\r\n reasonForVisit: string | undefined\r\n appointmentNotes: string | undefined;\r\n intakeNotes: string | undefined;\r\n weight: number | undefined;\r\n room: string | undefined;\r\n}\r\n\r\nexport class AppointmentCheckInRequest implements ModelRecord {\r\n reservationId: number;\r\n veterinarianId: number;\r\n veterinarianFirstName: string;\r\n veterinarianLastName: string;\r\n veterinarianEmailName: string;\r\n veterinarianLicenseNumber: string;\r\n veterinarianLicenseStateId: number | undefined;\r\n veterinarianLicenseExpirationDate: string;\r\n createAsInProgress: boolean;\r\n dispensingAuthUserId: number | undefined;\r\n dispensingUserFirstName: string | undefined;\r\n dispensingUserLastName: string | undefined;\r\n reasonForVisit: string | undefined\r\n appointmentNotes: string | undefined;\r\n intakeNotes: string | undefined;\r\n weight: number | undefined;\r\n room: string | undefined;\r\n rowVersion: string;\r\n\r\n constructor(params: Partial) {\r\n const {\r\n reservationId = 0,\r\n veterinarianId = 0,\r\n veterinarianFirstName = '',\r\n veterinarianLastName = '',\r\n veterinarianEmailName = '',\r\n veterinarianLicenseNumber = '',\r\n veterinarianLicenseStateId = undefined,\r\n veterinarianLicenseExpirationDate = '',\r\n createAsInProgress = false,\r\n rowVersion = ''\r\n } = params;\r\n\r\n this.reservationId = reservationId;\r\n this.veterinarianId = veterinarianId;\r\n this.veterinarianFirstName = veterinarianFirstName;\r\n this.veterinarianLastName = veterinarianLastName;\r\n this.veterinarianEmailName = veterinarianEmailName;\r\n this.veterinarianLicenseNumber = veterinarianLicenseNumber;\r\n this.veterinarianLicenseStateId = veterinarianLicenseStateId;\r\n this.veterinarianLicenseExpirationDate = veterinarianLicenseExpirationDate;\r\n this.createAsInProgress = createAsInProgress;\r\n this.dispensingAuthUserId = defaultTo(params?.dispensingAuthUserId, undefined);\r\n this.dispensingUserFirstName = defaultTo(params?.dispensingUserFirstName, '');\r\n this.dispensingUserLastName = defaultTo(params?.dispensingUserLastName, '');\r\n this.reasonForVisit = defaultTo(params?.reasonForVisit, '');\r\n this.appointmentNotes = defaultTo(params?.appointmentNotes, '');\r\n this.intakeNotes = defaultTo(params?.intakeNotes, '');\r\n this.weight = defaultTo(params?.weight, undefined);\r\n this.room = defaultTo(params?.room, '');\r\n this.rowVersion = rowVersion;\r\n }\r\n\r\n static FromListingModel(model: AppointmentListingModel, checkInModel: ICheckInModel, createAsInProgress: boolean = false) {\r\n return new AppointmentCheckInRequest({\r\n reservationId: model.reservationId,\r\n // We send vetId, and not other details on vet because we want vet in db to be source of truth.\r\n veterinarianId: model.veterinarianId,\r\n\r\n // We send first and last name here to save a fetch on the backend.\r\n dispensingAuthUserId: model.dispensingAuthUserId,\r\n dispensingUserFirstName: model.dispensingUserFirstName,\r\n dispensingUserLastName: model.dispensingUserLastName,\r\n\r\n appointmentNotes: checkInModel.appointmentNotes,\r\n intakeNotes: checkInModel.intakeNotes,\r\n reasonForVisit: checkInModel.reasonForVisit,\r\n weight: checkInModel.weight,\r\n room: checkInModel.room,\r\n rowVersion: model.rowVersion,\r\n createAsInProgress: createAsInProgress\r\n });\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { HospitalScheduleTemplateModel, IHospitalScheduleTemplateModel, schedule } from '@common/models';\r\nimport { StringUtility } from \"@common/utils\";\r\nimport { IModel } from \"../Model\";\r\n\r\n\r\n//We don't load these from api's, only post them, so I strongly implemented it the way we want hook forms to bind to it.\r\nexport interface IHospitalScheduleTemplateRequest extends IModel {\r\n hospitalScheduleTemplateId: number,\r\n hospitalId: number,\r\n name: string | undefined,\r\n isDefault: boolean,\r\n isActive: boolean;\r\n color: string | undefined,\r\n hospitalSchedulePreferences: schedule.EntitySchedulePreference[] | undefined,\r\n rowVersion: string\r\n}\r\n\r\nexport class HospitalScheduleTemplateRequest implements IHospitalScheduleTemplateRequest, IModel {\r\n hospitalScheduleTemplateId: number;\r\n hospitalId: number;\r\n name: string | undefined;\r\n isDefault: boolean;\r\n isActive: boolean;\r\n color: string | undefined;\r\n rowVersion: string;\r\n hospitalSchedulePreferences: schedule.EntitySchedulePreference[]\r\n constructor(init?:\r\n Partial |\r\n Partial |\r\n Partial) {\r\n //can be instantiated from any of the types on init\r\n this.hospitalScheduleTemplateId = defaultTo(init?.hospitalScheduleTemplateId, 0);\r\n this.hospitalId = defaultTo(init?.hospitalId, 0);\r\n this.name = StringUtility.SanitizeString(init?.name);\r\n this.color = StringUtility.SanitizeString(init?.color ?? '#2596be');\r\n this.isActive = defaultTo(init?.isActive, false);\r\n this.isDefault = defaultTo(init?.isDefault, false);\r\n this.hospitalSchedulePreferences = init && init.hospitalSchedulePreferences ? init.hospitalSchedulePreferences.map(p => new schedule.EntitySchedulePreference(p)) : [];\r\n this.rowVersion = defaultTo(init?.rowVersion, '');\r\n }\r\n\r\n static fromTemplateModel(template: HospitalScheduleTemplateModel) {\r\n return new HospitalScheduleTemplateRequest(template);\r\n }\r\n\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { EntityScheduleType, WeekDay } from \"@common/models/Enums\";\r\n\r\nexport interface IEntityScheduleOverridePreferenceRequest {\r\n storeId: number;\r\n entityId: number;\r\n entityType: EntityScheduleType | undefined;\r\n schedulePreferenceOverrideId: number | undefined;\r\n schedulePreferenceId: number;\r\n scheduleBlockTypeId: number;\r\n startTime: string;\r\n endTime: string;\r\n dayOfWeek: WeekDay.Day;\r\n overrideDate: string;\r\n notes: string | undefined;\r\n createdBy: string | undefined;\r\n updatedBy: string | undefined;\r\n dateCreated: string | undefined;\r\n dateUpdated: string | undefined;\r\n}\r\n\r\nexport class EntityScheduleOverridePreferenceRequest implements IEntityScheduleOverridePreferenceRequest {\r\n storeId: number;\r\n entityId: number;\r\n entityType: EntityScheduleType | undefined;\r\n schedulePreferenceOverrideId: number | undefined;\r\n schedulePreferenceId: number;\r\n scheduleBlockTypeId: number;\r\n startTime: string;\r\n endTime: string;\r\n dayOfWeek: WeekDay.Day;\r\n overrideDate: string;\r\n notes: string | undefined;\r\n createdBy: string | undefined;\r\n updatedBy: string | undefined;\r\n dateCreated: string | undefined;\r\n dateUpdated: string | undefined;\r\n\r\n constructor(init: Partial) {\r\n this.storeId = defaultTo(init.storeId, 0);\r\n this.schedulePreferenceOverrideId = init.schedulePreferenceOverrideId;\r\n this.entityId = defaultTo(init.entityId, 0);\r\n this.entityType = init.entityType;\r\n this.schedulePreferenceId = defaultTo(init.schedulePreferenceId, 0);\r\n this.scheduleBlockTypeId = defaultTo(init.scheduleBlockTypeId, 0);\r\n this.startTime = defaultTo(init.startTime, '12:00:00');\r\n this.endTime = defaultTo(init.endTime, '12:30:00');\r\n this.dayOfWeek = defaultTo(init.dayOfWeek as WeekDay.Day, WeekDay.Day.Monday);\r\n this.overrideDate = defaultTo(init.overrideDate, '');\r\n this.notes = StringUtility.SanitizeString(init.notes);\r\n this.createdBy = defaultTo(init.createdBy, '');\r\n this.updatedBy = defaultTo(init.updatedBy, '');\r\n this.dateCreated = defaultTo(init.dateCreated, '');\r\n this.dateUpdated = defaultTo(init.dateUpdated, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { Model } from \"../Model\";\r\n\r\nexport interface IHospitalScheduleRequestModel extends Model {\r\n hospitalScheduleId: number;\r\n veterinarianId: number | undefined;\r\n hospitalScheduleTemplateId: number | undefined;\r\n hospitalId: number\r\n date: string;\r\n}\r\n\r\nexport class HospitalScheduleRequestModel implements IHospitalScheduleRequestModel {\r\n hospitalScheduleId: number;\r\n veterinarianId: number | undefined;\r\n hospitalScheduleTemplateId: number | undefined;\r\n hospitalId: number\r\n date: string;\r\n isAdHoc: boolean;\r\n rowVersion: string;\r\n\r\n\r\n\r\n constructor(params?: Partial) {\r\n this.hospitalScheduleId = defaultTo(params?.hospitalScheduleId, 0);\r\n this.veterinarianId = defaultTo(params?.veterinarianId, undefined);\r\n this.hospitalScheduleTemplateId = defaultTo(params?.hospitalScheduleTemplateId, undefined);\r\n this.hospitalId = defaultTo(params?.hospitalId, 0);\r\n this.date = defaultTo(params?.date?.substring(0, 10), DateTime.utc().toISO().substring(0, 10)); // trim off any timezone offset\r\n this.isAdHoc = false;\r\n this.rowVersion = defaultTo(params?.rowVersion, '');\r\n }\r\n}\r\n","\r\nexport interface IVisitConsentClientRequest {\r\n reasonForVisit: string;\r\n treatmentStarted: boolean;\r\n previousTreatment: string;\r\n isCurrentlyOnMedications: boolean;\r\n medicationList: string;\r\n}\r\n\r\nexport class VisitConsentClientRequest implements IVisitConsentClientRequest {\r\n reasonForVisit: string;\r\n treatmentStarted: boolean;\r\n previousTreatment: string;\r\n isCurrentlyOnMedications: boolean;\r\n medicationList: string;\r\n\r\n constructor(params: IVisitConsentClientRequest) {\r\n this.reasonForVisit = _.defaultTo(params.reasonForVisit, '');\r\n this.treatmentStarted = _.defaultTo(params.treatmentStarted, false);\r\n this.previousTreatment = _.defaultTo(params.previousTreatment, '');\r\n this.isCurrentlyOnMedications = _.defaultTo(params.isCurrentlyOnMedications, false);\r\n this.medicationList = _.defaultTo(params.medicationList, '');\r\n }\r\n}\r\n","\r\nexport interface IVisitConsentDentalExtractionRequest {\r\n authorizationResponseId: number;\r\n authorizationLimit: string;\r\n}\r\n\r\nexport class VisitConsentDentalExtractionRequest implements IVisitConsentDentalExtractionRequest {\r\n authorizationResponseId: number;\r\n authorizationLimit: string;\r\n\r\n constructor(params: IVisitConsentDentalExtractionRequest) {\r\n this.authorizationResponseId = _.defaultTo(params.authorizationResponseId, 0);\r\n this.authorizationLimit = _.defaultTo(params.authorizationLimit, '');\r\n }\r\n}\r\n","\r\nexport interface IVisitConsentEuthanasiaRequest {\r\n euthanasiaResponseId: number;\r\n}\r\n\r\nexport class VisitConsentEuthanasiaRequest implements IVisitConsentEuthanasiaRequest {\r\n euthanasiaResponseId: number;\r\n\r\n constructor(params: IVisitConsentEuthanasiaRequest) {\r\n this.euthanasiaResponseId = _.defaultTo(params.euthanasiaResponseId, 0);\r\n }\r\n}\r\n","\r\nexport interface IVisitConsentSurgeryRequest {\r\n proceduresRequested: string;\r\n lastEatDate: string;\r\n areVaccincationsCurrent: boolean | undefined;\r\n outOfDateVaccincations: string;\r\n isPetIll: boolean | undefined;\r\n hasConcernsToday: boolean | undefined;\r\n illnessOrConcernsNotes: string;\r\n isPetMicrochipped: boolean | undefined;\r\n microchipRequested: boolean | undefined;\r\n medicationsList: string;\r\n fleaTickMedications: string;\r\n hasSeriousHealthConcerns: boolean | undefined;\r\n hadPreviousReactions: boolean | undefined;\r\n needsAdditionalServices: boolean | undefined;\r\n additionalConcerns: string;\r\n infectiousDiseaseInitials: string;\r\n isCPRAllowed: boolean | undefined;\r\n}\r\n\r\nexport class VisitConsentSurgeryRequest implements IVisitConsentSurgeryRequest {\r\n proceduresRequested: string;\r\n lastEatDate: string;\r\n areVaccincationsCurrent: boolean | undefined;\r\n outOfDateVaccincations: string;\r\n isPetIll: boolean | undefined;\r\n hasConcernsToday: boolean | undefined;\r\n illnessOrConcernsNotes: string;\r\n isPetMicrochipped: boolean | undefined;\r\n microchipRequested: boolean | undefined;\r\n medicationsList: string;\r\n fleaTickMedications: string;\r\n hasSeriousHealthConcerns: boolean | undefined;\r\n hadPreviousReactions: boolean | undefined;\r\n needsAdditionalServices: boolean | undefined;\r\n additionalConcerns: string;\r\n infectiousDiseaseInitials: string;\r\n isCPRAllowed: boolean | undefined;\r\n\r\n constructor(params: IVisitConsentSurgeryRequest) {\r\n this.proceduresRequested = _.defaultTo(params.proceduresRequested, '');\r\n this.lastEatDate = _.defaultTo(params.lastEatDate, '');\r\n this.areVaccincationsCurrent = _.defaultTo(params.areVaccincationsCurrent, undefined);\r\n this.outOfDateVaccincations = _.defaultTo(params.outOfDateVaccincations, '');\r\n this.isPetIll = _.defaultTo(params.isPetIll, undefined);\r\n this.hasConcernsToday = _.defaultTo(params.hasConcernsToday, undefined);\r\n this.illnessOrConcernsNotes = _.defaultTo(params.illnessOrConcernsNotes, '');\r\n this.isPetMicrochipped = _.defaultTo(params.isPetMicrochipped, undefined);\r\n this.microchipRequested = _.defaultTo(params.microchipRequested, undefined);\r\n this.medicationsList = _.defaultTo(params.medicationsList, '');\r\n this.fleaTickMedications = _.defaultTo(params.fleaTickMedications, '');\r\n this.hasSeriousHealthConcerns = _.defaultTo(params.hasSeriousHealthConcerns, undefined);\r\n this.hadPreviousReactions = _.defaultTo(params.hadPreviousReactions, undefined);\r\n this.needsAdditionalServices = _.defaultTo(params.needsAdditionalServices, undefined);\r\n this.additionalConcerns = _.defaultTo(params.additionalConcerns, '');\r\n this.infectiousDiseaseInitials = _.defaultTo(params.infectiousDiseaseInitials, '');\r\n this.isCPRAllowed = _.defaultTo(params.isCPRAllowed, undefined);\r\n }\r\n}\r\n","\r\nexport interface IVisitConsentTreatmentRequest {\r\n isCPRAllowed: boolean;\r\n}\r\n\r\nexport class VisitConsentTreatmentRequest implements IVisitConsentTreatmentRequest {\r\n isCPRAllowed: boolean;\r\n\r\n constructor(params: IVisitConsentTreatmentRequest) {\r\n this.isCPRAllowed = _.defaultTo(params.isCPRAllowed, false);\r\n }\r\n}\r\n","import { IConsentForm } from \"@common/models/forms/ConsentForm\";\r\nimport { VisitConsentClientRequest } from \"./VisitConsentClientRequest\";\r\nimport { VisitConsentDentalExtractionRequest } from \"./VisitConsentDentalExtractionRequest\";\r\nimport { VisitConsentEuthanasiaRequest } from \"./VisitConsentEuthanasiaRequest\";\r\nimport { VisitConsentSurgeryRequest } from \"./VisitConsentSurgeryRequest\";\r\nimport { VisitConsentTreatmentRequest } from \"./VisitConsentTreatmentRequest\";\r\n\r\nexport interface ISignAndStoreConsentRequest {\r\n visitPublicId: string;\r\n consentTypePublicId: string;\r\n signatureBase64Encoded: string;\r\n visitConsentEuthanasiaRequest?: VisitConsentEuthanasiaRequest;\r\n visitConsentClientRequest?: VisitConsentClientRequest;\r\n visitConsentDentalExtractionRequest?: VisitConsentDentalExtractionRequest;\r\n visitConsentTreatmentRequest?: VisitConsentTreatmentRequest;\r\n visitConsentSurgeryRequest?: VisitConsentSurgeryRequest\r\n}\r\n\r\nexport class SignAndStoreConsentRequest implements ISignAndStoreConsentRequest {\r\n visitPublicId: string;\r\n consentTypePublicId: string;\r\n signatureBase64Encoded: string;\r\n visitConsentEuthanasiaRequest?: VisitConsentEuthanasiaRequest;\r\n visitConsentClientRequest?: VisitConsentClientRequest;\r\n visitConsentDentalExtractionRequest?: VisitConsentDentalExtractionRequest;\r\n visitConsentTreatmentRequest?: VisitConsentTreatmentRequest;\r\n visitConsentSurgeryRequest?: VisitConsentSurgeryRequest;\r\n\r\n constructor(params: ISignAndStoreConsentRequest) {\r\n this.visitPublicId = _.defaultTo(params.visitPublicId, '');\r\n this.consentTypePublicId = _.defaultTo(params.consentTypePublicId, '');\r\n this.signatureBase64Encoded = _.defaultTo(params.signatureBase64Encoded, '');\r\n this.visitConsentEuthanasiaRequest = params.visitConsentEuthanasiaRequest ? new VisitConsentEuthanasiaRequest(params.visitConsentEuthanasiaRequest) : undefined;\r\n this.visitConsentClientRequest = params.visitConsentClientRequest ? new VisitConsentClientRequest(params.visitConsentClientRequest) : undefined;\r\n this.visitConsentDentalExtractionRequest = params.visitConsentDentalExtractionRequest ? new VisitConsentDentalExtractionRequest(params.visitConsentDentalExtractionRequest) : undefined;\r\n this.visitConsentTreatmentRequest = params.visitConsentTreatmentRequest ? new VisitConsentTreatmentRequest(params.visitConsentTreatmentRequest) : undefined;\r\n this.visitConsentSurgeryRequest = params.visitConsentSurgeryRequest ? new VisitConsentSurgeryRequest(params.visitConsentSurgeryRequest) : undefined;\r\n }\r\n\r\n static ParseSignAndStoreConsentRequest(visitPublicId: string, consentTypePublicId: string, signatureBase64Encoded: string, formData?: IConsentForm): SignAndStoreConsentRequest {\r\n return {\r\n signatureBase64Encoded,\r\n visitPublicId,\r\n consentTypePublicId,\r\n visitConsentEuthanasiaRequest: formData?.euthanasiaConsentForm ? new VisitConsentEuthanasiaRequest(formData.euthanasiaConsentForm) : undefined,\r\n visitConsentClientRequest: formData?.clientConsentForm ? new VisitConsentClientRequest(formData.clientConsentForm) : undefined,\r\n visitConsentDentalExtractionRequest: formData?.dentalExtractionConsentForm ? new VisitConsentDentalExtractionRequest(formData.dentalExtractionConsentForm) : undefined,\r\n visitConsentTreatmentRequest: formData?.treatmentConsentForm ? new VisitConsentTreatmentRequest(formData.treatmentConsentForm) : undefined,\r\n visitConsentSurgeryRequest: formData?.surgeryConsentForm ? new VisitConsentSurgeryRequest(formData.surgeryConsentForm) : undefined\r\n }\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\n\r\nexport interface IAddSalesItemRequest {\r\n visitId: number;\r\n salesItemOptionId: number | undefined;\r\n isPending: boolean;\r\n salesItemOptionIdBeingReplaced: number | undefined;\r\n isPackageUpgrade: boolean;\r\n isFromDI: boolean;\r\n refillVisitId: number | undefined;\r\n blockTagAlongs: boolean;\r\n prescriptionVisitSalesItemId: number | undefined;\r\n reminderDays: number | undefined;\r\n}\r\n\r\nexport class AddSalesItemRequest implements IAddSalesItemRequest {\r\n visitId: number;\r\n salesItemOptionId: number | undefined;\r\n isPending: boolean;\r\n salesItemOptionIdBeingReplaced: number | undefined;\r\n isPackageUpgrade: boolean;\r\n isFromDI: boolean;\r\n refillVisitId: number | undefined;\r\n blockTagAlongs: boolean;\r\n prescriptionVisitSalesItemId: number | undefined;\r\n reminderDays: number | undefined;\r\n\r\n constructor(params: Partial) {\r\n this.visitId = defaultTo(params.visitId, 0);\r\n this.salesItemOptionId = params.salesItemOptionId;\r\n this.isPending = defaultTo(params.isPending, false);\r\n this.salesItemOptionIdBeingReplaced = params.salesItemOptionIdBeingReplaced;\r\n this.isPackageUpgrade = defaultTo(params.isPackageUpgrade, false);\r\n this.isFromDI = defaultTo(params.isFromDI, false);\r\n this.refillVisitId = params.refillVisitId;\r\n this.blockTagAlongs = defaultTo(params.blockTagAlongs, false);\r\n this.prescriptionVisitSalesItemId = params.prescriptionVisitSalesItemId;\r\n this.reminderDays = params.reminderDays;\r\n }\r\n}\r\n","import { IModel, Model } from \"./Model\";\r\n\r\nexport interface IPrognosisScoreModel extends IModel {\r\n prognosisScoreId: number;\r\n name: string;\r\n description: string;\r\n}\r\n\r\nexport class PrognosisScoreModel extends Model implements Record {\r\n prognosisScoreId: number\r\n name: string\r\n description: string\r\n constructor(params: Partial = {}) {\r\n super(params);\r\n this.prognosisScoreId = params.prognosisScoreId ?? 0;\r\n this.name = params.name ?? \"\";\r\n this.description = params.description ?? \"\";\r\n }\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { WellnessExamPrognosisScore } from \"./Enums\";\r\nimport { IModel, Model } from \"./Model\";\r\nimport { IPrognosisScoreModel, PrognosisScoreModel } from \"./PrognosisScoreModel\";\r\n\r\nexport interface IVisitWellnessExamModel extends IModel {\r\n visitWellnessExamId: number;\r\n vaccinationsRequested: boolean | undefined;\r\n diagnosticRequested: boolean | undefined;\r\n parasiticalRequested: boolean | undefined;\r\n microchipRequested: boolean | undefined;\r\n isHealthy: boolean | undefined;\r\n hasNormalAppetite: boolean | undefined;\r\n isBehavorActive: boolean | undefined;\r\n hasNoIllnessSigns: boolean | undefined;\r\n temperature: number | undefined;\r\n pulse: number | undefined;\r\n weight: number | undefined;\r\n respiration: number | undefined;\r\n approvedForVaccinations: boolean | undefined;\r\n notes: string;\r\n temperatureUTE: boolean | undefined;\r\n temperatureDNE: boolean | undefined;\r\n pulseUTE: boolean | undefined;\r\n pulseDNE: boolean | undefined;\r\n respirationUTE: boolean | undefined;\r\n respirationDNE: boolean | undefined;\r\n visitDate: string | undefined;\r\n attitude: string | undefined;\r\n painScale: number | undefined;\r\n mucousMembrane: string | undefined;\r\n capillaryRefill: string | undefined;\r\n bodyConditionScore: number | undefined;\r\n attitudeUTE: boolean | undefined;\r\n attitudeDNE: boolean | undefined;\r\n painScaleUTE: boolean | undefined;\r\n painScaleDNE: boolean | undefined;\r\n mucousMembraneUTE: boolean | undefined;\r\n mucousMembraneDNE: boolean | undefined;\r\n capillaryRefillUTE: boolean | undefined;\r\n capillaryRefillDNE: boolean | undefined;\r\n bodyConditionScoreUTE: boolean | undefined;\r\n bodyConditionScoreDNE: boolean | undefined;\r\n intakeNotes: string | undefined;\r\n subjectiveNotes: string | undefined;\r\n objectiveNotes: string | undefined;\r\n vitalsNotes: string | undefined;\r\n planNotes: string | undefined;\r\n diagnosisNotes: string | undefined;\r\n prognosisNotes: string | undefined;\r\n dischargeNotes: string | undefined;\r\n privateNotes: string | undefined;\r\n prognosisScore: IPrognosisScoreModel | undefined;\r\n prognosisScoreId: number | undefined;\r\n diagnosisIds: number[] | undefined;\r\n hasEarIssue: boolean | undefined;\r\n hasChronicIssue: boolean | undefined;\r\n hasSkinAllergies: boolean | undefined;\r\n hasVomittingDiarrhea: boolean | undefined;\r\n\r\n}\r\n\r\nexport class VisitWellnessExamModel extends Model implements Record {\r\n visitWellnessExamId: number;\r\n vaccinationsRequested: boolean | undefined;\r\n diagnosticRequested: boolean | undefined;\r\n parasiticalRequested: boolean | undefined;\r\n microchipRequested: boolean | undefined;\r\n isHealthy: boolean | undefined;\r\n hasNormalAppetite: boolean | undefined;\r\n isBehavorActive: boolean | undefined;\r\n hasNoIllnessSigns: boolean | undefined;\r\n temperature: number | undefined;\r\n pulse: number | undefined;\r\n weight: number | undefined;\r\n respiration: number | undefined;\r\n approvedForVaccinations: boolean | undefined | null;\r\n notes: string | undefined; // assessment notes\r\n temperatureUTE: boolean | undefined;\r\n temperatureDNE: boolean | undefined;\r\n pulseUTE: boolean | undefined;\r\n pulseDNE: boolean | undefined;\r\n respirationUTE: boolean | undefined;\r\n respirationDNE: boolean | undefined;\r\n visitDate: DateTime | undefined;\r\n attitude: string | undefined;\r\n painScale: number | undefined;\r\n mucousMembrane: string | undefined;\r\n capillaryRefill: string | undefined;\r\n bodyConditionScore: number | undefined;\r\n\r\n attitudeUTE: boolean | undefined;\r\n attitudeDNE: boolean | undefined;\r\n painScaleUTE: boolean | undefined;\r\n painScaleDNE: boolean | undefined;\r\n mucousMembraneUTE: boolean | undefined;\r\n mucousMembraneDNE: boolean | undefined;\r\n capillaryRefillUTE: boolean | undefined;\r\n capillaryRefillDNE: boolean | undefined;\r\n bodyConditionScoreUTE: boolean | undefined;\r\n bodyConditionScoreDNE: boolean | undefined;\r\n\r\n intakeNotes: string | undefined;\r\n subjectiveNotes: string | undefined;\r\n objectiveNotes: string | undefined;\r\n vitalsNotes: string | undefined;\r\n planNotes: string | undefined;\r\n diagnosisNotes: string | undefined;\r\n prognosisNotes: string | undefined;\r\n dischargeNotes: string | undefined;\r\n privateNotes: string | undefined;\r\n\r\n prognosisScore: PrognosisScoreModel | undefined;\r\n prognosisScoreId: WellnessExamPrognosisScore | undefined;\r\n\r\n diagnosisIds: number[] | undefined;\r\n hasEarIssue: boolean | undefined;\r\n hasChronicIssue: boolean | undefined;\r\n hasSkinAllergies: boolean | undefined;\r\n hasVomittingDiarrhea: boolean | undefined;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.visitWellnessExamId = params.visitWellnessExamId ?? 0;\r\n this.vaccinationsRequested = StringUtility.SanitizeBool(params.vaccinationsRequested);\r\n this.diagnosticRequested = StringUtility.SanitizeBool(params.diagnosticRequested);\r\n this.parasiticalRequested = StringUtility.SanitizeBool(params.parasiticalRequested);\r\n this.microchipRequested = StringUtility.SanitizeBool(params.microchipRequested);\r\n this.isHealthy = StringUtility.SanitizeBool(params.isHealthy);\r\n this.hasNormalAppetite = StringUtility.SanitizeBool(params.hasNormalAppetite);\r\n this.isBehavorActive = StringUtility.SanitizeBool(params.isBehavorActive);\r\n this.hasNoIllnessSigns = StringUtility.SanitizeBool(params.hasNoIllnessSigns);\r\n this.temperature = StringUtility.SanitizeNumber(params.temperature);\r\n this.pulse = StringUtility.SanitizeNumber(params.pulse);\r\n this.weight = StringUtility.SanitizeNumber(params.weight);\r\n this.respiration = StringUtility.SanitizeNumber(params.respiration);\r\n this.approvedForVaccinations = StringUtility.SanitizeBool(params.approvedForVaccinations);\r\n this.notes = params.notes ?? undefined;\r\n this.temperatureUTE = StringUtility.SanitizeBool(params.temperatureUTE);\r\n this.temperatureDNE = StringUtility.SanitizeBool(params.temperatureDNE);\r\n this.pulseUTE = StringUtility.SanitizeBool(params.pulseUTE);\r\n this.pulseDNE = StringUtility.SanitizeBool(params.pulseDNE);\r\n this.respirationUTE = StringUtility.SanitizeBool(params.respirationUTE);\r\n this.respirationDNE = StringUtility.SanitizeBool(params.respirationDNE);\r\n this.visitDate = StringUtility.SanitizeDateTimeISOAsUtc(params.visitDate);\r\n this.attitude = StringUtility.SanitizeString(params.attitude);\r\n this.painScale = StringUtility.SanitizeNumber(params.painScale);\r\n this.mucousMembrane = StringUtility.SanitizeString(params.mucousMembrane);\r\n this.capillaryRefill = StringUtility.SanitizeString(params.capillaryRefill);\r\n this.bodyConditionScore = StringUtility.SanitizeNumber(params.bodyConditionScore);\r\n this.attitudeUTE = StringUtility.SanitizeBool(params.attitudeUTE);\r\n this.attitudeDNE = StringUtility.SanitizeBool(params.attitudeDNE);\r\n this.painScaleUTE = StringUtility.SanitizeBool(params.painScaleUTE);\r\n this.painScaleDNE = StringUtility.SanitizeBool(params.painScaleDNE);\r\n this.mucousMembraneUTE = StringUtility.SanitizeBool(params.mucousMembraneUTE);\r\n this.mucousMembraneDNE = StringUtility.SanitizeBool(params.mucousMembraneDNE);\r\n this.capillaryRefillUTE = StringUtility.SanitizeBool(params.capillaryRefillUTE);\r\n this.capillaryRefillDNE = StringUtility.SanitizeBool(params.capillaryRefillDNE);\r\n this.bodyConditionScoreUTE = StringUtility.SanitizeBool(params.bodyConditionScoreUTE);\r\n this.bodyConditionScoreDNE = StringUtility.SanitizeBool(params.bodyConditionScoreDNE);\r\n this.intakeNotes = StringUtility.SanitizeString(params.intakeNotes)\r\n this.subjectiveNotes = StringUtility.SanitizeString(params.subjectiveNotes)\r\n this.objectiveNotes = StringUtility.SanitizeString(params.objectiveNotes)\r\n this.vitalsNotes = StringUtility.SanitizeString(params.vitalsNotes)\r\n this.planNotes = StringUtility.SanitizeString(params.planNotes)\r\n this.diagnosisNotes = StringUtility.SanitizeString(params.diagnosisNotes)\r\n this.prognosisNotes = StringUtility.SanitizeString(params.prognosisNotes)\r\n this.dischargeNotes = StringUtility.SanitizeString(params.dischargeNotes)\r\n this.privateNotes = StringUtility.SanitizeString(params.privateNotes)\r\n this.prognosisScore = params.prognosisScore === undefined ? undefined : new PrognosisScoreModel(params.prognosisScore);\r\n this.prognosisScoreId = StringUtility.SanitizeNumber(params.prognosisScoreId)\r\n this.diagnosisIds = params.diagnosisIds ?? undefined\r\n this.hasEarIssue = StringUtility.SanitizeBool(params.hasEarIssue);\r\n this.hasChronicIssue = StringUtility.SanitizeBool(params.hasChronicIssue);\r\n this.hasVomittingDiarrhea = StringUtility.SanitizeBool(params.hasVomittingDiarrhea);\r\n this.hasSkinAllergies = StringUtility.SanitizeBool(params.hasSkinAllergies);\r\n\r\n }\r\n}\r\n","import { IVisitStatusModel } from \"@common/models/VisitStatusModel\";\r\n\r\nexport interface IVisitChangeStatusRequest {\r\n visitId: number;\r\n currentVisitStatus: IVisitStatusModel;\r\n visitCompletionTypeId?: number;\r\n reason?: string;\r\n comments?: string;\r\n newVisitStatusEndpoint: VisitStatusUpdateEndpoint;\r\n}\r\n\r\n//Check_Out status not included because it\r\n//has its own backendpoint.\r\nexport enum VisitStatusUpdateEndpoint {\r\n Check_In = \"checkin\",\r\n Consultation = \"consultation\",\r\n VetServices = \"vetservices\"\r\n}\r\n","import { AuthApplicationIds } from \"@common/models/Enums\";\r\nimport { IModel, Model } from \"../Model\";\r\n\r\nexport interface IAuthApplicationModel extends IModel {\r\n authApplicationId: number,\r\n description: string,\r\n key: string,\r\n isFilterable: boolean,\r\n isViewable: boolean\r\n}\r\n\r\nexport class AuthApplicationModel extends Model implements IAuthApplicationModel {\r\n authApplicationId: number;\r\n description: string;\r\n key: string;\r\n isFilterable: boolean;\r\n isViewable: boolean;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n const {\r\n authApplicationId = 0,\r\n description = '',\r\n key = '',\r\n isFilterable = false,\r\n isViewable = false\r\n } = params;\r\n\r\n this.authApplicationId = authApplicationId;\r\n this.description = authApplicationId > Object.keys(AuthApplicationIds).length \r\n ? description \r\n : AuthApplicationIds[authApplicationId];\r\n this.key = key;\r\n this.isFilterable = isFilterable;\r\n this.isViewable = isViewable;\r\n }\r\n}\r\n","import { IModel, Model } from \"../Model\";\r\n\r\nexport const AuthOperationNames: Object = {\r\n Home_Index: \"Home_Index\"\r\n}\r\n\r\nexport interface IAuthOperationModel extends IModel {\r\n authOperationId: number\r\n description: string | undefined\r\n}\r\n\r\nexport class AuthOperationModel extends Model implements IAuthOperationModel {\r\n authOperationId: number;\r\n description: string | undefined;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n const {\r\n authOperationId = 0,\r\n description = undefined,\r\n } = params;\r\n\r\n this.authOperationId = authOperationId\r\n this.description = description;\r\n\r\n }\r\n\r\n}\r\n","import { IModel, Model } from \"../Model\";\r\nimport { AuthOperationModel, IAuthOperationModel } from \"./AuthOperationModel\";\r\n\r\nexport interface IAuthRoleModel extends IModel {\r\n authRoleId: number\r\n description: string\r\n systemId: string | null\r\n authApplicationId: number\r\n operations: IAuthOperationModel[] | null\r\n roleAuthOperationName: string;\r\n}\r\n\r\nexport class AuthRoleModel extends Model implements IAuthRoleModel {\r\n authRoleId: number;\r\n description: string;\r\n systemId: string | null;\r\n authApplicationId: number;\r\n operations: IAuthOperationModel[] | null;\r\n roleAuthOperationName: string;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n const {\r\n authRoleId = 0,\r\n description = '',\r\n systemId = null,\r\n authApplicationId = 0,\r\n operations = null,\r\n roleAuthOperationName = 'missing'\r\n } = params;\r\n\r\n this.authRoleId = authRoleId;\r\n this.description = description;\r\n this.systemId = systemId;\r\n this.authApplicationId = authApplicationId;\r\n this.roleAuthOperationName = roleAuthOperationName;\r\n\r\n\r\n this.operations = new Array();\r\n if (operations && operations.length) {\r\n operations.forEach(value => {\r\n this.operations!.push(new AuthOperationModel(value));\r\n });\r\n }\r\n }\r\n\r\n}\r\n","export interface IUserModel {\r\n userId: number\r\n authUserId: number\r\n firstName: string | undefined\r\n lastName: string | undefined\r\n emailAddress: string | undefined\r\n objectIdentifier: string | undefined\r\n allowSecurityAdmin: boolean\r\n}\r\n\r\nexport class UserModel implements IUserModel {\r\n userId: number;\r\n authUserId: number;\r\n firstName: string | undefined;\r\n lastName: string | undefined;\r\n emailAddress: string | undefined;\r\n objectIdentifier: string | undefined;\r\n allowSecurityAdmin: boolean;\r\n\r\n constructor(params: Partial) {\r\n const {\r\n userId = 0,\r\n authUserId = 0,\r\n firstName = undefined,\r\n lastName = undefined,\r\n emailAddress = undefined,\r\n objectIdentifier = undefined,\r\n allowSecurityAdmin = false\r\n } = params;\r\n\r\n this.userId = userId;\r\n this.authUserId = authUserId;\r\n this.firstName = firstName;\r\n this.lastName = lastName;\r\n this.emailAddress = emailAddress;\r\n this.objectIdentifier = objectIdentifier;\r\n this.allowSecurityAdmin = allowSecurityAdmin;\r\n }\r\n\r\n}\r\n","import { IModel, Model } from '../Model';\r\nimport { AuthRoleModel, IAuthRoleModel } from './AuthRoleModel';\r\nimport { IUserModel, UserModel as SecurityUserModel } from './UserModel';\r\n\r\nexport interface IAuthUserModel extends IModel {\r\n authUserId: number\r\n authUserName: string | undefined\r\n roles: IAuthRoleModel[]\r\n user: IUserModel\r\n}\r\n\r\nexport class AuthUserModel extends Model implements IAuthUserModel {\r\n authUserId: number;\r\n authUserName: string | undefined;\r\n roles: IAuthRoleModel[];\r\n user: IUserModel;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n const {\r\n authUserId = 0,\r\n authUserName = undefined,\r\n roles = [],\r\n user = {}\r\n } = params;\r\n\r\n this.authUserId = authUserId;\r\n this.authUserName = authUserName;\r\n\r\n this.roles = new Array();\r\n if (roles && roles.length && roles.length > 0) {\r\n roles.forEach(value => {\r\n this.roles.push(new AuthRoleModel(value));\r\n });\r\n }\r\n this.user = new SecurityUserModel(user);\r\n }\r\n\r\n}\r\n","export interface IScheduleEntityTypeModel {\r\n scheduleEntityTypeId: number;\r\n scheduleEntityTypeName: string;\r\n sortOrder?: number;\r\n legacyEntityTypeId: number;\r\n businessLineId: number;\r\n isGloballyScheduled: boolean;\r\n}\r\n/**\r\n * This model shows the relation between a ScheduleEntityTypeId and a ScheduleBlockTypeId\r\n * it's used to determine which ScheduleBlockTypes are allowed for a ScheduleEntityType\r\n */\r\nexport class ScheduleEntityTypeModel implements IScheduleEntityTypeModel {\r\n scheduleEntityTypeId: number;\r\n scheduleEntityTypeName: string;\r\n sortOrder?: number;\r\n legacyEntityTypeId: number;\r\n businessLineId: number;\r\n isGloballyScheduled: boolean;\r\n\r\n constructor(model: IScheduleEntityTypeModel) {\r\n this.scheduleEntityTypeId = model.scheduleEntityTypeId;\r\n this.scheduleEntityTypeName = model.scheduleEntityTypeName;\r\n this.sortOrder = model.sortOrder;\r\n this.legacyEntityTypeId = model.legacyEntityTypeId;\r\n this.businessLineId = model.businessLineId;\r\n this.isGloballyScheduled = model.isGloballyScheduled;\r\n }\r\n}\r\n","import { WeekDay } from \"@common/models/Enums\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\n/**\r\n * The backend for Hospital Schedule now returns a common base between all kinds of schedule preferneces, EntitySchedulePreference, OverrideSchedulePreference, DefaultEntitySchedulePreference, and ComputedSchedulePreference\r\n * They all have these fields.\r\n */\r\nexport class BaseEntitySchedulePreference {\r\n schedulePreferenceId: number;\r\n startTime: string;\r\n endTime: string;\r\n dayOfWeek: WeekDay.Day;\r\n scheduleBlockTypeId: number;\r\n scheduleBlockTypeColor: string;\r\n scheduleBlockTypeName: string;\r\n scheduleBlockIsOverrideType: boolean;\r\n\r\n constructor(init?: Partial) {\r\n this.schedulePreferenceId = defaultTo(init?.schedulePreferenceId, 0);\r\n this.startTime = defaultTo(init?.startTime, '08:00:00');\r\n this.endTime = defaultTo(init?.endTime, '21:00:00');\r\n this.dayOfWeek = defaultTo(init?.dayOfWeek, WeekDay.Day.Monday);\r\n this.scheduleBlockTypeId = defaultTo(init?.scheduleBlockTypeId, 0);\r\n this.scheduleBlockTypeColor = defaultTo(init?.scheduleBlockTypeColor, '#8cdef1');\r\n this.scheduleBlockTypeName = defaultTo(init?.scheduleBlockTypeName, 'Unknown');\r\n this.scheduleBlockIsOverrideType = defaultTo(init?.scheduleBlockIsOverrideType, false);\r\n }\r\n}\r\n","import { EntityScheduleType } from \"@common/models/Enums\";\r\nimport { BaseEntitySchedulePreference } from \"@common/models/Schedule/BaseEntitySchedulePreference\";\r\nimport { defaultTo } from 'lodash';\r\n/**\r\n * This class represents the base of Schedule Preferences for both vets and templates for the preferences that are on ProcessHospitalScheduleModel which represent\r\n * the unmodified (unprocessed) schedule preferences. They will be on the base of the ProcessedHospitalScheduleModel and can be used to know what a preference or override was before it got modifed into a ComputedSchedulePreference\r\n * \r\n * recall: there are for schedule preference tables, two for normal preferences, and two for overrides. So this is for normal preferences and the override version of this is for override preferences.\r\n */\r\nexport class EntitySchedulePreference extends BaseEntitySchedulePreference {\r\n entityPreferenceId: number;\r\n entityId: number;\r\n hospitalId: number;\r\n entityType: EntityScheduleType;\r\n uniqueId: string;\r\n rowVersion: string;\r\n\r\n constructor(init: EntitySchedulePreference) {\r\n super(init);\r\n\r\n this.entityPreferenceId = init.entityPreferenceId;\r\n this.entityId = init.entityId;\r\n this.hospitalId = init.hospitalId;\r\n this.entityType = init.entityType;\r\n this.uniqueId = `${this.entityPreferenceId}_${this.entityType}`;\r\n this.rowVersion = defaultTo(init?.rowVersion, '');\r\n }\r\n\r\n\r\n /**\r\n * Instantiate a new default EntitySchedulePreference and optional spread in fields with specific values\r\n * @param init\r\n * @returns \r\n */\r\n static createNewEntitySchedulePreference(init?: Partial): EntitySchedulePreference {\r\n\r\n const fields: EntitySchedulePreference = {\r\n entityPreferenceId: 0,\r\n entityId: 0,\r\n hospitalId: 0,\r\n entityType: EntityScheduleType.Veterinarian,\r\n uniqueId: \"0_0\",\r\n schedulePreferenceId: 0,\r\n startTime: \"00:00:00\",\r\n endTime: \"00:00:00\",\r\n dayOfWeek: 0,\r\n scheduleBlockTypeId: 0,\r\n scheduleBlockTypeName: '',\r\n scheduleBlockTypeColor: '',\r\n scheduleBlockIsOverrideType: false,\r\n rowVersion: ''\r\n };\r\n\r\n const combinedInit: EntitySchedulePreference = {\r\n ...fields,\r\n ...init\r\n }\r\n\r\n return new EntitySchedulePreference(combinedInit);\r\n }\r\n}\r\n","import { EntitySchedulePreference } from \"./EntitySchedulePreference\";\r\n\r\n/**\r\n * A DefaultEntitySchedulePreference represents a schedule preference that was inherited from a hospitals default schedule template\r\n * As such it's entity ID will be for that entity (vet for example, so 0), and the entity preferenceId will be from the preference on the default template\r\n * Since this preference isn't actually from the entity presented by the entityId there are two extra fields here so you know it came from a template, templateId is that template.\r\n * If these fields are present on an entityscheduleprefernece, it was inherited from a default template.\r\n */\r\nexport class DefaultEntitySchedulePreference extends EntitySchedulePreference {\r\n templateId: number;\r\n inheritedFromTemplate: boolean;\r\n\r\n constructor(init: DefaultEntitySchedulePreference) {\r\n super(init);\r\n\r\n this.templateId = init.templateId;\r\n this.inheritedFromTemplate = init.inheritedFromTemplate;\r\n }\r\n}\r\n","import { DateTimeUtils } from \"@common/utils\";\r\nimport { EventInput } from \"@fullcalendar/react\";\r\nimport { DateTime } from \"luxon\";\r\nimport { EntityScheduleOverridePreferenceRequest } from \"@common/models/requests/EntityScheduleOverridePreferenceRequest\";\r\nimport { EntitySchedulePreference } from \"@common/models/Schedule/EntitySchedulePreference\";\r\n\r\nexport interface IEntityOverrideSchedulePreference extends EntitySchedulePreference {\r\n overrideDate: DateTime;\r\n notes: string | undefined;\r\n createdBy: string | undefined;\r\n updatedBy: string | undefined;\r\n dateCreated: string | undefined;\r\n dateUpdated: string | undefined;\r\n}\r\n\r\n/**\r\n * This class represents the base of Schedule Override Preferences for both vets and templates for the preferences that are on ProcessHospitalScheduleModel which represent\r\n * the unmodified (unprocessed) schedule preferences. They will be on the base of the ProcessedHospitalScheduleModel and can be used to know what a preference or override was before it got modifed into a ComputedSchedulePreference\r\n */\r\nexport class EntityOverrideSchedulePreference extends EntitySchedulePreference {\r\n overrideDate: DateTime;\r\n notes: string | undefined;\r\n createdBy: string | undefined;\r\n updatedBy: string | undefined;\r\n dateCreated: string | undefined;\r\n dateUpdated: string | undefined;\r\n\r\n constructor(init: IEntityOverrideSchedulePreference) {\r\n super(init);\r\n\r\n this.overrideDate = DateTimeUtils.getAsDateTimeUTC(init.overrideDate)!;\r\n this.notes = init.notes;\r\n this.createdBy = init.createdBy;\r\n this.updatedBy = init.updatedBy;\r\n this.dateCreated = init.dateCreated;\r\n this.dateUpdated = init.dateUpdated;\r\n }\r\n\r\n /**\r\n * Takes the EntityOverrideSchedulePreference and returns a new calendar event\r\n */\r\n toCalendarEventInput(): EventInput {\r\n return {\r\n id: `${this.entityPreferenceId}_${this.entityType}`,\r\n extendedProps: {\r\n eventType: 'override',\r\n eventColor: this.scheduleBlockTypeColor,\r\n originalEntityId: this.entityId,\r\n originalEntityPreferenceId: this.entityPreferenceId,\r\n override: new EntityScheduleOverridePreferenceRequest({\r\n storeId: this.hospitalId,\r\n schedulePreferenceOverrideId: this.entityPreferenceId,\r\n entityId: this.entityId,\r\n entityType: this.entityType,\r\n schedulePreferenceId: this.schedulePreferenceId,\r\n scheduleBlockTypeId: this.scheduleBlockTypeId,\r\n startTime: this.startTime,\r\n endTime: this.endTime,\r\n dayOfWeek: this.dayOfWeek,\r\n overrideDate: this.overrideDate.toISO(),\r\n notes: this.notes,\r\n createdBy: this.createdBy,\r\n updatedBy: this.updatedBy,\r\n dateCreated: this.dateCreated,\r\n dateUpdated: this.dateUpdated,\r\n }),\r\n },\r\n resourceId: this.entityId + \"_\" + this.entityType,\r\n title: this.scheduleBlockTypeName,\r\n allDay: false,\r\n textColor: \"#FFF\",\r\n editable: true,\r\n startEditable: true,\r\n resourceEditable: true,\r\n backgroundColor: `${this.scheduleBlockTypeColor}`,\r\n className: \"appointmentEvent\",\r\n borderColor: \"#FFF\",\r\n start: `${this.overrideDate.toFormat('yyyy-LL-dd')}T${this.startTime}`,\r\n end: `${this.overrideDate.toFormat('yyyy-LL-dd')}T${this.endTime}`\r\n };\r\n }\r\n}\r\n","import { EntityScheduleType } from \"@common/models/Enums\";\r\nimport { BaseEntitySchedulePreference } from \"./BaseEntitySchedulePreference\";\r\nimport { DateTime } from \"luxon\";\r\nimport { DateTimeUtils } from \"@common/utils/datetimeUtils\";\r\n\r\n/**\r\n * Represents a Schedule Preference that have may have been modified via processing logic in the HospitalScheduleModelFactory\r\n * ComputedSchedulePreferences are now how background events on the calendar are generated. The computed preferences are the\r\n * result of the final preferences for an entity (vet or template) after having applied overrides, default preferences, etc.\r\n */\r\nexport class ComputedSchedulePreference extends BaseEntitySchedulePreference {\r\n hospitalId: number;\r\n uniqueId: string;\r\n entityPreferenceId: number;\r\n entityType: EntityScheduleType;\r\n entityId: number;\r\n isOverride: boolean;\r\n overrideNotes?: string | null;\r\n overrideDate?: DateTime | null;\r\n inheritedFromTemplate: boolean;\r\n inheritedTemplateId: number | undefined;\r\n\r\n\r\n\r\n constructor(init?: Partial) {\r\n super(init);\r\n this.hospitalId = _.defaultTo(init?.hospitalId, 0);\r\n this.uniqueId = _.defaultTo(init?.uniqueId, '');\r\n this.entityPreferenceId = _.defaultTo(init?.entityPreferenceId, 0);\r\n this.entityType = _.defaultTo(init?.entityType, EntityScheduleType.Veterinarian);\r\n this.entityId = _.defaultTo(init?.entityId, 0);\r\n this.isOverride = _.defaultTo(init?.isOverride, false);\r\n this.overrideNotes = _.defaultTo(init?.overrideNotes, null);\r\n this.overrideDate = DateTimeUtils.getAsDateTimeUTC(init?.overrideDate);\r\n this.inheritedFromTemplate = _.defaultTo(init?.inheritedFromTemplate, false);\r\n this.inheritedTemplateId = _.defaultTo(init?.inheritedTemplateId, undefined);\r\n }\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { IModel, ModelRecord } from \"@common/models\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface IHospitalScheduleTemplateListingModel extends IModel {\r\n hospitalScheduleTemplateId: number,\r\n hospitalId: number,\r\n name: string,\r\n isDefault: boolean,\r\n isActive: boolean;\r\n color: string | undefined,\r\n hasSchedulePreferences: boolean,\r\n schedulePreferenceCount: number\r\n}\r\n\r\nexport class HospitalScheduleTemplateListingModel implements ModelRecord {\r\n rowVersion: string\r\n hospitalScheduleTemplateId: number;\r\n hospitalId: number;\r\n name: string;\r\n isDefault: boolean;\r\n isActive: boolean;\r\n color: string | undefined;\r\n hasSchedulePreferences: boolean;\r\n schedulePreferenceCount: number;\r\n\r\n\r\n constructor(init: IHospitalScheduleTemplateListingModel) {\r\n this.rowVersion = defaultTo(init.rowVersion, '');\r\n this.hospitalScheduleTemplateId = defaultTo(init.hospitalScheduleTemplateId, 0);\r\n this.hospitalId = defaultTo(init.hospitalId, 0);\r\n this.name = init.name;\r\n this.color = StringUtility.SanitizeString(init.color ?? '#2596be');\r\n this.isActive = defaultTo(init.isActive, false);\r\n this.isDefault = defaultTo(init.isDefault, false);\r\n this.hasSchedulePreferences = defaultTo(init.hasSchedulePreferences, false);\r\n this.schedulePreferenceCount = defaultTo(init.schedulePreferenceCount, 0);\r\n }\r\n}\r\n","import { HospitalScheduleTemplateListingModel } from \"../HospitalScheduleTemplateListingModel\";\r\n\r\n/**\r\n * An extension on the original HospitalScheduleTemplateListingModel that is used just for GetHospitalSchedule requests and includes whether the template\r\n * is on a schedule or not. False means it's not on any requested hospital schedule in the request, true means it's scheduled.\r\n * Because templates are unique to hospitals this means if it's true it means it's scheduled at that hospital. This prevents needing to do deep lookups in scheduledEntities to look for it\r\n * since the templates are returned on the root of the ProcessHospitalScheduleModel\r\n */\r\nexport class ScheduleHospitalScheduleTemplateListingModel extends HospitalScheduleTemplateListingModel {\r\n isScheduled: boolean;\r\n\r\n constructor(init: ScheduleHospitalScheduleTemplateListingModel) {\r\n super(init);\r\n this.isScheduled = init.isScheduled ? true : false;\r\n }\r\n}\r\n","import { DateTimeUtils } from \"@common/utils\";\r\nimport { defaultTo, first } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { EntityScheduleType, WeekDay } from \"../Enums\";\r\nimport { Model } from \"../Model\";\r\nimport { ComputedSchedulePreference, ProcessedHospitalScheduleModel } from \".\";\r\nimport { HospitalScheduleRequestModel } from \"../requests\";\r\nimport { schedule } from \"..\";\r\nimport { petcoPewterBlue } from \"@common/_assets/color-constants.js\";\r\n\r\n\r\n\r\n/**\r\n * A generic combined class for a schedule vet or template on a given day at a hospital. entityId will be either vet id or template id, and entityType determines whether it's a vet or a template.\r\n * The unique id is a calculated field that you should use if you need an ID from this type, because vet's and templates could have conflicting id's, the uniqueId is the entityId_entityTypeId, \r\n * i.e. 3146_0 which would be for a vet, because 0 is the type id for a vet. Use this id for calendar events etc to prevent having events with duplicate ids. Also use it for resource columns\r\n * to prevent resources from conflicting and causing events to render wrong or disappear.\r\n */\r\nexport class HospitalScheduleDayEntityModel extends Model {\r\n hospitalScheduleId: number;\r\n hospitalId: number;\r\n day: DateTime;\r\n entityType: EntityScheduleType;\r\n entityId: number;\r\n isGloballyScheduled: boolean;\r\n sortOrder: number;\r\n isAdhoc: boolean;\r\n entityName: string | undefined;\r\n schedulingColor: string | undefined;\r\n computedSchedulePreferences: ComputedSchedulePreference[];\r\n hasSchedulePreferences: boolean;\r\n hasInheritedSchedulePreferences: boolean;\r\n defaultScheduleTemplateId: number | undefined;\r\n entityTitle: string;\r\n isActive: boolean\r\n\r\n constructor(init?: Partial) {\r\n super(init);\r\n this.hospitalScheduleId = defaultTo(init?.hospitalScheduleId, 0);\r\n this.hospitalId = defaultTo(init?.hospitalId, 0);\r\n this.day = DateTimeUtils.getAsDateTimeUTC(init?.day ? init?.day : DateTime.utc())!;\r\n this.entityType = defaultTo(init?.entityType, EntityScheduleType.Veterinarian);\r\n this.entityId = defaultTo(init?.entityId, 0);\r\n this.isGloballyScheduled = defaultTo(init?.isGloballyScheduled, false);\r\n this.sortOrder = defaultTo(init?.sortOrder, 0);\r\n this.isAdhoc = defaultTo(init?.isAdhoc, false);\r\n this.entityName = defaultTo(init?.entityName, undefined);\r\n this.schedulingColor = defaultTo(init?.schedulingColor, petcoPewterBlue);\r\n this.computedSchedulePreferences = init?.computedSchedulePreferences?.map(cp => new ComputedSchedulePreference(cp)) ?? [] as ComputedSchedulePreference[];\r\n this.hasSchedulePreferences = defaultTo(init?.hasSchedulePreferences, false);\r\n this.hasInheritedSchedulePreferences = defaultTo(init?.hasInheritedSchedulePreferences, false);\r\n this.defaultScheduleTemplateId = defaultTo(init?.defaultScheduleTemplateId, undefined);\r\n this.entityTitle = defaultTo(init?.entityTitle, '');\r\n this.isActive = defaultTo(init?.isActive, false)\r\n }\r\n\r\n get uniqueId() {\r\n return `${this.entityId.toString()}_${this.entityType.toString()}`;\r\n }\r\n\r\n getStringWhenEntityType(strings?: { vet?: string | undefined, template?: string | undefined }): string | undefined {\r\n switch (this.entityType) {\r\n case EntityScheduleType.Veterinarian:\r\n return strings?.vet ?? undefined;\r\n case EntityScheduleType.Template:\r\n return strings?.template ?? undefined;\r\n case EntityScheduleType.Technician:\r\n return 'Technician';\r\n case EntityScheduleType.Unassigned:\r\n return 'Unassigned';\r\n default:\r\n break;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Converts the HospitalScheduleEntityModel to a HospitalScheduleRequestModel and returns it. This handles, based on EntityType, whether vet or template id should be set on the request model.\r\n * @returns \r\n */\r\n toRequestModel() {\r\n return new HospitalScheduleRequestModel({\r\n hospitalScheduleId: this.hospitalScheduleId,\r\n veterinarianId: this.entityType === EntityScheduleType.Veterinarian ? this.entityId : undefined,\r\n hospitalScheduleTemplateId: this.entityType === EntityScheduleType.Template ? this.entityId : undefined,\r\n hospitalId: this.hospitalId,\r\n date: this.day.toISO(),\r\n rowVersion: this.rowVersion\r\n });\r\n }\r\n\r\n /**\r\n * Create a new HospitalScheduleEntityModel from a vet or a template and set the appropriate entity type, id, and schedulingColor fields for the entity. Also determines the hasSchedulePreferences and hasInheritedSchedulePreferences \r\n * values based on the ProcessedHospitalSchedule supplied\r\n * @param entity \r\n * @param overrides \r\n * @returns \r\n */\r\n static createNewScheduleEntityFromEntity(hospitalId: number, processedSchedule: ProcessedHospitalScheduleModel, entity: T, overrides?: Partial, checkDate?: DateTime | undefined) {\r\n const base = new HospitalScheduleDayEntityModel({\r\n hospitalScheduleId: 0,\r\n rowVersion: '',\r\n isAdhoc: false,\r\n });\r\n\r\n var defaultTemplate = first(processedSchedule.getTemplates(hospitalId, { isDefault: true }));\r\n\r\n //entity is vet\r\n if ('veterinarianId' in entity) {\r\n const vet = entity as schedule.HospitalScheduleVeterinarianModel;\r\n base.entityType = EntityScheduleType.Veterinarian;\r\n base.entityId = vet.veterinarianId;\r\n base.entityName = vet.fullName;\r\n base.entityTitle = vet.titleFullName;\r\n base.schedulingColor = vet.schedulingColor;\r\n base.defaultScheduleTemplateId = defaultTemplate?.hospitalScheduleTemplateId;\r\n base.isActive = vet.isActive();\r\n }\r\n\r\n //entity is template\r\n if ('hospitalScheduleTemplateId' in entity) {\r\n const template = entity as schedule.ScheduleHospitalScheduleTemplateListingModel;\r\n base.entityType = EntityScheduleType.Template;\r\n base.entityId = template.hospitalScheduleTemplateId;\r\n base.entityName = template.name;\r\n base.entityTitle = template.name;\r\n base.schedulingColor = template.color;\r\n base.isActive = template.isActive;\r\n }\r\n\r\n const ret = new HospitalScheduleDayEntityModel({\r\n ...base,\r\n ...overrides\r\n });\r\n\r\n HospitalScheduleDayEntityModel.updateEntityPreferenceFields(processedSchedule, ret, checkDate);\r\n return ret;\r\n }\r\n\r\n static updateEntityPreferenceFields(processedSchedule: ProcessedHospitalScheduleModel, entity: HospitalScheduleDayEntityModel, checkDate: DateTime | undefined) {\r\n const day = checkDate !== undefined ? WeekDay.fromDateTime(checkDate) : WeekDay.fromDateTime(entity.day);\r\n const preferenceCount = processedSchedule.entitySchedulePreferences.filter(p => p.entityType === entity.entityType && p.entityId === entity.entityId && (checkDate === undefined || day === p.dayOfWeek)).length;\r\n let inheritedCount = 0;\r\n\r\n if (preferenceCount <= 0) {\r\n const defaultTemplate = first(processedSchedule.getTemplates(entity.hospitalId, { day: entity.day, isDefault: true }));\r\n if (defaultTemplate) {\r\n inheritedCount = processedSchedule.entitySchedulePreferences.filter(p => p.entityType === EntityScheduleType.Template && p.entityId === defaultTemplate.hospitalScheduleTemplateId && (checkDate === undefined || day === p.dayOfWeek)).length;\r\n }\r\n }\r\n\r\n entity.hasSchedulePreferences = preferenceCount > 0;\r\n entity.hasInheritedSchedulePreferences = inheritedCount > 0;\r\n }\r\n}\r\n","import { DateTimeUtils } from \"@common/utils\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { HospitalScheduleDayEntityModel } from \"./HospitalScheduleDayEntityModel\";\r\n\r\n/**\r\n * This is a wrapper for a single schedule day. Instead of a record for each vet/template for each day, the new schedule end point returns 1 schedule for each day in the requested range, and the scheduled entities for that day\r\n * and each of those scheduled entities could be a template or a vet and can have computed schedule preferences.\r\n * This will be for a hospitalId requested to the new schedule end point and the open/close time of that hospital for the day on this model is included.\r\n */\r\nexport class HospitalScheduleDayModel {\r\n hospitalId: number;\r\n day: DateTime;\r\n openTime: string;\r\n closeTime: string;\r\n isOpen: boolean;\r\n scheduledEntities: HospitalScheduleDayEntityModel[]\r\n\r\n constructor(init?: Partial) {\r\n this.hospitalId = defaultTo(init?.hospitalId, 0);\r\n this.day = DateTimeUtils.getAsDateTimeUTC(init?.day ?? DateTime.utc())!;\r\n this.openTime = defaultTo(init?.openTime, '08:00:00');\r\n this.closeTime = defaultTo(init?.closeTime, '21:00:00');\r\n this.isOpen = defaultTo(init?.isOpen, false);\r\n this.scheduledEntities = init?.scheduledEntities?.map(e => new HospitalScheduleDayEntityModel(e)) ?? [] as HospitalScheduleDayEntityModel[];\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { HospitalScheduleDayModel } from \"./HospitalScheduleDayModel\";\r\n\r\n/**\r\n * This model exists to wrap a hospital schedule for a hospital id and unflatten the schedule days into a schedule array of HospitalScheduleDayModel's\r\n */\r\nexport class HospitalScheduleWrapperModel {\r\n hospitalId: number;\r\n schedule: HospitalScheduleDayModel[]\r\n\r\n constructor(init?: Partial) {\r\n this.hospitalId = defaultTo(init?.hospitalId, 0);\r\n this.schedule = init?.schedule?.map(s => new HospitalScheduleDayModel(s)) ?? [] as HospitalScheduleDayModel[];\r\n }\r\n}\r\n","import { DateTimeUtils } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { VeterinarianListingModel } from '../';\r\nimport {\r\n DefaultEntitySchedulePreference, HospitalScheduleDayModel, HospitalScheduleDayEntityModel, HospitalScheduleVeterinarianModel, HospitalScheduleVetTechModel, ScheduleHospitalScheduleTemplateListingModel,\r\n EntityOverrideSchedulePreference, EntitySchedulePreference, ScheduleEntityTypeModel\r\n} from './';\r\nimport { HospitalScheduleWrapperModel } from \"./HospitalScheduleWrapperModel\";\r\nimport { EntityScheduleType, WeekDay } from \"../Enums\";\r\nimport { first, flatMap, some } from \"lodash\";\r\n\r\n/**\r\n * The outermost model for GetHospitalSchedule, which contains (or will contain) the entire payload for a schedule request\r\n */\r\nexport class ProcessedHospitalScheduleModel {\r\n /**\r\n * The start date for the requested schedule range\r\n */\r\n startDate: DateTime;\r\n /**\r\n * The end date for the requested schedule range\r\n */\r\n endDate: DateTime;\r\n /**\r\n * The Veterinarian Listing Model's for any vets on the schedule for the requested date range, or that have access to any hospitals the schedule was requested for. \r\n * If a vet isn't scheduled and doesn't have access to one of the requested hospitals, they won't be in this list.\r\n */\r\n veterinarians: HospitalScheduleVeterinarianModel[];\r\n /**\r\n * The Veterinarian Listing Model's for any vets on the schedule for the requested date range, or that have access to any hospitals the schedule was requested for. \r\n * If a vet isn't scheduled and doesn't have access to one of the requested hospitals, they won't be in this list.\r\n */\r\n vetTechs: HospitalScheduleVetTechModel[];\r\n /**\r\n * The templates scheduled at any hospitals the schedule was requested for. \r\n * Also, default templates for hospitals the schedule was requested for are included here whether they were scheduled or not. \r\n * This is so we have the default schedule preferences to give to vets that don't have any. \r\n */\r\n templates: ScheduleHospitalScheduleTemplateListingModel[];\r\n\r\n\r\n /**\r\n * A schedule wrapper for each hospital the schedule was requested for. If only 1 hospital was requested there will only be 1 entry in this array.\r\n */\r\n hospitalSchedules: HospitalScheduleWrapperModel[];\r\n /**\r\n * The combined, unprocessed (non computed) vet and schedule template schedule preferences, use entityType to tell the difference.\r\n * These are needed for show overrides, and future initiatives to remove schedule v1 and redundant preference calls in the app \r\n */\r\n entitySchedulePreferences: EntitySchedulePreference[];\r\n /**\r\n * The combined, unprocessed (non computed) vet and schedule template override schedule preferences.\r\n */\r\n entityOverrideSchedulePreferences: EntityOverrideSchedulePreference[];\r\n\r\n constructor(init?: Partial) {\r\n this.startDate = DateTimeUtils.getAsDateTimeUTC(init?.startDate ?? DateTime.utc())!;\r\n this.endDate = DateTimeUtils.getAsDateTimeUTC(init?.endDate ?? DateTime.utc())!;\r\n this.veterinarians = init?.veterinarians?.map(sv => new HospitalScheduleVeterinarianModel(sv)) ?? [] as HospitalScheduleVeterinarianModel[];\r\n this.vetTechs = init?.vetTechs?.map(sv => new HospitalScheduleVetTechModel(sv)) ?? [] as HospitalScheduleVetTechModel[];\r\n\r\n this.templates = init?.templates?.map(t => new ScheduleHospitalScheduleTemplateListingModel(t)) ?? [] as ScheduleHospitalScheduleTemplateListingModel[];\r\n this.hospitalSchedules = init?.hospitalSchedules?.map(t => new HospitalScheduleWrapperModel(t)) ?? [new HospitalScheduleWrapperModel({ hospitalId: 0, schedule: [new HospitalScheduleDayModel()] })] as HospitalScheduleWrapperModel[];\r\n\r\n //unprocessed preferences (does not include preferences for adhoc vets/templates unless @includeAdHocPreferences is 1 to the stored procedure, not currently implemented as it's not needed as of now)\r\n this.entitySchedulePreferences = init?.entitySchedulePreferences?.map(t => new EntitySchedulePreference(t)) ?? [] as EntitySchedulePreference[];\r\n this.entityOverrideSchedulePreferences = init?.entityOverrideSchedulePreferences?.map(t => new EntityOverrideSchedulePreference(t)) ?? [] as EntityOverrideSchedulePreference[];\r\n }\r\n\r\n /**\r\n * Will grab the vet listing model or scheduleHospitalScheduleTemplateListingModel for the supplied entity, if it's a vet entity vet model, if it's a template entity, template model, cast the result as needed\r\n * @param entity \r\n * @returns \r\n */\r\n getScheduledEntity(entity: HospitalScheduleDayEntityModel): VeterinarianListingModel | ScheduleHospitalScheduleTemplateListingModel | ScheduleEntityTypeModel | undefined {\r\n switch (entity.entityType) {\r\n case EntityScheduleType.Template:\r\n return first(this.templates.filter(t => t.hospitalScheduleTemplateId === entity.entityId));\r\n case EntityScheduleType.Veterinarian:\r\n return first(this.veterinarians.filter(t => t.veterinarianId === entity.entityId));\r\n case EntityScheduleType.Technician:\r\n return new ScheduleEntityTypeModel({\r\n scheduleEntityTypeId: 400,\r\n scheduleEntityTypeName: 'Technician',\r\n legacyEntityTypeId: 400,\r\n businessLineId: 3,\r\n isGloballyScheduled: true\r\n });\r\n case EntityScheduleType.Unassigned:\r\n return new ScheduleEntityTypeModel({\r\n scheduleEntityTypeId: 200,\r\n scheduleEntityTypeName: 'Unassigned',\r\n legacyEntityTypeId: 200,\r\n businessLineId: 3,\r\n isGloballyScheduled: true\r\n });\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n getScheduleEntitiesForAllDays(hospitalId: number) {\r\n\r\n return flatMap(this.hospitalSchedules.filter(h => h.hospitalId === hospitalId), h => flatMap(h.schedule, s => s.scheduledEntities));\r\n }\r\n\r\n /**\r\n * Returns all the veterinarians for the specified options from the schedule payload. Available veterinarians are vets that are on at least 1 schedule entry, and or have access to the requested hospital or hospitals.\r\n * @param hospitalId The id of the hospital to filter vets down to.\r\n * @param options Options that further filter the vets being returned, day is special, if you leave it undefined it'll assume you don't know the day yet (not loaded, or doesn't have a schedule that day) so it'll cause isScheduled to always return no vets if it's undefined.\r\n * isScheduled undefined means vets are included regardless of whether they are scheduled or not. true (only scheduled vets), false (only unscheduled vets)\r\n * hasAccess undefined means vets are included regardless of whether they have access to the requested hospital, true (only vets that have access), false (only vets that don't have access)\r\n * @returns \r\n */\r\n getVeterinarians(hospitalId: number, options: { day?: DateTime | string | undefined, isAdhoc?: boolean | undefined, isScheduled?: boolean | undefined, hasLicense?: boolean | undefined, hasAccess?: boolean | undefined }) {\r\n const lday = options?.day\r\n ? typeof (options?.day) === 'string'\r\n ? DateTime.fromISO(options?.day, { zone: 'UTC' }).startOf('day')\r\n : options?.day.startOf('day')\r\n : DateTime.utc().startOf('day');\r\n\r\n const hospitalSchedule = first(this.hospitalSchedules.filter(h => h.hospitalId == hospitalId));\r\n const hospitalScheduleDays = hospitalSchedule?.schedule.filter(s => {\r\n return lday.toISO() === s.day.startOf('day').toISO()\r\n }) ?? [];\r\n const totalScheduledEntities: HospitalScheduleDayEntityModel[] = [];\r\n hospitalScheduleDays.forEach(scheduleDay => {\r\n scheduleDay.scheduledEntities.filter(\r\n e => e.entityType === EntityScheduleType.Veterinarian\r\n )\r\n .forEach(day => totalScheduledEntities.push(day))\r\n });\r\n\r\n if (!options?.day && options?.isScheduled)\r\n throw 'Unable to filter vets to only sheduled templates because no day was specified. When filtering on scheduled you must specify an options day.';\r\n\r\n return this.veterinarians.filter(v => {\r\n let includeOnScheduled = () => (options?.isScheduled == null || some(totalScheduledEntities, tse => tse.entityId === v.veterinarianId) === options.isScheduled);\r\n let includeOnLicense = () => (options?.hasLicense == null || v.isLicensed(hospitalId));\r\n let includeOnAccess = () => (options?.hasAccess == null || v.hasAccess(hospitalId))\r\n let includeOnAdHoc = () => (options?.isAdhoc == null || some(totalScheduledEntities, tse => tse.entityId === v.veterinarianId && tse.isAdhoc === options.isAdhoc));\r\n let activeOnly = () => (v.employmentStatus === 'A')\r\n return includeOnScheduled() && includeOnLicense() && includeOnAccess() && includeOnAdHoc() && activeOnly();\r\n });\r\n }\r\n\r\n /**\r\n * Returns all the templates for the specified options from the schedule payload. You can filter down with options to include only default or non default templates, active or non active templates, etc.\r\n * Undefined options mean the otions are ignored and don't affect the result.\r\n * @param hospitalId \r\n * @param options \r\n * @returns \r\n */\r\n getTemplates(hospitalId: number, options: { day?: DateTime | string | undefined, isScheduled?: boolean | undefined, isActive?: boolean | undefined, isDefault?: boolean | undefined }) {\r\n const lday = options?.day ? typeof (options?.day) === 'string' ? DateTime.fromISO(options?.day, { zone: 'UTC' }).startOf('day') : options?.day.startOf('day') : DateTime.utc().startOf('day');\r\n const hospitalSchedule = first(this.hospitalSchedules.filter(h => h.hospitalId == hospitalId));\r\n const hospitalScheduleDays = hospitalSchedule?.schedule.filter(s => lday.toISO() === s.day.startOf('day').toISO()) ?? [];\r\n const totalScheduledEntities: HospitalScheduleDayEntityModel[] = [];\r\n hospitalScheduleDays.forEach(scheduleDay => {\r\n scheduleDay.scheduledEntities.filter(\r\n e => e.entityType === EntityScheduleType.Template\r\n )\r\n .forEach(day => totalScheduledEntities.push(day));\r\n });\r\n if (!options?.day && options?.isScheduled) {\r\n throw 'Unable to filter templates to only sheduled templates because no day was specified. When filtering on scheduled you must specify an options day.';\r\n }\r\n\r\n return this.templates.filter(t =>\r\n (options?.isScheduled == null || some(totalScheduledEntities, tse => tse.entityId === t.hospitalScheduleTemplateId) === options.isScheduled)\r\n && (options?.isDefault == null || t.isDefault === options?.isDefault)\r\n && (options?.isActive == null || t.isActive === options?.isActive));\r\n }\r\n\r\n /**\r\n * Takes a schedule entity which might be for a vet or a template, and gets copies of all the default schedule preferences from the EntitySchedulePreferences array\r\n * also modifies the schedule preferences entity id to point at the passed in entity instead of the original template id. This is used to render\r\n * default schedule preferences for vets on scheduling calendar modals.\r\n * The preferences for the default template are already in the base payload, so we look them up in it to prevent redundantly nesting the json data in the response.\r\n * @param entity \r\n * @returns \r\n */\r\n createDefaultEntitySchedulePreferences(entity: HospitalScheduleDayEntityModel, dayOfWeek?: WeekDay.Day | undefined) {\r\n if (entity.defaultScheduleTemplateId == null)\r\n return [] as EntitySchedulePreference[];\r\n return this.entitySchedulePreferences.filter(p => p.entityType === EntityScheduleType.Template && p.entityId === entity.defaultScheduleTemplateId && (dayOfWeek == null || dayOfWeek == p.dayOfWeek))\r\n .map(p => {\r\n return new DefaultEntitySchedulePreference({ ...p as DefaultEntitySchedulePreference, entityId: entity.entityId, entityType: EntityScheduleType.Veterinarian, inheritedFromTemplate: true, templateId: entity.defaultScheduleTemplateId! })\r\n });\r\n }\r\n\r\n getEntitySchedulePreferences(entity: HospitalScheduleDayEntityModel, dayOfWeek?: WeekDay.Day | undefined) {\r\n if (!entity.hasSchedulePreferences)\r\n return entity.hasInheritedSchedulePreferences && entity.defaultScheduleTemplateId != null ? this.createDefaultEntitySchedulePreferences(entity, dayOfWeek) : [] as EntitySchedulePreference[];\r\n return this.entitySchedulePreferences.filter(p => p.entityType === entity.entityType && p.entityId === entity.entityId && (dayOfWeek == null || dayOfWeek === p.dayOfWeek));\r\n }\r\n\r\n getFirstScheduleDay(hospitalId: number) {\r\n return first(first(this.hospitalSchedules.filter(h => h.hospitalId === hospitalId))?.schedule);\r\n }\r\n\r\n static getDefault() {\r\n const daySchedule = new HospitalScheduleDayModel({ hospitalId: 0 });\r\n const wrapper = new HospitalScheduleWrapperModel({ hospitalId: 0, schedule: [daySchedule] });\r\n return new ProcessedHospitalScheduleModel({\r\n hospitalSchedules: [wrapper]\r\n });\r\n }\r\n}\r\n","import { some } from \"lodash\";\r\nimport { VeterinarianListingModel } from \"../VeterinarianListingModel\";\r\n\r\n/**\r\n * This is a hospital schedule specific veterinarian model that extends the new VeterinarianListingModel, a lighter weight vet model\r\n * It is returned by the new hospital schedule end point. Whether the vet has a DVM license for a hospital state or has access to the hospital\r\n * can be determined here. But note, the activeDVMLicenseHospitalIds and accessibleHospitalIds are populated by getHospitalSchedule's response payload only for the requested hospitals on the request.\r\n * I.e. if you only request the schedule for hospital id 1205, you'll only have license and access info for hospital 1205, that's because vet's are only included if they're on the schedule for hospital 1205 or have access to hospital 1205.\r\n */\r\nexport class HospitalScheduleVeterinarianModel extends VeterinarianListingModel {\r\n activeDVMLicenseHospitalIds: number[];\r\n accessibleHospitalIds: number[];\r\n\r\n constructor(init?: Partial) {\r\n super(init);\r\n this.activeDVMLicenseHospitalIds = init?.activeDVMLicenseHospitalIds?.map(id => id) ?? [] as number[];\r\n this.accessibleHospitalIds = init?.accessibleHospitalIds?.map(id => id) ?? [] as number[];\r\n }\r\n\r\n isLicensed(hospitalId: number) {\r\n return some(this.activeDVMLicenseHospitalIds.filter(l => l === hospitalId));\r\n }\r\n\r\n hasAccess(hospitalId: number) {\r\n return some(this.accessibleHospitalIds.filter(l => l === hospitalId));\r\n }\r\n\r\n isActive = () => this.employmentStatus === 'A'\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { petcoPewterBlue } from \"@common/_assets/color-constants.js\";\r\n\r\n/**\r\n * Introduced for GetHospitalSchedule, a light weight vet listing model with no sub types on it. This\r\n * is returned from GetHospitalSchedule on ProcessedHospitalScheduleModel\r\n */\r\nexport class VeterinarianListingModel {\r\n veterinarianId: number;\r\n title: string | undefined;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n username: string;\r\n fullName: string;\r\n schedulingColor: string | undefined;\r\n sourceSystemKey: string | undefined;\r\n titleFullName: string;\r\n employmentStatus: string;\r\n\r\n constructor(init?: Partial) {\r\n this.veterinarianId = defaultTo(init?.veterinarianId, 0);\r\n this.title = defaultTo(init?.title, undefined);\r\n this.firstName = defaultTo(init?.firstName, '');\r\n this.lastName = defaultTo(init?.lastName, '');\r\n this.email = defaultTo(init?.email, '');\r\n this.username = defaultTo(init?.username, '');\r\n this.fullName = defaultTo(init?.fullName, '');\r\n this.titleFullName = defaultTo(init?.titleFullName, '');\r\n this.schedulingColor = defaultTo(init?.schedulingColor, petcoPewterBlue);\r\n this.employmentStatus = defaultTo(init?.employmentStatus, '')\r\n }\r\n}\r\n","import { IModel, Model } from \"./Model\";\r\n\r\nexport interface IUserListingModel extends IModel {\r\n userId: number;\r\n firstName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n objectIdentifier: string;\r\n allowSecurityAdmin: boolean;\r\n roleCount: number;\r\n featureFlagCount: number;\r\n organizationCount: number;\r\n organizationRelationKey: string;\r\n roles: string;\r\n organizations: string;\r\n isProfileActive: boolean;\r\n title: string;\r\n}\r\n\r\nexport class UserListingModel extends Model implements IUserListingModel {\r\n userId: number;\r\n firstName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n objectIdentifier: string;\r\n allowSecurityAdmin: boolean;\r\n roleCount: number;\r\n featureFlagCount: number;\r\n organizationCount: number;\r\n organizationRelationKey: string;\r\n roles: string;\r\n organizations: string;\r\n isProfileActive: boolean;\r\n title: string;\r\n constructor(params: Partial) {\r\n super(params);\r\n const {\r\n userId = 0,\r\n firstName = '',\r\n lastName = '',\r\n emailAddress = '',\r\n objectIdentifier = '',\r\n allowSecurityAdmin = false,\r\n roleCount = 0,\r\n featureFlagCount = 0,\r\n organizationCount = 0,\r\n organizationRelationKey = '',\r\n roles = '',\r\n organizations = '',\r\n isProfileActive = false,\r\n title = ''\r\n } = params;\r\n\r\n this.userId = userId;\r\n this.firstName = firstName;\r\n this.lastName = lastName;\r\n this.emailAddress = emailAddress;\r\n this.objectIdentifier = objectIdentifier;\r\n this.allowSecurityAdmin = allowSecurityAdmin;\r\n this.roleCount = roleCount;\r\n this.featureFlagCount = featureFlagCount;\r\n this.organizationCount = organizationCount;\r\n this.organizationRelationKey = organizationRelationKey;\r\n this.roles = roles;\r\n this.organizations = organizations;\r\n this.isProfileActive = isProfileActive;\r\n this.title = title;\r\n }\r\n\r\n}\r\n","import { UserListingModel } from \"../UserListingModel\";\r\n\r\n/**\r\n * This is a hospital schedule specific veterinarian model that extends the new VeterinarianListingModel, a lighter weight vet model\r\n * It is returned by the new hospital schedule end point. Whether the vet has a DVM license for a hospital state or has access to the hospital\r\n * can be determined here. But note, the activeDVMLicenseHospitalIds and accessibleHospitalIds are populated by getHospitalSchedule's response payload only for the requested hospitals on the request.\r\n * I.e. if you only request the schedule for hospital id 1205, you'll only have license and access info for hospital 1205, that's because vet's are only included if they're on the schedule for hospital 1205 or have access to hospital 1205.\r\n */\r\nexport class HospitalScheduleVetTechModel extends UserListingModel {\r\n accessibleHospitalIds: number[];\r\n\r\n constructor(init: Partial) {\r\n super(init);\r\n this.accessibleHospitalIds = init?.accessibleHospitalIds?.map(id => id) ?? [] as number[];\r\n }\r\n\r\n}\r\n","import { ScheduleBlockType } from \"../Enums\";\r\n\r\nexport interface IScheduleEntityBlockTypeModel {\r\n scheduleEntityBlockTypeId: number;\r\n scheduleEntityTypeId: number;\r\n scheduleBlockTypeId: ScheduleBlockType;\r\n}\r\n/**\r\n * This model shows the relation between a ScheduleEntityTypeId and a ScheduleBlockTypeId\r\n * it's used to determine which ScheduleBlockTypes are allowed for a ScheduleEntityType\r\n */\r\nexport class ScheduleEntityBlockTypeModel implements IScheduleEntityBlockTypeModel {\r\n scheduleEntityBlockTypeId: number;\r\n scheduleEntityTypeId: number;\r\n scheduleBlockTypeId: ScheduleBlockType;\r\n\r\n constructor(model: IScheduleEntityBlockTypeModel) {\r\n this.scheduleEntityBlockTypeId = model.scheduleEntityBlockTypeId;\r\n this.scheduleEntityTypeId = model.scheduleEntityTypeId;\r\n this.scheduleBlockTypeId = model.scheduleBlockTypeId;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IAdditionalInfoLabelModel extends IModel {\r\n additionalInfoLabelId: number;\r\n name: string;\r\n information: string;\r\n}\r\n\r\nexport class AdditionalInfoLabelModel extends Model implements ModelRecord {\r\n additionalInfoLabelId: number;\r\n name: string;\r\n information: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.additionalInfoLabelId = defaultTo(params?.additionalInfoLabelId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.information = defaultTo(params?.information, '');\r\n }\r\n}\r\n","import { DateTime } from \"luxon\";\r\n\r\nexport interface IAppointmentAuditLogModel {\r\n reservationId: number\r\n dateCreated: string\r\n type: string\r\n event: string\r\n initiator: string\r\n note: string\r\n}\r\n\r\nexport class AppointmentAuditLogModel implements Record {\r\n reservationId: number\r\n dateCreated: DateTime\r\n type: string\r\n event: string\r\n initiator: string\r\n note: string\r\n\r\n // not making this a partial constructor because these objects are read-only from the API.\r\n constructor(params: IAppointmentAuditLogModel, timezone: string) {\r\n this.reservationId = params.reservationId\r\n this.dateCreated = DateTime.fromISO(params.dateCreated, { zone: \"utc\" }).setZone(timezone);\r\n this.type = params.type\r\n this.event = params.event\r\n this.initiator = params.initiator\r\n this.note = params.note\r\n }\r\n}\r\n","import { AppointmentListingModel, IModel, ModelRecord } from \"@common/models\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface IAppointmentStatusRequest extends IModel {\r\n reservationId: number\r\n visitId: number | undefined\r\n}\r\n\r\nexport class AppointmentStatusRequest implements ModelRecord {\r\n reservationId: number;\r\n visitId: number | undefined\r\n rowVersion: string;\r\n\r\n constructor(init?: Partial) {\r\n this.reservationId = defaultTo(init?.reservationId, 0);\r\n this.visitId = defaultTo(init?.visitId, 0);\r\n this.rowVersion = defaultTo(init?.rowVersion, '');\r\n }\r\n\r\n static FromListingModel(model: AppointmentListingModel) {\r\n return new AppointmentStatusRequest({\r\n reservationId: model.reservationId,\r\n visitId: model.visitId,\r\n rowVersion: model.rowVersion\r\n });\r\n }\r\n}\r\n","import { AppointmentRequest, AppointmentCheckInRequest } from \"@common/models/requests\";\r\nimport { ResourceApi } from '@fullcalendar/resource-common';\r\nimport { DateTime } from \"luxon\";\r\nimport { AppointmentFlowActionOperations, AppointmentStatus, EntityScheduleType, ReservationAssignmentStatuses } from \"@common/models/Enums\";\r\nimport { ISelectOption } from \"@common/components/forms\";\r\nimport { StringUtility } from \"@common/utils\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { IModel, ModelRecord, PetAlertModel, IPetAlertModel, schedule } from \"@common/models\";\r\nimport { AppointmentStatusRequest } from \"./requests/AppointmentStatusRequest\";\r\nimport { ICheckInModel } from \"@models/forms/ICheckInModel\";\r\n\r\nexport interface IAppointmentListingModel extends IModel {\r\n clinicId: number\r\n clinicStoreId: number\r\n clinicLocationName: string\r\n reservationId: number\r\n rescheduledReservationId: number | undefined\r\n rescheduledToDate: string | undefined\r\n visitId?: number\r\n appointmentStatusId: AppointmentStatus\r\n clientId: number\r\n clientFirstName: string\r\n clientLastName: string\r\n clientEmail: string\r\n clientPhone: string | undefined\r\n petId: number\r\n petAlerts: IPetAlertModel[] | undefined\r\n petName: string\r\n speciesName: string | undefined\r\n breedName: string | undefined\r\n genderName: string | undefined\r\n petDOB: string | undefined\r\n veterinarianId?: number | undefined\r\n veterinarianTitle: string | undefined\r\n veterinarianFirstName: string | undefined\r\n veterinarianLastName: string | undefined\r\n hospitalScheduleTemplateId?: number | undefined\r\n hospitalScheduleTemplateName: string | undefined\r\n appointmentTypeId: number\r\n appointmentTypeName: string\r\n appointmentTypeColor: string\r\n visitCompletionTypeId: number | undefined\r\n visitCompletionTypeName: string | undefined\r\n\r\n startDate: string\r\n startTime: string\r\n endDate: string\r\n endTime: string\r\n createdDate: string\r\n lastModifiedDate: string\r\n\r\n visitStarted: string | undefined\r\n checkinStart: string | undefined\r\n inProgressStart: string | undefined\r\n admittedStart: string | undefined\r\n finalizedStart: string | undefined\r\n paidStart: string | undefined\r\n checkoutStart: string | undefined\r\n\r\n isDropOff: boolean\r\n isOnlineBooking: boolean\r\n reasonForVisit: string | undefined\r\n notes: string | undefined\r\n assignmentStatus: ReservationAssignmentStatuses | undefined\r\n room: string | undefined\r\n\r\n dispensingAuthUserId: number | undefined\r\n dispensingUserFirstName: string | undefined\r\n dispensingUserLastName: string | undefined\r\n\r\n wasPriorCustomer: boolean\r\n isWalkIn: boolean\r\n canCall: boolean,\r\n canSMS: boolean,\r\n isRebook: boolean,\r\n previousStartDate: string,\r\n previousEndDate: string;\r\n\tisLinkedToClientAndPet: boolean | undefined;\r\n}\r\n\r\nexport const defaultApptListingModel: IAppointmentListingModel = {\r\n reservationId: 0,\r\n clinicId: 0,\r\n appointmentStatusId: AppointmentStatus.Booked,\r\n clinicStoreId: 0,\r\n clinicLocationName: \"\",\r\n clientId: 0,\r\n clientFirstName: \"\",\r\n clientLastName: \"\",\r\n clientEmail: \"\",\r\n clientPhone: undefined,\r\n petId: 0,\r\n petName: \"\",\r\n speciesName: \"\",\r\n breedName: \"\",\r\n genderName: \"\",\r\n petDOB: \"\",\r\n appointmentTypeId: 0,\r\n appointmentTypeName: \"\",\r\n appointmentTypeColor: \"\",\r\n visitCompletionTypeName: undefined,\r\n startDate: \"\",\r\n startTime: \"\",\r\n endDate: \"\",\r\n endTime: \"\",\r\n createdDate: \"\",\r\n lastModifiedDate: \"\",\r\n visitStarted: undefined,\r\n checkinStart: undefined,\r\n inProgressStart: undefined,\r\n admittedStart: undefined,\r\n finalizedStart: undefined,\r\n paidStart: undefined,\r\n checkoutStart: undefined,\r\n isOnlineBooking: false,\r\n isDropOff: false,\r\n veterinarianId: undefined,\r\n veterinarianFirstName: undefined,\r\n veterinarianLastName: undefined,\r\n veterinarianTitle: undefined,\r\n hospitalScheduleTemplateId: undefined,\r\n hospitalScheduleTemplateName: undefined,\r\n assignmentStatus: ReservationAssignmentStatuses.Unassigned,\r\n room: undefined,\r\n rescheduledReservationId: undefined,\r\n rescheduledToDate: undefined,\r\n petAlerts: undefined,\r\n visitCompletionTypeId: undefined,\r\n reasonForVisit: undefined,\r\n notes: undefined,\r\n dispensingAuthUserId: undefined,\r\n dispensingUserFirstName: \"\",\r\n dispensingUserLastName: \"\",\r\n wasPriorCustomer: false,\r\n isWalkIn: false,\r\n canCall: true,\r\n canSMS: true,\r\n rowVersion: \"\",\r\n isRebook: false,\r\n previousEndDate: \"\",\r\n previousStartDate: \"\",\r\n\tisLinkedToClientAndPet: false\r\n}\r\n\r\nexport class AppointmentListingModel implements ModelRecord {\r\n rowVersion: string\r\n clinicId: number\r\n clinicStoreId: number\r\n clinicLocationName: string\r\n reservationId: number\r\n rescheduledReservationId: number | undefined\r\n rescheduledToDate: DateTime | undefined\r\n visitId: number | undefined\r\n appointmentStatusId: AppointmentStatus\r\n clientId: number\r\n clientFirstName: string\r\n clientLastName: string\r\n clientEmail: string\r\n clientPhone: string | undefined\r\n petId: number\r\n petAlerts: IPetAlertModel[] | undefined\r\n speciesName: string | undefined\r\n breedName: string | undefined\r\n genderName: string | undefined\r\n petDOB: string | undefined\r\n petName: string\r\n veterinarianId: number | undefined\r\n veterinarianTitle: string | undefined\r\n veterinarianFirstName: string | undefined\r\n veterinarianLastName: string | undefined\r\n hospitalScheduleTemplateId: number | undefined\r\n hospitalScheduleTemplateName: string | undefined\r\n appointmentTypeId: number\r\n appointmentTypeName: string\r\n appointmentTypeColor: string\r\n visitCompletionTypeId: number | undefined\r\n visitCompletionTypeName: string | undefined\r\n startDate: string\r\n startTime: string\r\n endDate: string\r\n endTime: string\r\n createdDate: string\r\n lastModifiedDate: string\r\n visitStarted: string | undefined\r\n checkinStart: string | undefined\r\n inProgressStart: string | undefined\r\n admittedStart: string | undefined\r\n finalizedStart: string | undefined\r\n paidStart: string | undefined\r\n checkoutStart: string | undefined\r\n isOnlineBooking: boolean\r\n isDropOff: boolean\r\n reasonForVisit: string | undefined\r\n notes: string | undefined\r\n assignmentStatus: ReservationAssignmentStatuses\r\n room: string | undefined\r\n dispensingAuthUserId: number | undefined\r\n dispensingUserFirstName: string | undefined\r\n dispensingUserLastName: string | undefined\r\n wasPriorCustomer: boolean\r\n isWalkIn: boolean\r\n canCall: boolean\r\n canSMS: boolean\r\n isRebook: boolean\r\n previousStartDate: string\r\n previousEndDate: string\r\n\tisLinkedToClientAndPet: boolean\r\n\r\n constructor(params: IAppointmentListingModel) {\r\n this.rowVersion = defaultTo(params?.rowVersion, '');\r\n this.clinicId = defaultTo(params?.clinicId, 0);\r\n this.clinicStoreId = defaultTo(params?.clinicStoreId, 0);\r\n this.clinicLocationName = defaultTo(params?.clinicLocationName, '');\r\n this.reservationId = defaultTo(params?.reservationId, 0);\r\n this.rescheduledReservationId = defaultTo(params?.rescheduledReservationId, undefined);\r\n this.rescheduledToDate = StringUtility.SanitizeDateTimeISO(params.rescheduledToDate);\r\n this.visitId = defaultTo(params?.visitId, undefined);\r\n this.appointmentStatusId = defaultTo(params?.appointmentStatusId, AppointmentStatus.Booked);\r\n this.clientId = defaultTo(params?.clientId, 0);\r\n this.clientFirstName = defaultTo(params?.clientFirstName, '');\r\n this.clientLastName = defaultTo(params?.clientLastName, '');\r\n this.clientEmail = defaultTo(params?.clientEmail, '');\r\n this.clientPhone = defaultTo(params?.clientPhone, '');\r\n this.petId = defaultTo(params?.petId, 0);\r\n this.petAlerts = params?.petAlerts ? params?.petAlerts.map(p => new PetAlertModel(p)) : [] as PetAlertModel[];\r\n this.petName = defaultTo(params?.petName, '');\r\n this.speciesName = defaultTo(params?.speciesName, '');\r\n this.breedName = defaultTo(params?.breedName, '');\r\n this.genderName = defaultTo(params?.genderName, '');\r\n this.petDOB = defaultTo(params?.petDOB, '');\r\n this.assignmentStatus = defaultTo(params?.assignmentStatus, ReservationAssignmentStatuses.Unassigned);\r\n this.veterinarianId = defaultTo(params?.veterinarianId, undefined);\r\n this.veterinarianTitle = defaultTo(params?.veterinarianTitle, '');\r\n this.veterinarianFirstName = defaultTo(params?.veterinarianFirstName, '');\r\n this.veterinarianLastName = defaultTo(params?.veterinarianLastName, '');\r\n this.hospitalScheduleTemplateId = defaultTo(params?.hospitalScheduleTemplateId, undefined);\r\n this.hospitalScheduleTemplateName = defaultTo(params?.hospitalScheduleTemplateName, '');\r\n this.appointmentTypeId = defaultTo(params?.appointmentTypeId, 0);\r\n this.appointmentTypeName = defaultTo(params?.appointmentTypeName, '');\r\n this.appointmentTypeColor = defaultTo(params?.appointmentTypeColor, '');\r\n this.visitCompletionTypeId = defaultTo(params?.visitCompletionTypeId, undefined);\r\n this.visitCompletionTypeName = defaultTo(params?.visitCompletionTypeName, '');\r\n this.startDate = defaultTo(params?.startDate, '');\r\n this.endDate = defaultTo(params?.endDate, '');\r\n this.startTime = defaultTo(params?.startTime, '');\r\n this.endTime = defaultTo(params?.endTime, '');\r\n this.createdDate = defaultTo(params?.createdDate, '');\r\n this.lastModifiedDate = defaultTo(params?.lastModifiedDate, '');\r\n this.visitStarted = defaultTo(params?.visitStarted, undefined);\r\n this.checkinStart = defaultTo(params?.checkinStart, undefined);\r\n this.inProgressStart = defaultTo(params?.inProgressStart, undefined);\r\n this.admittedStart = defaultTo(params?.admittedStart, undefined);\r\n this.finalizedStart = defaultTo(params?.finalizedStart, undefined);\r\n this.paidStart = defaultTo(params?.paidStart, undefined);\r\n this.checkoutStart = defaultTo(params?.checkoutStart, undefined);\r\n this.isOnlineBooking = defaultTo(params?.isOnlineBooking, false);\r\n this.isDropOff = defaultTo(params?.isDropOff, false);\r\n this.reasonForVisit = defaultTo(params?.reasonForVisit, '');\r\n this.notes = defaultTo(params?.notes, '');\r\n this.room = StringUtility.SanitizeString(defaultTo(params?.room, undefined));\r\n this.dispensingAuthUserId = defaultTo(params?.dispensingAuthUserId, undefined);\r\n this.dispensingUserFirstName = defaultTo(params?.dispensingUserFirstName, '');\r\n this.dispensingUserLastName = defaultTo(params?.dispensingUserLastName, '');\r\n this.wasPriorCustomer = defaultTo(params?.wasPriorCustomer, false);\r\n this.isWalkIn = defaultTo(params?.isWalkIn, false);\r\n this.canCall = params.canCall;\r\n this.canSMS = params.canSMS;\r\n this.isRebook = params.isRebook\r\n this.previousStartDate = params.previousStartDate,\r\n this.previousEndDate = params.previousEndDate,\r\n\t\tthis.isLinkedToClientAndPet = params.isLinkedToClientAndPet ?? false;\r\n }\r\n\r\n getAssignmentOrDrName() {\r\n if (!this.assignmentStatus) return 'Unassigned';\r\n switch (this.assignmentStatus) {\r\n case ReservationAssignmentStatuses.Assigned:\r\n return `Dr. ${this.veterinarianFirstName} ${this.veterinarianLastName}`;\r\n case ReservationAssignmentStatuses.Unassigned:\r\n return 'Unassigned';\r\n case ReservationAssignmentStatuses.Unassigned_Technician:\r\n if (this.veterinarianId && this.veterinarianId > 0)\r\n return `Dr. ${this.veterinarianFirstName} ${this.veterinarianLastName}`;\r\n else\r\n return 'Unassigned Technician';\r\n case ReservationAssignmentStatuses.Assigned_Template:\r\n return this.hospitalScheduleTemplateName;\r\n case ReservationAssignmentStatuses.Assigned_Technician:\r\n return `Attending Doctor: Dr. ${this.veterinarianFirstName} ${this.veterinarianLastName}`;\r\n default:\r\n throw 'Unknown assignment status';\r\n }\r\n }\r\n\r\n getVetTechOrAssistantName() {\r\n if (!this.dispensingAuthUserId)\r\n return 'Unassigned';\r\n else\r\n return `Vet Tech/Vet Assistant: ${this.dispensingUserFirstName} ${this.dispensingUserLastName}`\r\n }\r\n\r\n unassignedCheckInCanBeReassigned(operation: AppointmentFlowActionOperations): boolean {\r\n if ((this.assignmentStatus === ReservationAssignmentStatuses.Unassigned\r\n || this.assignmentStatus === ReservationAssignmentStatuses.Unassigned_Technician\r\n || this.assignmentStatus === ReservationAssignmentStatuses.Assigned_Template)\r\n && operation == AppointmentFlowActionOperations.CheckIn) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isFullyAssigned(): boolean { // helper function to ensure an appointment is filled out. external import may need these added.\r\n return (this.clientId !== 0 && this.petId !== 0);\r\n }\r\n\r\n static getDefault() {\r\n return new AppointmentListingModel(defaultApptListingModel);\r\n }\r\n\r\n static fromCalendarResource = (resource: ResourceApi | undefined, selectedDate: DateTime | null): AppointmentListingModel => {\r\n let apptModel: AppointmentListingModel = AppointmentListingModel.getDefault();\r\n apptModel.startDate = selectedDate ? selectedDate.toISO() : apptModel.startDate;\r\n\r\n const scheduleEntity = (resource?.extendedProps[\"scheduleEntity\"] as schedule.HospitalScheduleDayEntityModel | undefined);\r\n const vet: schedule.HospitalScheduleVeterinarianModel | undefined = resource?.extendedProps[\"veterinarian\"] as schedule.HospitalScheduleVeterinarianModel;\r\n\r\n if (scheduleEntity == null)\r\n throw 'invalid scheduleEntity, not expecting null';\r\n\r\n if (resource) {\r\n apptModel.assignmentStatus = resource.id === \"-1\" ? ReservationAssignmentStatuses.Unassigned_Technician : resource.id === \"0\" ? ReservationAssignmentStatuses.Unassigned : ReservationAssignmentStatuses.Assigned;\r\n\r\n switch (scheduleEntity.entityType) {\r\n case EntityScheduleType.Template:\r\n apptModel.assignmentStatus = ReservationAssignmentStatuses.Assigned_Template;\r\n apptModel.veterinarianFirstName = undefined;\r\n apptModel.veterinarianLastName = undefined;\r\n apptModel.veterinarianTitle = undefined;\r\n apptModel.veterinarianId = undefined;\r\n apptModel.hospitalScheduleTemplateId = scheduleEntity.entityId;\r\n apptModel.hospitalScheduleTemplateName = scheduleEntity.entityTitle;\r\n break;\r\n case EntityScheduleType.Veterinarian:\r\n apptModel.assignmentStatus = ReservationAssignmentStatuses.Assigned;\r\n apptModel.veterinarianFirstName = vet?.firstName ?? '';\r\n apptModel.veterinarianLastName = vet?.lastName ?? '';\r\n apptModel.veterinarianTitle = vet?.title;\r\n apptModel.veterinarianId = scheduleEntity.entityId;\r\n apptModel.hospitalScheduleTemplateId = undefined;\r\n apptModel.hospitalScheduleTemplateName = undefined;\r\n break;\r\n case EntityScheduleType.Unassigned:\r\n apptModel.assignmentStatus = ReservationAssignmentStatuses.Unassigned;\r\n apptModel.veterinarianFirstName = undefined;\r\n apptModel.veterinarianLastName = undefined;\r\n apptModel.veterinarianTitle = undefined;\r\n apptModel.veterinarianId = undefined;\r\n apptModel.hospitalScheduleTemplateId = undefined;\r\n apptModel.hospitalScheduleTemplateName = undefined;\r\n break;\r\n case EntityScheduleType.Technician:\r\n apptModel.assignmentStatus = ReservationAssignmentStatuses.Unassigned_Technician;\r\n apptModel.veterinarianFirstName = undefined;\r\n apptModel.veterinarianLastName = undefined;\r\n apptModel.veterinarianTitle = undefined;\r\n apptModel.veterinarianId = undefined;\r\n apptModel.hospitalScheduleTemplateId = undefined;\r\n apptModel.hospitalScheduleTemplateName = undefined;\r\n break;\r\n default:\r\n throw 'unknown EntityScheduleType';\r\n }\r\n }\r\n\r\n return apptModel;\r\n }\r\n\r\n toRequest(hospitalId: number): AppointmentRequest {\r\n return AppointmentRequest.FromListingModel(hospitalId, this);\r\n }\r\n\r\n toCheckInRequest(checkInModel: ICheckInModel, createAsInProgress: boolean = false): AppointmentCheckInRequest {\r\n return AppointmentCheckInRequest.FromListingModel(this, checkInModel, createAsInProgress);\r\n }\r\n\r\n toStatusRequest(): AppointmentStatusRequest {\r\n return AppointmentStatusRequest.FromListingModel(this);\r\n }\r\n\r\n isBlockedFromReschedule(): boolean {\r\n return !_.includes([\r\n AppointmentStatus.Cancelled,\r\n AppointmentStatus.Rescheduled,\r\n AppointmentStatus.Check_In,\r\n AppointmentStatus.In_Progress,\r\n AppointmentStatus.Admitted,\r\n AppointmentStatus.Finalized,\r\n AppointmentStatus.Paid,\r\n AppointmentStatus.Check_Out,\r\n AppointmentStatus.NoShow\r\n ], this.appointmentStatusId);\r\n }\r\n\r\n shouldHide(): boolean {\r\n return _.includes([AppointmentStatus.Cancelled, AppointmentStatus.Rescheduled], this.appointmentStatusId);\r\n }\r\n}\r\n/**\r\n * All available appointment statuses and their matching id\r\n */\r\nexport const AppointmentStatusOptions: ISelectOption[] = [\r\n { value: 1, label: \"Booked\" },\r\n { value: 2, label: \"Confirmed\" },\r\n { value: 3, label: \"Cancelled\" },\r\n { value: 4, label: \"Rescheduled\" },\r\n { value: 5, label: \"Showed\" },\r\n { value: 7, label: \"Clinic Cancelled\" },\r\n { value: 8, label: \"No Show\" },\r\n { value: 9, label: \"In Progress\" },\r\n { value: 10, label: \"Admitted\" },\r\n { value: 11, label: \"Finalized\" },\r\n { value: 12, label: \"Paid\" },\r\n { value: 500, label: \"Check In\" },\r\n { value: 501, label: \"Consultation\" },\r\n { value: 502, label: \"Vet Services\" },\r\n { value: 503, label: \"Check Out\" },\r\n { value: 9999, label: \"Walk-in\" }, // UI only Appointment Status that maps to \"Showed\" with a Reservation Trait of: Reservation - Walk In\r\n]\r\n","import { map } from \"lodash\";\r\nimport { AppointmentManagementItem, IAppointmentManagementItem } from \".\";\r\nexport interface IAppointmentManagementGroupingModel {\r\n status: string;\r\n clinicDate: Date;\r\n partnerName: string;\r\n address: string;\r\n city: string;\r\n state: string;\r\n zip: string;\r\n\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n phone: string;\r\n wasPriorCustomer: boolean;\r\n\r\n clinicId: number;\r\n storeCode: string;\r\n intakePublicId: string;\r\n canViewIntake: boolean;\r\n canConfirm: boolean;\r\n canSendVisitCompletion: boolean;\r\n canCancel: boolean;\r\n canReschedule: boolean;\r\n canRebook: boolean;\r\n sortOrder: number;\r\n rescheduleViaVOB: boolean;\r\n vobRescheduleUrl: string;\r\n isHospitalReservation: boolean;\r\n isAppointmentTypeOnlineBooking?: boolean;\r\n hospitalName: string;\r\n hospitalPhone: string;\r\n publicAppointmentTypeId: string;\r\n items: IAppointmentManagementItem[];\r\n}\r\n\r\nexport class AppointmentManagementGroupingModel implements IAppointmentManagementGroupingModel {\r\n status: string;\r\n clinicDate: Date;\r\n partnerName: string;\r\n address: string;\r\n city: string;\r\n state: string;\r\n zip: string;\r\n\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n phone: string;\r\n wasPriorCustomer: boolean;\r\n\r\n clinicId: number;\r\n storeCode: string;\r\n intakePublicId: string;\r\n canViewIntake: boolean;\r\n canConfirm: boolean;\r\n canSendVisitCompletion: boolean;\r\n canCancel: boolean;\r\n canReschedule: boolean;\r\n canRebook: boolean;\r\n sortOrder: number;\r\n rescheduleViaVOB: boolean;\r\n vobRescheduleUrl: string;\r\n isHospitalReservation: boolean;\r\n isAppointmentTypeOnlineBooking?: boolean;\r\n hospitalName: string;\r\n hospitalPhone: string;\r\n publicAppointmentTypeId: string;\r\n items: AppointmentManagementItem[] = [];\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n status = '',\r\n clinicDate = '',\r\n partnerName = '',\r\n address = '',\r\n city = '',\r\n state = '',\r\n zip = '',\r\n firstName = '',\r\n lastName = '',\r\n email = '',\r\n phone = '',\r\n wasPriorCustomer = false,\r\n clinicId = 0,\r\n storeCode = '',\r\n intakePublicId = '',\r\n canViewIntake = false,\r\n canConfirm = false,\r\n canSendVisitCompletion = false,\r\n canCancel = false,\r\n canReschedule = false,\r\n canRebook = false,\r\n sortOrder = 0,\r\n rescheduleViaVOB = false,\r\n vobRescheduleUrl = '',\r\n isHospitalReservation = false,\r\n isAppointmentTypeOnlineBooking = false,\r\n hospitalName = '',\r\n hospitalPhone = '',\r\n publicAppointmentTypeId = '',\r\n items = [] as Array\r\n } = params;\r\n\r\n this.status = status;\r\n this.clinicDate = new Date(clinicDate);\r\n this.partnerName = partnerName;\r\n this.address = address;\r\n this.city = city;\r\n this.state = state;\r\n this.zip = zip;\r\n\r\n this.firstName = firstName;\r\n this.lastName = lastName;\r\n this.email = email;\r\n this.phone = phone;\r\n this.wasPriorCustomer = wasPriorCustomer;\r\n\r\n this.clinicId = clinicId;\r\n this.storeCode = storeCode;\r\n this.intakePublicId = intakePublicId;\r\n this.canViewIntake = canViewIntake;\r\n this.canConfirm = canConfirm;\r\n this.canSendVisitCompletion = canSendVisitCompletion;\r\n this.canCancel = canCancel;\r\n this.canReschedule = canReschedule;\r\n this.canRebook = canRebook;\r\n this.sortOrder = sortOrder;\r\n this.rescheduleViaVOB = rescheduleViaVOB;\r\n this.vobRescheduleUrl = vobRescheduleUrl;\r\n this.hospitalName = hospitalName;\r\n this.hospitalPhone = hospitalPhone;\r\n this.isHospitalReservation = isHospitalReservation;\r\n this.isAppointmentTypeOnlineBooking = isAppointmentTypeOnlineBooking;\r\n this.publicAppointmentTypeId = publicAppointmentTypeId;\r\n map(items, (item) => { this.items.push(new AppointmentManagementItem(item)); });\r\n }\r\n}\r\n","import { ordinal } from '../utils/ordinal';\r\nimport { DateTime } from 'luxon';\r\n\r\nexport interface IAppointmentManagementItem {\r\n displayFullAppt: string;\r\n itemTime: string;\r\n petName: string;\r\n species: string;\r\n reservationPublicId?: string;\r\n visitPublicId?: string;\r\n}\r\n\r\nexport class AppointmentManagementItem implements IAppointmentManagementItem {\r\n displayFullAppt: string;\r\n itemTime: string;\r\n petName: string;\r\n species: string;\r\n reservationPublicId?: string | undefined;\r\n visitPublicId?: string | undefined;\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n itemTime = '',\r\n petName = '',\r\n species = '',\r\n reservationPublicId = undefined,\r\n visitPublicId = undefined\r\n } = params;\r\n\r\n this.petName = petName;\r\n this.species = species;\r\n const fullDate = new Date(itemTime);\r\n this.displayFullAppt = `${DateTime.fromJSDate(fullDate).toFormat(\"EEEE, MMMM\")} ${ordinal.getNumberOrdinal(fullDate.getDate())}`\r\n this.itemTime = DateTime.fromJSDate(fullDate).toFormat(\"h:mma\");\r\n this.reservationPublicId = reservationPublicId;\r\n this.visitPublicId = visitPublicId;\r\n }\r\n}\r\n","import { map } from \"lodash\";\r\nimport { IAppointmentManagementGroupingModel, AppointmentManagementGroupingModel, CommunicationPreferenceModel, ICommunicationPreferenceModel } from \".\";\r\n\r\nexport interface IAppointmentManagementListModel {\r\n name: string;\r\n description: string;\r\n sortOrder: number;\r\n canViewWhatToExpect: boolean;\r\n groups: IAppointmentManagementGroupingModel[];\r\n communicationPreference: ICommunicationPreferenceModel;\r\n showCommunicationPreference: boolean;\r\n}\r\n\r\nexport class AppointmentManagementListModel implements IAppointmentManagementListModel {\r\n name: string;\r\n description: string;\r\n sortOrder: number;\r\n canViewWhatToExpect: boolean;\r\n groups: AppointmentManagementGroupingModel[] = [];\r\n communicationPreference: CommunicationPreferenceModel;\r\n showCommunicationPreference: boolean;\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n name = '',\r\n description = '',\r\n sortOrder = 0,\r\n canViewWhatToExpect = false,\r\n groups = [] as Array\r\n } = params;\r\n\r\n this.name = name;\r\n this.description = description;\r\n this.sortOrder = sortOrder;\r\n this.canViewWhatToExpect = canViewWhatToExpect;\r\n map(groups, (group) => { this.groups.push(new AppointmentManagementGroupingModel(group)); });\r\n this.communicationPreference = params?.communicationPreference ? new CommunicationPreferenceModel(params?.communicationPreference) : new CommunicationPreferenceModel();\r\n this.showCommunicationPreference = _.defaultTo(params?.showCommunicationPreference, false);\r\n\r\n }\r\n}\r\n","import { IModel, Model } from \".\";\r\nexport interface IIdexxSpeciesModel extends IModel {\r\n idexxSpeciesId: number;\r\n name: string,\r\n code: string,\r\n}\r\nexport class IdexxSpeciesModel extends Model implements IIdexxSpeciesModel {\r\n idexxSpeciesId: number;\r\n name: string;\r\n code: string;\r\n constructor(params: IIdexxSpeciesModel) {\r\n super(params);\r\n this.idexxSpeciesId = params.idexxSpeciesId;\r\n this.name = params.name;\r\n this.code = params.code;\r\n }\r\n}\r\n","import { IModel, Model } from \".\";\r\nimport { IdexxSpeciesModel, IIdexxSpeciesModel } from \"./IdexxSpeciesModel\";\r\n\r\nexport interface ISpeciesModel extends IModel {\r\n speciesId: number;\r\n name: string;\r\n idexxSpeciesId?: number;\r\n idexxSpecies?: IIdexxSpeciesModel;\r\n allowUnknownGender?: boolean;\r\n}\r\nexport class SpeciesModel extends Model implements ISpeciesModel {\r\n speciesId: number;\r\n name: string;\r\n allowUnknownGender?: boolean | undefined;\r\n idexxSpeciesId?: number | undefined;\r\n idexxSpecies?: IdexxSpeciesModel | undefined;\r\n\r\n constructor(params: Partial = {} as ISpeciesModel) {\r\n super(params);\r\n const {\r\n speciesId = 0,\r\n name = '',\r\n allowUnknownGender = false,\r\n } = params;\r\n\r\n this.speciesId = speciesId;\r\n this.name = name;\r\n this.allowUnknownGender = allowUnknownGender;\r\n // Do not default these fields, when creating a pet, a user will never fill them out and add idexx values.\r\n this.idexxSpeciesId = params.idexxSpeciesId;\r\n this.idexxSpecies = params.idexxSpecies ? new IdexxSpeciesModel(params.idexxSpecies) : undefined;\r\n }\r\n}\r\n","import { ISelectOption } from \"@common/components/forms/\";\r\nimport { IModel, ISpeciesModel, Model } from \"@common/models\";\r\nimport { SpeciesModel } from \"./SpeciesModel\";\r\n\r\nexport interface IAppointmentTypeRequest extends IModel {\r\n authApplicationId: number\r\n name: string\r\n species: Array\r\n color: string\r\n description: string\r\n defaultDurationSeconds: number\r\n onlineBooking: boolean,\r\n isSurgery: boolean,\r\n isDropoff: boolean,\r\n isActive: boolean,\r\n isLocked: boolean\r\n}\r\n\r\nexport interface IAppointmentTypeModel extends IAppointmentTypeRequest {\r\n appointmentTypeId: number,\r\n}\r\n\r\nexport class AppointmentTypeModel extends Model implements IAppointmentTypeModel {\r\n authApplicationId: number;\r\n appointmentTypeId: number;\r\n name: string;\r\n species: ISpeciesModel[];\r\n color: string;\r\n description: string;\r\n defaultDurationSeconds: number;\r\n onlineBooking: boolean;\r\n isSurgery: boolean;\r\n isDropoff: boolean;\r\n isActive: boolean;\r\n isLocked: boolean;\r\n\r\n constructor(params: IAppointmentTypeModel) {\r\n super(params);\r\n this.authApplicationId = params.authApplicationId;\r\n this.appointmentTypeId = params.appointmentTypeId;\r\n this.name = params.name;\r\n this.species = params.species && params.species.map(s => new SpeciesModel(s));\r\n this.color = params.color;\r\n this.description = params.description;\r\n this.defaultDurationSeconds = params.defaultDurationSeconds;\r\n this.onlineBooking = params.onlineBooking;\r\n this.isSurgery = params.isSurgery;\r\n this.isDropoff = params.isDropoff;\r\n this.isActive = params.isActive;\r\n this.isLocked = params.isLocked;\r\n }\r\n}\r\n\r\nexport const AppointmentDurationOptions: ISelectOption[] & { disabled?: boolean } = [\r\n { value: 900, label: \"15 minutes\" },\r\n { value: 1800, label: \"30 minutes\" },\r\n { value: 2700, label: \"45 minutes\" },\r\n { value: 3600, label: \"1 hour\" },\r\n { value: 5400, label: \"1 hour 30 minutes\" },\r\n { value: 7200, label: \"2 hours\" },\r\n { value: 9000, label: \"2 hours 30 minutes\" },\r\n { value: 10800, label: \"3 hours\" }\r\n]\r\n","import { VisitAnesthesiaFormPreOpModel, IVisitAnesthesiaFormPreOpModel, VisitAnesthesiaFormSurgeryModel, IVisitAnesthesiaFormSurgeryModel, VisitAnesthesiaFormPostSurgeryModel, IVisitAnesthesiaFormPostSurgeryModel, IModel, Model, ModelRecord } from \"@common/models\"\r\n\r\nexport interface IVisitAnesthesiaFormModel extends IModel {\r\n visitAnesthesiaFormId: number;\r\n visitId: number;\r\n petId: number;\r\n preOp: IVisitAnesthesiaFormPreOpModel;\r\n surgery: IVisitAnesthesiaFormSurgeryModel;\r\n postSurgery: IVisitAnesthesiaFormPostSurgeryModel;\r\n}\r\n\r\nexport class VisitAnesthesiaFormModel extends Model implements ModelRecord {\r\n visitAnesthesiaFormId: number\r\n visitId: number\r\n petId: number\r\n preOp: VisitAnesthesiaFormPreOpModel;\r\n surgery: VisitAnesthesiaFormSurgeryModel;\r\n postSurgery: VisitAnesthesiaFormPostSurgeryModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.visitAnesthesiaFormId = _.defaultTo(params?.visitAnesthesiaFormId, 0);\r\n this.visitId = _.defaultTo(params?.visitId, 0);\r\n this.petId = _.defaultTo(params?.petId, 0);\r\n this.preOp = params?.preOp ? new VisitAnesthesiaFormPreOpModel(params.preOp) : new VisitAnesthesiaFormPreOpModel();\r\n this.surgery = params?.surgery ? new VisitAnesthesiaFormSurgeryModel(params.surgery) : new VisitAnesthesiaFormSurgeryModel();\r\n this.postSurgery = params?.postSurgery ? new VisitAnesthesiaFormPostSurgeryModel(params.postSurgery) : new VisitAnesthesiaFormPostSurgeryModel();\r\n }\r\n\r\n}\r\n","import { VisitAnesthesiaFormPreOpMedicationModel, IVisitAnesthesiaFormPreOpMedicationModel, IModel, Model, ModelRecord } from \"@common/models\"\r\nimport { ISelectOptionString } from '@common/components/forms';\r\nimport { DateTime } from \"luxon\";\r\nimport { MedicationTypes } from \"@common/models/Enums\";\r\n\r\nexport interface IVisitAnesthesiaFormPreOpModel extends IModel {\r\n visitAnesthesiaFormPreOpId: number;\r\n procedure: string;\r\n temperature: string;\r\n pulse: string;\r\n respiratoryRate: string;\r\n time: string;\r\n asaPhysicalStatus: string;\r\n ivSizeLocation: string;\r\n ivFluidType: string;\r\n startRate: string;\r\n qualityOfSedation: string;\r\n intubated: boolean | undefined;\r\n tubeSize: string;\r\n anesthesiaSystem: string;\r\n additionalNotes: string;\r\n medications: IVisitAnesthesiaFormPreOpMedicationModel[];\r\n dateCreated: string;\r\n dateUpdated: string;\r\n userUpdatedTitle: string;\r\n userUpdatedFirstName: string;\r\n userUpdatedLastName: string;\r\n}\r\n\r\nexport class VisitAnesthesiaFormPreOpModel extends Model implements ModelRecord {\r\n visitAnesthesiaFormPreOpId: number;\r\n procedure: string;\r\n temperature: string;\r\n pulse: string;\r\n respiratoryRate: string;\r\n time: string;\r\n asaPhysicalStatus: string;\r\n ivSizeLocation: string;\r\n ivFluidType: string;\r\n startRate: string;\r\n qualityOfSedation: string;\r\n intubated: boolean | undefined;\r\n tubeSize: string;\r\n anesthesiaSystem: string;\r\n additionalNotes: string;\r\n medications: VisitAnesthesiaFormPreOpMedicationModel[] = [];\r\n dateCreated: DateTime;\r\n dateUpdated: DateTime;\r\n userUpdatedTitle: string;\r\n userUpdatedFirstName: string;\r\n userUpdatedLastName: string;\r\n\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.visitAnesthesiaFormPreOpId = _.defaultTo(params?.visitAnesthesiaFormPreOpId, 0);\r\n this.procedure = _.defaultTo(params?.procedure, '');\r\n this.temperature = _.defaultTo(params?.temperature, '');\r\n this.pulse = _.defaultTo(params?.pulse, '');\r\n this.respiratoryRate = _.defaultTo(params?.respiratoryRate, '');\r\n this.time = _.defaultTo(params?.time, '');\r\n this.asaPhysicalStatus = _.defaultTo(params?.asaPhysicalStatus, '');\r\n this.ivSizeLocation = _.defaultTo(params?.ivSizeLocation, '');\r\n this.ivFluidType = _.defaultTo(params?.ivFluidType, '');\r\n this.startRate = _.defaultTo(params?.startRate, '');\r\n this.qualityOfSedation = _.defaultTo(params?.qualityOfSedation, '');\r\n this.intubated = _.defaultTo(params?.intubated, undefined);\r\n this.tubeSize = _.defaultTo(params?.tubeSize, '');\r\n this.anesthesiaSystem = _.defaultTo(params?.anesthesiaSystem, '');\r\n this.additionalNotes = _.defaultTo(params?.additionalNotes, '');\r\n\r\n if (params?.medications?.length! > 0) {\r\n _.map(params?.medications, (m) => { this.medications.push(new VisitAnesthesiaFormPreOpMedicationModel(m)) });\r\n }\r\n else {\r\n this.medications = VisitAnesthesiaFormPreOpModel.getDefaultMedications();\r\n }\r\n this.dateCreated = params?.dateCreated ? DateTime.fromISO(params.dateCreated, { zone: \"utc\" }) : DateTime.min();\r\n this.dateUpdated = params?.dateUpdated ? DateTime.fromISO(params.dateUpdated, { zone: \"utc\" }) : DateTime.min();\r\n this.userUpdatedTitle = _.defaultTo(params?.userUpdatedTitle, \"\");\r\n this.userUpdatedFirstName = _.defaultTo(params?.userUpdatedFirstName, \"\");\r\n this.userUpdatedLastName = _.defaultTo(params?.userUpdatedLastName, \"\");\r\n\r\n }\r\n\r\n static getDefaultMedications() {\r\n const defaultMedications: VisitAnesthesiaFormPreOpMedicationModel[] = [];\r\n for (const key in MedicationTypes) {\r\n if (MedicationTypes[key] == MedicationTypes[MedicationTypes.PREANESTHETIC_SEDATIVE_MEDICATIONS]) {\r\n defaultMedications.push(new VisitAnesthesiaFormPreOpMedicationModel({ medicationTypeId: MedicationTypes.PREANESTHETIC_SEDATIVE_MEDICATIONS, rowIndex: 0 }))\r\n defaultMedications.push(new VisitAnesthesiaFormPreOpMedicationModel({ medicationTypeId: MedicationTypes.PREANESTHETIC_SEDATIVE_MEDICATIONS, rowIndex: 1 }))\r\n defaultMedications.push(new VisitAnesthesiaFormPreOpMedicationModel({ medicationTypeId: MedicationTypes.PREANESTHETIC_SEDATIVE_MEDICATIONS, rowIndex: 2 }))\r\n\r\n }\r\n if (MedicationTypes[key] == MedicationTypes[MedicationTypes.ANESTHETIC_INDUCTION_MEDICATIONS]) {\r\n defaultMedications.push(new VisitAnesthesiaFormPreOpMedicationModel({ medicationTypeId: MedicationTypes.ANESTHETIC_INDUCTION_MEDICATIONS, rowIndex: 3 }))\r\n }\r\n if (MedicationTypes[key] == MedicationTypes[MedicationTypes.CONSTANT_RATE_INFUSION]) {\r\n defaultMedications.push(new VisitAnesthesiaFormPreOpMedicationModel({ medicationTypeId: MedicationTypes.CONSTANT_RATE_INFUSION, rowIndex: 4 }))\r\n }\r\n if (MedicationTypes[key] == MedicationTypes[MedicationTypes.ADDITIONAL_MEDICATIONS]) {\r\n defaultMedications.push(new VisitAnesthesiaFormPreOpMedicationModel({ medicationTypeId: MedicationTypes.ADDITIONAL_MEDICATIONS, rowIndex: 5 }))\r\n }\r\n }\r\n return defaultMedications;\r\n }\r\n\r\n}\r\n\r\nexport const asaPhysicalStatusOptions: ISelectOptionString[] = [\r\n { value: \"1\", label: \"1\" },\r\n { value: \"2\", label: \"2\" },\r\n { value: \"3\", label: \"3\" },\r\n { value: \"4\", label: \"4\" },\r\n { value: \"5\", label: \"5\" }\r\n]\r\nexport const routeSelectOptions: ISelectOptionString[] = [\r\n {\r\n label: 'IV',\r\n value: 'IV'\r\n },\r\n {\r\n label: 'IM',\r\n value: 'IM'\r\n },\r\n {\r\n label: 'PO',\r\n value: 'PO'\r\n },\r\n {\r\n label: 'SQ',\r\n value: 'SQ'\r\n },\r\n {\r\n label: 'Other',\r\n value: 'Other'\r\n }\r\n];\r\n","import { VisitAnesthesiaFormSurgeryVitalModel } from '@common/models/VisitAnesthesiaFormSurgeryVitalModel';\r\nimport { DateTimeUtils } from '@common/utils/datetimeUtils';\r\nimport { DateTime } from 'luxon';\r\nimport { textEditor } from 'react-data-grid';\r\nexport const getFormattedTimeForHeader = (number: number) => {\r\n const pad = (number: number) => number.toString().padStart(2, '0')\r\n if (number > 60) {\r\n const unroundedHours = number / 60\r\n const hours = Math.floor(number / 60);\r\n\r\n const minutes = Math.round((unroundedHours - hours) * 60);\r\n minutes.toString().padStart(2, '0')\r\n return `${hours}:${pad(minutes)}`\r\n }\r\n else if (number > -1) {\r\n return `:${pad(number)}`\r\n }\r\n else {\r\n return 'unknown'\r\n }\r\n}\r\n\r\nexport const surgeryDummyColumn = (num: number) => ({\r\n \"visitAnesthesiaFormSurgeryVitalId\": 0,\r\n \"visitAnesthesiaFormSurgeryId\": 0,\r\n \"fluidRate\": '',\r\n \"anesthesiaDepth\": '',\r\n \"iso\": '',\r\n \"o2Flow\": '',\r\n \"hr\": '',\r\n \"sP02\": '',\r\n \"temperature\": '',\r\n \"rr\": '',\r\n \"etcO2\": '',\r\n \"mm\": '',\r\n \"systolic\": '',\r\n \"diastolic\": '',\r\n \"map\": '',\r\n \"interval\": num,\r\n \"rowVersion\": \"\",\r\n \"dateCreated\": undefined,\r\n \"dateUpdated\": undefined\r\n})\r\nexport const postSurgeryDummyColumn = (num: number) => ({\r\n \"visitAnesthesiaFormPostSurgeryVitalId\": 0,\r\n \"visitAnesthesiaFormPostSurgeryId\": 0,\r\n \"temperature\": '',\r\n \"hr\": '',\r\n \"rr\": '',\r\n \"painScore\": '',\r\n \"interval\": num,\r\n \"rowVersion\": \"\",\r\n \"dateCreated\": undefined,\r\n \"dateUpdated\": undefined,\r\n})\r\nexport const addDummyColumns = (currentNumberOfVitals: number, dummyColumn: (num: number) => any) => {\r\n const twoHours = 120; // minutes\r\n const interval = 5; // minutes\r\n\r\n const numberOfColumnsToAdd = (twoHours / interval) - currentNumberOfVitals;\r\n const dummyColumns = []\r\n for (let count = 0; count <= numberOfColumnsToAdd; count++) {\r\n dummyColumns.push(dummyColumn(count + currentNumberOfVitals + 1))\r\n }\r\n return dummyColumns;\r\n}\r\n\r\n\r\n// columns variable: contains all of the properties to customize the grid column.\r\n// columns: [{ key }, {key, name, width, resizable, editor, cellClass, headerCellClass}, {}, ...etc]\r\nexport const createColumns = (\r\n {\r\n vitals,\r\n highlightedColumnIndex,\r\n surgeryHasStopped,\r\n passedClassName = \"\",\r\n timezoneName,\r\n isBody\r\n }: {\r\n vitals: VisitAnesthesiaFormSurgeryVitalModel[],\r\n highlightedColumnIndex: number,\r\n surgeryHasStopped: boolean,\r\n passedClassName: string,\r\n timezoneName?: string,\r\n isBody: boolean,\r\n }\r\n) => {\r\n const columnArray = vitals.map(({ dateCreated }, index) => {\r\n const highlightedColumn = index === highlightedColumnIndex && isBody;\r\n const disabledColumn = index > highlightedColumnIndex;\r\n const disableHighlightedColumnWhenSurgeryStopped = (surgeryHasStopped && index === highlightedColumnIndex);\r\n const columnHeader = dateCreated && timezoneName ? DateTimeUtils.getZoneDateAsLocal(dateCreated, timezoneName).toLocaleString(DateTime.TIME_SIMPLE) : ''\r\n return ({\r\n key: `${index}`,\r\n name: columnHeader,\r\n width: 90,\r\n resizable: true,\r\n editor: textEditor,\r\n /* States supported by both cell class and header class\r\n 1. disable column if surgery is stopped.\r\n 2. disable column if after the highlighted column.\r\n 3. columns can only be created when highlighted which is driven by 2 flags.\r\n i. column index\r\n ii. highlightEnabled,\r\n a. we no longer highlight a column when it has been created\r\n b. and the interval to highlight the next column resets\r\n 4. all previous columns to the current column can be edited.\r\n\r\n Note: disabling columns also have javascript logic on whether to trigger modal click event or not.\r\n onCellClick={(args, event) => {\r\n !surgeryHasStopped && checkAndOpenModal(args);\r\n }\r\n How the Timer works: located at apps/common/hooks/useGridHighlightTimer.ts\r\n 1. Currently the logic changes the inteval every 5 minutes.\r\n 2. This is changing and instead\r\n i. We reset the timer for the following conditions:\r\n a. starting the surgery starts the timer.\r\n b. saving the highlighted column restarts the timer.\r\n c. what does stopping and starting the timer do?\r\n ii. We will only ever highlight one column rightward to the last edited column.\r\n */\r\n cellClass: (disableHighlightedColumnWhenSurgeryStopped || disabledColumn) // The order of this ternary is important take care when changing.\r\n ? 'cursor-not-allowed bg-disabled'\r\n : highlightedColumn\r\n ? 'modified-col-cell cursor-pointer' + passedClassName\r\n : 'cursor-pointer', // this happens after we edit.\r\n headerCellClass: (disableHighlightedColumnWhenSurgeryStopped || disabledColumn)\r\n ? 'react-grid-petco-header cursor-not-allowed bg-disabled'\r\n : highlightedColumn\r\n ? 'react-grid-petco-header modified-header-cell' + passedClassName\r\n : 'react-grid-petco-header'\r\n })\r\n })\r\n return columnArray;\r\n} // columns: [{ key }, {}, {}, ...etc] // key is used by the rows.\r\n\r\nexport function createRows(vitals: VisitAnesthesiaFormSurgeryVitalModel[], surgeryPickKeys: string[]) {\r\n // shrunkVitals summary:\r\n // [ // Each vital, which is separated by interval, is contained in a sub array. These items look like the following:\r\n // ['1', 'Deep', '2.0', '0.3', '158', '99%', '100.1', '119', '33', '6', '120', '122', '84'],\r\n // [],[],[],[],[],[],[],[...etc]\r\n // ]\r\n\r\n const shrunkVitals = vitals.map((vital) => {\r\n const shrunkVitals = _.pick(vital, surgeryPickKeys);\r\n const vitalsAsArray = Object.values(shrunkVitals);\r\n return vitalsAsArray;\r\n })\r\n // [\r\n // [fluidRate, anesthesiaDepth, iso, o2Flow, hr, sP02, temperature, rr, etcO2, mm, systolic, diastolic, map],\r\n // [fluidRate, anesthesiaDepth, iso, o2Flow, hr, sP02, temperature, rr, etcO2, mm, systolic, diastolic, map],\r\n // ...\r\n // ]\r\n // needs to be converted to:\r\n // [\r\n // [fluidRate, fluidRate, fluidRate, fluidRate, fluidRate, fluidRate],\r\n // [anesthesiaDepth, anesthesiaDepth, anesthesiaDepth, anesthesiaDepth, anesthesiaDepth, anesthesiaDepth, anesthesiaDepth],\r\n // ...\r\n // ]\r\n const rows = [];\r\n // Iterate all of the rows and add the cells to the columns, transposing the data.\r\n for (let rowCount = 0; rowCount < shrunkVitals[0].length; rowCount++) { // There are a finite number of rows.\r\n const row: any = []\r\n for (let index = 0; index < vitals.length; index++) { // There are a finite number of rows.\r\n row.push(shrunkVitals[index][rowCount]) // add the headerKey to the object and value as the cell.\r\n }\r\n rows.push(row); // rows are now filled with cells associated with the correct column headers.\r\n }\r\n return rows;\r\n /* rows Summary:\r\n For react-data-grid rows contain cells of the table.\r\n Here is an example of what a rows looks like:\r\n [\r\n [ '1', '1', ...etc ],\r\n ['Deep', 'Deep', ...etc],\r\n ...\r\n ]\r\n */\r\n}\r\n\r\nexport const remapVitalsObjectViaTranspose = (rows: any, vitals: any) => { // currently not used but can be a helpful function in the future.\r\n // We could in theory edit inline using useForm Hooks. but this is not asked for.\r\n const transposedRows: any = [];\r\n for (let count = 0; count <= 24; count++) { transposedRows.push([]) }\r\n\r\n rows.forEach(\r\n (row: any) => {\r\n for (let cellCount = 0; cellCount < row.length; cellCount++) {\r\n const cell = row[cellCount];\r\n transposedRows[cellCount].push(cell) // creates a 2d array where each row has the different values needed in the payload object.\r\n }\r\n }\r\n )\r\n\r\n const final = transposedRows.map((rowValues: any, index: number) => {\r\n const [fluidRate, anesthesiaDepth, iso, o2Flow, hr, sP02, temperature, rr, etcO2, mm, systolic, diastolic, map] = rowValues\r\n const vital = vitals[index];\r\n return { ...vital, fluidRate, anesthesiaDepth, iso, o2Flow, hr, sP02, temperature, rr, etcO2, mm, systolic, diastolic, map }\r\n });\r\n return final;\r\n\r\n // note, \"the below content\" is not useful because gridCells would not be part of useFormHooks. but leaving as it might be useful for the modal.\r\n // const [fluidRate, anesthesiaDepth, iso, o2Flow, hr, sP02, temperature, rr, etcO2, mm, systolic, diastolic, map] = gridCells[index]\r\n // return { ...vital, fluidRate, anesthesiaDepth, iso, o2Flow, hr, sP02, temperature, rr, etcO2, mm, systolic, diastolic, map }\r\n}\r\n","import { addDummyColumns, surgeryDummyColumn } from \"@common/components/table/SurgeryGridHelpers\";\r\nimport { VisitAnesthesiaFormSurgeryVitalModel, IVisitAnesthesiaFormSurgeryVitalModel, IModel, Model, ModelRecord } from \"@common/models\"\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport interface IVisitAnesthesiaFormSurgeryModel extends IModel {\r\n visitAnesthesiaFormSurgeryId: number;\r\n anesthesiaStartTime: string;\r\n anesthesiaStopTime: string;\r\n surgeryStartTime: string;\r\n surgeryStopTime: string;\r\n complicationNotes: string;\r\n vitals: IVisitAnesthesiaFormSurgeryVitalModel[];\r\n dateCreated: string;\r\n dateUpdated: string;\r\n userUpdatedTitle: string;\r\n userUpdatedFirstName: string;\r\n userUpdatedLastName: string;\r\n}\r\n\r\nexport class VisitAnesthesiaFormSurgeryModel extends Model implements ModelRecord {\r\n visitAnesthesiaFormSurgeryId: number;\r\n anesthesiaStartTime: string;\r\n anesthesiaStopTime: string;\r\n surgeryStartTime: string;\r\n surgeryStopTime: string;\r\n complicationNotes: string;\r\n vitals: VisitAnesthesiaFormSurgeryVitalModel[] = [];\r\n dateCreated: DateTime;\r\n dateUpdated: DateTime;\r\n userUpdatedTitle: string;\r\n userUpdatedFirstName: string;\r\n userUpdatedLastName: string;\r\n vitalsLength: number;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.visitAnesthesiaFormSurgeryId = _.defaultTo(params?.visitAnesthesiaFormSurgeryId, 0);\r\n this.anesthesiaStartTime = _.defaultTo(params?.anesthesiaStartTime, '');\r\n this.anesthesiaStopTime = _.defaultTo(params?.anesthesiaStopTime, '');\r\n this.surgeryStartTime = _.defaultTo(params?.surgeryStartTime, '');\r\n this.surgeryStopTime = _.defaultTo(params?.surgeryStopTime, '');\r\n this.complicationNotes = _.defaultTo(params?.complicationNotes, '');\r\n this.vitalsLength = params?.vitals?.length || 0;\r\n _.map(params?.vitals, (m) => { this.vitals.push(new VisitAnesthesiaFormSurgeryVitalModel(m)) });\r\n this.vitals = [...addDummyColumns(this.vitals.length, surgeryDummyColumn), ...this.vitals];\r\n\r\n if (!this.anesthesiaStopTime && this.vitalsLength >= 25) {\r\n this.vitals.push(surgeryDummyColumn(this.vitalsLength + 1))\r\n }\r\n this.vitals.sort((a, b) => Number(a.interval) - Number(b.interval));\r\n this.dateCreated = params?.dateCreated ? DateTime.fromISO(params.dateCreated, { zone: \"utc\" }) : DateTime.now();\r\n this.dateUpdated = params?.dateUpdated ? DateTime.fromISO(params.dateUpdated, { zone: \"utc\" }) : DateTime.now();\r\n this.userUpdatedTitle = _.defaultTo(params?.userUpdatedTitle, \"\");\r\n this.userUpdatedFirstName = _.defaultTo(params?.userUpdatedFirstName, \"\");\r\n this.userUpdatedLastName = _.defaultTo(params?.userUpdatedLastName, \"\");\r\n }\r\n\r\n}\r\n","import { postSurgeryDummyColumn, addDummyColumns } from \"@common/components/table/SurgeryGridHelpers\";\r\nimport { VisitAnesthesiaFormPostSurgeryVitalModel, IVisitAnesthesiaFormPostSurgeryVitalModel, IModel, Model, ModelRecord } from \"@common/models\"\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport interface IVisitAnesthesiaFormPostSurgeryModel extends IModel {\r\n visitAnesthesiaFormPostSurgeryId: number;\r\n startTime: string | undefined;\r\n stopTime: string | undefined;\r\n timeOfExtubation: string;\r\n qualityOfRecovery: string;\r\n surgeryNote: string;\r\n vitals: IVisitAnesthesiaFormPostSurgeryVitalModel[];\r\n dateCreated: string;\r\n dateUpdated: string;\r\n userUpdatedTitle: string;\r\n userUpdatedFirstName: string;\r\n userUpdatedLastName: string;\r\n}\r\n\r\nexport class VisitAnesthesiaFormPostSurgeryModel extends Model implements ModelRecord {\r\n visitAnesthesiaFormPostSurgeryId: number;\r\n startTime: string;\r\n stopTime: string;\r\n timeOfExtubation: string;\r\n qualityOfRecovery: string;\r\n surgeryNote: string;\r\n vitals: VisitAnesthesiaFormPostSurgeryVitalModel[] = [];\r\n dateCreated: DateTime;\r\n dateUpdated: DateTime;\r\n userUpdatedTitle: string;\r\n userUpdatedFirstName: string;\r\n userUpdatedLastName: string;\r\n vitalsLength: number;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.visitAnesthesiaFormPostSurgeryId = _.defaultTo(params?.visitAnesthesiaFormPostSurgeryId, 0);\r\n this.startTime = _.defaultTo(params?.startTime, '');\r\n this.stopTime = _.defaultTo(params?.stopTime, '');\r\n this.timeOfExtubation = _.defaultTo(params?.timeOfExtubation, '');\r\n this.qualityOfRecovery = _.defaultTo(params?.qualityOfRecovery, '');\r\n this.surgeryNote = _.defaultTo(params?.surgeryNote, '');\r\n this.vitalsLength = params?.vitals?.length || 0;\r\n _.map(params?.vitals, (m) => { this.vitals.push(new VisitAnesthesiaFormPostSurgeryVitalModel(m)) });\r\n this.vitals = [...addDummyColumns(this.vitals.length, postSurgeryDummyColumn), ...this.vitals];\r\n if (!this.stopTime && this.vitalsLength >= 25) {\r\n this.vitals.push(postSurgeryDummyColumn(this.vitalsLength + 1))\r\n }\r\n this.vitals.sort((a, b) => Number(a.interval) - Number(b.interval));\r\n this.dateCreated = params?.dateCreated ? DateTime.fromISO(params.dateCreated, { zone: \"utc\" }) : DateTime.min();\r\n this.dateUpdated = params?.dateUpdated ? DateTime.fromISO(params.dateUpdated, { zone: \"utc\" }) : DateTime.min();\r\n this.userUpdatedTitle = _.defaultTo(params?.userUpdatedTitle, \"\");\r\n this.userUpdatedFirstName = _.defaultTo(params?.userUpdatedFirstName, \"\");\r\n this.userUpdatedLastName = _.defaultTo(params?.userUpdatedLastName, \"\");\r\n }\r\n\r\n}\r\n","import { MedicationTypeModel, IMedicationTypeModel, IModel, Model, ModelRecord } from \"@common/models\"\r\n\r\nexport interface IVisitAnesthesiaFormPreOpMedicationModel extends IModel {\r\n visitAnesthesiaFormPreOpMedicationId: number;\r\n visitAnesthesiaFormPreOpId: number;\r\n medicationTypeId: number;\r\n salesItemId: number;\r\n dose: string;\r\n totalAmount: string;\r\n route: string;\r\n site: string;\r\n timeAdmin: string;\r\n initials: string;\r\n notes: string;\r\n medicationType: IMedicationTypeModel;\r\n rowIndex: number; //this is a client side property only to track index of the collection for inline editing.\r\n\r\n}\r\n\r\nexport class VisitAnesthesiaFormPreOpMedicationModel extends Model implements ModelRecord {\r\n visitAnesthesiaFormPreOpMedicationId: number;\r\n visitAnesthesiaFormPreOpId: number;\r\n medicationTypeId: number;\r\n salesItemId: number;\r\n dose: string;\r\n totalAmount: string;\r\n route: string;\r\n site: string;\r\n timeAdmin: string;\r\n initials: string;\r\n notes: string;\r\n medicationType: MedicationTypeModel;\r\n rowIndex: number;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.visitAnesthesiaFormPreOpMedicationId = _.defaultTo(params?.visitAnesthesiaFormPreOpMedicationId, 0);\r\n this.visitAnesthesiaFormPreOpId = _.defaultTo(params?.visitAnesthesiaFormPreOpId, 0);\r\n this.medicationTypeId = _.defaultTo(params?.medicationTypeId, 0);\r\n this.salesItemId = _.defaultTo(params?.salesItemId, 0);\r\n this.dose = _.defaultTo(params?.dose, '');\r\n this.totalAmount = _.defaultTo(params?.totalAmount, '');\r\n this.route = _.defaultTo(params?.route, '');\r\n this.site = _.defaultTo(params?.site, '');\r\n this.timeAdmin = _.defaultTo(params?.timeAdmin, '');\r\n this.initials = _.defaultTo(params?.initials, '');\r\n this.notes = _.defaultTo(params?.notes, '');\r\n this.medicationType = params?.medicationType ? new MedicationTypeModel(params.medicationType) : new MedicationTypeModel();\r\n this.rowIndex = _.defaultTo(params?.rowIndex, 0);\r\n }\r\n\r\n}\r\n","import { IModel, Model, ModelRecord } from \"@common/models\"\r\nimport { StringUtility } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\nexport interface IVisitAnesthesiaFormSurgeryVitalModel extends IModel {\r\n visitAnesthesiaFormSurgeryVitalId: number;\r\n visitAnesthesiaFormSurgeryId: number;\r\n fluidRate: string;\r\n anesthesiaDepth: string;\r\n iso: string;\r\n o2Flow: string;\r\n hr: string;\r\n sP02: string;\r\n temperature: string;\r\n rr: string;\r\n etcO2: string;\r\n mm: string;\r\n systolic: string;\r\n diastolic: string;\r\n map: string;\r\n interval: number;\r\n dateCreated: string | undefined;\r\n dateUpdated: string | undefined;\r\n}\r\n\r\nexport class VisitAnesthesiaFormSurgeryVitalModel extends Model implements ModelRecord {\r\n visitAnesthesiaFormSurgeryVitalId: number;\r\n visitAnesthesiaFormSurgeryId: number;\r\n fluidRate: string;\r\n anesthesiaDepth: string;\r\n iso: string;\r\n o2Flow: string;\r\n hr: string;\r\n sP02: string;\r\n temperature: string;\r\n rr: string;\r\n etcO2: string;\r\n mm: string;\r\n systolic: string;\r\n diastolic: string;\r\n map: string;\r\n interval: number;\r\n dateCreated: DateTime | undefined;\r\n dateUpdated: DateTime | undefined;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.visitAnesthesiaFormSurgeryVitalId = _.defaultTo(params?.visitAnesthesiaFormSurgeryVitalId, 0);\r\n this.visitAnesthesiaFormSurgeryId = _.defaultTo(params?.visitAnesthesiaFormSurgeryId, 0);\r\n this.fluidRate = _.defaultTo(params?.fluidRate, '');\r\n this.anesthesiaDepth = _.defaultTo(params?.anesthesiaDepth, '');\r\n this.iso = _.defaultTo(params?.iso, '');\r\n this.o2Flow = _.defaultTo(params?.o2Flow, '');\r\n this.hr = _.defaultTo(params?.hr, '');\r\n this.sP02 = _.defaultTo(params?.sP02, '');\r\n this.temperature = _.defaultTo(params?.temperature, '');\r\n this.rr = _.defaultTo(params?.rr, '');\r\n this.etcO2 = _.defaultTo(params?.etcO2, '');\r\n this.mm = _.defaultTo(params?.mm, '');\r\n this.systolic = _.defaultTo(params?.systolic, '');\r\n this.diastolic = _.defaultTo(params?.diastolic, '');\r\n this.map = _.defaultTo(params?.map, '');\r\n this.interval = _.defaultTo(params?.interval, 0);\r\n this.dateCreated = StringUtility.SanitizeDateTimeISOAsUtc(params?.dateCreated);\r\n this.dateUpdated = StringUtility.SanitizeDateTimeISOAsUtc(params?.dateUpdated);\r\n\r\n }\r\n\r\n}\r\n","import { IModel, Model, ModelRecord } from \"@common/models\"\r\nimport { StringUtility } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport interface IVisitAnesthesiaFormPostSurgeryVitalModel extends IModel {\r\n visitAnesthesiaFormPostSurgeryVitalId: number;\r\n visitAnesthesiaFormPostSurgeryId: number;\r\n temperature: string;\r\n hr: string;\r\n rr: string;\r\n painScore: string;\r\n interval: number;\r\n dateCreated: string | undefined;\r\n dateUpdated: string | undefined;\r\n}\r\n\r\nexport class VisitAnesthesiaFormPostSurgeryVitalModel extends Model implements ModelRecord {\r\n visitAnesthesiaFormPostSurgeryVitalId: number;\r\n visitAnesthesiaFormPostSurgeryId: number;\r\n temperature: string;\r\n hr: string;\r\n rr: string;\r\n painScore: string;\r\n interval: number;\r\n dateCreated: DateTime | undefined;\r\n dateUpdated: DateTime | undefined;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.visitAnesthesiaFormPostSurgeryVitalId = _.defaultTo(params?.visitAnesthesiaFormPostSurgeryVitalId, 0);\r\n this.visitAnesthesiaFormPostSurgeryId = _.defaultTo(params?.visitAnesthesiaFormPostSurgeryId, 0);\r\n this.temperature = _.defaultTo(params?.temperature, '');\r\n this.hr = _.defaultTo(params?.hr, '');\r\n this.rr = _.defaultTo(params?.rr, '');\r\n this.painScore = _.defaultTo(params?.painScore, '');\r\n this.interval = _.defaultTo(params?.interval, 0);\r\n this.dateCreated = StringUtility.SanitizeDateTimeISOAsUtc(params?.dateCreated);\r\n this.dateUpdated = StringUtility.SanitizeDateTimeISOAsUtc(params?.dateUpdated);\r\n\r\n }\r\n\r\n}\r\n","import { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IMedicationTypeModel extends IModel {\r\n medicationTypeId: number;\r\n name: string;\r\n \r\n}\r\n\r\nexport class MedicationTypeModel extends Model implements ModelRecord {\r\n medicationTypeId: number;\r\n name: string;\r\n \r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.medicationTypeId = _.defaultTo(params?.medicationTypeId, 0);\r\n this.name = _.defaultTo(params?.name, '');\r\n \r\n }\r\n}\r\n","export interface IStorageContentModel {\r\n storageContentId: number;\r\n storageContentUrl: string;\r\n container: string;\r\n fileName: string;\r\n sasToken: string | undefined;\r\n}\r\nexport class StorageContentModel implements IStorageContentModel {\r\n storageContentId: number;\r\n storageContentUrl: string;\r\n container: string;\r\n fileName: string;\r\n sasToken: string | undefined;\r\n\r\n constructor(params: Partial = {} as IStorageContentModel) {\r\n const {\r\n storageContentId = 0,\r\n storageContentUrl = \"\",\r\n container = \"\",\r\n fileName = \"\",\r\n sasToken = undefined\r\n } = params;\r\n\r\n this.storageContentId = storageContentId;\r\n this.storageContentUrl = storageContentUrl;\r\n this.container = container;\r\n this.fileName = fileName;\r\n this.sasToken = sasToken;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { AutoRecommendationTypeModel, RecommendationTypeModel } from \".\";\r\nimport { IModel, Model, ModelRecord, } from \"./Model\";\r\nimport { StorageContentModel } from \"./StorageContentModel\";\r\n\r\nexport interface IAssessmentRecommendationModel extends IModel {\r\n assessmentRecommendationId: number;\r\n assessmentReferralId: number;\r\n name: string;\r\n description: string;\r\n sortOrder: number;\r\n isActive: boolean;\r\n\r\n attachmentStorageContentId: number | undefined;\r\n attachmentStorageContent: StorageContentModel | undefined;\r\n\r\n recommendationTypeId: number;\r\n recommendationType: RecommendationTypeModel | undefined;\r\n\r\n autoRecommendationTypeId: number| undefined;\r\n autoRecommendationType: AutoRecommendationTypeModel | undefined;\r\n autoRecommendationValue: string;\r\n}\r\n\r\nexport class AssessmentRecommendationModel extends Model implements ModelRecord {\r\n assessmentRecommendationId: number;\r\n assessmentReferralId: number;\r\n name: string;\r\n description: string;\r\n sortOrder: number;\r\n isActive: boolean;\r\n\r\n attachmentStorageContentId: number | undefined;\r\n attachmentStorageContent: StorageContentModel | undefined;\r\n\r\n recommendationTypeId: number;\r\n recommendationType: RecommendationTypeModel | undefined;\r\n\r\n autoRecommendationTypeId: number| undefined;\r\n autoRecommendationType: AutoRecommendationTypeModel | undefined;\r\n autoRecommendationValue: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.assessmentRecommendationId = defaultTo(params?.assessmentRecommendationId, 0);\r\n this.assessmentReferralId = defaultTo(params?.assessmentReferralId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.description = defaultTo(params?.description, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 999);\r\n this.isActive = defaultTo(params?.isActive, true);\r\n\r\n this.attachmentStorageContentId = defaultTo(params?.attachmentStorageContentId, undefined);\r\n this.attachmentStorageContent = params?.attachmentStorageContent ? new StorageContentModel(params.attachmentStorageContent) : undefined;\r\n\r\n this.recommendationTypeId = defaultTo(params?.recommendationTypeId, 0);\r\n this.recommendationType = params?.recommendationType ? new RecommendationTypeModel(params?.recommendationType) : undefined;\r\n\r\n this.autoRecommendationTypeId = defaultTo(params?.autoRecommendationTypeId, undefined);\r\n this.autoRecommendationType = params?.autoRecommendationType ? new AutoRecommendationTypeModel(params?.autoRecommendationType) : undefined;\r\n this.autoRecommendationValue = defaultTo(params?.autoRecommendationValue, '');\r\n }\r\n}\r\n","import { defaultTo, map } from \"lodash\";\r\nimport { AssessmentRecommendationModel, IModel, Model, ModelRecord, StorageContentModel } from \"@common/models\";\r\n\r\nexport interface IAssessmentReferralModel extends IModel {\r\n assessmentReferralId: number;\r\n name: string;\r\n description: string;\r\n sortOrder: number;\r\n isActive: boolean;\r\n attachmentStorageContentId: number | undefined;\r\n attachmentStorageContent: StorageContentModel | undefined;\r\n assessmentRecommendations: AssessmentRecommendationModel[];\r\n}\r\n\r\nexport class AssessmentReferralModel extends Model implements ModelRecord {\r\n assessmentReferralId: number;\r\n name: string;\r\n description: string;\r\n sortOrder: number;\r\n isActive: boolean;\r\n attachmentStorageContentId: number | undefined;\r\n attachmentStorageContent: StorageContentModel | undefined;\r\n assessmentRecommendations: AssessmentRecommendationModel[] = [];\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.assessmentReferralId = defaultTo(params?.assessmentReferralId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.description = defaultTo(params?.description, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.isActive = defaultTo(params?.isActive, true);\r\n this.attachmentStorageContentId = defaultTo(params?.attachmentStorageContentId, undefined);\r\n this.attachmentStorageContent = params?.attachmentStorageContent ? new StorageContentModel(params.attachmentStorageContent) : undefined;\r\n map(params?.assessmentRecommendations, (ar) => { this.assessmentRecommendations.push(new AssessmentRecommendationModel(ar)) });\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IAutoRecommendationTypeModel extends IModel {\r\n autoRecommendationTypeId: number;\r\n name: string;\r\n isActive: boolean;\r\n needsValue: boolean;\r\n}\r\n\r\nexport class AutoRecommendationTypeModel extends Model implements ModelRecord {\r\n autoRecommendationTypeId: number;\r\n name: string;\r\n isActive: boolean;\r\n needsValue: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.autoRecommendationTypeId = defaultTo(params?.autoRecommendationTypeId, 0);\r\n this.name = defaultTo(params?.name, \"\");\r\n this.isActive = defaultTo(params?.isActive, true);\r\n this.needsValue = defaultTo(params?.needsValue, false);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \".\";\r\n\r\nexport interface IAutoAddToVisitTypeModel extends IModel {\r\n autoAddToVisitTypeId: number;\r\n name: string;\r\n}\r\n\r\nexport class AutoAddToVisitTypeModel extends Model implements ModelRecord {\r\n autoAddToVisitTypeId: number;\r\n name: string;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.autoAddToVisitTypeId = defaultTo(params?.autoAddToVisitTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","export interface IBlobSasModel {\r\n modelId: number,\r\n modelTypeName: string,\r\n fileName: string,\r\n container: string,\r\n sasUrl: string,\r\n sasToken: string,\r\n issueDate: string\r\n}\r\n\r\nexport class BlobSasModel implements IBlobSasModel {\r\n modelId: number;\r\n modelTypeName: string;\r\n fileName: string;\r\n container: string;\r\n sasUrl: string;\r\n sasToken: string;\r\n issueDate: string;\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n modelId = 0,\r\n modelTypeName = '',\r\n fileName = '',\r\n container = '',\r\n sasUrl = '',\r\n sasToken = '',\r\n issueDate = ''\r\n } = params;\r\n\r\n this.modelId = modelId;\r\n this.modelTypeName = modelTypeName;\r\n this.fileName = fileName;\r\n this.container = container;\r\n this.sasUrl = sasUrl;\r\n this.sasToken = sasToken;\r\n this.issueDate = issueDate;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, ModelRecord } from \".\";\r\n\r\nexport interface IBrandModel extends IModel {\r\n brandId: number;\r\n name: string;\r\n sourceSystemKey: string | undefined;\r\n sourceSystemId: number;\r\n}\r\n\r\nexport interface IBrandModelUIFields {\r\n legalBackerHTML: string | undefined;//UI Only field\r\n}\r\n\r\nexport class BrandModel implements ModelRecord {\r\n rowVersion: string;\r\n brandId: number;\r\n name: string;\r\n sourceSystemKey: string | undefined;\r\n sourceSystemId: number;\r\n legalBackerHTML: string | undefined;//UI Only field\r\n\r\n constructor(init?: Partial) {\r\n this.rowVersion = defaultTo(init?.rowVersion, '');\r\n this.brandId = defaultTo(init?.brandId, 0);\r\n this.name = defaultTo(init?.name, '');\r\n this.sourceSystemKey = defaultTo(init?.sourceSystemKey, '');\r\n this.sourceSystemId = defaultTo(init?.sourceSystemId, 0);\r\n this.legalBackerHTML = defaultTo(init?.legalBackerHTML, undefined);\r\n }\r\n}\r\n","import { IPGRBreedModel, ISpeciesModel, IIdexxBreedModel, PGRBreedModel, SpeciesModel, IdexxBreedModel } from \".\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, } from \"./Model\";\r\n\r\nexport interface IBreedModel extends IModel {\r\n breedId: number;\r\n name: string;\r\n speciesId: number;\r\n species: ISpeciesModel;\r\n pgrBreed: IPGRBreedModel;\r\n pgrBreedId: number;\r\n idexxBreedId: number;\r\n idexxBreed: IIdexxBreedModel;\r\n}\r\n\r\nexport class BreedModel extends Model implements ModelRecord {\r\n breedId: number;\r\n name: string;\r\n speciesId: number;\r\n species: SpeciesModel;\r\n pgrBreedId: number;\r\n pgrBreed: PGRBreedModel;\r\n idexxBreedId: number;\r\n idexxBreed: IdexxBreedModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.breedId = defaultTo(params?.breedId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.speciesId = defaultTo(params?.speciesId, 0);\r\n this.species = params?.species ? new SpeciesModel(params.species) : new SpeciesModel();\r\n this.pgrBreedId = defaultTo(params?.pgrBreedId, 0);\r\n this.pgrBreed = params?.pgrBreed ? new PGRBreedModel(params.pgrBreed) : new PGRBreedModel();\r\n this.idexxBreedId = defaultTo(params?.idexxBreedId, 0);\r\n this.idexxBreed = params?.idexxBreed ? new IdexxBreedModel(params.idexxBreed) : new IdexxBreedModel();\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IBusinessLineModel extends IModel {\r\n businessLineId: number;\r\n name: string;\r\n \r\n}\r\n\r\nexport class BusinessLineModel extends Model implements ModelRecord {\r\n businessLineId: number;\r\n name: string;\r\n \r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.businessLineId = defaultTo(params?.businessLineId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface ICallCodeModel extends IModel {\r\n callCodeId: number;\r\n name: string;\r\n isSystemGenerated: boolean;\r\n}\r\n\r\nexport class CallCodeModel extends Model implements ModelRecord {\r\n callCodeId: number;\r\n name: string;\r\n isSystemGenerated: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.callCodeId = defaultTo(params?.callCodeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.isSystemGenerated = defaultTo(params?.isSystemGenerated, false);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface ICallOriginModel extends IModel {\r\n callOriginId: number;\r\n name: string;\r\n isSystemGenerated: boolean;\r\n}\r\n\r\nexport class CallOriginModel extends Model implements ModelRecord {\r\n callOriginId: number;\r\n name: string;\r\n isSystemGenerated: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.callOriginId = defaultTo(params?.callOriginId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.isSystemGenerated = defaultTo(params?.isSystemGenerated, false);\r\n }\r\n}\r\n","import { IModel, Model, ModelRecord, IPhotoModel, PhotoModel } from \"@common/models\";\r\nimport { DateTimeUtils } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport interface IClientCommunicationListingModel extends IModel {\r\n communicationId: number;\r\n communicationMethodId: number;\r\n communicationDirectionId: number;\r\n content: string;\r\n storeId: number | undefined;\r\n storeName: string | undefined;\r\n dateCreated: string;\r\n readDate: string | undefined;\r\n readByName:string | undefined;\r\n sentByName: string | undefined;\r\n outboundSentByName: string | undefined;\r\n photos: IPhotoModel[];\r\n}\r\n\r\nexport class ClientCommunicationListingModel extends Model implements ModelRecord {\r\n communicationId: number;\r\n communicationMethodId: number;\r\n communicationDirectionId: number;\r\n content: string;\r\n storeId: number | undefined;\r\n storeName: string | undefined;\r\n dateCreated: DateTime;\r\n readDate: DateTime | undefined;\r\n readByName:string | undefined;\r\n sentByName: string | undefined;\r\n outboundSentByName: string | undefined;\r\n photos: IPhotoModel[];\r\n\r\n constructor(params?: Partial){\r\n super(params);\r\n this.communicationId = _.defaultTo(params?.communicationId, 0);\r\n this.communicationMethodId = _.defaultTo(params?.communicationMethodId, 0);\r\n this.communicationDirectionId = _.defaultTo(params?.communicationDirectionId, 0);\r\n this.content = _.defaultTo(params?.content, \"\");\r\n this.storeId = _.defaultTo(params?.storeId, 0);\r\n this.storeName = _.defaultTo(params?.storeName, \"\");\r\n this.dateCreated = DateTimeUtils.getAsDateTimeUTC(params?.dateCreated)!\r\n this.readDate = DateTimeUtils.getAsDateTimeUTC(params?.readDate)!\r\n this.sentByName = _.defaultTo(params?.sentByName??params?.outboundSentByName, \"\");\r\n this.readByName = _.defaultTo(params?.readByName, \"\");\r\n this.photos = params?.photos ? params?.photos.map(p => new PhotoModel(p)) : [] as PhotoModel[];\r\n }\r\n}\r\n","\r\nexport interface IClientListingModel {\r\n ClientId: string, //2\r\n FirstName: string, //Joe\r\n LastName: string, //Jones\r\n FullName: string //Jones, Joe,\r\n AlternatePetParentName: string //Sam,\r\n EmailAddress: string, //joejones@gmail.com,\r\n HomePhone: string, //123-123-1234\r\n CellPhone: string, //123-123-1234\r\n AlternatePhone: string,//123-123-1234\r\n Address: string, //123 Elm St,\r\n Address2: string, //Apt 1,\r\n City: string, //New York,\r\n State: string, //NY,\r\n LastVisitDate: string | undefined,\r\n CanCall: boolean,\r\n CanSMS: boolean,\r\n IsActive: boolean,\r\n /* Other fields in search result but not used. */\r\n //\"ExternalSystemName\":undefined,\r\n //\"ExternalSystemId\":undefined,\r\n //\"ExternalSystemUri\":undefined,\r\n //\"@search.score\":1.6099695,\r\n //\"IsOKToSMS\":true,\r\n //\"PALSNumber\":undefined,\r\n //\"IsOKToSMSCellPhone\":false,\r\n //\"IsOKToSMSHomePhone\":false,\r\n //\"IsOKToSMSAlternatePhone\":false,\r\n //\"PGRMasterId\":undefined,\r\n //\"ClientIds\":[]\r\n}\r\n\r\nexport class ClientListingModel implements IClientListingModel {\r\n ClientId: string;\r\n FirstName: string;\r\n LastName: string;\r\n FullName: string;\r\n AlternatePetParentName: string;\r\n EmailAddress: string;\r\n HomePhone: string;\r\n CellPhone: string;\r\n AlternatePhone: string;\r\n Address: string;\r\n Address2: string;\r\n City: string;\r\n State: string;\r\n LastVisitDate: string | undefined;\r\n CanCall: boolean;\r\n CanSMS: boolean;\r\n IsActive: boolean;\r\n\r\n constructor(params: IClientListingModel) {\r\n this.ClientId = params.ClientId;\r\n this.FirstName = params.FirstName;\r\n this.LastName = params.LastName;\r\n this.FullName = params.FullName;\r\n this.AlternatePetParentName = params.AlternatePetParentName;\r\n this.EmailAddress = params.EmailAddress;\r\n this.HomePhone = params.HomePhone;\r\n this.CellPhone = params.CellPhone;\r\n this.AlternatePhone = params.AlternatePhone;\r\n this.Address = params.Address;\r\n this.Address2 = params.Address2;\r\n this.City = params.City;\r\n this.State = params.State;\r\n this.LastVisitDate = params.LastVisitDate;\r\n this.CanCall = params.CanCall;\r\n this.CanSMS = params.CanSMS;\r\n this.IsActive = params.IsActive;\r\n }\r\n}\r\n","export interface IClientVerificationRequest {\r\n phone: string;\r\n email: string;\r\n}\r\n\r\nexport class ClientVerificationRequest implements IClientVerificationRequest {\r\n phone: string;\r\n email: string;\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n phone = '',\r\n email = ''\r\n } = params;\r\n\r\n this.phone = phone;\r\n this.email = email;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport interface IClinicIncentiveModel extends IModel {\r\n clinicIncentiveId: number;\r\n clinicIncentivePeriodId: number;\r\n storeId: number;\r\n targetAOV: number;\r\n partnerPayout: number;\r\n storeCode: string;\r\n dispatchDistrict: string;\r\n state: string;\r\n periodName: string;\r\n startDate: string | null;\r\n endDate: string | null;\r\n}\r\n\r\nexport class ClinicIncentiveModel extends Model implements ModelRecord {\r\n clinicIncentiveId: number;\r\n clinicIncentivePeriodId: number;\r\n storeId: number;\r\n targetAOV: number;\r\n partnerPayout: number;\r\n storeCode: string;\r\n dispatchDistrict: string;\r\n state: string;\r\n periodName: string;\r\n startDate: DateTime | undefined;\r\n endDate: DateTime | undefined;\r\n\r\n constructor(params?: IClinicIncentiveModel) {\r\n super(params);\r\n this.clinicIncentiveId = defaultTo(params?.clinicIncentiveId, 0);\r\n this.clinicIncentivePeriodId = defaultTo(params?.clinicIncentivePeriodId, 0);\r\n this.storeId = defaultTo(params?.storeId, 0);\r\n this.targetAOV = defaultTo(params?.targetAOV, 0.0);\r\n this.partnerPayout = defaultTo(params?.partnerPayout, 0.0);\r\n this.storeCode = defaultTo(params?.storeCode, '');\r\n this.dispatchDistrict = defaultTo(params?.dispatchDistrict, '');\r\n this.state = defaultTo(params?.state, '');\r\n this.periodName = defaultTo(params?.periodName, '');\r\n this.startDate = (params?.startDate) ? DateTime.fromISO(params?.startDate, { zone: \"utc\" }) : undefined;\r\n this.endDate = (params?.endDate) ? DateTime.fromISO(defaultTo(params?.endDate, \"2000-01-01\"), { zone: \"utc\" }) : undefined;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\"\r\nimport { IModel, Model, ModelRecord } from \"./Model\"\r\n\r\nexport interface IClinicIncentivePeriodModel extends IModel {\r\n clinicIncentivePeriodId: number;\r\n name: string;\r\n startDate: string;\r\n endDate: string|undefined; \r\n}\r\n\r\nexport class ClinicIncentivePeriodModel extends Model implements ModelRecord {\r\n clinicIncentivePeriodId: number;\r\n name: string;\r\n startDate: string;\r\n endDate: string|undefined;\r\n \r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.clinicIncentivePeriodId = defaultTo(params?.clinicIncentivePeriodId, 0);\r\n this.name = defaultTo(params?.name, \"\");\r\n this.startDate = defaultTo(params?.startDate, \"\");\r\n this.endDate = defaultTo(params?.endDate, undefined);\r\n }\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { IModel, ModelRecord, Model } from './Model';\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface IClinicRoleTypeModel extends IModel {\r\n clinicRoleTypeId: number,\r\n name: string | undefined\r\n}\r\n\r\nexport class ClinicRoleTypeModel extends Model implements ModelRecord {\r\n clinicRoleTypeId: number;\r\n name: string | undefined; \r\n constructor(params?: Partial) {\r\n super(params);\r\n this.clinicRoleTypeId = defaultTo(params?.clinicRoleTypeId, 0); \r\n this.name = StringUtility.SanitizeStringWithEmpty(defaultTo(params?.name, ''));\r\n }\r\n}\r\n","import { ClinicRoleTypeModel, IClinicRoleTypeModel } from './ClinicRoleTypeModel';\r\nimport { IModel, ModelRecord, Model } from './Model';\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface IClinicRoleModel extends IModel {\r\n clinicRoleId: number;\r\n name: string | undefined;\r\n displayName: string | undefined;\r\n abbreviation: string | undefined;\r\n desiredMaxUsers: number;\r\n isVetAssistant: boolean;\r\n isDVM: boolean;\r\n clinicRoleTypeId: number;\r\n sortOrder: number;\r\n clinicRoleType: IClinicRoleTypeModel;\r\n}\r\n\r\nexport class ClinicRoleModel extends Model implements ModelRecord {\r\n clinicRoleId: number;\r\n name: string | undefined;\r\n displayName: string | undefined;\r\n abbreviation: string | undefined;\r\n desiredMaxUsers: number;\r\n isVetAssistant: boolean;\r\n isDVM: boolean;\r\n clinicRoleTypeId: number;\r\n sortOrder: number;\r\n clinicRoleType: ClinicRoleTypeModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.clinicRoleId = defaultTo(params?.clinicRoleId, 0); \r\n this.name = defaultTo(params?.name, '');\r\n this.displayName = defaultTo(params?.displayName, '');\r\n this.abbreviation = defaultTo(params?.abbreviation, '');\r\n this.desiredMaxUsers = defaultTo(params?.desiredMaxUsers, 0);\r\n this.isVetAssistant = defaultTo(params?.isVetAssistant, false);\r\n this.isDVM = defaultTo(params?.isDVM, false);\r\n this.clinicRoleTypeId = defaultTo(params?.clinicRoleTypeId, 0);\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.clinicRoleType = params?.clinicRoleType ? new ClinicRoleTypeModel(params?.clinicRoleType) : new ClinicRoleTypeModel();\r\n }\r\n\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { IModel, ISalesItemModel, Model, SalesItemModel } from \".\";\r\n\r\nexport interface IClinicSalesItems extends IModel {\r\n clinicId: number;\r\n salesDate: string;\r\n salesItems: ISalesItemModel[];\r\n}\r\n\r\nexport class ClinicSalesItems extends Model implements Record{\r\n clinicId: number;\r\n salesDate: DateTime;\r\n salesItems: SalesItemModel[];\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.clinicId = defaultTo(params.clinicId, 0);\r\n this.salesDate = DateTime.fromISO(defaultTo(params.salesDate, \"2000-01-01\"), { zone: \"utc\" })\r\n this.salesItems = (params.salesItems ?? []).map(si => new SalesItemModel(si));\r\n }\r\n}\r\n","import { IModel, Model } from \"@common/models/Model\";\r\n\r\nexport interface IClientCommunicationStatModel extends IModel {\r\n clientCommunicationStatId: number;\r\n clientId: number;\r\n unreadMessageCount: number;\r\n lastReadCommunicationId: number;\r\n}\r\n\r\nexport class ClientCommunicationStatModel extends Model implements IClientCommunicationStatModel {\r\n clientCommunicationStatId: number;\r\n clientId: number;\r\n unreadMessageCount: number;\r\n lastReadCommunicationId: number;\r\n\r\n constructor(params?:Partial) {\r\n super(params);\r\n this.clientCommunicationStatId = _.defaultTo(params?.clientCommunicationStatId, 0);\r\n this.clientId = _.defaultTo(params?.clientId, 0);\r\n this.unreadMessageCount = _.defaultTo(params?.unreadMessageCount, 0);\r\n this.lastReadCommunicationId = _.defaultTo(params?.lastReadCommunicationId, 0);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IClinicTaskAssigneeListingModel extends IModel {\r\n clinicTaskAssigneeId: number;\r\n clinicTaskId: number;\r\n dateCreated: string;\r\n authRoleId: number | undefined;\r\n userId: number | undefined;\r\n roleName: string | undefined;\r\n userFirstName: string | undefined;\r\n userLastName: string | undefined;\r\n userTitle: string | undefined;\r\n}\r\n\r\nexport class ClinicTaskAssigneeListingModel extends Model implements ModelRecord\r\n{\r\n clinicTaskAssigneeId: number;\r\n clinicTaskId: number;\r\n dateCreated: DateTime;\r\n authRoleId: number | undefined;\r\n userId: number | undefined;\r\n roleName: string | undefined;\r\n userFirstName: string | undefined;\r\n userLastName: string | undefined;\r\n userTitle: string | undefined;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.clinicTaskAssigneeId = defaultTo(params.clinicTaskAssigneeId, 0)\r\n this.clinicTaskId = defaultTo(params.clinicTaskId, 0)\r\n this.dateCreated = DateTime.fromISO(defaultTo(params.dateCreated, \"2000-01-01\"), { zone: \"utc\" });\r\n this.authRoleId = defaultTo(params.authRoleId, undefined)\r\n this.userId = defaultTo(params.userId, undefined)\r\n this.roleName = defaultTo(params.roleName, undefined)\r\n this.userFirstName = defaultTo(params.userFirstName, undefined)\r\n this.userLastName = defaultTo(params.userLastName, undefined)\r\n this.userTitle = defaultTo(params.userTitle, undefined)\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IClinicTaskFollowupListingModel extends IModel {\r\n clinicTaskFollowupId: number;\r\n clinicTaskId: number;\r\n dateCreated: string;\r\n userFirstName: string;\r\n userLastName: string;\r\n userTitle: string;\r\n comment: string;\r\n}\r\n\r\nexport class ClinicTaskFollowupListingModel extends Model implements ModelRecord {\r\n clinicTaskFollowupId: number;\r\n clinicTaskId: number;\r\n dateCreated: DateTime;\r\n userFirstName: string;\r\n userLastName: string;\r\n userTitle: string;\r\n comment: string;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.clinicTaskFollowupId = defaultTo(params.clinicTaskFollowupId, 0);\r\n this.clinicTaskId = defaultTo(params.clinicTaskId, 0);\r\n this.dateCreated = DateTime.fromISO(defaultTo(params.dateCreated, \"2000-01-01\"), { zone: \"utc\" });\r\n this.userFirstName = defaultTo(params.userFirstName, \"\");\r\n this.userLastName = defaultTo(params.userLastName, \"\");\r\n this.userTitle = defaultTo(params.userTitle, \"\");\r\n this.comment = defaultTo(params.comment, \"\");\r\n }\r\n\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { ClinicTaskAssigneeListingModel, IClinicTaskAssigneeListingModel } from \"./ClinicTaskAssigneeListingModel\";\r\nimport { ClinicTaskFollowupListingModel, IClinicTaskFollowupListingModel } from \"./ClinicTaskFollowupListingModel\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\nexport interface IClinicTaskListingModel extends IModel {\r\n clinicTaskId: number;\r\n hospitalId: number;\r\n clinicTaskTypeId: number;\r\n clinicTaskType: string;\r\n clinicTaskStatusId: number;\r\n clinicTaskStatus: string;\r\n clientId: number | undefined;\r\n clientFirstName: string | undefined;\r\n clientLastName: string | undefined;\r\n petId: number | undefined;\r\n petName: string | undefined;\r\n dateCreated: string;\r\n dueDate: string;\r\n closedDate: string | undefined;\r\n notes: string;\r\n isUrgent: boolean;\r\n creatorFirstName: string;\r\n creatorLastName: string;\r\n creatorTitle: string;\r\n assignees: IClinicTaskAssigneeListingModel[];\r\n followups: IClinicTaskFollowupListingModel[];\r\n resolvedBy: string | undefined;\r\n}\r\nexport class ClinicTaskListingModel extends Model implements ModelRecord {\r\n clinicTaskId: number;\r\n hospitalId: number;\r\n clinicTaskTypeId: number;\r\n clinicTaskType: string;\r\n clinicTaskStatusId: number;\r\n clinicTaskStatus: string;\r\n clientId: number | undefined;\r\n clientFirstName: string | undefined;\r\n clientLastName: string | undefined;\r\n petId: number | undefined;\r\n petName: string | undefined;\r\n dateCreated: DateTime;\r\n dueDate: DateTime;\r\n closedDate: DateTime | undefined;\r\n notes: string;\r\n isUrgent: boolean;\r\n creatorFirstName: string;\r\n creatorLastName: string;\r\n creatorTitle: string;\r\n assignees: ClinicTaskAssigneeListingModel[];\r\n followups: ClinicTaskFollowupListingModel[];\r\n resolvedBy: string |undefined;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.clinicTaskId = defaultTo(params.clinicTaskId, 0);\r\n this.hospitalId = defaultTo(params.hospitalId, 0);\r\n this.clinicTaskTypeId = defaultTo(params.clinicTaskTypeId, 0);\r\n this.clinicTaskType = defaultTo(params.clinicTaskType, \"\");\r\n this.clinicTaskStatusId = defaultTo(params.clinicTaskStatusId, 0);\r\n this.clinicTaskStatus = defaultTo(params.clinicTaskStatus, \"\");\r\n this.clientId = defaultTo(params.clientId, undefined);\r\n this.clientFirstName = defaultTo(params.clientFirstName, undefined);\r\n this.clientLastName = defaultTo(params.clientLastName, undefined);\r\n this.petId = defaultTo(params.petId, undefined);\r\n this.petName = defaultTo(params.petName, undefined);\r\n this.dateCreated = DateTime.fromISO(defaultTo(params.dateCreated, \"2000-01-01\"), { zone: \"utc\" });\r\n this.dueDate = DateTime.fromISO(defaultTo(params.dueDate, \"2000-01-01\"), { zone: \"utc\" });\r\n this.closedDate = params.closedDate ? DateTime.fromISO(params.closedDate, { zone: \"utc\" }) : undefined;\r\n this.notes = defaultTo(params.notes, \"\");\r\n this.isUrgent = defaultTo(params.isUrgent, false);\r\n this.creatorFirstName = defaultTo(params.creatorFirstName, \"\");\r\n this.creatorLastName = defaultTo(params.creatorLastName, \"\");\r\n this.creatorTitle = defaultTo(params.creatorTitle, \"\");\r\n this.assignees = defaultTo(params.assignees, []).map(a => new ClinicTaskAssigneeListingModel(a));\r\n this.followups = defaultTo(params.followups, []).map(f => new ClinicTaskFollowupListingModel(f));\r\n this.resolvedBy = defaultTo(params.resolvedBy, undefined);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\"\r\nimport { IModel, Model, ModelRecord } from \"./Model\"\r\n\r\nexport interface IClinicTaskTypeModel extends IModel {\r\n clinicTaskTypeId: number;\r\n name: string;\r\n description: string;\r\n defaultDurationMins: number;\r\n isActive: boolean;\r\n}\r\n\r\nexport class ClinicTaskTypeModel extends Model implements ModelRecord {\r\n clinicTaskTypeId: number;\r\n name: string;\r\n description: string;\r\n defaultDurationMins: number;\r\n isActive: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.clinicTaskTypeId = defaultTo(params?.clinicTaskTypeId, 0);\r\n this.name = defaultTo(params?.name, \"\");\r\n this.description = defaultTo(params?.description, \"\");\r\n this.defaultDurationMins = defaultTo(params?.defaultDurationMins, 0);\r\n this.isActive = defaultTo(params?.isActive, true);\r\n }\r\n}\r\n","export interface IClinicUserListingModel {\r\n userId: number\r\n clinicId: number\r\n storeId: number\r\n storeCode: string | undefined\r\n scheduledStartDate: string | undefined\r\n address: string | undefined\r\n marketName: string | undefined\r\n joinedDate: string | undefined\r\n}\r\n\r\nexport class ClinicUserListingModel implements IClinicUserListingModel {\r\n userId: number;\r\n clinicId: number;\r\n storeId: number;\r\n storeCode: string | undefined;\r\n scheduledStartDate: string | undefined;\r\n address: string | undefined;\r\n marketName: string | undefined;\r\n joinedDate: string | undefined;\r\n\r\n constructor(params: Partial) {\r\n const {\r\n userId = 0,\r\n clinicId = 0,\r\n storeId = 0,\r\n storeCode = undefined,\r\n scheduledStartDate = undefined,\r\n address = undefined,\r\n marketName = undefined,\r\n joinedDate = undefined\r\n } = params;\r\n\r\n this.userId = userId;\r\n this.clinicId = clinicId;\r\n this.storeId = storeId;\r\n this.storeCode = storeCode;\r\n this.scheduledStartDate = scheduledStartDate;\r\n this.address = address;\r\n this.marketName = marketName;\r\n this.joinedDate = joinedDate;\r\n }\r\n}\r\n","export interface IPhotoRequest {\r\n container: string;\r\n fileName: string;\r\n photoUrl: string;\r\n}\r\n\r\nexport interface IPhotoModel extends IPhotoRequest {\r\n photoId: number;\r\n processedPhotoBaseUrl: string\r\n}\r\n\r\nexport class PhotoModel implements IPhotoModel {\r\n photoId: number;\r\n container: string;\r\n fileName: string;\r\n photoUrl: string;\r\n processedPhotoBaseUrl: string;\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n photoId = 0,\r\n container = '',\r\n fileName = '',\r\n photoUrl = '',\r\n processedPhotoBaseUrl = '',\r\n } = params;\r\n\r\n this.photoId = photoId;\r\n this.container = container;\r\n this.fileName = fileName;\r\n this.photoUrl = photoUrl;\r\n this.processedPhotoBaseUrl = processedPhotoBaseUrl;\r\n }\r\n}\r\n","import {\r\n\tIHospitalScheduleModel,\r\n\tHospitalScheduleModel,\r\n\tILicenseModel,\r\n\tIVeterinarianSignatureModel,\r\n\tLicenseModel,\r\n\tVeterinarianSignatureModel,\r\n\tschedule,\r\n} from \"@common/models\";\r\nimport { computed, makeObservable, observable } from \"mobx\";\r\nimport { IModel } from \"@common/models/Model\";\r\nimport { petcoPewterBlue } from \"@common/_assets/color-constants.js\";\r\n\r\nexport interface IVeterinarianModel extends IModel {\r\n\tveterinarianId: number;\r\n\ttitle: string;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\temail: string;\r\n\tusername: string;\r\n\tschedulingColor: string;\r\n\tlicenses: ILicenseModel[];\r\n\tactiveSignature: IVeterinarianSignatureModel | undefined;\r\n\tschedulePreferences: schedule.EntitySchedulePreference[];\r\n\thospitalSchedules: IHospitalScheduleModel[] | undefined;\r\n\tpetcoUserId: string;\r\n\tfullName: string | undefined;\r\n}\r\n\r\nexport class VeterinarianModel implements IVeterinarianModel {\r\n\t@observable rowVersion: string;\r\n\t@observable veterinarianId: number;\r\n\t@observable title: string;\r\n\t@observable firstName: string;\r\n\t@observable lastName: string;\r\n\t@observable email: string;\r\n\t@observable username: string;\r\n\t@observable schedulingColor: string;\r\n\t@observable activeSignature: VeterinarianSignatureModel | undefined;\r\n\t@observable licenses: LicenseModel[] = [];\r\n\t@observable hospitalSchedules: HospitalScheduleModel[] = [];\r\n\t@observable schedulePreferences: schedule.EntitySchedulePreference[] = [];\r\n\t@observable petcoUserId: string;\r\n\t@observable fullName: string | undefined;\r\n\r\n\tconstructor(init?: Partial) {\r\n\t\tthis.rowVersion = _.defaultTo(init?.rowVersion, \"\");\r\n\t\tthis.veterinarianId = _.defaultTo(init?.veterinarianId, 0);\r\n\t\tthis.title = _.defaultTo(init?.title, \"\");\r\n\t\tthis.firstName = _.defaultTo(init?.firstName, \"\");\r\n\t\tthis.lastName = _.defaultTo(init?.lastName, \"\");\r\n\t\tthis.email = _.defaultTo(init?.email, \"\");\r\n\t\tthis.username = _.defaultTo(init?.username, \"\");\r\n\t\tthis.schedulingColor = _.defaultTo(init?.schedulingColor, petcoPewterBlue);\r\n\t\tthis.licenses = (init?.licenses ?? []).map(l => new LicenseModel(l));\r\n\t\tthis.activeSignature = init?.activeSignature ? new VeterinarianSignatureModel(init.activeSignature) : undefined;\r\n\t\tthis.hospitalSchedules = (init?.hospitalSchedules ?? []).map(sp => new HospitalScheduleModel(sp));\r\n\t\tthis.schedulePreferences = (init?.schedulePreferences ?? []).map(sp => new schedule.EntitySchedulePreference(sp));\r\n\t\tthis.petcoUserId = _.defaultTo(init?.petcoUserId, \"\");\r\n\t\tthis.fullName = _.defaultTo(init?.fullName, \"\");\r\n\r\n\t\tmakeObservable(this, undefined, { autoBind: true });\r\n\t}\r\n\r\n\t@computed get doctorTitle() {\r\n\t\treturn `${this.title ? this.title + \" \" : \"\"}${this.firstName} ${this.lastName}`;\r\n\t}\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\"\r\nimport { StringUtility } from \"@common/utils\";\r\n\r\nexport interface ICommunicationPreferenceModel extends IModel {\r\n canSMS: boolean;\r\n canSMSDateUpdated: DateTime | undefined;\r\n canSMSUpdatedUserTitle: string;\r\n canSMSUpdatedUserFirstName: string;\r\n canSMSUpdatedUserLastName: string;\r\n canCall: boolean;\r\n canCallDateUpdated: DateTime | undefined;\r\n canCallUpdatedUserTitle: string;\r\n canCallUpdatedUserFirstName: string;\r\n canCallUpdatedUserLastName: string;\r\n storeTimeZone: string;\r\n phoneNumber: string;\r\n}\r\n\r\nexport class CommunicationPreferenceModel extends Model implements ModelRecord {\r\n canSMS: boolean;\r\n canSMSDateUpdated: DateTime | undefined;\r\n canSMSUpdatedUserTitle: string;\r\n canSMSUpdatedUserFirstName: string;\r\n canSMSUpdatedUserLastName: string;\r\n canCall: boolean;\r\n canCallDateUpdated: DateTime | undefined;\r\n canCallUpdatedUserTitle: string;\r\n canCallUpdatedUserFirstName: string;\r\n canCallUpdatedUserLastName: string;\r\n storeTimeZone: string;\r\n phoneNumber: string;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.canSMS = _.defaultTo(params?.canSMS, true);\r\n this.canSMSDateUpdated = params?.canSMSDateUpdated ? StringUtility.SanitizeDateTimeISOAsUtc(params?.canSMSDateUpdated.toString()) : undefined;\r\n this.canSMSUpdatedUserTitle = _.defaultTo(params?.canSMSUpdatedUserTitle, '');\r\n this.canSMSUpdatedUserFirstName = _.defaultTo(params?.canSMSUpdatedUserFirstName, '');\r\n this.canSMSUpdatedUserLastName = _.defaultTo(params?.canSMSUpdatedUserLastName, '');\r\n this.canCall = _.defaultTo(params?.canCall, true);\r\n this.canCallDateUpdated = params?.canCallDateUpdated ? StringUtility.SanitizeDateTimeISOAsUtc(params?.canCallDateUpdated.toString()) : undefined;\r\n this.canCallUpdatedUserTitle = _.defaultTo(params?.canCallUpdatedUserTitle, '');\r\n this.canCallUpdatedUserFirstName = _.defaultTo(params?.canCallUpdatedUserFirstName, '');\r\n this.canCallUpdatedUserLastName = _.defaultTo(params?.canCallUpdatedUserLastName, '');\r\n this.storeTimeZone = _.defaultTo(params?.storeTimeZone, '');\r\n this.phoneNumber = _.defaultTo(params?.phoneNumber, '');\r\n }\r\n\r\n get canCallFullName() {\r\n if (this.canCallUpdatedUserFirstName && this.canCallUpdatedUserLastName)\r\n return StringUtility.formattedUserName(this.canCallUpdatedUserFirstName, this.canCallUpdatedUserLastName, this.canCallUpdatedUserTitle);\r\n else\r\n return undefined\r\n }\r\n get canSMSFullName() {\r\n if (this.canSMSUpdatedUserFirstName && this.canSMSUpdatedUserLastName)\r\n return StringUtility.formattedUserName(this.canSMSUpdatedUserFirstName, this.canSMSUpdatedUserLastName, this.canSMSUpdatedUserTitle);\r\n else\r\n return undefined\r\n }\r\n}\r\n","import { Model, IModel,ModelRecord } from \"./Model\";\r\nimport { defaultTo } from \"lodash\";\r\nexport interface ICommunicationTypeModel extends IModel {\r\n communicationTypeId: number,\r\n name: string | undefined\r\n}\r\n\r\n\r\n\r\nexport class CommunicationTypeModel extends Model implements ModelRecord {\r\n communicationTypeId: number;\r\n name: string | undefined;\r\n \r\n constructor(params?: Partial) {\r\n super(params);\r\n this.communicationTypeId = defaultTo(params?.communicationTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { IModel, Model } from \"./Model\";\r\n\r\nexport interface IConsentModel extends IModel {\r\n consentId: number;\r\n consentTypeId: number;\r\n stateId: number | undefined;\r\n storeId: number | undefined;\r\n startDate: string;\r\n endDate: string | undefined;\r\n legalBackerHTML: string;\r\n consentTypePublicId: string;\r\n consentTypeAuthApplicationKey: string;\r\n consentTypeAuthApplicationDescription: string;\r\n consentTypeName: string;\r\n stateName: string | undefined;\r\n stateAbbreviation: string | undefined;\r\n storeCode: string | undefined;\r\n storeName: string | undefined;\r\n}\r\n\r\nexport class ConsentModel extends Model implements Record {\r\n consentId: number;\r\n consentTypeId: number;\r\n stateId: number | undefined;\r\n storeId: number | undefined;\r\n startDate: DateTime;\r\n endDate: DateTime | undefined;\r\n legalBackerHTML: string;\r\n consentTypePublicId: string;\r\n consentTypeAuthApplicationKey: string;\r\n consentTypeAuthApplicationDescription: string;\r\n consentTypeName: string;\r\n stateName: string | undefined;\r\n stateAbbreviation: string | undefined;\r\n storeCode: string | undefined;\r\n storeName: string | undefined;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.consentId = defaultTo(params.consentId, 0);\r\n this.consentTypeId = defaultTo(params.consentTypeId, 0);\r\n this.stateId = params.stateId\r\n this.storeId = params.storeId\r\n this.startDate = DateTime.fromISO(defaultTo(params.startDate, \"2000-01-01\"), { zone: \"utc\" });\r\n this.endDate = params.endDate ? DateTime.fromISO(params.endDate, { zone: \"utc\" }) : undefined;\r\n this.legalBackerHTML = defaultTo(params.legalBackerHTML, \"\");\r\n this.consentTypePublicId = defaultTo(params.consentTypePublicId, \"\")\r\n this.consentTypeAuthApplicationKey = defaultTo(params.consentTypeAuthApplicationKey, \"\")\r\n this.consentTypeAuthApplicationDescription = defaultTo(params.consentTypeAuthApplicationDescription, \"\")\r\n this.consentTypeName = defaultTo(params.consentTypeName, \"\")\r\n this.stateName = params.stateName\r\n this.stateAbbreviation = params.stateAbbreviation\r\n this.storeCode = params.storeCode\r\n this.storeName = params.storeName\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IDiagnosisModel extends IModel {\r\n diagnosisId: number;\r\n name: string;\r\n isActive: boolean;\r\n}\r\n\r\nexport class DiagnosisModel extends Model implements ModelRecord {\r\n diagnosisId: number;\r\n name: string;\r\n isActive: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.diagnosisId = defaultTo(params?.diagnosisId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.isActive = defaultTo(params?.isActive, true);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \".\";\r\n\r\nexport interface IDiscountTypeModel extends IModel {\r\n discountTypeId: number;\r\n name: string;\r\n sortOrder: number;\r\n}\r\n\r\nexport class DiscountTypeModel extends Model implements ModelRecord {\r\n discountTypeId: number;\r\n name: string;\r\n sortOrder: number;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.discountTypeId = defaultTo(params?.discountTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0); \r\n }\r\n}\r\n","import { IModel, Model } from \".\";\r\n\r\nexport interface IDocumentTypeModel extends IModel {\r\n documentTypeId: number;\r\n description: string;\r\n}\r\n\r\nexport class DocumentTypeModel extends Model implements Record {\r\n documentTypeId: number;\r\n description: string;\r\n\r\n constructor(params: IDocumentTypeModel) {\r\n super(params);\r\n\r\n this.documentTypeId = params.documentTypeId;\r\n this.description = params.description;\r\n }\r\n}\r\n","\r\nexport interface IEnsurePetAlertsRequest {\r\n petId: number;\r\n PetAlertIds: number[];\r\n}\r\n\r\nexport class EnsurePetAlertsRequest implements IEnsurePetAlertsRequest {\r\n petId: number;\r\n PetAlertIds: number[] = [];\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n petId = 0,\r\n PetAlertIds = [] as Array\r\n } = params;\r\n\r\n this.petId = petId;\r\n this.PetAlertIds = PetAlertIds;\r\n }\r\n}\r\n","import { ExamObservationModel, IExamObservationModel, AssessmentReferralModel, IAssessmentReferralModel, IModel, Model, ModelRecord, IBusinessLineModel, BusinessLineModel, ISpeciesModel, SpeciesModel } from \"@common/models\"\r\n\r\nexport interface IExamCategoryModel extends IModel {\r\n examCategoryId: number\r\n name: string\r\n sortOrder: number\r\n observations: IExamObservationModel[]\r\n assessmentReferralId: number | undefined;\r\n assessmentReferral: IAssessmentReferralModel | undefined;\r\n businessLineId: number;\r\n businessLine: IBusinessLineModel;\r\n species: ISpeciesModel[];\r\n}\r\n\r\nexport class ExamCategoryModel extends Model implements ModelRecord {\r\n examCategoryId: number;\r\n name: string;\r\n sortOrder: number;\r\n observations: ExamObservationModel[] = [];\r\n assessmentReferralId: number | undefined;\r\n assessmentReferral: AssessmentReferralModel | undefined;\r\n businessLineId: number;\r\n businessLine: BusinessLineModel;\r\n species: SpeciesModel[] = [];\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.examCategoryId = _.defaultTo(params?.examCategoryId, 0);\r\n this.name = _.defaultTo(params?.name, '');\r\n this.sortOrder = _.defaultTo(params?.sortOrder, 999);\r\n _.map(params?.observations, (o) => { this.observations.push(new ExamObservationModel(o)) });\r\n this.assessmentReferralId = _.defaultTo(params?.assessmentReferralId, undefined);\r\n this.assessmentReferral = params?.assessmentReferral ? new AssessmentReferralModel(params.assessmentReferral) : undefined;\r\n this.businessLineId = _.defaultTo(params?.businessLineId, 1);//default to Global\r\n this.businessLine = params?.businessLine ? new BusinessLineModel(params.businessLine) : new BusinessLineModel({ businessLineId: 1, name: \"Global\" });\r\n _.map(params?.species, (s) => { this.species.push(new SpeciesModel(s)) });\r\n \r\n }\r\n\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model,ModelRecord } from \"./Model\"\r\n\r\nexport interface IExamResultTypeModel extends IModel {\r\n examResultTypeId: number\r\n name: string\r\n}\r\n\r\nexport class ExamResultTypeModel extends Model implements ModelRecord {\r\n examResultTypeId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.examResultTypeId = defaultTo(params?.examResultTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","import { IExamResultTypeModel, ExamResultTypeModel } from \"./ExamResultTypeModel\";\r\nimport { IModel, Model, ModelRecord, } from \"./Model\";\r\nimport { IBusinessLineModel, BusinessLineModel, ISpeciesModel, SpeciesModel } from \"@common/models\"\r\nexport interface IExamObservationModel extends IModel {\r\n examObservationId: number\r\n examCategoryId: number\r\n examResultTypeId: number\r\n name: string\r\n sortOrder: number\r\n examCategoryName: string\r\n examCategorySortOrder: number\r\n examResultType: IExamResultTypeModel | undefined\r\n businessLineId: number;\r\n businessLine: IBusinessLineModel;\r\n rowIndex: number; //this is a client side property only to track index of the collection for inline editing.\r\n species: ISpeciesModel[];\r\n}\r\n\r\nexport class ExamObservationModel extends Model implements ModelRecord {\r\n examObservationId: number;\r\n examCategoryId: number;\r\n examResultTypeId: number;\r\n name: string;\r\n sortOrder: number;\r\n examCategoryName: string;\r\n examCategorySortOrder: number;\r\n examResultType: ExamResultTypeModel | undefined;\r\n businessLineId: number;\r\n businessLine: BusinessLineModel;\r\n rowIndex: number;\r\n species: SpeciesModel[] = [];\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.examObservationId = _.defaultTo(params?.examObservationId, 0);\r\n this.examCategoryId = _.defaultTo(params?.examCategoryId, 0);\r\n this.examResultTypeId = _.defaultTo(params?.examResultTypeId, 0);\r\n this.name = _.defaultTo(params?.name, '');\r\n this.sortOrder = _.defaultTo(params?.sortOrder, 0);\r\n this.examCategoryName = _.defaultTo(params?.examCategoryName, '');\r\n this.examCategorySortOrder = _.defaultTo(params?.examCategorySortOrder, 0);\r\n this.examResultType = params?.examResultType ? new ExamResultTypeModel(params.examResultType) : undefined;\r\n this.rowIndex = _.defaultTo(params?.rowIndex, 0);\r\n this.businessLineId = _.defaultTo(params?.businessLineId, 1);//default to Global\r\n this.businessLine = params?.businessLine ? new BusinessLineModel(params.businessLine) : new BusinessLineModel({ businessLineId: 1, name: \"Global\" });\r\n _.map(params?.species, (s) => { this.species.push(new SpeciesModel(s)) });\r\n \r\n }\r\n}\r\n","import { IModel, Model } from \"./Model\";\r\n\r\nexport interface IFeatureFlagModel extends IModel {\r\n featureFlagId: number;\r\n name: string;\r\n description: string;\r\n globalStartDate: string | undefined;\r\n globalEndDate: string | undefined;\r\n enabled: boolean;\r\n}\r\n\r\nexport class FeatureFlagModel extends Model implements IFeatureFlagModel {\r\n featureFlagId: number;\r\n name: string;\r\n description: string;\r\n globalStartDate: string | undefined;\r\n globalEndDate: string | undefined;\r\n enabled: boolean;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n const {\r\n featureFlagId = 0,\r\n name = '',\r\n description = '',\r\n globalStartDate = undefined,\r\n globalEndDate = undefined,\r\n enabled = false\r\n } = params;\r\n\r\n this.featureFlagId = featureFlagId;\r\n this.name = name;\r\n this.description = description;\r\n this.globalStartDate = globalStartDate;\r\n this.globalEndDate = globalEndDate;\r\n this.enabled = enabled;\r\n }\r\n}\r\n","import { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IFollowUpAppointmentModel extends IModel {\r\n followUpBookingURL:string;\r\n clinetFirstname: string;\r\n clinetLastName: string;\r\n clinetCellPhone: string;\r\n clinetEmailAddress: string;\r\n petname: string;\r\n petspecies: string;\r\n isreturningcustomer: string;\r\n store_number: string;\r\n clinicZipCode: string;\r\n}\r\n\r\nexport class FollowUpAppointmentModel extends Model implements ModelRecord{\r\n followUpBookingURL:string;\r\n clinetFirstname: string;\r\n clinetLastName: string;\r\n clinetCellPhone: string;\r\n clinetEmailAddress: string;\r\n petname: string;\r\n petspecies: string;\r\n isreturningcustomer: string;\r\n store_number: string;\r\n clinicZipCode: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.followUpBookingURL= _.defaultTo(params?.followUpBookingURL,\"\");\r\n this.clinetFirstname= _.defaultTo(params?.clinetFirstname,\"\");\r\n this.clinetLastName= _.defaultTo(params?.clinetLastName,\"\");\r\n this.clinetCellPhone= _.defaultTo(params?.clinetCellPhone,\"\");\r\n this.clinetEmailAddress= _.defaultTo(params?.clinetEmailAddress,\"\");\r\n this.petname= _.defaultTo(params?.petname,\"\");\r\n this.petspecies= _.defaultTo(params?.petspecies,\"\");\r\n this.isreturningcustomer= _.defaultTo(params?.isreturningcustomer,\"\");\r\n this.store_number= _.defaultTo(params?.store_number,\"\");\r\n this.clinicZipCode= _.defaultTo(params?.clinicZipCode,\"\");\r\n }\r\n\r\n}\r\n","import { IModel, Model } from \"./Model\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface IFollowUpTypeModel extends IModel {\r\n followUpTypeId: number;\r\n name: string;\r\n isForTextMessages: boolean;\r\n isForCallInteractions: boolean;\r\n isForVisits: boolean;\r\n}\r\n\r\nexport class FollowUpTypeModel extends Model implements Record {\r\n followUpTypeId: number;\r\n name: string;\r\n isForTextMessages: boolean;\r\n isForCallInteractions: boolean;\r\n isForVisits: boolean;\r\n\r\n constructor(params: IFollowUpTypeModel) {\r\n super(params);\r\n this.followUpTypeId = defaultTo(params.followUpTypeId, 0);\r\n this.name = defaultTo(params.name, \"\");\r\n this.isForTextMessages = params.isForTextMessages;\r\n this.isForCallInteractions = params.isForCallInteractions;\r\n this.isForVisits = params.isForVisits;\r\n }\r\n\r\n static defaultFollowUpType: FollowUpTypeModel = {\r\n followUpTypeId: 1,\r\n name: \"No Follow Up\",\r\n isForTextMessages: false,\r\n isForCallInteractions: true,\r\n isForVisits: true,\r\n rowVersion: \"\"\r\n }\r\n}\r\n","import { IModel } from \"./Model\";\r\n\r\nexport interface IGenderModel extends IModel {\r\n genderId: number;\r\n name: string;\r\n rowVersion: string;\r\n}\r\n\r\nexport class GenderModel implements IGenderModel {\r\n genderId: number;\r\n name: string;\r\n rowVersion: string;\r\n\r\n constructor(params: Partial = {} as IGenderModel) {\r\n const {\r\n genderId = 0,\r\n name = \"\",\r\n rowVersion = '',\r\n } = params;\r\n\r\n this.genderId = genderId;\r\n this.name = name;\r\n this.rowVersion = rowVersion;\r\n }\r\n}\r\n","\r\nimport { makeObservable, observable } from \"mobx\";\r\nimport { WeekDay } from \"@common/models/Enums\";\r\n\r\nexport interface IHospitalHoursModel {\r\n hospitalHoursId: number;\r\n dayOfWeek: WeekDay.Day;\r\n openTime: string;\r\n closeTime: string;\r\n isOpen: boolean;\r\n}\r\n\r\nexport class HospitalHoursModel implements IHospitalHoursModel {\r\n @observable hospitalHoursId: number;\r\n @observable dayOfWeek: WeekDay.Day;\r\n @observable openTime: string;\r\n @observable closeTime: string;\r\n @observable isOpen: boolean;\r\n\r\n constructor(hospitalHoursModel: IHospitalHoursModel) {\r\n this.hospitalHoursId = hospitalHoursModel.hospitalHoursId;\r\n this.dayOfWeek = hospitalHoursModel.dayOfWeek;\r\n this.openTime = hospitalHoursModel.openTime;\r\n this.closeTime = hospitalHoursModel.closeTime;\r\n this.isOpen = hospitalHoursModel.isOpen;\r\n\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IMarketModel extends IModel {\r\n marketId: number;\r\n code: string;\r\n name: string;\r\n diagnosticLabUserProvided: boolean| undefined;\r\n diagnosticLabUserName: string| undefined;\r\n diagnosticLabPassword: string | undefined;\r\n}\r\n\r\nexport class MarketModel extends Model implements ModelRecord {\r\n marketId: number;\r\n code: string;\r\n name: string;\r\n diagnosticLabUserProvided: boolean| undefined;\r\n diagnosticLabUserName: string | undefined;\r\n diagnosticLabPassword: string | undefined; \r\n\r\n constructor(init?: Partial) {\r\n super(init);\r\n this.marketId = defaultTo(init?.marketId, 0);\r\n this.code = defaultTo(init?.code, '');\r\n this.name = defaultTo(init?.name, '');\r\n this.diagnosticLabUserProvided = defaultTo(init?.diagnosticLabUserProvided, undefined);\r\n this.diagnosticLabUserName = defaultTo(init?.diagnosticLabUserName, undefined);\r\n this.diagnosticLabPassword = defaultTo(init?.diagnosticLabPassword, undefined);\r\n }\r\n\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel } from \".\";\r\nimport { ModelRecord } from \"./Model\";\r\n\r\nexport interface IPartnerModel extends IModel {\r\n partnerId: number;\r\n name: string;\r\n label: string;\r\n description: string | undefined;\r\n sourceSystemKey: string;\r\n}\r\n\r\nexport class PartnerModel implements ModelRecord {\r\n partnerId: number;\r\n name: string;\r\n label: string;\r\n description: string | undefined;\r\n sourceSystemKey: string;\r\n rowVersion: string;\r\n\r\n\r\n constructor(init?: Partial) {\r\n this.rowVersion = defaultTo(init?.rowVersion, '');\r\n this.partnerId = defaultTo(init?.partnerId, 0);\r\n this.name = defaultTo(init?.name, '');\r\n this.label = defaultTo(init?.label, '');\r\n this.description = defaultTo(init?.description, undefined);\r\n this.sourceSystemKey = defaultTo(init?.sourceSystemKey, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel } from \".\";\r\nimport { ModelRecord } from \"./Model\";\r\nexport interface IPaymentTypeModel extends IModel {\r\n paymentTypeId: number;\r\n code: string;\r\n name: string;\r\n}\r\nexport class PaymentTypeModel implements ModelRecord {\r\n rowVersion: string;\r\n paymentTypeId: number;\r\n code: string;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n this.rowVersion = defaultTo(params?.rowVersion, '');\r\n this.paymentTypeId = defaultTo(params?.paymentTypeId, 0);\r\n this.code = defaultTo(params?.code, '');\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, ModelRecord } from \".\";\r\n\r\nexport interface IRegionModel extends IModel {\r\n regionId: number;\r\n name: string;\r\n}\r\nexport class RegionModel implements ModelRecord {\r\n rowVersion: string;\r\n regionId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n this.rowVersion = defaultTo(params?.rowVersion, '');\r\n this.regionId = defaultTo(params?.regionId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { Model, IModel, ModelRecord } from \"./Model\";\r\n\r\nexport interface IStateModel extends IModel {\r\n stateId: number;\r\n name: string;\r\n abbreviation: string;\r\n taxValue: number;\r\n hasPrescriptionProductTax: boolean;\r\n hasClinicServiceTax: boolean;\r\n hasLicenseFeeTax: boolean;\r\n hasVetcoPrescriptionTax: boolean;\r\n zoneOffset: number;\r\n visitNote: string;\r\n}\r\n\r\nexport class StateModel extends Model implements ModelRecord {\r\n stateId: number;\r\n name: string;\r\n abbreviation: string;\r\n taxValue: number;\r\n hasPrescriptionProductTax: boolean;\r\n hasClinicServiceTax: boolean;\r\n hasLicenseFeeTax: boolean;\r\n hasVetcoPrescriptionTax: boolean;\r\n zoneOffset: number;\r\n visitNote: string;\r\n\r\n\r\n constructor(params?: Partial) { \r\n super(params);\r\n this.stateId = defaultTo(params?.stateId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.abbreviation = defaultTo(params?.abbreviation, '');\r\n this.taxValue = defaultTo(params?.taxValue, 0);\r\n this.hasPrescriptionProductTax = defaultTo(params?.hasPrescriptionProductTax, false);\r\n this.hasClinicServiceTax = defaultTo(params?.hasClinicServiceTax, false);\r\n this.hasVetcoPrescriptionTax = defaultTo(params?.hasVetcoPrescriptionTax, false);\r\n this.hasLicenseFeeTax = defaultTo(params?.hasLicenseFeeTax, false);\r\n this.zoneOffset = defaultTo(params?.zoneOffset, 0);\r\n this.visitNote = defaultTo(params?.visitNote, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, ModelRecord } from \".\";\r\n\r\nexport interface IStoreTypeModel extends IModel {\r\n storeTypeId: number;\r\n code: string;\r\n name: string;\r\n}\r\n\r\nexport class StoreTypeModel implements ModelRecord {\r\n rowVersion: string;\r\n storeTypeId: number;\r\n code: string;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n this.rowVersion = defaultTo(params?.rowVersion, '');\r\n this.storeTypeId = defaultTo(params?.storeTypeId, 0);\r\n this.code = defaultTo(params?.code, '');\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n\r\n}\r\n","import { defaultTo } from 'lodash';\r\nimport { BrandModel } from './BrandModel';\r\nimport { MarketModel } from './MarketModel';\r\nimport { IModel, Model, ModelRecord } from './Model';\r\nimport { PartnerModel } from './PartnerModel';\r\nimport { PaymentTypeModel } from './PaymentTypeModel';\r\nimport { RegionModel } from './RegionModel';\r\nimport { StateModel } from './StateModel';\r\nimport { StoreTypeModel } from './StoreTypeModel';\r\n\r\n\r\ninterface IStoreModelBase extends IModel {\r\n rowVersion: string;\r\n storeId: number;\r\n code: string | undefined;\r\n name: string | undefined;\r\n address: string | undefined;\r\n address2: string | undefined;\r\n city: string | undefined;\r\n zipCode: string | undefined;\r\n phone: string | undefined;\r\n secondaryPhone: string | undefined;\r\n salesTaxRate: number;\r\n isOutdoorClinic: boolean;\r\n timezoneName: string | undefined;\r\n latitude: number;\r\n longitude: number;\r\n bookingMessage: string | undefined;\r\n stateId: number;\r\n marketId: number;\r\n regionId: number;\r\n brandId: number;\r\n paymentTypeId: number;\r\n storeTypeId: number;\r\n partnerId: number;\r\n}\r\n\r\n\r\n\r\n\r\nclass StoreModelBase extends Model implements ModelRecord {\r\n storeId: number;\r\n code: string | undefined;\r\n name: string | undefined;\r\n address: string | undefined;\r\n address2: string | undefined;\r\n city: string | undefined;\r\n zipCode: string | undefined;\r\n phone: string | undefined;\r\n secondaryPhone: string | undefined;\r\n salesTaxRate: number;\r\n isOutdoorClinic: boolean;\r\n timezoneName: string | undefined;\r\n latitude: number;\r\n longitude: number;\r\n bookingMessage: string | undefined;\r\n stateId: number;\r\n marketId: number;\r\n regionId: number;\r\n brandId: number;\r\n paymentTypeId: number;\r\n storeTypeId: number;\r\n partnerId: number;\r\n\r\n constructor(init?: Partial) {\r\n super(init);\r\n\r\n this.rowVersion = defaultTo(init?.rowVersion, '');\r\n this.storeId = defaultTo(init?.storeId, 0);\r\n this.code = defaultTo(init?.code, undefined);\r\n this.name = defaultTo(init?.name, undefined);\r\n this.address = defaultTo(init?.address, undefined);\r\n this.address2 = defaultTo(init?.address2, undefined);\r\n this.city = defaultTo(init?.city, undefined);\r\n this.zipCode = defaultTo(init?.zipCode, undefined);\r\n this.phone = defaultTo(init?.phone, undefined);\r\n this.secondaryPhone = defaultTo(init?.secondaryPhone, undefined);\r\n this.salesTaxRate = defaultTo(init?.salesTaxRate, 0);\r\n this.isOutdoorClinic = defaultTo(init?.isOutdoorClinic, false);\r\n this.latitude = defaultTo(init?.latitude, 0);\r\n this.longitude = defaultTo(init?.longitude, 0);\r\n this.bookingMessage = defaultTo(init?.bookingMessage, undefined);\r\n this.timezoneName = defaultTo(init?.timezoneName, undefined);\r\n\r\n this.stateId = defaultTo(init?.stateId, 0);\r\n this.marketId = defaultTo(init?.marketId, 0);\r\n this.regionId = defaultTo(init?.regionId, 0);\r\n this.brandId = defaultTo(init?.brandId, 0);\r\n this.paymentTypeId = defaultTo(init?.paymentTypeId, 0);\r\n this.storeTypeId = defaultTo(init?.storeTypeId, 0);\r\n this.partnerId = defaultTo(init?.partnerId, 0);\r\n }\r\n}\r\n\r\nexport interface IStoreModel extends IStoreModelBase {\r\n state: StateModel;\r\n market: MarketModel;\r\n region: RegionModel;\r\n brand: BrandModel;\r\n paymentType: PaymentTypeModel;\r\n storeType: StoreTypeModel;\r\n partner: PartnerModel;\r\n}\r\n\r\nexport class StoreModel extends StoreModelBase implements ModelRecord {\r\n state: StateModel;\r\n market: MarketModel;\r\n region: RegionModel;\r\n brand: BrandModel;\r\n paymentType: PaymentTypeModel;\r\n storeType: StoreTypeModel;\r\n partner: PartnerModel;\r\n\r\n constructor(init?: Partial) {\r\n super(init);\r\n this.state = new StateModel(init?.state);\r\n this.market = new MarketModel(init?.market);\r\n this.region = new RegionModel(init?.region)\r\n this.brand = new BrandModel(init?.brand);\r\n this.paymentType = new PaymentTypeModel(init?.paymentType);\r\n this.storeType = new StoreTypeModel(init?.storeType);\r\n this.partner = new PartnerModel(init?.partner);\r\n }\r\n\r\n}\r\n\r\nexport interface IStoreListingModel extends IStoreModelBase {\r\n stateName: string;\r\n stateAbbreviation: string;\r\n marketName: string;\r\n regionName: string;\r\n brandName: string;\r\n paymentTypeName: string;\r\n storeTypeName: string;\r\n partnerName: string;\r\n partnerLabel: string;\r\n hasHospital: boolean;\r\n hospitalName: string;\r\n}\r\n\r\nexport class StoreListingModel extends StoreModelBase implements IStoreListingModel {\r\n stateName: string;\r\n stateAbbreviation: string;\r\n marketName: string;\r\n regionName: string;\r\n brandName: string;\r\n paymentTypeName: string;\r\n storeTypeName: string;\r\n partnerName: string;\r\n partnerLabel: string;\r\n hasHospital: boolean;\r\n hospitalName: string;\r\n\r\n constructor(params: IStoreListingModel) {\r\n super(params);\r\n this.stateName = params.stateName;\r\n this.stateAbbreviation = params.stateAbbreviation;\r\n this.marketName = params.marketName;\r\n this.regionName = params.regionName;\r\n this.brandName = params.brandName;\r\n this.paymentTypeName = params.paymentTypeName;\r\n this.storeTypeName = params.storeTypeName;\r\n this.partnerName = params.partnerName;\r\n this.partnerLabel = params.partnerLabel;\r\n this.hasHospital = params.hasHospital;\r\n this.hospitalName = params.hospitalName;\r\n }\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { IModel, ModelRecord, schedule } from \"@common/models\";\r\n\r\n\r\nexport interface IHospitalScheduleTemplateModel extends IModel {\r\n hospitalScheduleTemplateId: number,\r\n hospitalId: number,\r\n name: string | undefined,\r\n isActive: boolean;\r\n isDefault: boolean,\r\n color: string | undefined,\r\n hospitalSchedulePreferences: schedule.EntitySchedulePreference[],\r\n}\r\nexport class HospitalScheduleTemplateModel implements ModelRecord {\r\n rowVersion: string\r\n hospitalScheduleTemplateId: number;\r\n hospitalId: number;\r\n name: string | undefined;\r\n color: string | undefined;\r\n isActive: boolean;\r\n isDefault: boolean;\r\n hospitalSchedulePreferences: schedule.EntitySchedulePreference[];\r\n\r\n constructor(init?: Partial) {\r\n this.rowVersion = defaultTo(init?.rowVersion, '');\r\n this.hospitalScheduleTemplateId = defaultTo(init?.hospitalScheduleTemplateId, 0);\r\n this.hospitalId = defaultTo(init?.hospitalId, 0);\r\n this.name = StringUtility.SanitizeString(init?.name);\r\n this.color = StringUtility.SanitizeString(init?.color ?? '#2596be');\r\n this.isActive = defaultTo(init?.isActive, false);\r\n this.isDefault = defaultTo(init?.isDefault, false);\r\n this.hospitalSchedulePreferences = init?.hospitalSchedulePreferences ? init.hospitalSchedulePreferences.map(p => new schedule.EntitySchedulePreference(p)) : [] as schedule.EntitySchedulePreference[];\r\n }\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { IModel, Model } from \".\";\r\nimport { StringUtility } from \"@common/utils\";\r\n\r\nexport interface IIvlsDeviceModel extends IModel {\r\n ivlsDeviceId: number;\r\n hospitalId: number;\r\n deviceSerialNumber: string;\r\n displayName: string;\r\n lastPolledCloudTime: DateTime | undefined;\r\n\r\n\r\n}\r\n\r\nexport class IvlsDeviceModel extends Model implements IIvlsDeviceModel {\r\n ivlsDeviceId: number;\r\n hospitalId: number;\r\n deviceSerialNumber: string;\r\n displayName: string;\r\n lastPolledCloudTime: DateTime | undefined;\r\n\r\n constructor(params: Partial = {}) {\r\n super(params);\r\n const {\r\n ivlsDeviceId = 0,\r\n hospitalId = 0,\r\n deviceSerialNumber = '',\r\n displayName = '',\r\n lastPolledCloudTime = undefined,\r\n } = params;\r\n\r\n this.ivlsDeviceId = ivlsDeviceId;\r\n this.hospitalId = hospitalId;\r\n this.deviceSerialNumber = deviceSerialNumber;\r\n this.displayName = displayName;\r\n this.lastPolledCloudTime = lastPolledCloudTime;\r\n this.lastPolledCloudTime = lastPolledCloudTime ? StringUtility.SanitizeDateTimeISOAsUtc(lastPolledCloudTime.toString()) : undefined;\r\n }\r\n}\r\n","import { IModel, Model, ModelRecord } from './Model';\r\nimport { IStoreModel, StoreModel } from './StoreModel';\r\nimport { IHospitalHoursModel, HospitalHoursModel } from './HospitalHoursModel';\r\nimport { computed, makeObservable, observable } from 'mobx';\r\nimport { StringUtility } from '@common/utils';\r\nimport { IHospitalScheduleTemplateModel, HospitalScheduleTemplateModel } from './HospitalScheduleTemplateModel';\r\nimport { IvlsDeviceModel } from './IvlsDeviceModel';\r\n\r\nexport interface IHospitalModel extends IModel {\r\n hospitalId: number;\r\n storeId: number;\r\n store: IStoreModel | undefined;\r\n name: string;\r\n phone: string;\r\n email: string;\r\n isDisabled: boolean;\r\n code: string;\r\n url: string;\r\n fax: string;\r\n outboundSMSPhone: string;\r\n hospitalHours: IHospitalHoursModel[];\r\n parentOrganizationId: number | undefined;\r\n organizationRelationKey: string;\r\n diagnosticLabUserProvided?: boolean | undefined;\r\n diagnosticLabUserName?: string | undefined;\r\n diagnosticLabPassword?: string | undefined;\r\n isDoubleBookingEnabled: boolean;\r\n defaultScheduleTemplate: IHospitalScheduleTemplateModel | undefined;\r\n currentClinicId: number | undefined;\r\n ivlsDevices: IvlsDeviceModel[];\r\n outOfOfficeMessage?: string | undefined;\r\n isOutOfOfficeEnabled?: boolean| undefined;\r\n awayMessage?: string | undefined;\r\n awayMessageEnabled?: boolean| undefined;\r\n}\r\n\r\nexport class HospitalModel implements ModelRecord {\r\n @observable hospitalId: number;\r\n @observable storeId: number;\r\n @observable store: StoreModel | undefined;\r\n @observable name: string;\r\n @observable phone: string;\r\n @observable email: string;\r\n @observable code: string;\r\n @observable isDisabled: boolean;\r\n @observable url: string | undefined;\r\n @observable fax: string | undefined;\r\n @observable outboundSMSPhone: string;\r\n @observable hospitalHours: HospitalHoursModel[];\r\n @observable organizationRelationKey: string;\r\n @observable parentOrganizationId: number | undefined;\r\n @observable diagnosticLabUserProvided: boolean | undefined;\r\n @observable diagnosticLabUserName: string | undefined;\r\n @observable diagnosticLabPassword: string | undefined;\r\n @observable rowVersion: string;\r\n @observable isDoubleBookingEnabled: boolean;\r\n @observable defaultScheduleTemplate: HospitalScheduleTemplateModel | undefined;\r\n @observable currentClinicId: number | undefined;\r\n @observable ivlsDevices: IvlsDeviceModel[];\r\n @observable outOfOfficeMessage: string | undefined;\r\n @observable isOutOfOfficeEnabled: boolean| undefined;\r\n @observable awayMessage: string | undefined;\r\n @observable awayMessageEnabled: boolean| undefined;\r\n\r\n constructor(init?: IHospitalModel) {\r\n this.rowVersion = _.defaultTo(init?.rowVersion, '');\r\n this.hospitalId = _.defaultTo(init?.hospitalId, 0);\r\n this.code = _.defaultTo(init?.code, '');\r\n this.storeId = _.defaultTo(init?.storeId, 0);\r\n this.store = init?.store ? new StoreModel(init.store) : undefined;\r\n this.name = _.defaultTo(init?.name, '');\r\n this.phone = _.defaultTo(init?.phone, '');\r\n this.email = _.defaultTo(init?.email, '');\r\n this.isDisabled = _.defaultTo(init?.isDisabled, false);\r\n this.url = StringUtility.SanitizeString(init?.url);\r\n this.fax = StringUtility.SanitizeString(init?.fax);\r\n this.outboundSMSPhone = _.defaultTo(init?.outboundSMSPhone, '');\r\n this.organizationRelationKey = _.defaultTo(init?.organizationRelationKey, '');\r\n this.diagnosticLabUserProvided = _.defaultTo(init?.diagnosticLabUserProvided, undefined);\r\n this.diagnosticLabUserName = _.defaultTo(init?.diagnosticLabUserName, undefined);\r\n this.diagnosticLabPassword = _.defaultTo(init?.diagnosticLabPassword, undefined);\r\n this.hospitalHours = init?.hospitalHours ? init.hospitalHours.map(hh => new HospitalHoursModel(hh)) : [] as HospitalHoursModel[];\r\n this.isDoubleBookingEnabled = init?.isDoubleBookingEnabled ?? true;\r\n this.defaultScheduleTemplate = init?.defaultScheduleTemplate ? new HospitalScheduleTemplateModel(init?.defaultScheduleTemplate) : undefined;\r\n this.parentOrganizationId = _.defaultTo(init?.parentOrganizationId, undefined);\r\n this.currentClinicId = _.defaultTo(init?.currentClinicId, undefined);\r\n this.ivlsDevices = init?.ivlsDevices ? init.ivlsDevices.map(hh => new IvlsDeviceModel(hh)) : [] as IvlsDeviceModel[];\r\n this.outOfOfficeMessage = _.defaultTo(init?.outOfOfficeMessage, '');\r\n this.isOutOfOfficeEnabled= _.defaultTo(init?.isOutOfOfficeEnabled, false);\r\n this.awayMessage = _.defaultTo(init?.awayMessage, '');\r\n this.awayMessageEnabled= _.defaultTo(init?.awayMessageEnabled, false);\r\n\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n @computed get openDaysOfWeek(): number[] {\r\n //O.o get open days and map to day of week and then select unique day of week as an array of days of the week the hospital is open\r\n return this.hospitalHours.filter(a => a.isOpen).map(a => a.dayOfWeek).filter((item, i, ar) => ar.indexOf(item) === i);\r\n }\r\n\r\n @computed get openStartTime(): string {\r\n return '8:00'; //TODO get earliest open time for specific day\r\n }\r\n\r\n @computed get closeStartTime(): string {\r\n return '12:00'; //TODO get latest open time for specific day\r\n }\r\n\r\n @computed get hospitalFlags(): HospitalFlags {\r\n const flags: HospitalFlags = {\r\n isDoubleBookingEnabled: this.isDoubleBookingEnabled,\r\n isOutOfOfficeEnabled:this.isOutOfOfficeEnabled,\r\n };\r\n return flags;\r\n }\r\n}\r\n\r\nexport interface IHospitalListingModel extends IModel {\r\n hospitalId: number;\r\n code: string;\r\n name: string;\r\n address: string;\r\n isDisabled: boolean;\r\n organizationRelationKey: string;\r\n}\r\n\r\nexport class HospitalListingModel extends Model implements IHospitalListingModel {\r\n hospitalId: number;\r\n code: string;\r\n name: string;\r\n address: string;\r\n isDisabled: boolean;\r\n organizationRelationKey: string;\r\n\r\n constructor(params: IHospitalListingModel) {\r\n super(params);\r\n this.hospitalId = params.hospitalId;\r\n this.code = params.code;\r\n this.name = params.name;\r\n this.address = params.address;\r\n this.isDisabled = params.isDisabled;\r\n this.organizationRelationKey = params.organizationRelationKey\r\n }\r\n\r\n}\r\n\r\nexport type HospitalFlags = Pick;\r\n","export enum MacroType {\r\n Hospitals = 1,\r\n Location = 2,\r\n Provider = 3,\r\n}\r\n\r\nexport enum MacroTargetType {\r\n All = -1,\r\n ExamVisit = 1,\r\n Sms = 2,\r\n}\r\n","import * as enums from './Enums';\r\nimport { defaultTo } from \"lodash\";\r\nimport { IModel, Model,ModelRecord } from './Model';\r\nexport interface IOrganizationListingModel extends IModel {\r\n code: string,\r\n description: string,\r\n name: string,\r\n organizationId: number,\r\n organizationSource: string,\r\n organizationSourceId: number,\r\n organizationType: string,\r\n organizationTypeId: enums.OrganizationTypes,\r\n organizationVersion: string,\r\n organizationVersionId: number,\r\n shortName: string\r\n}\r\n\r\nexport class OrganizationListingModel extends Model implements ModelRecord {\r\n code: string;\r\n description: string;\r\n name: string;\r\n organizationId: number;\r\n organizationSource: string;\r\n organizationSourceId: number;\r\n organizationType: string;\r\n organizationTypeId: any;\r\n organizationVersion: string;\r\n organizationVersionId: number;\r\n shortName: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.code = defaultTo(params?.code, '');\r\n this.description = defaultTo(params?.description, '');\r\n this.name = defaultTo(params?.name, '');\r\n this.organizationId = defaultTo(params?.organizationId, 0);\r\n this.organizationSource = defaultTo(params?.organizationSource, '');\r\n this.organizationSourceId = defaultTo(params?.organizationSourceId, 0);\r\n this.organizationType = defaultTo(params?.organizationType, '');\r\n this.organizationTypeId = defaultTo(params?.organizationTypeId, 0);\r\n this.organizationVersion = defaultTo(params?.organizationVersion, '');\r\n this.organizationVersionId = defaultTo(params?.organizationVersionId, 0);\r\n this.shortName = defaultTo(params?.shortName, '');\r\n\r\n }\r\n\r\n}\r\n","import { IOrganizationListingModel, OrganizationListingModel } from \"./OrganizationListingModel\";\r\n\r\nexport interface IHospitalOrganizationListingModel extends IOrganizationListingModel {\r\n hospitalCount: number\r\n}\r\n\r\nexport class HospitalOrganizationListingModel extends OrganizationListingModel implements IHospitalOrganizationListingModel {\r\n hospitalCount: number;\r\n constructor(params: Partial) {\r\n super(params);\r\n const {\r\n hospitalCount = 0\r\n } = params;\r\n this.hospitalCount = hospitalCount;\r\n }\r\n}\r\n","import { DateTime } from 'luxon';\r\nimport * as enums from './Enums';\r\nimport { IOrganizationListingModel } from './OrganizationListingModel';\r\nimport { IUserModel } from './UserModel';\r\nexport interface IOrganizationRelationListingModel {\r\n organizationRelationId: number;\r\n authApplicationId: number;\r\n organizationId: number;\r\n key: string;\r\n isDefault: boolean;\r\n startDate: string;\r\n endDate: string | undefined;\r\n organizationName: string;\r\n organizationDescription: string;\r\n organizationType: string;\r\n organizationTypeId: number;\r\n organizationVersion: string;\r\n organizationVersionId: number;\r\n organizationSourceName: string;\r\n organizationSourceId: number;\r\n}\r\n\r\nexport class OrganizationRelationListingModel implements IOrganizationRelationListingModel {\r\n organizationRelationId: number;\r\n authApplicationId: number;\r\n organizationId: number;\r\n key: string;\r\n isDefault: boolean;\r\n startDate: string;\r\n endDate: string | undefined;\r\n organizationName: string;\r\n organizationDescription: string;\r\n organizationType: string;\r\n organizationTypeId: number;\r\n organizationVersion: string;\r\n organizationVersionId: number;\r\n organizationSourceName: string;\r\n organizationSourceId: number;\r\n\r\n constructor(params: Partial) {\r\n const {\r\n organizationRelationId = 0,\r\n authApplicationId = 0,\r\n organizationId = 0,\r\n key = '',\r\n isDefault = false,\r\n startDate = DateTime.utc().toISODate(),\r\n endDate = undefined,\r\n organizationName = '',\r\n organizationDescription = '',\r\n organizationType = '',\r\n organizationTypeId = 0,\r\n organizationVersion = '',\r\n organizationVersionId = 0,\r\n organizationSourceName = '',\r\n organizationSourceId = 0\r\n } = params\r\n\r\n this.organizationRelationId = organizationRelationId;\r\n this.authApplicationId = authApplicationId;\r\n this.organizationId = organizationId;\r\n this.key = key;\r\n this.isDefault = isDefault;\r\n this.startDate = startDate;\r\n this.endDate = endDate;\r\n this.organizationName = organizationName;\r\n this.organizationDescription = organizationDescription;\r\n this.organizationType = organizationType;\r\n this.organizationTypeId = organizationTypeId;\r\n this.organizationVersion = organizationVersion;\r\n this.organizationVersionId = organizationVersionId;\r\n this.organizationSourceName = organizationSourceName;\r\n this.organizationSourceId = organizationSourceId;\r\n\r\n }\r\n\r\n static GetUserOrganizationFromListingOrganization(user: IUserModel, organization: IOrganizationListingModel){\r\n return new OrganizationRelationListingModel({\r\n organizationRelationId: 0,\r\n authApplicationId: 1,\r\n organizationId: organization.organizationId,\r\n key: 'user-' + user.userId,\r\n startDate: DateTime.now().toISO(),\r\n endDate: undefined,\r\n organizationName: organization.name,\r\n organizationType: organization.organizationType,\r\n organizationTypeId: organization.organizationTypeId,\r\n organizationVersion: organization.organizationVersion,\r\n organizationVersionId: organization.organizationVersionId,\r\n organizationSourceName: organization.organizationSource,\r\n organizationDescription: organization.description,\r\n organizationSourceId: organization.organizationSourceId\r\n });\r\n }\r\n\r\n static CreateForUserOrgRelation(user: IUserModel, organization: IOrganizationListingModel): IOrganizationRelationListingModel {\r\n return new OrganizationRelationListingModel({\r\n organizationRelationId: 0,\r\n authApplicationId: enums.AuthApplicationIds.Clinic,\r\n organizationId: organization.organizationId,\r\n key: user.organizationRelationKey\r\n });\r\n }\r\n}\r\n","import { IOrganizationRelationListingModel, OrganizationRelationListingModel } from \"./OrganizationRelationListingModel\";\r\n\r\nexport interface IHospitalOrganizationRelationListingModel extends IOrganizationRelationListingModel {\r\n hospitalCount: number\r\n}\r\n\r\nexport class HospitalOrganizationRelationListingModel extends OrganizationRelationListingModel implements IHospitalOrganizationRelationListingModel {\r\n hospitalCount: number;\r\n constructor(params: Partial) {\r\n super(params);\r\n const {\r\n hospitalCount = 0\r\n } = params;\r\n this.hospitalCount = hospitalCount;\r\n }\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models/Model\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface IHospitalPrescriptionEventModel extends IModel {\r\n hospitalPrescriptionEventId: number;\r\n hospitalPrescriptionId: number;\r\n hospitalPrescriptionEventTypeId: number;\r\n visitSalesItemId: number | undefined;\r\n salesItemOptionId: number;\r\n integrationResponsePayloadStorageContentId: number | undefined;\r\n wasSuccessful: boolean;\r\n note: string | undefined;\r\n hospitalPrescriptionEventTypeName: string;\r\n visitSalesItemSalesItemName: string | undefined;\r\n integrationResponsePayloadStorageContentUrl: string | undefined;\r\n eventDate: string;\r\n}\r\n\r\nexport class HospitalPrescriptionEventModel extends Model implements ModelRecord {\r\n hospitalPrescriptionEventId: number;\r\n hospitalPrescriptionId: number;\r\n hospitalPrescriptionEventTypeId: number;\r\n visitSalesItemId: number | undefined;\r\n salesItemOptionId: number;\r\n integrationResponsePayloadStorageContentId: number | undefined;\r\n wasSuccessful: boolean;\r\n note: string | undefined;\r\n hospitalPrescriptionEventTypeName: string;\r\n visitSalesItemSalesItemName: string | undefined;\r\n integrationResponsePayloadStorageContentUrl: string | undefined;\r\n eventDate: DateTime;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.hospitalPrescriptionEventId = defaultTo(params?.hospitalPrescriptionEventId, 0);\r\n this.hospitalPrescriptionId = defaultTo(params?.hospitalPrescriptionId, 0);\r\n this.hospitalPrescriptionEventTypeId = defaultTo(params?.hospitalPrescriptionEventTypeId, 0);\r\n this.visitSalesItemId = defaultTo(params?.visitSalesItemId, 0);\r\n this.salesItemOptionId = defaultTo(params?.salesItemOptionId, 0);\r\n this.integrationResponsePayloadStorageContentId = defaultTo(params?.integrationResponsePayloadStorageContentId, 0);\r\n this.wasSuccessful = defaultTo(params?.wasSuccessful, false);\r\n this.note = defaultTo(params?.note, \"\");\r\n this.hospitalPrescriptionEventTypeName = defaultTo(params?.hospitalPrescriptionEventTypeName, \"\");\r\n this.visitSalesItemSalesItemName = defaultTo(params?.visitSalesItemSalesItemName, \"\");\r\n this.integrationResponsePayloadStorageContentUrl = defaultTo(params?.integrationResponsePayloadStorageContentUrl, \"\");\r\n this.eventDate = params?.eventDate ? DateTime.fromISO(params?.eventDate, { zone: \"utc\" }) : DateTime.utc();\r\n }\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { HospitalPrescriptionRefillStatus, HospitalPrescriptionStatus } from \"@common/models/Enums\";\r\nimport { StringUtility } from \"@common/utils\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { IModel, ModelRecord, PhotoModel } from \"@common/models\";\r\nimport { HospitalPrescriptionModel } from \"./HospitalPrescriptionModel\";\r\n\r\nexport interface IHospitalPrescriptionRequestListingModel extends IModel {\r\n hospitalPrescriptionId: number | undefined;\r\n hospitalPrescriptionStatusId: HospitalPrescriptionStatus | undefined;\r\n hospitalPrescriptionRefillId: number | undefined;\r\n hospitalPrescriptionRefillStatusId: HospitalPrescriptionRefillStatus | undefined;\r\n prescriptionName: string;\r\n expiresDate: string;\r\n refills: string;\r\n notes: string;\r\n instructions: string;\r\n salesDate: string;\r\n veterinarianId: number | undefined;\r\n veterinarianName: string;\r\n veterinarianFirstName: string | undefined;\r\n veterinarianLastName: string | undefined;\r\n veterinarianLicenseNumber: string | undefined;\r\n veterinarianLicenseStateId: number | undefined;\r\n veterinarianLicenseStateAbbreviation: string | undefined;\r\n veterinarianLicenseExpirationDate: string | undefined;\r\n veterinarianEmail: string | undefined;\r\n veterinarianSignaturePhotoId: number | undefined;\r\n veterinarianSignaturePhotoURL: string | undefined;\r\n fullName: string;\r\n unitOfMeasure: string;\r\n dose: string | undefined;\r\n frequency: string;\r\n optionDisplayName: string | undefined;\r\n clientId: number;\r\n clientFirstName: string;\r\n clientLastName: string;\r\n clientAddress: string;\r\n clientCity: string;\r\n clientState: string;\r\n clientZipcode: string;\r\n petId: number;\r\n petName: string;\r\n petSpecies: string;\r\n petBreed: string;\r\n petBirthDate: string;\r\n petWeight: number;\r\n quantity: string;\r\n dateRequested: string;\r\n dateUpdated: string\r\n rowVersion: string;\r\n hospitalPrescriptionRowVersion: string | undefined;\r\n fillByDate: string;\r\n completedDate: string;\r\n salesItemOptionId: number | undefined;\r\n orderNotes: string | undefined;\r\n creatorFirstName: string | undefined;\r\n creatorLastName: string | undefined;\r\n creatorTitle: string | undefined;\r\n dateCreated: string;\r\n invoiceId: number;\r\n}\r\n\r\nexport class HospitalPrescriptionRequestListingModel implements ModelRecord {\r\n hospitalPrescriptionId: number | undefined;\r\n hospitalPrescriptionStatusId: HospitalPrescriptionStatus | undefined;\r\n hospitalPrescriptionRefillId: number | undefined;\r\n hospitalPrescriptionRefillStatusId: HospitalPrescriptionRefillStatus | undefined;\r\n prescriptionName: string;\r\n expiresDate: DateTime | undefined;\r\n refills: string;\r\n notes: string | undefined;\r\n instructions: string | undefined;\r\n salesDate: DateTime;\r\n veterinarianId: number | undefined;\r\n veterinarianName: string;\r\n veterinarianFirstName: string | undefined;\r\n veterinarianLastName: string | undefined;\r\n veterinarianLicenseNumber: string | undefined;\r\n veterinarianLicenseStateId: number | undefined;\r\n veterinarianLicenseStateAbbreviation: string | undefined;\r\n veterinarianLicenseExpirationDate: DateTime | undefined;\r\n veterinarianEmail: string | undefined;\r\n veterinarianSignaturePhotoId: number | undefined;\r\n veterinarianSignaturePhotoURL: string | undefined;\r\n fullName: string;\r\n unitOfMeasure: string;\r\n dose: string | undefined;\r\n frequency: string | undefined;\r\n optionDisplayName: string | undefined;\r\n clientId: number;\r\n clientFirstName: string;\r\n clientLastName: string;\r\n clientAddress: string;\r\n clientCity: string;\r\n clientState: string;\r\n clientZipcode: string;\r\n petId: number;\r\n petName: string;\r\n petSpecies: string;\r\n petBreed: string;\r\n petBirthDate: string;\r\n petWeight: number;\r\n quantity: string;\r\n dateRequested: string;\r\n rowVersion: string;\r\n hospitalPrescriptionRowVersion: string | undefined;\r\n fillByDate: DateTime | undefined;\r\n completedDate: DateTime | undefined;\r\n salesItemOptionId: number | undefined;\r\n orderNotes: string | undefined;\r\n creatorFirstName: string | undefined;\r\n creatorLastName: string | undefined;\r\n creatorTitle: string | undefined;\r\n dateCreated: DateTime | undefined;\r\n dateUpdated: DateTime | undefined;\r\n invoiceId: number;\r\n\r\n constructor(params: IHospitalPrescriptionRequestListingModel) {\r\n this.hospitalPrescriptionId = defaultTo(params?.hospitalPrescriptionId, undefined);\r\n this.hospitalPrescriptionStatusId = defaultTo(params?.hospitalPrescriptionStatusId, undefined);\r\n this.hospitalPrescriptionRefillId = defaultTo(params?.hospitalPrescriptionRefillId, undefined);\r\n this.hospitalPrescriptionRefillStatusId = defaultTo(params?.hospitalPrescriptionRefillStatusId, undefined);\r\n this.prescriptionName = defaultTo(params?.prescriptionName, '');\r\n this.expiresDate = StringUtility.SanitizeDateTimeISOAsUtc(params.expiresDate);\r\n this.refills = defaultTo(params?.refills, '');\r\n this.notes = params?.notes;\r\n this.instructions = params?.instructions;\r\n this.salesDate = StringUtility.SanitizeDateTimeISOAsUtc(params.salesDate)!;\r\n this.veterinarianId = defaultTo(params?.veterinarianId, undefined);\r\n this.veterinarianName = defaultTo(params?.veterinarianName, '');\r\n this.veterinarianFirstName = params?.veterinarianFirstName;\r\n this.veterinarianLastName = params?.veterinarianLastName;\r\n this.veterinarianLicenseNumber = params?.veterinarianLicenseNumber;\r\n this.veterinarianLicenseStateId = params?.veterinarianLicenseStateId\r\n this.veterinarianLicenseStateAbbreviation = params?.veterinarianLicenseStateAbbreviation;\r\n this.veterinarianLicenseExpirationDate = params?.veterinarianLicenseExpirationDate ? DateTime.fromISO(params?.veterinarianLicenseExpirationDate) : undefined;\r\n this.veterinarianEmail = params?.veterinarianEmail;\r\n this.veterinarianSignaturePhotoId = params?.veterinarianSignaturePhotoId;\r\n this.veterinarianSignaturePhotoURL = defaultTo(params?.veterinarianSignaturePhotoURL, undefined);\r\n this.fullName = defaultTo(params?.fullName, '');\r\n this.unitOfMeasure = defaultTo(params?.unitOfMeasure, '');\r\n this.dose = params?.dose;\r\n this.frequency = params?.frequency;\r\n this.optionDisplayName = defaultTo(params?.optionDisplayName, '');\r\n this.clientId = defaultTo(params?.clientId, 0);\r\n this.clientFirstName = defaultTo(params?.clientFirstName, '');\r\n this.clientLastName = defaultTo(params?.clientLastName, '');\r\n this.clientAddress = defaultTo(params?.clientAddress, '');\r\n this.clientCity = defaultTo(params?.clientCity, '');\r\n this.clientState = defaultTo(params?.clientState, '');\r\n this.clientZipcode = defaultTo(params?.clientZipcode, '');\r\n this.petId = defaultTo(params?.petId, 0);\r\n this.petName = defaultTo(params?.petName, '');\r\n this.petSpecies = defaultTo(params?.petSpecies, '');\r\n this.petBreed = defaultTo(params?.petBreed, '');\r\n this.petBirthDate = defaultTo(params?.petBirthDate, '');\r\n this.petWeight = defaultTo(params?.petWeight, 0);\r\n this.quantity = defaultTo(params?.quantity, '');\r\n this.dateRequested = defaultTo(params?.dateRequested, '');\r\n this.rowVersion = defaultTo(params?.rowVersion, '');\r\n this.hospitalPrescriptionRowVersion = defaultTo(params?.hospitalPrescriptionRowVersion, '');\r\n this.fillByDate = StringUtility.SanitizeDateTimeISO(params.fillByDate);\r\n this.completedDate = StringUtility.SanitizeDateTimeISO(params.completedDate);\r\n this.salesItemOptionId = defaultTo(params?.salesItemOptionId, undefined);\r\n this.orderNotes = defaultTo(params?.orderNotes, undefined);\r\n this.creatorFirstName = defaultTo(params?.creatorFirstName, '');\r\n this.creatorLastName = defaultTo(params?.creatorLastName, '');\r\n this.creatorTitle = defaultTo(params?.creatorTitle, '');\r\n this.dateCreated = params?.dateRequested ? DateTime.fromISO(params?.dateRequested, { zone: \"utc\" }) : undefined;\r\n this.dateUpdated = params?.dateUpdated ? DateTime.fromISO(params?.dateUpdated, { zone: \"utc\" }) : undefined;\r\n this.invoiceId= defaultTo(params?.invoiceId, 0);\r\n }\r\n\r\n toHospitalPrescriptionModel(): HospitalPrescriptionModel {\r\n return new HospitalPrescriptionModel({\r\n hospitalPrescriptionId: this.hospitalPrescriptionId,\r\n prescribedProduct: this.prescriptionName,\r\n remainingRefills: defaultTo(Number(this.refills), 0),\r\n quantity: this.quantity,\r\n unitOfMeasure: this.unitOfMeasure,\r\n dose: this.dose,\r\n frequency: this.frequency,\r\n instructions: this.instructions,\r\n expirationDate: defaultTo(this.expiresDate?.toISO(), undefined),\r\n notes: this.notes,\r\n salesDate: defaultTo(this.salesDate?.toISO(), undefined),\r\n veterinarianName: this.veterinarianName,\r\n veterinarianFirstName: this.veterinarianFirstName,\r\n veterinarianLastName: this.veterinarianLastName,\r\n veterinarianLicenseNumber: this.veterinarianLicenseNumber,\r\n veterinarianLicenseStateId: this.veterinarianLicenseStateId,\r\n veterinarianLicenseStateAbbreviation: this.veterinarianLicenseStateAbbreviation,\r\n veterinarianLicenseExpirationDate: defaultTo(this.veterinarianLicenseExpirationDate?.toISO(), undefined),\r\n veterinarianEmail: this.veterinarianEmail,\r\n fullName: this.fullName,\r\n optionDisplayName: this.optionDisplayName,\r\n fillByDate: defaultTo(this.fillByDate?.toISO(), undefined),\r\n completedDate: defaultTo(this.completedDate?.toISO(), undefined),\r\n petId: this.petId,\r\n veterinarianSignaturePhotoId: this.veterinarianSignaturePhotoId,\r\n veterinarianSignaturePhoto: this.veterinarianSignaturePhotoURL ? new PhotoModel({ photoUrl: this.veterinarianSignaturePhotoURL }) : undefined,\r\n veterinarianId: this.veterinarianId,\r\n salesItemOptionId: this.salesItemOptionId,\r\n hospitalPrescriptionStatusId: this.hospitalPrescriptionStatusId,\r\n orderNotes: this.orderNotes,\r\n rowVersion: this.hospitalPrescriptionRowVersion,\r\n dateCreated: defaultTo(this.dateCreated?.toISO(), undefined),\r\n dateUpdated: defaultTo(this.dateUpdated?.toISO(), undefined),\r\n invoiceId: defaultTo(this.invoiceId, 0)\r\n })\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model } from \"./Model\";\r\n\r\nexport interface ITraitModel extends IModel {\r\n traitId: number;\r\n name: string;\r\n isForSalesCategories: boolean;\r\n isForSalesSubCategories: boolean;\r\n isForSalesItems: boolean;\r\n isForVisitSalesItems: boolean;\r\n isForVeterinarians: boolean;\r\n isForUsers: boolean;\r\n isForStates: boolean;\r\n isForStores: boolean;\r\n isForHospitals: boolean;\r\n}\r\n\r\nexport class TraitModel extends Model implements ITraitModel {\r\n traitId: number;\r\n name: string;\r\n isForSalesCategories: boolean;\r\n isForSalesSubCategories: boolean;\r\n isForSalesItems: boolean;\r\n isForVisitSalesItems: boolean;\r\n isForVeterinarians: boolean;\r\n isForUsers: boolean;\r\n isForStates: boolean;\r\n isForStores: boolean;\r\n isForHospitals: boolean;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.traitId = defaultTo(params.traitId, 0);\r\n this.name = defaultTo(params.name, \"\");\r\n this.isForSalesCategories = defaultTo(params.isForSalesCategories, false);\r\n this.isForSalesSubCategories = defaultTo(params.isForSalesSubCategories, false);\r\n this.isForSalesItems = defaultTo(params.isForSalesItems, false);\r\n this.isForVisitSalesItems = defaultTo(params.isForVisitSalesItems, false);\r\n this.isForVeterinarians = defaultTo(params.isForVeterinarians, false);\r\n this.isForUsers = defaultTo(params.isForUsers, false);\r\n this.isForStates = defaultTo(params.isForStates, false);\r\n this.isForStores = defaultTo(params.isForStores, false);\r\n this.isForHospitals = defaultTo(params.isForHospitals, false);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model } from \"./Model\";\r\nimport { ITraitModel, TraitModel } from \"./TraitModel\";\r\n\r\nexport interface IModelWithTrait extends IModel {\r\n traitId: number;\r\n stringValue: string | undefined;\r\n numberValue: number | undefined;\r\n decimalValue: number | undefined;\r\n boolValue: boolean | undefined;\r\n extendedValue: string | undefined;\r\n trait: ITraitModel;\r\n}\r\n\r\nexport class ModelWithTrait extends Model implements Record {\r\n traitId: number;\r\n stringValue: string | undefined;\r\n numberValue: number | undefined;\r\n decimalValue: number | undefined;\r\n boolValue: boolean | undefined;\r\n extendedValue: string | undefined;\r\n trait: TraitModel;\r\n\r\n constructor(params: Partial) {\r\n super(params)\r\n this.traitId = defaultTo(params.traitId, 0)\r\n this.stringValue = params.stringValue;\r\n this.numberValue = params.numberValue;\r\n this.decimalValue = params.decimalValue;\r\n this.boolValue = params.boolValue;\r\n this.extendedValue = params.extendedValue;\r\n this.trait = new TraitModel(defaultTo(params.trait, {}));\r\n }\r\n\r\n}\r\n","import { TraitModel } from \"@common/models/TraitModel\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { IModelWithTrait, ModelWithTrait } from \"./ModelWithTrait\";\r\nimport { SalesItemModel } from \"./SalesItemModel\";\r\n\r\nexport interface ISalesItemTraitModel extends IModelWithTrait {\r\n salesItemTraitId: number;\r\n salesItemId: number;\r\n // salesItem: ISalesItemModel;\r\n}\r\n\r\nexport class SalesItemTraitModel extends ModelWithTrait implements ISalesItemTraitModel {\r\n salesItemTraitId: number;\r\n salesItemId: number;\r\n // salesItem: ISalesItemModel;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.salesItemTraitId = defaultTo(params.salesItemTraitId, 0);\r\n this.salesItemId = defaultTo(params.salesItemId, 0);\r\n }\r\n\r\n static GetSalesItemTraitModelFromTraitModel(trait: Partial, salesItem: Partial){\r\n return new SalesItemTraitModel({\r\n salesItemTraitId: 0,\r\n salesItemId: salesItem.salesItemId,\r\n traitId: trait.traitId,\r\n trait: new TraitModel(trait),\r\n })\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model } from \".\";\r\n\r\nexport interface IHospitalPrescriptionRefillStatusModel extends IModel {\r\n hospitalPrescriptionRefillStatusId: number\r\n name: string\r\n description: string;\r\n}\r\n\r\nexport class HospitalPrescriptionRefillStatusModel extends Model implements IHospitalPrescriptionRefillStatusModel {\r\n hospitalPrescriptionRefillStatusId: number;\r\n name: string;\r\n description: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.hospitalPrescriptionRefillStatusId = defaultTo(params?.hospitalPrescriptionRefillStatusId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.description = defaultTo(params?.description, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\n\r\nexport interface IVisitSalesItemPublicModel {\r\n salesItemCode: string;\r\n salesItemDescription: string;\r\n salesItemName: string;\r\n salesItemFullName: string;\r\n salesItemOptionName: string;\r\n salesItemOptionDisplayName: string;\r\n salesItemPrice: number;\r\n invoicePrice: number | undefined;\r\n invoiceUnitPrice: number | undefined;\r\n salesPackageId: number | undefined;\r\n salesPackageName: string | undefined;\r\n salesPackagePrice: number | undefined;\r\n quantity: number | undefined;\r\n salesItemUnitPrice: number | undefined;\r\n estimateQuantityLow: number | undefined;\r\n estimateQuantityHigh: number | undefined;\r\n showQuantityRanges: boolean | undefined;\r\n salesItemOptionAllowPartialQuantities: boolean | undefined;\r\n salesItemOptionAllowQuantityChanges: boolean | undefined;\r\n salesItemOptionAllowQuantityRanges: boolean | undefined;\r\n salesItemOptionAllowUserEnteredPrice: boolean | undefined; // defines if the Sales Item Option allows the user to dictate the price of the item once it is in a visit. Whatever price that is in the pricing rule will initially be set when items are added to a visit, but the pricing engine in the platform will not attempt to set/reset the price at any time.\r\n salesItemOptionMinimumQuantity: number | undefined;\r\n salesItemOptionMaximumQuantity: number | undefined;\r\n dispensingFee: number | undefined;\r\n wasDeclinedByClient: boolean;\r\n wasDeclinedByVeterinarian: boolean;\r\n isPending: boolean;\r\n given: boolean;\r\n isDiscountItem: boolean;\r\n isPackageAddOn: boolean;\r\n wasPreviouslyPended: boolean;\r\n packageAddOnPrice: number | undefined;//UI Only\r\n upgradingPrice: number | undefined;//UI Only\r\n isPackageUpgrade: boolean;\r\n}\r\n\r\nexport class VisitSalesItemPublicModel implements IVisitSalesItemPublicModel {\r\n salesItemCode: string;\r\n salesItemDescription: string;\r\n salesItemName: string;\r\n salesItemFullName: string;\r\n salesItemOptionName: string;\r\n salesItemOptionDisplayName: string;\r\n salesItemPrice: number;\r\n invoicePrice: number;\r\n invoiceUnitPrice: number;\r\n salesPackageId: number | undefined;\r\n salesPackageName: string | undefined;\r\n salesPackagePrice: number | undefined;\r\n quantity: number;\r\n salesItemUnitPrice: number;\r\n estimateQuantityLow: number | undefined;\r\n estimateQuantityHigh: number | undefined;\r\n showQuantityRanges: boolean;\r\n salesItemOptionAllowPartialQuantities: boolean;\r\n salesItemOptionAllowQuantityChanges: boolean;\r\n salesItemOptionAllowQuantityRanges: boolean;\r\n salesItemOptionAllowUserEnteredPrice: boolean; // defines if the Sales Item Option allows the user to dictate the price of the item once it is in a visit. Whatever price that is in the pricing rule will initially be set when items are added to a visit, but the pricing engine in the platform will not attempt to set/reset the price at any time.\r\n salesItemOptionMinimumQuantity: number;\r\n salesItemOptionMaximumQuantity: number;\r\n dispensingFee: number | undefined\r\n wasDeclinedByClient: boolean;\r\n wasDeclinedByVeterinarian: boolean;\r\n isPending: boolean;\r\n given: boolean;\r\n isDiscountItem: boolean;\r\n isPackageAddOn: boolean;\r\n packageAddOnPrice: number | undefined;//UI Only\r\n upgradingPrice: number | undefined; //UI Only*/\r\n wasPreviouslyPended: boolean;\r\n isPackageUpgrade: boolean;\r\n\r\n constructor(params: IVisitSalesItemPublicModel) {\r\n this.salesItemCode = params.salesItemCode;\r\n this.salesItemDescription = params.salesItemDescription;\r\n this.salesItemName = params.salesItemName;\r\n this.salesItemFullName = params.salesItemFullName;\r\n this.salesItemOptionName = params.salesItemOptionName;\r\n this.salesItemOptionDisplayName = params.salesItemOptionDisplayName;\r\n this.salesPackageId = params.salesPackageId;\r\n this.salesItemPrice = params.salesItemPrice;\r\n this.salesPackageName = params.salesPackageName;\r\n this.salesPackagePrice = params.salesPackagePrice;\r\n this.quantity = defaultTo(params.quantity, 1);\r\n this.salesItemUnitPrice = defaultTo(params.salesItemUnitPrice, params.salesItemPrice);\r\n this.estimateQuantityLow = params.estimateQuantityLow;\r\n this.estimateQuantityHigh = params.estimateQuantityHigh;\r\n this.showQuantityRanges = defaultTo(params.showQuantityRanges, false);\r\n this.salesItemOptionAllowPartialQuantities = defaultTo(params.salesItemOptionAllowPartialQuantities, false);\r\n this.salesItemOptionAllowQuantityChanges = defaultTo(params.salesItemOptionAllowQuantityChanges, false);\r\n this.salesItemOptionAllowQuantityRanges = defaultTo(params.salesItemOptionAllowQuantityRanges, false);\r\n this.salesItemOptionAllowUserEnteredPrice = defaultTo(params.salesItemOptionAllowUserEnteredPrice, false);\r\n this.salesItemOptionMinimumQuantity = defaultTo(params.salesItemOptionMinimumQuantity, 1);\r\n this.salesItemOptionMaximumQuantity = defaultTo(params.salesItemOptionMaximumQuantity, 1); this.wasDeclinedByClient = defaultTo(params.wasDeclinedByClient, false);\r\n this.dispensingFee = params.dispensingFee;\r\n this.wasDeclinedByVeterinarian = defaultTo(params.wasDeclinedByVeterinarian, false);\r\n this.isPending = defaultTo(params.isPending, false);\r\n this.given = defaultTo(params.given, false);\r\n this.isDiscountItem = defaultTo(params.isDiscountItem, false);\r\n this.invoicePrice = defaultTo(params.invoicePrice, params.salesItemPrice);\r\n this.invoiceUnitPrice = defaultTo(params.invoiceUnitPrice, defaultTo(params.salesItemUnitPrice, params.salesItemPrice));\r\n this.isPackageAddOn = defaultTo(params.isPackageAddOn, false);\r\n this.isPackageUpgrade = defaultTo(params.isPackageUpgrade, false);\r\n this.wasPreviouslyPended = defaultTo(params.wasPreviouslyPended, false);\r\n }\r\n}\r\n","import { defaultTo, orderBy } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { VisitSalesItemPublicModel } from './VisitSalesItemPublicModel';\r\nimport { IVisitSalesItemAttributeModel, IVisitSalesItemPublicModel, VisitSalesItemAttributeModel, VisitSalesItemTraitListingModel, IVisitSalesItemTraitListingModel } from \".\";\r\nimport { DiscountItemTypes } from \"./Enums\";\r\n\r\nexport interface IVisitSalesItemModel extends IVisitSalesItemPublicModel {\r\n isInPackage: boolean;\r\n /*\r\n isPackageAddOn: boolean; \r\n */\r\n salesItemId: number;\r\n salesItemOptionId: number;\r\n salesPlanId: number | undefined;\r\n salesPlanName: string | undefined;\r\n\r\n salesItemSalesItemTypeId: number;\r\n salesItemSalesItemTypeName: string;\r\n salesItemCommunicationTypeId: number | null;\r\n salesItemReminderDays: number | null;\r\n dueDate?: string | undefined;\r\n /*\r\n salesItemSalesCategoryId: number;\r\n salesItemSalesCategoryName: string;\r\n salesItemSalesSubCategoryId: number;\r\n salesItemSalesSubCategoryName: string;\r\n \r\n \r\n /*\r\n salesItemDiscountTypeId: number;\r\n salesItemDiscountTypeName: string;\r\n salesItemIsAutomaticallyGiven: boolean;\r\n salesItemIsRabiesVaccination: boolean;\r\n \r\n salesItemCommunicationTypeName: string;\r\n \r\n salesItemSupplierProductName: string;\r\n */\r\n salesItemSupplierProductCode: string;\r\n visitId: number;\r\n /*\r\n reminderResetByVisitSalesItemId: number | null;\r\n pendedResetByVisitSalesItemId: number | null;\r\n */\r\n visitSalesItemId: number;\r\n /*\r\n prescriptionLabelId: number | null;\r\n salesItemOptionRefills: number | null;\r\n salesItemOptionPackageQuantity: number | null;\r\n */\r\n parentVisitSalesItemId: number | undefined;\r\n /*\r\n salesItemAutoAddToVisitTypeId: number;\r\n salesItemAutoAddToVisitTypeName: string;\r\n */\r\n visitSalesItemAttributes: IVisitSalesItemAttributeModel[];\r\n salesItemOptionBusinessLineSKU: string | undefined;\r\n salesItemOptionPetcoSKU: string | undefined;\r\n salesItemOptionUnitOfMeasureQuantity: number | undefined;\r\n salesItemOptionUnitOfMeasureId: number | undefined;\r\n salesItemOptionUnitOfMeasureName: string | undefined;\r\n visitSalesItemTraits: IVisitSalesItemTraitListingModel[];\r\n /*\r\n salesItemOptionAdditionalInfoLabelId: number | null;\r\n salesItemOptionAdditionalInfoLabel: string;\r\n diagnosticResultsRawData: string;\r\n includeInDrugLog: boolean;\r\n prescriptionFulfillmentId: number | null;\r\n prescriptionFulfillmentPackageItemCount: number | null;\r\n prescriptionFulfillmentPackageRefillDays: number | null;\r\n prescriptionFulfillmentPackagesSold: number | null;\r\n prescriptionFulfillmentPackagesForYear: number | null;\r\n prescriptionFulfillmentPackagesSoldRefillDays: number | null;\r\n prescriptionVisitSalesItemId: number | null; \r\n salesItemOptionPrescriptionLabelName: string;\r\n salesItemOptionPrescriptionLabelInstructions: string;\r\n // prescription: PrescriptionModel;\r\n attributeHTML: string;\r\n attributeText: string;\r\n diagnosticHTML: string;\r\n */\r\n}\r\n\r\nexport class VisitSalesItemModel extends VisitSalesItemPublicModel implements IVisitSalesItemModel {// Record {\r\n visitId: number;\r\n visitSalesItemId: number;\r\n salesItemId: number;\r\n salesItemOptionId: number;\r\n visitSalesItemAttributes: VisitSalesItemAttributeModel[];\r\n parentVisitSalesItemId: number | undefined\r\n salesItemOptionBusinessLineSKU: string | undefined\r\n attributeElements: (string | JSX.Element | JSX.Element[])[]\r\n isInPackage: boolean;\r\n salesPlanId: number | undefined;\r\n salesPlanName: string | undefined;\r\n salesItemSalesItemTypeId: number;\r\n salesItemSalesItemTypeName: string;\r\n salesItemCommunicationTypeId: number | null;\r\n salesItemOptionPetcoSKU: string | undefined;\r\n salesItemOptionUnitOfMeasureQuantity: number | undefined;\r\n salesItemOptionUnitOfMeasureId: number | undefined;\r\n salesItemOptionUnitOfMeasureName: string | undefined;\r\n salesItemSupplierProductCode: string;\r\n visitSalesItemTraits: VisitSalesItemTraitListingModel[];\r\n salesItemReminderDays: number | null;\r\n dueDate?: string | undefined;\r\n\r\n constructor(params: IVisitSalesItemModel, visitDate?: DateTime | undefined) {\r\n super(params);\r\n this.visitId = defaultTo(params.visitId, 0);\r\n this.visitSalesItemId = defaultTo(params.visitSalesItemId, 0);\r\n this.salesItemId = defaultTo(params.salesItemId, 0);\r\n this.salesItemOptionId = defaultTo(params.salesItemOptionId, 0);\r\n this.salesItemSalesItemTypeId = defaultTo(params.salesItemSalesItemTypeId, 0);\r\n this.parentVisitSalesItemId = params.parentVisitSalesItemId;\r\n this.salesItemOptionBusinessLineSKU = params.salesItemOptionBusinessLineSKU;\r\n this.salesItemOptionPetcoSKU = defaultTo(params.salesItemOptionPetcoSKU, \"\");\r\n this.salesItemOptionUnitOfMeasureQuantity = params.salesItemOptionUnitOfMeasureQuantity;\r\n this.salesItemOptionUnitOfMeasureId = params.salesItemOptionUnitOfMeasureId;\r\n this.salesItemOptionUnitOfMeasureName = defaultTo(params.salesItemOptionUnitOfMeasureName, \"\");\r\n this.salesItemCommunicationTypeId = defaultTo(params.salesItemCommunicationTypeId, 0);\r\n this.salesItemSalesItemTypeName = defaultTo(params.salesItemSalesItemTypeName, \"\");\r\n this.visitSalesItemAttributes = orderBy(params.visitSalesItemAttributes ?? [], \"sortOrder\").map(vsa => new VisitSalesItemAttributeModel(vsa, visitDate, this.quantity, this.salesItemOptionUnitOfMeasureName, this.salesItemCommunicationTypeId!))\r\n this.isInPackage = defaultTo(params.isInPackage, false)\r\n this.salesPackageName = params.salesPackageName\r\n this.salesPlanId = params.salesPlanId;\r\n this.salesPlanName = params.salesPlanName;\r\n this.attributeElements = VisitSalesItemAttributeModel.parseAttributeElements(this.visitSalesItemAttributes);\r\n this.salesItemSalesItemTypeId = defaultTo(params.salesItemSalesItemTypeId, 0);\r\n this.salesItemSupplierProductCode = params.salesItemSupplierProductCode;\r\n this.visitSalesItemTraits = (params.visitSalesItemTraits ?? []).map(vsit => new VisitSalesItemTraitListingModel(vsit));\r\n this.salesItemReminderDays = params.salesItemReminderDays;\r\n this.dueDate = defaultTo(params.dueDate, !_.isNil(params.salesItemReminderDays) && !_.isNil(visitDate)? visitDate.plus({ days: params.salesItemReminderDays! }).toISO():undefined);\r\n }\r\n\r\n IsDiscountItem = () => DiscountItemTypes.includes(this.salesItemSalesItemTypeId);\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { HospitalPrescriptionRefillStatusModel, IHospitalPrescriptionRefillStatusModel } from \"./HospitalPrescriptionRefillStatusModel\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { IVisitSalesItemModel, VisitSalesItemModel } from \"./VisitSalesItemModel\";\r\n\r\nexport interface IHospitalPrescriptionRefillModel extends IModel {\r\n hospitalPrescriptionRefillId: number;\r\n dateFilled: string | undefined;\r\n hospitalPrescriptionId: number;\r\n visitSalesItemId: number;\r\n visitSalesItem: IVisitSalesItemModel;\r\n hospitalPrescriptionRefillStatusId: number;\r\n hospitalPrescriptionRefillStatus: IHospitalPrescriptionRefillStatusModel;\r\n hospitalId: number;\r\n dateCreated: string | undefined;\r\n}\r\n\r\nexport class HospitalPrescriptionRefillModel extends Model implements ModelRecord {\r\n hospitalPrescriptionRefillId: number;\r\n dateFilled: DateTime | undefined;\r\n hospitalPrescriptionId: number;\r\n visitSalesItemId: number;\r\n visitSalesItem: VisitSalesItemModel | undefined;\r\n hospitalPrescriptionRefillStatusId: number;\r\n hospitalPrescriptionRefillStatus: HospitalPrescriptionRefillStatusModel;\r\n hospitalId: number;\r\n dateCreated: DateTime | undefined;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.hospitalPrescriptionRefillId = defaultTo(params.hospitalPrescriptionRefillId, 0);\r\n this.dateFilled = params.dateFilled ? DateTime.fromISO(params.dateFilled, { zone: \"utc\" }) : undefined;\r\n this.hospitalPrescriptionId = defaultTo(params.hospitalPrescriptionId, 0);\r\n this.visitSalesItemId = defaultTo(params.visitSalesItemId, 0);\r\n this.visitSalesItem = params.visitSalesItem ? new VisitSalesItemModel(params.visitSalesItem) : undefined;\r\n this.hospitalPrescriptionRefillStatusId = defaultTo(params.hospitalPrescriptionRefillStatusId, 0);\r\n this.hospitalPrescriptionRefillStatus = new HospitalPrescriptionRefillStatusModel(params.hospitalPrescriptionRefillStatus);\r\n this.hospitalId = defaultTo(params.hospitalId, 0);\r\n this.dateCreated = params.dateCreated ? DateTime.fromISO(params.dateCreated, { zone: \"utc\" }) : undefined;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model } from \".\";\r\n\r\nexport interface IHospitalPrescriptionStatusModel extends IModel {\r\n hospitalPrescriptionStatusId: number;\r\n name: string;\r\n description: string;\r\n isOwnedByPetPass: boolean;\r\n canBeRefilledByPetPass: boolean;\r\n canBeRecalledByPetPass: boolean;\r\n canBeCancelledByPetPass: boolean;\r\n}\r\n\r\nexport class HospitalPrescriptionStatusModel extends Model implements IHospitalPrescriptionStatusModel {\r\n hospitalPrescriptionStatusId: number;\r\n name: string;\r\n description: string;\r\n isOwnedByPetPass: boolean;\r\n canBeRefilledByPetPass: boolean;\r\n canBeRecalledByPetPass: boolean;\r\n canBeCancelledByPetPass: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.hospitalPrescriptionStatusId = defaultTo(params?.hospitalPrescriptionStatusId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.description = defaultTo(params?.description, '');\r\n this.isOwnedByPetPass = defaultTo(params?.isOwnedByPetPass, false);\r\n this.canBeRefilledByPetPass = defaultTo(params?.canBeRefilledByPetPass, false);\r\n this.canBeRecalledByPetPass = defaultTo(params?.canBeRecalledByPetPass, false);\r\n this.canBeCancelledByPetPass = defaultTo(params?.canBeCancelledByPetPass, false);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, ISalesItemOptionTagAlongListingModel, Model, SalesItemOptionTagAlongListingModel } from \".\";\r\n\r\nexport interface ISalesItemOptionModel extends IModel {\r\n salesItemOptionId: number;\r\n salesItemId: number;\r\n name: string;\r\n displayName: string;\r\n reminderDays: number | undefined;\r\n sortOrder: number;\r\n code: string;\r\n prescriptionLabelId: number | undefined;\r\n // salesItem: SalesItemModel;\r\n refills: number | undefined;\r\n packageQuantity: number | undefined;\r\n additionalInfoLabelId: number | undefined;\r\n prescriptionFulfillmentId: number | undefined;\r\n petcoSKU: string;\r\n allowPartialQuantities: boolean;\r\n allowQuantityChanges: boolean;\r\n allowQuantityRanges: boolean;\r\n defaultQuantity: number;\r\n minimumQuantity: number;\r\n maximumQuantity: number;\r\n unitOfMeasureId: number;\r\n unitOfMeasureQuantity: number;\r\n allowUserEnteredPrice: boolean;\r\n tagAlongs: ISalesItemOptionTagAlongListingModel[];\r\n clinicSKU: string;\r\n hospitalSKU: string;\r\n dosesSold: number | undefined;\r\n}\r\n\r\nexport class SalesItemOptionModel extends Model implements Record {\r\n salesItemOptionId: number;\r\n salesItemId: number;\r\n name: string;\r\n displayName: string;\r\n reminderDays: number | undefined;\r\n sortOrder: number;\r\n code: string;\r\n prescriptionLabelId: number | undefined;\r\n refills: number | undefined;\r\n packageQuantity: number | undefined;\r\n additionalInfoLabelId: number | undefined;\r\n prescriptionFulfillmentId: number | undefined;\r\n petcoSKU: string;\r\n allowPartialQuantities: boolean;\r\n allowQuantityChanges: boolean;\r\n allowQuantityRanges: boolean;\r\n defaultQuantity: number;\r\n minimumQuantity: number;\r\n maximumQuantity: number;\r\n unitOfMeasureId: number;\r\n unitOfMeasureQuantity: number;\r\n allowUserEnteredPrice: boolean;\r\n tagAlongs: SalesItemOptionTagAlongListingModel[];\r\n clinicSKU: string;\r\n hospitalSKU: string;\r\n defaultStartDate?: string;//UI Field Only\r\n dosesSold: number | undefined;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemOptionId = defaultTo(params?.salesItemOptionId, 0);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.displayName = defaultTo(params?.displayName, '');\r\n this.reminderDays = defaultTo(params?.reminderDays, undefined);\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.code = defaultTo(params?.code, '');\r\n this.prescriptionLabelId = defaultTo(params?.prescriptionLabelId, undefined);\r\n this.refills = defaultTo(params?.refills, undefined);\r\n this.packageQuantity = defaultTo(params?.packageQuantity, undefined);\r\n this.additionalInfoLabelId = defaultTo(params?.additionalInfoLabelId, undefined);\r\n this.prescriptionFulfillmentId = defaultTo(params?.prescriptionFulfillmentId, undefined);\r\n this.petcoSKU = defaultTo(params?.petcoSKU, '')\r\n this.allowPartialQuantities = defaultTo(params?.allowPartialQuantities, false);\r\n this.allowQuantityRanges = defaultTo(params?.allowQuantityRanges, false);\r\n this.allowQuantityChanges = defaultTo(params?.allowQuantityChanges, false);\r\n this.defaultQuantity = defaultTo(params?.defaultQuantity, 1);\r\n this.minimumQuantity = defaultTo(params?.minimumQuantity, 1);\r\n this.maximumQuantity = defaultTo(params?.maximumQuantity, 1);\r\n this.unitOfMeasureId = defaultTo(params?.unitOfMeasureId, 7);\r\n this.unitOfMeasureQuantity = defaultTo(params?.unitOfMeasureQuantity, 1);\r\n this.allowUserEnteredPrice = defaultTo(params?.allowUserEnteredPrice, false);\r\n this.tagAlongs = (params?.tagAlongs ?? []).map(t => new SalesItemOptionTagAlongListingModel(t));\r\n this.defaultStartDate = new Date().toISOString();\r\n this.clinicSKU = defaultTo(params?.clinicSKU, '');\r\n this.hospitalSKU = defaultTo(params?.hospitalSKU, '');\r\n this.dosesSold = _.defaultTo(params?.dosesSold, undefined);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { HospitalPrescriptionStatus } from \"@common/models/Enums\";\r\nimport { HospitalPrescriptionRequestListingModel } from \"@common/models/HospitalPrescriptionRequestListingModel\";\r\nimport { SalesItemTraitModel } from \"@common/models/SalesItemTraitModel\";\r\nimport { HospitalPrescriptionEventModel, IHospitalPrescriptionEventModel } from \"./HospitalPrescriptionEventModel\";\r\nimport { HospitalPrescriptionRefillModel, IHospitalPrescriptionRefillModel } from \"./HospitalPrescriptionRefillModel\";\r\nimport { HospitalPrescriptionStatusModel, IHospitalPrescriptionStatusModel } from \"./HospitalPrescriptionStatusModel\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { IPhotoModel, PhotoModel } from \"./PhotoModel\";\r\nimport { ISalesItemOptionModel, SalesItemOptionModel } from \"./SalesItemOptionModel\";\r\nimport { IVisitSalesItemModel, VisitSalesItemModel } from \"./VisitSalesItemModel\";\r\n\r\nexport interface IHospitalPrescriptionModel extends IModel {\r\n hospitalPrescriptionId: number;\r\n prescribedProduct: string;\r\n remainingRefills: number;\r\n quantity: string | undefined;\r\n unitOfMeasure: string | undefined;\r\n dose: string | undefined;\r\n frequency: string;\r\n instructions: string;\r\n expirationDate: string;\r\n notes: string | undefined;\r\n lastFillDate: string | undefined\r\n salesDate: string;\r\n veterinarianName: string | undefined;\r\n fullName: string | undefined;\r\n optionDisplayName: string | undefined;\r\n fillByDate: string;\r\n completedDate: string;\r\n petId: number;\r\n visitSalesItemId: number | undefined;\r\n visitSalesItem: IVisitSalesItemModel | undefined;\r\n hospitalPrescriptionRefills: IHospitalPrescriptionRefillModel[];\r\n veterinarianSignaturePhotoId: number | undefined;\r\n veterinarianSignaturePhoto: IPhotoModel | undefined;\r\n veterinarianId: number | undefined;\r\n veterinarianFirstName: string | undefined;\r\n veterinarianLastName: string | undefined;\r\n veterinarianLicenseNumber: string | undefined;\r\n veterinarianLicenseStateId: number | undefined;\r\n veterinarianLicenseStateAbbreviation: string | undefined;\r\n veterinarianLicenseExpirationDate: string | undefined;\r\n veterinarianEmail: string | undefined;\r\n dispensingAuthUserId: number | undefined;\r\n dispensingUserFirstName: string | undefined;\r\n dispensingUserLastName: string | undefined;\r\n visitId: number | undefined;\r\n salesItemOptionId: number | undefined;\r\n salesItemOption: ISalesItemOptionModel | undefined;\r\n salesItemTraits: SalesItemTraitModel[] | undefined;\r\n hospitalPrescriptionStatusId: number | undefined;\r\n hospitalPrescriptionStatus: IHospitalPrescriptionStatusModel;\r\n orderNotes: string | undefined;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n isHidden: boolean;\r\n\r\n hospitalPrescriptionPublicId: string | undefined;\r\n petcoSKU: string | undefined;\r\n petcoPrescriptionTypeName: string | undefined;\r\n vetLicenseLicenseTypeName: string | undefined;\r\n\r\n clientId: number | undefined;\r\n clientFirstName: string | undefined;\r\n clientLastName: string | undefined;\r\n clientEmailAddress: string | undefined;\r\n clientPhone: string | undefined;\r\n clientAddress: string | undefined;\r\n clientAddress2: string | undefined;\r\n clientCity: string | undefined;\r\n clientStateAbbreviation: string | undefined;\r\n clientZipCode: string | undefined;\r\n clientCounty: string | undefined;\r\n\r\n petName: string | undefined;\r\n petSpeciesName: string | undefined;\r\n petGenderName: string | undefined;\r\n petBreedName: string | undefined;\r\n petBirthDate: string | undefined;\r\n petWeight: number | undefined;\r\n petMedications: string | undefined;\r\n\r\n hospitalId: number | undefined;\r\n hospitalPublicId: string | undefined;\r\n hospitalCode: string | undefined;\r\n hospitalName: string | undefined;\r\n hospitalAddress: string | undefined;\r\n hospitalAddress2: string | undefined;\r\n hospitalCity: string | undefined;\r\n hospitalStateAbbreviation: string | undefined;\r\n hospitalZipCode: string | undefined;\r\n hospitalPhone: string | undefined;\r\n hospitalFax: string | undefined;\r\n storeName: string | undefined;\r\n storeBookingName: string | undefined;\r\n hospitalTimezoneName: string | undefined;\r\n hospitalLatitude: number | undefined;\r\n hospitalLongitude: number | undefined;\r\n invoiceId: number;\r\n hospitalPrescriptionEvents: IHospitalPrescriptionEventModel[];\r\n}\r\n\r\nexport class HospitalPrescriptionModel extends Model implements ModelRecord {\r\n hospitalPrescriptionId: number;\r\n prescribedProduct: string;\r\n remainingRefills: number;\r\n quantity: string | undefined;\r\n unitOfMeasure: string | undefined;\r\n dose: string | undefined;\r\n frequency: string | undefined;\r\n instructions: string | undefined;\r\n expirationDate: DateTime;\r\n notes: string | undefined;\r\n lastFillDate: DateTime | undefined;\r\n salesDate: DateTime;\r\n veterinarianName: string | undefined;\r\n fullName: string | undefined;\r\n optionDisplayName: string | undefined;\r\n fillByDate: DateTime | undefined;\r\n completedDate: DateTime | undefined;\r\n petId: number;\r\n visitSalesItemId: number | undefined;\r\n visitSalesItem: VisitSalesItemModel | undefined\r\n hospitalPrescriptionRefills: HospitalPrescriptionRefillModel[];\r\n veterinarianSignaturePhotoId: number | undefined;\r\n veterinarianSignaturePhoto: PhotoModel | undefined;\r\n veterinarianId: number | undefined;\r\n veterinarianFirstName: string | undefined;\r\n veterinarianLastName: string | undefined;\r\n veterinarianLicenseNumber: string | undefined;\r\n veterinarianLicenseStateId: number | undefined;\r\n veterinarianLicenseStateAbbreviation: string | undefined;\r\n veterinarianLicenseExpirationDate: DateTime | undefined;\r\n veterinarianEmail: string | undefined;\r\n dispensingAuthUserId: number | undefined;\r\n dispensingUserFirstName: string | undefined;\r\n dispensingUserLastName: string | undefined;\r\n visitId: number | undefined;\r\n salesItemOptionId: number | undefined;\r\n salesItemOption: SalesItemOptionModel | undefined;\r\n salesItemTraits: SalesItemTraitModel[] | undefined;\r\n hospitalPrescriptionStatusId: number | undefined;\r\n hospitalPrescriptionStatus: HospitalPrescriptionStatusModel;\r\n orderNotes: string | undefined;\r\n dateCreated: DateTime | undefined;\r\n dateUpdated: DateTime | undefined;\r\n isHidden: boolean;\r\n\r\n hospitalPrescriptionPublicId: string | undefined;\r\n petcoSKU: string | undefined;\r\n petcoPrescriptionTypeName: string | undefined;\r\n vetLicenseLicenseTypeName: string | undefined;\r\n\r\n clientId: number | undefined;\r\n clientFirstName: string | undefined;\r\n clientLastName: string | undefined;\r\n clientEmailAddress: string | undefined;\r\n clientPhone: string | undefined;\r\n clientAddress: string | undefined;\r\n clientAddress2: string | undefined;\r\n clientCity: string | undefined;\r\n clientStateAbbreviation: string | undefined;\r\n clientZipCode: string | undefined;\r\n clientCounty: string | undefined;\r\n\r\n petName: string | undefined;\r\n petSpeciesName: string | undefined;\r\n petGenderName: string | undefined;\r\n petBreedName: string | undefined;\r\n petBirthDate: DateTime | undefined;\r\n petWeight: number | undefined;\r\n petMedications: string | undefined;\r\n invoiceId: number;\r\n hospitalId: number | undefined;\r\n hospitalPublicId: string | undefined;\r\n hospitalCode: string | undefined;\r\n hospitalName: string | undefined;\r\n hospitalAddress: string | undefined;\r\n hospitalAddress2: string | undefined;\r\n hospitalCity: string | undefined;\r\n hospitalStateAbbreviation: string | undefined;\r\n hospitalZipCode: string | undefined;\r\n hospitalPhone: string | undefined;\r\n hospitalFax: string | undefined;\r\n storeName: string | undefined;\r\n storeBookingName: string | undefined;\r\n hospitalTimezoneName: string | undefined;\r\n hospitalLatitude: number | undefined;\r\n hospitalLongitude: number | undefined;\r\n\r\n hospitalPrescriptionEvents: HospitalPrescriptionEventModel[];\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.invoiceId = defaultTo(params?.invoiceId, 0);\r\n this.hospitalPrescriptionId = defaultTo(params?.hospitalPrescriptionId, 0);\r\n this.prescribedProduct = defaultTo(params?.prescribedProduct, \"\");\r\n this.remainingRefills = defaultTo(params?.remainingRefills, 0);\r\n this.quantity = params?.quantity;\r\n this.unitOfMeasure = params?.unitOfMeasure;\r\n this.dose = params?.dose;\r\n this.frequency = params?.frequency;\r\n this.instructions = params?.instructions;\r\n this.expirationDate = params?.expirationDate ? DateTime.fromISO(params?.expirationDate, { zone: \"utc\" }) : DateTime.utc().plus({ year: 1 });\r\n this.notes = params?.notes;\r\n this.lastFillDate = params?.lastFillDate ? DateTime.fromISO(params?.lastFillDate) : undefined;\r\n this.salesDate = params?.salesDate ? DateTime.fromISO(params?.salesDate, { zone: \"utc\" }) : DateTime.utc();\r\n this.veterinarianName = params?.veterinarianName;\r\n this.fullName = params?.fullName;\r\n this.optionDisplayName = params?.optionDisplayName;\r\n this.fillByDate = params?.fillByDate ? DateTime.fromISO(params?.fillByDate) : undefined;\r\n this.completedDate = params?.completedDate ? DateTime.fromISO(params?.completedDate) : undefined;\r\n this.petId = defaultTo(params?.petId, 0);\r\n this.visitSalesItemId = params?.visitSalesItemId;\r\n this.visitSalesItem = params?.visitSalesItem ? new VisitSalesItemModel(params.visitSalesItem) : undefined\r\n this.hospitalPrescriptionRefills = defaultTo(params?.hospitalPrescriptionRefills, []).map(a => new HospitalPrescriptionRefillModel(a));\r\n this.veterinarianSignaturePhotoId = params?.veterinarianSignaturePhotoId;\r\n this.veterinarianSignaturePhoto = params?.veterinarianSignaturePhoto ? new PhotoModel(params.veterinarianSignaturePhoto) : undefined\r\n this.veterinarianId = params?.veterinarianId;\r\n this.veterinarianFirstName = params?.veterinarianFirstName;\r\n this.veterinarianLastName = params?.veterinarianLastName;\r\n this.veterinarianLicenseNumber = params?.veterinarianLicenseNumber;\r\n this.veterinarianLicenseStateId = params?.veterinarianLicenseStateId;\r\n this.veterinarianLicenseStateAbbreviation = params?.veterinarianLicenseStateAbbreviation;\r\n this.veterinarianLicenseExpirationDate = params?.veterinarianLicenseExpirationDate ? DateTime.fromISO(params?.veterinarianLicenseExpirationDate) : undefined;\r\n this.veterinarianEmail = params?.veterinarianEmail;\r\n this.dispensingAuthUserId = params?.dispensingAuthUserId;\r\n this.dispensingUserFirstName = params?.dispensingUserFirstName;\r\n this.dispensingUserLastName = params?.dispensingUserLastName;\r\n this.visitId = params?.visitId;\r\n this.salesItemOptionId = params?.salesItemOptionId;\r\n this.salesItemOption = params?.salesItemOption ? new SalesItemOptionModel(params.salesItemOption) : undefined\r\n this.salesItemTraits = params?.salesItemTraits ? params?.salesItemTraits.map(t => new SalesItemTraitModel(t)) : undefined\r\n this.hospitalPrescriptionStatusId = params?.hospitalPrescriptionStatusId;\r\n this.hospitalPrescriptionStatus = new HospitalPrescriptionStatusModel(params?.hospitalPrescriptionStatus);\r\n this.orderNotes = params?.orderNotes;\r\n this.dateCreated = params?.dateCreated ? DateTime.fromISO(params?.dateCreated, { zone: \"utc\" }) : undefined;\r\n this.dateUpdated = params?.dateUpdated ? DateTime.fromISO(params?.dateUpdated, { zone: \"utc\" }) : undefined;\r\n this.isHidden = defaultTo(params?.isHidden, false);\r\n\r\n this.hospitalPrescriptionPublicId = params?.hospitalPrescriptionPublicId;\r\n this.petcoSKU = params?.petcoSKU;\r\n this.petcoPrescriptionTypeName = params?.petcoPrescriptionTypeName;\r\n this.vetLicenseLicenseTypeName = params?.vetLicenseLicenseTypeName;\r\n\r\n this.clientId = params?.clientId;\r\n this.clientFirstName = params?.clientFirstName;\r\n this.clientLastName = params?.clientLastName;\r\n this.clientEmailAddress = params?.clientEmailAddress;\r\n this.clientPhone = params?.clientPhone;\r\n this.clientAddress = params?.clientAddress;\r\n this.clientAddress2 = params?.clientAddress2;\r\n this.clientCity = params?.clientCity;\r\n this.clientStateAbbreviation = params?.clientStateAbbreviation;\r\n this.clientZipCode = params?.clientZipCode;\r\n this.clientCounty = params?.clientCounty;\r\n\r\n this.petName = params?.petName;\r\n this.petSpeciesName = params?.petSpeciesName;\r\n this.petGenderName = params?.petGenderName;\r\n this.petBreedName = params?.petBreedName;\r\n this.petBirthDate = params?.petBirthDate ? DateTime.fromISO(params?.petBirthDate, { zone: \"utc\" }) : undefined;\r\n this.petWeight = defaultTo(params?.petWeight, 0);\r\n this.petMedications = params?.petMedications;\r\n\r\n this.hospitalId = params?.hospitalId;\r\n this.hospitalPublicId = params?.hospitalPublicId;\r\n this.hospitalCode = params?.hospitalCode;\r\n this.hospitalName = params?.hospitalName;\r\n this.hospitalAddress = params?.hospitalAddress;\r\n this.hospitalAddress2 = params?.hospitalAddress2;\r\n this.hospitalCity = params?.hospitalCity;\r\n this.hospitalStateAbbreviation = params?.hospitalStateAbbreviation;\r\n this.hospitalZipCode = params?.hospitalZipCode;\r\n this.hospitalPhone = params?.hospitalPhone;\r\n this.hospitalFax = params?.hospitalFax;\r\n this.storeName = params?.storeName;\r\n this.storeBookingName = params?.storeBookingName;\r\n this.hospitalTimezoneName = params?.hospitalTimezoneName;\r\n this.hospitalLatitude = params?.hospitalLatitude;\r\n this.hospitalLongitude = params?.hospitalLongitude;\r\n this.hospitalPrescriptionEvents = defaultTo(params?.hospitalPrescriptionEvents, []).map(e => new HospitalPrescriptionEventModel(e));\r\n }\r\n\r\n get isActive(): boolean {\r\n return this.hospitalPrescriptionId !== undefined && this.isExpired == false && Number(this.remainingRefills) > 0\r\n && this.hospitalPrescriptionStatusId !== HospitalPrescriptionStatus.Cancelled\r\n && (this.hospitalPrescriptionStatusId === undefined\r\n || [HospitalPrescriptionStatus.Approved,\r\n HospitalPrescriptionStatus.ApprovedPendingPickup,\r\n HospitalPrescriptionStatus.Recalled,\r\n HospitalPrescriptionStatus.Transferred,\r\n HospitalPrescriptionStatus.TransferredPermanent].some(s => s === this.hospitalPrescriptionStatusId))\r\n }\r\n\r\n get isExpired(): boolean {\r\n return this.expirationDate < DateTime.utc().startOf('day');\r\n }\r\n\r\n toRefillRequestModel(): HospitalPrescriptionRequestListingModel {\r\n return new HospitalPrescriptionRequestListingModel({\r\n hospitalPrescriptionId: this.hospitalPrescriptionId,\r\n hospitalPrescriptionStatusId: this.hospitalPrescriptionStatusId,\r\n hospitalPrescriptionRefillId: undefined,\r\n hospitalPrescriptionRefillStatusId: undefined,\r\n prescriptionName: \"\",\r\n expiresDate: this.expirationDate.toISO(),\r\n refills: defaultTo(this.remainingRefills, 0).toString(),\r\n notes: defaultTo(this.notes, \"\"),\r\n instructions: defaultTo(this.instructions, \"\"),\r\n salesDate: this.salesDate.toLocaleString(DateTime.DATE_SHORT),\r\n veterinarianId: defaultTo(this.veterinarianId, 0),\r\n veterinarianName: defaultTo(this.veterinarianName, \"\"),\r\n veterinarianFirstName: defaultTo(this.veterinarianFirstName, \"\"),\r\n veterinarianLastName: defaultTo(this.veterinarianLastName, \"\"),\r\n veterinarianLicenseNumber: defaultTo(this.veterinarianLicenseNumber, \"\"),\r\n veterinarianLicenseStateId: defaultTo(this.veterinarianLicenseStateId, 0),\r\n veterinarianLicenseStateAbbreviation: defaultTo(this.veterinarianLicenseStateAbbreviation, \"\"),\r\n veterinarianLicenseExpirationDate: undefined,\r\n veterinarianEmail: defaultTo(this.veterinarianEmail, \"\"),\r\n veterinarianSignaturePhotoId: defaultTo(this.veterinarianSignaturePhotoId, 0),\r\n veterinarianSignaturePhotoURL: defaultTo(this.veterinarianSignaturePhoto?.photoUrl, \"\"),\r\n fullName: defaultTo(this.fullName, \"\"),\r\n unitOfMeasure: defaultTo(this.unitOfMeasure, \"\"),\r\n dose: defaultTo(this.dose, \"\"),\r\n frequency: defaultTo(this.frequency, \"\"),\r\n optionDisplayName: this.optionDisplayName,\r\n clientId: defaultTo(this.clientId, 0),\r\n clientFirstName: defaultTo(this.clientFirstName, \"\"),\r\n clientLastName: defaultTo(this.clientLastName, \"\"),\r\n clientAddress: defaultTo(this.clientAddress, \"\"),\r\n clientCity: defaultTo(this.clientCity, \"\"),\r\n clientState: defaultTo(this.clientStateAbbreviation, \"\"),\r\n clientZipcode: defaultTo(this.clientZipCode, \"\"),\r\n petId: defaultTo(this.petId, 0),\r\n petName: defaultTo(this.petName, \"\"),\r\n petSpecies: defaultTo(this.petSpeciesName, \"\"),\r\n petBreed: defaultTo(this.petBreedName, \"\"),\r\n petBirthDate: this.petBirthDate ? this.petBirthDate.toISO() : \"\",\r\n petWeight: defaultTo(this.petWeight, 0),\r\n quantity: defaultTo(this.quantity, \"\"),\r\n dateRequested: '',\r\n rowVersion: '',\r\n dateUpdated: \"\",\r\n dateCreated: \"\",\r\n fillByDate: this.fillByDate ? this.fillByDate.toLocaleString(DateTime.DATE_SHORT) : \"\",\r\n completedDate: \"\",\r\n orderNotes: this.orderNotes,\r\n creatorFirstName: undefined,\r\n creatorLastName: undefined,\r\n creatorTitle: undefined,\r\n hospitalPrescriptionRowVersion: defaultTo(this.rowVersion, \"\"),\r\n salesItemOptionId: defaultTo(this.salesItemOptionId, 0),\r\n invoiceId: defaultTo(this.invoiceId, 0)\r\n })\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IHospitalPrescriptionRefillListingModel extends IModel {\r\n hospitalPrescriptionRefillId: number;\r\n hospitalPrescriptionRefillStatusId: number;\r\n dateFilled: string | undefined;\r\n hospitalPrescriptionId: number;\r\n visitSalesItemId: number | undefined;\r\n hospitalId: number;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n invoiceId: number;\r\n}\r\n\r\nexport class HospitalPrescriptionRefillListingModel extends Model implements ModelRecord {\r\n hospitalPrescriptionRefillId: number;\r\n hospitalPrescriptionRefillStatusId: number;\r\n dateFilled: DateTime | undefined;\r\n hospitalPrescriptionId: number;\r\n visitSalesItemId: number | undefined;\r\n hospitalId: number;\r\n dateCreated: DateTime | undefined;\r\n dateUpdated: DateTime | undefined;\r\n invoiceId: number;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.hospitalPrescriptionRefillId = defaultTo(params?.hospitalPrescriptionRefillId, 0);\r\n this.hospitalPrescriptionId = defaultTo(params?.hospitalPrescriptionId, 0);\r\n this.hospitalPrescriptionRefillStatusId = defaultTo(params?.hospitalPrescriptionRefillStatusId, 0);\r\n this.dateFilled = params?.dateFilled ? DateTime.fromISO(params?.dateFilled) : undefined;\r\n this.visitSalesItemId = params?.visitSalesItemId;\r\n this.hospitalId = defaultTo(params?.hospitalId, 0);\r\n this.dateCreated = params?.dateCreated ? DateTime.fromISO(params?.dateCreated, { zone: \"utc\" }) : undefined;\r\n this.dateUpdated = params?.dateUpdated ? DateTime.fromISO(params?.dateUpdated, { zone: \"utc\" }) : undefined;\r\n this.rowVersion = defaultTo(params?.rowVersion, \"\");\r\n this.invoiceId = defaultTo(params?.invoiceId, 0)\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { HospitalPrescriptionModel } from \"./HospitalPrescriptionModel\";\r\nimport { IHospitalPrescriptionRefillListingModel, HospitalPrescriptionRefillListingModel } from \"./HospitalPrescriptionRefillListingModel\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { PhotoModel } from \"./PhotoModel\";\r\n\r\nexport interface IHospitalPrescriptionListingModel extends IModel {\r\n hospitalPrescriptionId: number;\r\n hospitalPrescriptionStatusId: number | undefined;\r\n petId: number;\r\n petName: string;\r\n petSpecies: string;\r\n petBreed: string;\r\n petBirthDate: string;\r\n petWeight: number;\r\n visitSalesItemId: number | undefined;\r\n salesDate: string;\r\n prescribedProduct: string;\r\n expirationDate: string;\r\n lastFillDate: string | undefined\r\n fillByDate: string;\r\n completedDate: string | undefined\r\n quantity: string | undefined;\r\n remainingRefills: number;\r\n notes: string | undefined;\r\n instructions: string;\r\n unitOfMeasure: string | undefined;\r\n veterinarianId: number | undefined;\r\n veterinarianName: string | undefined;\r\n veterinarianFirstName: string | undefined;\r\n veterinarianLastName: string | undefined;\r\n veterinarianLicenseNumber: string | undefined;\r\n veterinarianLicenseStateId: number | undefined;\r\n veterinarianLicenseStateAbbreviation: string | undefined;\r\n veterinarianLicenseExpirationDate: string | undefined;\r\n veterinarianEmail: string | undefined;\r\n veterinarianSignaturePhotoId: number | undefined;\r\n veterinarianSignaturePhotoURL: string | undefined;\r\n fullName: string | undefined;\r\n optionDisplayName: string | undefined;\r\n salesItemOptionId: number | undefined;\r\n orderNotes: string | undefined;\r\n creatorFirstName: string | undefined;\r\n creatorLastName: string | undefined;\r\n creatorTitle: string | undefined;\r\n isHidden: boolean\r\n dateHidden: string;\r\n hiddenByFirstName: string | undefined;\r\n hiddenByLastName: string | undefined;\r\n hiddenByTitle: string | undefined;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n hospitalPrescriptionRefills: IHospitalPrescriptionRefillListingModel[];\r\n dose: string | undefined;\r\n frequency: string;\r\n clientId: number;\r\n clientFirstName: string;\r\n clientLastName: string;\r\n clientAddress: string;\r\n clientCity: string;\r\n clientState: string;\r\n clientZipcode: string;\r\n cancelledByFirstName: string | undefined;\r\n cancelledByLastName: string | undefined;\r\n cancelledByTitle: string | undefined;\r\n cancelNotes: string | undefined;\r\n dateCancelled: string | undefined;\r\n}\r\n\r\nexport class HospitalPrescriptionListingModel extends Model implements ModelRecord {\r\n hospitalPrescriptionId: number;\r\n hospitalPrescriptionStatusId: number | undefined;\r\n petId: number;\r\n petName: string;\r\n petSpecies: string;\r\n petBreed: string;\r\n petBirthDate: string;\r\n petWeight: number;\r\n visitSalesItemId: number | undefined;\r\n salesDate: DateTime;\r\n prescribedProduct: string;\r\n expirationDate: DateTime;\r\n lastFillDate: DateTime | undefined;\r\n fillByDate: DateTime | undefined;\r\n completedDate: DateTime | undefined;\r\n quantity: string | undefined;\r\n remainingRefills: number;\r\n notes: string | undefined;\r\n instructions: string | undefined;\r\n unitOfMeasure: string | undefined;\r\n veterinarianId: number | undefined;\r\n veterinarianName: string | undefined;\r\n veterinarianFirstName: string | undefined;\r\n veterinarianLastName: string | undefined;\r\n veterinarianLicenseNumber: string | undefined;\r\n veterinarianLicenseStateId: number | undefined;\r\n veterinarianLicenseStateAbbreviation: string | undefined;\r\n veterinarianLicenseExpirationDate: DateTime | undefined;\r\n veterinarianEmail: string | undefined;\r\n veterinarianSignaturePhotoId: number | undefined;\r\n veterinarianSignaturePhotoURL: string | undefined;\r\n fullName: string | undefined;\r\n optionDisplayName: string | undefined;\r\n salesItemOptionId: number | undefined;\r\n orderNotes: string | undefined;\r\n creatorFirstName: string | undefined;\r\n creatorLastName: string | undefined;\r\n creatorTitle: string | undefined;\r\n isHidden: boolean\r\n dateHidden: DateTime | undefined;\r\n hiddenByFirstName: string | undefined;\r\n hiddenByLastName: string | undefined;\r\n hiddenByTitle: string | undefined;\r\n dateCreated: DateTime | undefined;\r\n dateUpdated: DateTime | undefined;\r\n hospitalPrescriptionRefills: HospitalPrescriptionRefillListingModel[];\r\n dose: string | undefined;\r\n frequency: string | undefined;\r\n clientId: number;\r\n clientFirstName: string;\r\n clientLastName: string;\r\n clientAddress: string;\r\n clientCity: string;\r\n clientState: string;\r\n clientZipcode: string;\r\n cancelledByFirstName: string | undefined;\r\n cancelledByLastName: string | undefined;\r\n cancelledByTitle: string | undefined;\r\n cancelNotes: string | undefined;\r\n dateCancelled: string | undefined;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.hospitalPrescriptionId = defaultTo(params?.hospitalPrescriptionId, 0);\r\n this.prescribedProduct = defaultTo(params?.prescribedProduct, \"\");\r\n this.remainingRefills = defaultTo(params?.remainingRefills, 0);\r\n this.quantity = params?.quantity;\r\n this.unitOfMeasure = params?.unitOfMeasure;\r\n this.dose = params?.dose;\r\n this.frequency = params?.frequency;\r\n this.instructions = params?.instructions;\r\n this.expirationDate = params?.expirationDate ? DateTime.fromISO(params?.expirationDate, { zone: \"utc\" }) : DateTime.utc().plus({ year: 1 });\r\n this.notes = params?.notes;\r\n this.lastFillDate = params?.lastFillDate ? DateTime.fromISO(params?.lastFillDate) : undefined;\r\n this.salesDate = params?.salesDate ? DateTime.fromISO(params?.salesDate, { zone: \"utc\" }) : DateTime.utc();\r\n this.veterinarianName = params?.veterinarianName;\r\n this.veterinarianFirstName = params?.veterinarianFirstName;\r\n this.veterinarianLastName = params?.veterinarianLastName;\r\n this.veterinarianLicenseNumber = params?.veterinarianLicenseNumber;\r\n this.veterinarianLicenseStateId = params?.veterinarianLicenseStateId\r\n this.veterinarianLicenseStateAbbreviation = params?.veterinarianLicenseStateAbbreviation;\r\n this.veterinarianLicenseExpirationDate = params?.veterinarianLicenseExpirationDate ? DateTime.fromISO(params?.veterinarianLicenseExpirationDate) : undefined;\r\n this.veterinarianEmail = params?.veterinarianEmail;\r\n this.fullName = params?.fullName;\r\n this.optionDisplayName = params?.optionDisplayName;\r\n this.fillByDate = params?.fillByDate ? DateTime.fromISO(params?.fillByDate) : undefined;\r\n this.completedDate = params?.completedDate ? DateTime.fromISO(params?.completedDate) : undefined;\r\n this.petId = defaultTo(params?.petId, 0);\r\n this.petName = defaultTo(params?.petName, '');\r\n this.petSpecies = defaultTo(params?.petSpecies, '');\r\n this.petBreed = defaultTo(params?.petBreed, '');\r\n this.petBirthDate = defaultTo(params?.petBirthDate, '');\r\n this.petWeight = defaultTo(params?.petWeight, 0);\r\n this.visitSalesItemId = params?.visitSalesItemId;\r\n this.hospitalPrescriptionRefills = defaultTo(params?.hospitalPrescriptionRefills, []).map(a => new HospitalPrescriptionRefillListingModel(a));\r\n this.veterinarianId = params?.veterinarianId;\r\n this.veterinarianSignaturePhotoId = params?.veterinarianSignaturePhotoId;\r\n this.veterinarianSignaturePhotoURL = defaultTo(params?.veterinarianSignaturePhotoURL, undefined);\r\n this.salesItemOptionId = params?.salesItemOptionId;\r\n this.hospitalPrescriptionStatusId = params?.hospitalPrescriptionStatusId;\r\n this.orderNotes = params?.orderNotes;\r\n this.dateCreated = params?.dateCreated ? DateTime.fromISO(params?.dateCreated, { zone: \"utc\" }) : undefined;\r\n this.dateUpdated = params?.dateUpdated ? DateTime.fromISO(params?.dateUpdated, { zone: \"utc\" }) : undefined;\r\n this.creatorFirstName = defaultTo(params?.creatorFirstName, undefined);\r\n this.creatorLastName = defaultTo(params?.creatorLastName, undefined);\r\n this.creatorTitle = defaultTo(params?.creatorTitle, undefined);\r\n this.isHidden = defaultTo(params?.isHidden, false);\r\n this.dateHidden = params?.dateHidden ? DateTime.fromISO(params?.dateHidden) : undefined;\r\n this.hiddenByFirstName = defaultTo(params?.hiddenByFirstName, undefined);\r\n this.hiddenByLastName = defaultTo(params?.hiddenByLastName, undefined);\r\n this.hiddenByTitle = defaultTo(params?.hiddenByTitle, undefined);\r\n this.rowVersion = defaultTo(params?.rowVersion, \"\");\r\n this.clientId = defaultTo(params?.clientId, 0);\r\n this.clientFirstName = defaultTo(params?.clientFirstName, '');\r\n this.clientLastName = defaultTo(params?.clientLastName, '');\r\n this.clientAddress = defaultTo(params?.clientAddress, '');\r\n this.clientCity = defaultTo(params?.clientCity, '');\r\n this.clientState = defaultTo(params?.clientState, '');\r\n this.clientZipcode = defaultTo(params?.clientZipcode, '');\r\n this.cancelledByFirstName = defaultTo(params?.cancelledByFirstName, '');\r\n this.cancelledByLastName = defaultTo(params?.cancelledByLastName, '');\r\n this.cancelledByTitle = defaultTo(params?.cancelledByTitle, '');\r\n this.dateCancelled = defaultTo(params?.dateCancelled, '');\r\n this.cancelNotes = defaultTo(params?.cancelNotes, '');\r\n }\r\n\r\n toHospitalPrescriptionModel(): HospitalPrescriptionModel {\r\n return new HospitalPrescriptionModel({\r\n hospitalPrescriptionId: this.hospitalPrescriptionId,\r\n prescribedProduct: this.prescribedProduct,\r\n remainingRefills: defaultTo(Number(this.remainingRefills), 0),\r\n quantity: this.quantity,\r\n unitOfMeasure: this.unitOfMeasure,\r\n dose: this.dose,\r\n frequency: this.frequency,\r\n instructions: this.instructions,\r\n expirationDate: defaultTo(this.expirationDate?.toISO(), undefined),\r\n notes: this.notes,\r\n salesDate: defaultTo(this.salesDate?.toISO(), undefined),\r\n veterinarianName: this.veterinarianName,\r\n veterinarianFirstName: this.veterinarianFirstName,\r\n veterinarianLastName: this.veterinarianLastName,\r\n veterinarianLicenseNumber: this.veterinarianLicenseNumber,\r\n veterinarianLicenseStateId: this.veterinarianLicenseStateId,\r\n veterinarianLicenseStateAbbreviation: this.veterinarianLicenseStateAbbreviation,\r\n veterinarianLicenseExpirationDate: defaultTo(this.veterinarianLicenseExpirationDate?.toISO(), undefined),\r\n veterinarianEmail: this.veterinarianEmail,\r\n fullName: this.fullName,\r\n optionDisplayName: this.optionDisplayName,\r\n fillByDate: defaultTo(this.fillByDate?.toISO(), undefined),\r\n completedDate: defaultTo(this.completedDate?.toISO(), undefined),\r\n petId: this.petId,\r\n veterinarianSignaturePhotoId: this.veterinarianSignaturePhotoId,\r\n veterinarianSignaturePhoto: this.veterinarianSignaturePhotoURL ? new PhotoModel({ photoUrl: this.veterinarianSignaturePhotoURL }) : undefined,\r\n veterinarianId: this.veterinarianId,\r\n salesItemOptionId: this.salesItemOptionId,\r\n hospitalPrescriptionStatusId: this.hospitalPrescriptionStatusId,\r\n orderNotes: this.orderNotes,\r\n rowVersion: this.rowVersion,\r\n dateCreated: defaultTo(this.dateCreated?.toISO(), undefined),\r\n dateUpdated: defaultTo(this.dateUpdated?.toISO(), undefined)\r\n })\r\n }\r\n}\r\n","import { IHospitalScheduleTemplateModel, IVeterinarianModel, VeterinarianModel } from \"@common/models\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { HospitalScheduleTemplateModel } from \"./HospitalScheduleTemplateModel\";\r\nimport { HospitalScheduleRequestModel, IHospitalScheduleRequestModel } from \"./requests/HospitalScheduleRequestModel\";\r\n\r\n\r\nexport interface IHospitalScheduleModel extends IHospitalScheduleRequestModel {\r\n veterinarian: IVeterinarianModel | undefined;\r\n scheduleTemplate: IHospitalScheduleTemplateModel | undefined;\r\n isAdhoc: boolean;\r\n}\r\n\r\nexport class HospitalScheduleModel extends HospitalScheduleRequestModel implements IHospitalScheduleModel {\r\n veterinarian: VeterinarianModel | undefined;\r\n scheduleTemplate: HospitalScheduleTemplateModel | undefined;\r\n isAdhoc: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.veterinarian = params?.veterinarian ? new VeterinarianModel(params.veterinarian!) : undefined;\r\n this.scheduleTemplate = params?.scheduleTemplate ? new HospitalScheduleTemplateModel(params.scheduleTemplate!) : undefined;\r\n this.isAdhoc = defaultTo(params?.isAdhoc, false);\r\n }\r\n}\r\n","export interface IScheduleBlockTypeModel {\r\n scheduleBlockTypeId: number,\r\n name: string,\r\n color: string,\r\n isOverrideType: boolean,\r\n showOverrideNotesOnCalendar: boolean\r\n}\r\n\r\nexport class ScheduleBlockTypeModel implements IScheduleBlockTypeModel {\r\n scheduleBlockTypeId: number;\r\n name: string;\r\n color: string;\r\n isOverrideType: boolean;\r\n showOverrideNotesOnCalendar: boolean;\r\n\r\n constructor(params: Partial = {} as ScheduleBlockTypeModel) {\r\n const {\r\n scheduleBlockTypeId = 0,\r\n name = '',\r\n color = '',\r\n isOverrideType = false,\r\n showOverrideNotesOnCalendar = false\r\n\r\n } = params;\r\n\r\n this.scheduleBlockTypeId = scheduleBlockTypeId;\r\n this.name = name;\r\n this.color = color;\r\n this.isOverrideType = isOverrideType;\r\n this.showOverrideNotesOnCalendar = showOverrideNotesOnCalendar;\r\n\r\n }\r\n}\r\n\r\nexport interface IScheduleBlockTypeUIModel extends IScheduleBlockTypeModel {\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport class ScheduleBlockTypeUIModel extends ScheduleBlockTypeModel {\r\n isDisabled?: boolean = false;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.isDisabled = params.isDisabled;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, } from \"./Model\";\r\n\r\nexport interface IIdexxBreedModel extends IModel {\r\n idexxBreedId: number;\r\n name: string;\r\n code: string;\r\n sort: number;\r\n species: string;\r\n}\r\n\r\nexport class IdexxBreedModel extends Model implements ModelRecord {\r\n idexxBreedId: number;\r\n name: string;\r\n code: string;\r\n sort: number;\r\n species: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.idexxBreedId = defaultTo(params?.idexxBreedId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.code = defaultTo(params?.code, '');\r\n this.sort = defaultTo(params?.sort, 0);\r\n this.species = defaultTo(params?.species, '');\r\n }\r\n}\r\n","import { find, map } from \"lodash\";\r\nimport { IIntakePetModel, IModel, Model, IntakePetModel } from \".\";\r\n\r\nexport interface IIntakeModel extends IModel {\r\n intakeId: number;\r\n intakePublicId: string;\r\n clientId: number | undefined;\r\n clinicId: number;\r\n\r\n firstName: string;\r\n lastName: string;\r\n address: string;\r\n address2: string;\r\n zipCode: string;\r\n city: string;\r\n county: string;\r\n stateId: number;\r\n stateAbbrev: string;\r\n cellPhone: string;\r\n alternatePhone: string;\r\n emailAddress: string;\r\n\r\n notificationSentDate: Date | undefined;\r\n responseCompleteDate: Date | undefined;\r\n responseLinkSource: string;\r\n firstOpenDate: Date | undefined;\r\n firstOpenLinkSource: string;\r\n wasPriorCustomer: boolean;\r\n storeCode: string;\r\n storeAddress: string;\r\n storeCity: string;\r\n storeStateAbbreviation: string;\r\n storeZipcode: string;\r\n storePhone: string;\r\n storePartnerName: string;\r\n storeBrandName: string;\r\n hasVisits: boolean;\r\n hasCompletedVisits: boolean;\r\n isClinicCancelled: boolean;\r\n pets: IIntakePetModel[];\r\n}\r\n\r\nexport class IntakeModel extends Model implements Record {\r\n intakeId: number;\r\n intakePublicId: string;\r\n clientId: number | undefined;\r\n clinicId: number;\r\n\r\n firstName: string;\r\n lastName: string;\r\n address: string;\r\n address2: string;\r\n zipCode: string;\r\n city: string;\r\n county: string;\r\n stateId: number;\r\n stateAbbrev: string;\r\n cellPhone: string;\r\n alternatePhone: string;\r\n emailAddress: string;\r\n notificationSentDate: Date | undefined;\r\n responseCompleteDate: Date | undefined;\r\n responseLinkSource: string;\r\n firstOpenDate: Date | undefined;\r\n firstOpenLinkSource: string;\r\n wasPriorCustomer: boolean;\r\n storeCode: string;\r\n storeAddress: string;\r\n storeCity: string;\r\n storeStateAbbreviation: string;\r\n storeZipcode: string;\r\n storePhone: string;\r\n storePartnerName: string;\r\n storeBrandName: string;\r\n hasVisits: boolean;\r\n hasCompletedVisits: boolean;\r\n isClinicCancelled: boolean;\r\n pets: IntakePetModel[] = [];\r\n\r\n constructor(params: Partial = {}) {\r\n super(params);\r\n const {\r\n intakeId = 0,\r\n intakePublicId = '',\r\n clientId = 0,\r\n clinicId = 0,\r\n firstName = '',\r\n lastName = '',\r\n address = '',\r\n address2 = '',\r\n zipCode = '',\r\n city = '',\r\n county = '',\r\n stateId = 0,\r\n stateAbbrev = '',\r\n cellPhone = '',\r\n alternatePhone = '',\r\n emailAddress = '',\r\n notificationSentDate = undefined,\r\n responseCompleteDate = undefined,\r\n responseLinkSource = '',\r\n firstOpenDate = undefined,\r\n firstOpenLinkSource = '',\r\n wasPriorCustomer = false,\r\n storeCode = '',\r\n storeAddress = '',\r\n storeCity = '',\r\n storeStateAbbreviation = '',\r\n storeZipcode = '',\r\n storePhone = '',\r\n storePartnerName = '',\r\n storeBrandName = '',\r\n hasVisits = false,\r\n hasCompletedVisits = false,\r\n isClinicCancelled = false,\r\n pets = [] as Array,\r\n } = params;\r\n\r\n this.intakeId = intakeId;\r\n this.intakePublicId = intakePublicId;\r\n this.clientId = clientId;\r\n this.clinicId = clinicId;\r\n this.firstName = firstName;\r\n this.lastName = lastName;\r\n this.address = address;\r\n this.address2 = address2;\r\n this.zipCode = zipCode;\r\n this.city = city;\r\n this.county = county;\r\n this.stateId = stateId;\r\n this.stateAbbrev = stateAbbrev;\r\n this.cellPhone = cellPhone;\r\n this.alternatePhone = alternatePhone;\r\n this.emailAddress = emailAddress;\r\n this.notificationSentDate = notificationSentDate;\r\n this.responseCompleteDate = responseCompleteDate;\r\n this.responseLinkSource = responseLinkSource;\r\n this.firstOpenDate = firstOpenDate;\r\n this.firstOpenLinkSource = firstOpenLinkSource;\r\n this.wasPriorCustomer = wasPriorCustomer;\r\n this.storeCode = storeCode;\r\n this.storeAddress = storeAddress;\r\n this.storeCity = storeCity;\r\n this.storeStateAbbreviation = storeStateAbbreviation;\r\n this.storeZipcode = storeZipcode;\r\n this.storePhone = storePhone;\r\n this.storePartnerName = storePartnerName;\r\n this.storeBrandName = storeBrandName;\r\n this.hasVisits = hasVisits;\r\n this.hasCompletedVisits = hasCompletedVisits;\r\n this.isClinicCancelled = isClinicCancelled;\r\n map(pets, (pet) => { this.pets.push(new IntakePetModel(pet)); });\r\n }\r\n\r\n\r\n get expectedFullVisitDate() {\r\n return (this.pets.length > 0 && this.pets[0].expectedFullVisitDate) ? this.pets[0].expectedFullVisitDate : undefined;\r\n }\r\n\r\n get visitDate() {\r\n return (this.pets.length > 0 && this.pets[0].expectedVisitDate) ? this.pets[0].expectedVisitDate : 'Today';\r\n }\r\n\r\n get visitTimes() {\r\n return (this.pets.length > 0) ? map(this.pets, 'expectedVisitTime').join(', ') : '';\r\n }\r\n\r\n get visitDateAndTimes() {\r\n return (this.visitTimes) ? this.visitDate + ' - ' + this.visitTimes : this.visitDate;\r\n }\r\n\r\n get isIntakeCompleted() {\r\n if (!this.responseCompleteDate)\r\n return false;\r\n\r\n const incompletePets = find(this.pets, (pet) => {\r\n return pet.responseCompleteDate === undefined;\r\n });\r\n\r\n return (incompletePets);\r\n }\r\n\r\n get isReadOnly() {\r\n return this.hasCompletedVisits;\r\n }\r\n\r\n get targetRebookingReservation() {\r\n if (this.pets.length > 0) {\r\n const firstPetPassSourcedIntakePet = _.find(this.pets, (intakePet) => {\r\n return intakePet.reservation && (intakePet.reservation.source === 'petpass');\r\n }) as IntakePetModel | undefined;\r\n\r\n if (firstPetPassSourcedIntakePet) {\r\n return firstPetPassSourcedIntakePet.reservation;\r\n } else {\r\n const firstIntakePetWithReservation = _.find(this.pets, (intakePet) => {\r\n return intakePet.reservation !== undefined;\r\n });\r\n\r\n if (!_.isUndefined(firstIntakePetWithReservation)) {\r\n return firstIntakePetWithReservation.reservation;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { IIntakePetSection, IModel, IntakePetSection, IPhotoModel, IReservationModel, Model, PhotoModel, ReservationModel } from \".\";\r\n\r\nexport interface IIntakePetModel extends IModel {\r\n intakePetId: number;\r\n intakeId: number;\r\n speciesId: number | undefined;\r\n reservationId: number | undefined;\r\n reservation: IReservationModel | undefined;\r\n petId: number | undefined;\r\n name: string;\r\n genderId: number | undefined;\r\n breedId: number | undefined;\r\n petColorId: number | undefined;\r\n photoId: number | undefined;\r\n photo?: IPhotoModel | undefined;\r\n birthDate?: Date;\r\n isMixedBreed?: boolean;\r\n // Friendly birthdate needs to be computed\r\n notificationSentDate?: Date;\r\n responseCompleteDate?: Date;\r\n responseLinkSource: string;\r\n expectedFullVisitDate?: Date;\r\n expectedVisitDate: string; // formatted string from the server\r\n expectedVisitTime: string; // formatted string from the server\r\n sections: IIntakePetSection[];\r\n}\r\n\r\nexport class IntakePetModel extends Model implements Record {\r\n intakePetId: number;\r\n intakeId: number;\r\n speciesId: number | undefined;\r\n reservationId: number | undefined;\r\n reservation: ReservationModel | undefined;\r\n petId: number | undefined;\r\n name: string;\r\n genderId: number | undefined;\r\n breedId: number | undefined;\r\n petColorId: number | undefined;\r\n photoId: number | undefined;\r\n photo: IPhotoModel | undefined;\r\n birthDate: Date | undefined;\r\n isMixedBreed: boolean | undefined;\r\n notificationSentDate: Date | undefined;\r\n responseCompleteDate: Date | undefined;\r\n responseLinkSource: string;\r\n expectedFullVisitDate: Date | undefined;\r\n expectedVisitDate: string;\r\n expectedVisitTime: string;\r\n sections: IntakePetSection[] = [];\r\n\r\n constructor(params: Partial = {} as IIntakePetModel) {\r\n super(params);\r\n const {\r\n intakePetId = 0,\r\n intakeId = 0,\r\n speciesId = undefined,\r\n reservationId = undefined,\r\n petId = undefined,\r\n name = '',\r\n genderId = undefined,\r\n breedId = undefined,\r\n petColorId = undefined,\r\n photoId = undefined,\r\n photo = undefined,\r\n birthDate = undefined,\r\n isMixedBreed = undefined,\r\n notificationSentDate = undefined,\r\n responseCompleteDate = undefined,\r\n responseLinkSource = '',\r\n expectedFullVisitDate = undefined,\r\n expectedVisitDate = '',\r\n expectedVisitTime = '',\r\n sections = [] as Array\r\n } = params;\r\n\r\n this.intakePetId = intakePetId;\r\n this.intakeId = intakeId;\r\n this.speciesId = speciesId;\r\n this.reservationId = reservationId;\r\n this.reservation = params.reservation ? new ReservationModel(params.reservation) : undefined;\r\n this.petId = petId;\r\n this.name = name;\r\n this.genderId = genderId;\r\n this.breedId = breedId;\r\n this.petColorId = petColorId;\r\n this.photoId = photoId;\r\n this.photo = photo ? new PhotoModel(photo) : undefined;\r\n this.birthDate = (birthDate) ? new Date(birthDate) : undefined;\r\n this.isMixedBreed = isMixedBreed;\r\n this.notificationSentDate = notificationSentDate;\r\n this.responseCompleteDate = responseCompleteDate;\r\n this.responseLinkSource = responseLinkSource;\r\n this.expectedFullVisitDate = expectedFullVisitDate ? new Date(expectedFullVisitDate) : undefined;\r\n this.expectedVisitDate = expectedVisitDate;\r\n this.expectedVisitTime = expectedVisitTime;\r\n _.map(sections, (s) => { this.sections.push(new IntakePetSection(s)) });\r\n }\r\n\r\n /* ---------- */\r\n displayThumbnailUrlFixedByWidthAndHeight = (width?: number, height?: number, mode?: string): string | undefined => {\r\n height = height || 65;\r\n width = width || 65;\r\n mode = mode || 'crop';\r\n\r\n mode = '&mode=' + mode;\r\n\r\n if (this.photo)\r\n return this.photo.processedPhotoBaseUrl.includes(\"data:\") ?\r\n this.photo.processedPhotoBaseUrl :\r\n this.photo.processedPhotoBaseUrl + `?width=${60}&height=${60}${mode}`;\r\n else\r\n return undefined;\r\n }\r\n}\r\n","import { map } from \"lodash\";\r\nimport { IntakePetSectionQuestionModel } from \".\";\r\n\r\nexport interface IIntakePetSection {\r\n intakePetSectionId: number;\r\n intakePetId: number;\r\n sectionId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n questions: IntakePetSectionQuestionModel[];\r\n rowVersion: string;\r\n}\r\n\r\nexport class IntakePetSection implements IIntakePetSection {\r\n intakePetSectionId: number;\r\n intakePetId: number;\r\n sectionId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n questions: IntakePetSectionQuestionModel[] = [];\r\n rowVersion: string;\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n intakePetSectionId = 0,\r\n intakePetId = 0,\r\n sectionId = 0,\r\n name = '',\r\n displayName = '',\r\n sortOrder = 0,\r\n questions = [] as Array,\r\n rowVersion = ''\r\n } = params;\r\n\r\n this.intakePetSectionId = intakePetSectionId;\r\n this.intakePetId = intakePetId;\r\n this.sectionId = sectionId;\r\n this.name = name;\r\n this.displayName = displayName;\r\n this.sortOrder = sortOrder;\r\n map(questions, (question) => { this.questions.push(new IntakePetSectionQuestionModel(question)); });\r\n this.rowVersion = rowVersion;\r\n }\r\n}\r\n","export interface IIntakePetSectionQuestionListValue {\r\n intakePetSectionQuestionListValueId: number;\r\n intakePetSectionQuestionId: number;\r\n name: string;\r\n sortOrder: number;\r\n isSelected: boolean;\r\n storage: string;\r\n}\r\n\r\nexport class IntakePetSectionQuestionListValue implements IIntakePetSectionQuestionListValue {\r\n intakePetSectionQuestionListValueId: number;\r\n intakePetSectionQuestionId: number;\r\n name: string;\r\n sortOrder: number;\r\n isSelected: boolean;\r\n storage: string;\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n intakePetSectionQuestionListValueId = 0,\r\n intakePetSectionQuestionId = 0,\r\n name = '',\r\n sortOrder = 0,\r\n isSelected = false,\r\n storage = ''\r\n } = params;\r\n\r\n this.intakePetSectionQuestionListValueId = intakePetSectionQuestionListValueId;\r\n this.intakePetSectionQuestionId = intakePetSectionQuestionId;\r\n this.name = name;\r\n this.sortOrder = sortOrder;\r\n this.isSelected = isSelected;\r\n this.storage = storage;\r\n }\r\n}\r\n","import { map } from \"lodash\";\r\nimport { IIntakePetSectionQuestionListValue, IntakePetSectionQuestionListValue, IPhotoModel, PhotoModel } from \".\";\r\n\r\nexport interface IIntakePetSectionQuestionModel {\r\n intakePetSectionQuestionId: number;\r\n intakePetSectionId: number;\r\n questionId: number;\r\n questionTypeId: number;\r\n name: string;\r\n followupQuestion: string;\r\n showFollowupWhenAnswerIs: boolean;\r\n allowMultiple: boolean;\r\n isReadOnly: boolean;\r\n sortOrder: number;\r\n stringValue: string;\r\n bitValue?: boolean;\r\n photoId?: number;\r\n yesOverrideText: string;\r\n noOverrideText: string;\r\n useMultiChoiceDropDown: boolean;\r\n isFollowupReadOnly: boolean;\r\n intakePetSectionQuestionListValues: IIntakePetSectionQuestionListValue[];\r\n photo?: IPhotoModel;\r\n questionSummary: string;\r\n rowVersion: string;\r\n}\r\n\r\nexport class IntakePetSectionQuestionModel implements IIntakePetSectionQuestionModel {\r\n intakePetSectionQuestionId: number;\r\n intakePetSectionId: number;\r\n questionId: number;\r\n questionTypeId: number;\r\n name: string;\r\n followupQuestion: string;\r\n showFollowupWhenAnswerIs: boolean;\r\n allowMultiple: boolean;\r\n isReadOnly: boolean;\r\n sortOrder: number;\r\n stringValue: string;\r\n bitValue?: boolean;\r\n photoId?: number;\r\n yesOverrideText: string;\r\n noOverrideText: string;\r\n useMultiChoiceDropDown: boolean;\r\n isFollowupReadOnly: boolean;\r\n intakePetSectionQuestionListValues: IntakePetSectionQuestionListValue[] = [];\r\n photo?: PhotoModel | undefined;\r\n questionSummary: string;\r\n rowVersion: string;\r\n\r\n selectedListValueId: number | undefined;\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n intakePetSectionQuestionId = 0,\r\n intakePetSectionId = 0,\r\n questionId = 0,\r\n questionTypeId = 0,\r\n name = '',\r\n followupQuestion = '',\r\n showFollowupWhenAnswerIs = false,\r\n allowMultiple = false,\r\n isReadOnly = false,\r\n sortOrder = 0,\r\n stringValue = '',\r\n bitValue = undefined,\r\n photoId = undefined,\r\n yesOverrideText = \"\",\r\n noOverrideText = \"\",\r\n useMultiChoiceDropDown = false,\r\n isFollowupReadOnly = false,\r\n intakePetSectionQuestionListValues = [] as Array,\r\n photo = undefined,\r\n questionSummary = '',\r\n rowVersion = ''\r\n } = params;\r\n\r\n this.intakePetSectionQuestionId = intakePetSectionQuestionId;\r\n this.intakePetSectionId = intakePetSectionId;\r\n this.questionId = questionId;\r\n this.questionTypeId = questionTypeId;\r\n this.name = name;\r\n this.followupQuestion = followupQuestion;\r\n this.showFollowupWhenAnswerIs = showFollowupWhenAnswerIs;\r\n this.allowMultiple = allowMultiple;\r\n this.isReadOnly = isReadOnly;\r\n this.sortOrder = sortOrder;\r\n this.stringValue = stringValue;\r\n this.bitValue = bitValue;\r\n this.photoId = photoId;\r\n this.yesOverrideText = yesOverrideText;\r\n this.noOverrideText = noOverrideText;\r\n this.useMultiChoiceDropDown = useMultiChoiceDropDown;\r\n this.isFollowupReadOnly = isFollowupReadOnly;\r\n map(intakePetSectionQuestionListValues, (lv) => { this.intakePetSectionQuestionListValues.push(new IntakePetSectionQuestionListValue(lv)); });\r\n this.photo = photo;\r\n this.questionSummary = questionSummary;\r\n this.rowVersion = rowVersion;\r\n\r\n this.selectedListValueId = this.intakePetSectionQuestionListValues.find(listVal => { return (listVal.isSelected) })?.intakePetSectionQuestionListValueId;\r\n }\r\n\r\n get photoUrl() {\r\n return (this.photo) ? this.photo.photoUrl : '';\r\n }\r\n\r\n // static GetIntakePetSectionQuestionModelFromQuestion(question: IQuestionModel) {\r\n // return new IntakePetSectionQuestionModel({ ...question as IQuestionModel, \r\n // questionId: 0,\r\n // questionTypeId: question.questionTypeId,\r\n // name: question.name,\r\n // isReadOnly: question.isReadOnly,\r\n // isFollowupReadOnly: question.isFollowupReadOnly,\r\n // followupQuestion: question.followupQuestion,\r\n // showFollowupWhenAnswerIs: question.showFollowupWhenAnswerIs,\r\n // allowMultiple: question.allowMultiple,\r\n // yesOverrideText: question.yesOverrideText\r\n // })\r\n // }\r\n}\r\n","import { InvoiceModel, Model, ModelRecord, VisitModel } from \"@common/models\";\r\nimport { DateTimeUtils } from \"@common/utils\";\r\nimport { StringUtility } from \"@common/utils/stringUtility\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { CommunicationType } from \"./Enums\";\r\nimport { IAddClientEmailRequest } from \"./requests\";\r\nexport interface IInvoiceListingModel extends Model {// Response// Request // used to match backend classname.\r\n dateDueUTC: string\r\n dateFullyPaidUTC?: string | null\r\n invoiceId: number\r\n visitId: number\r\n petNames: string\r\n amount: number\r\n amountDue: number\r\n hospitalId?: number | null\r\n hospitalName: string\r\n\r\n clientId: number\r\n clientFirstName: string\r\n clientLastName: string\r\n clientCanSMS?: boolean\r\n\r\n veterinarianId?: number | null\r\n vetFirstName: string\r\n vetLastName: string\r\n storeTimezoneName: string\r\n dateCreated: DateTime | string\r\n userCreated: string | undefined\r\n dateUpdated: DateTime | string | undefined\r\n userUpdated: string | undefined\r\n paymentMethod?: string | undefined\r\n invoiceDiscrepancyReasonId?: number | null\r\n\r\n invoiceType?: string | undefined;\r\n}\r\n\r\nexport class InvoiceListingModel extends Model implements ModelRecord {\r\n // listing means a partial of a bigger model. it is fast.\r\n // flat version of a complex object ... i.e. not nested.\r\n dateDueUTC: DateTime | undefined\r\n dateFullyPaidUTC: DateTime | undefined\r\n invoiceId: number\r\n visitId: number\r\n petNames: string | undefined\r\n amount: number | undefined\r\n amountDue: number | undefined\r\n hospitalId: number | undefined\r\n hospitalName: string | undefined\r\n\r\n clientId: number | undefined\r\n clientFirstName: string | undefined\r\n clientLastName: string | undefined\r\n clientCanSMS: boolean | undefined\r\n\r\n veterinarianId: number | undefined\r\n vetFirstName: string | undefined\r\n vetLastName: string | undefined\r\n\r\n clientName: string | undefined\r\n vetName: string | undefined\r\n status: string | undefined\r\n storeTimezoneName: string | undefined\r\n\r\n dateDueAtStore: DateTime | undefined;\r\n\r\n dateCreated: DateTime;\r\n userCreated: string | undefined;\r\n dateUpdated: DateTime | undefined;\r\n userUpdated: string | undefined;\r\n paymentMethod: string | undefined;\r\n invoiceDiscrepancyReasonId: number | null;\r\n\r\n invoiceType: string | undefined;\r\n\r\n constructor(params: IInvoiceListingModel) {\r\n super()\r\n this.storeTimezoneName = params.storeTimezoneName;\r\n this.dateDueUTC = DateTime.fromISO(params.dateDueUTC, { zone: 'UTC' }) // log here // show fake date // throw runtime // error boundaries\r\n this.dateDueAtStore = DateTime.fromISO(this.dateDueUTC.toISO(), { zone: this.storeTimezoneName }); //covnert the due date to the time at the store (should be end of day at that store)\r\n this.dateFullyPaidUTC = params.dateFullyPaidUTC ? DateTime.fromISO(params.dateFullyPaidUTC, { zone: 'UTC' }) : undefined\r\n\r\n this.dateCreated = DateTimeUtils.getAsDateTimeUTC(params.dateCreated)!\r\n this.userCreated = params.userCreated ?? undefined;\r\n this.dateUpdated = params.dateUpdated == null ? undefined : DateTimeUtils.getAsDateTimeUTC(params.dateUpdated)!;\r\n this.userUpdated = params.userUpdated ?? undefined;\r\n\r\n this.invoiceId = params.invoiceId\r\n this.visitId = params.visitId\r\n this.petNames = params.petNames\r\n this.amount = params.amount\r\n this.amountDue = params.amountDue\r\n this.hospitalId = defaultTo(params.hospitalId, 0)\r\n this.hospitalName = params.hospitalName\r\n this.storeTimezoneName = params.storeTimezoneName;\r\n this.clientId = params.clientId\r\n this.clientFirstName = params.clientFirstName\r\n this.clientLastName = params.clientLastName\r\n this.clientCanSMS = params.clientCanSMS;\r\n\r\n this.veterinarianId = defaultTo(params.veterinarianId, 0)\r\n this.vetFirstName = params.vetFirstName\r\n this.vetLastName = params.vetLastName\r\n this.paymentMethod = params.paymentMethod;\r\n // new properties\r\n this.clientName = StringUtility.formattedUserName(params.clientFirstName, params.clientLastName, undefined);\r\n this.vetName = StringUtility.formattedUserName(params.vetFirstName, params.vetLastName, \"Dr.\");\r\n this.invoiceDiscrepancyReasonId = params.invoiceDiscrepancyReasonId ?? null;\r\n this.invoiceType = defaultTo(params.invoiceType, undefined);\r\n\r\n this.status = this.dateFullyPaidUTC\r\n ? \"Paid\"\r\n : this.dateDueUTC && this.dateDueUTC < DateTime.utc()\r\n ? \"Due\"\r\n : \"Open\";\r\n }\r\n\r\n static fromInvoiceModel(invoice: InvoiceModel, hospitalId: number, hospitalName: string, timeZone: string): InvoiceListingModel {\r\n return new InvoiceListingModel({\r\n dateDueUTC: invoice.dateDueUTC.toISODate(),\r\n dateFullyPaidUTC: invoice.dateFullyPaidUTC?.toISODate(),\r\n invoiceId: invoice.invoiceId,\r\n visitId: invoice.visitId,\r\n petNames: invoice.petNames,\r\n amount: invoice.amount,\r\n amountDue: invoice.amountDue,\r\n hospitalId: hospitalId,\r\n hospitalName: hospitalName,\r\n clientId: invoice.clientId,\r\n clientFirstName: invoice.clientFirstName,\r\n clientLastName: invoice.clientLastName,\r\n veterinarianId: invoice.veterinarianId,\r\n vetFirstName: invoice.vetFirstName,\r\n vetLastName: invoice.vetLastName,\r\n rowVersion: invoice.rowVersion,\r\n storeTimezoneName: timeZone,\r\n dateCreated: invoice.dateCreated,\r\n dateUpdated: invoice.dateUpdated,\r\n userUpdated: invoice.userUpdated,\r\n userCreated: invoice.userCreated\r\n })\r\n }\r\n\r\n toClientEmailRequest(visit: VisitModel): IAddClientEmailRequest {\r\n return {\r\n visitId: visit.visitId,\r\n clientId: this.clientId!,\r\n visitSalesItemId: undefined,\r\n petId: visit.petId,\r\n invoiceId: this.invoiceId!,\r\n emailAddress: visit.client.emailAddress,\r\n salesDate: visit.visitDate!.toLocaleString(DateTime.DATE_SHORT),\r\n communicationTypeId: CommunicationType.Invoice,\r\n communicationTypeName: CommunicationType.displayName(CommunicationType.Invoice),\r\n storageContentUrl: undefined,\r\n includeRabiesCertificate: false\r\n }\r\n }\r\n}\r\n","import { IModel, Model, PaymentMethodModel, IPaymentMethodModel } from \".\";\r\n\r\nexport interface IInvoicePaymentModel extends IModel {\r\n invoicePaymentId: number;\r\n paymentMethodId: number;\r\n invoiceId: number;\r\n amount: number;\r\n dateCreated: string;\r\n paymentMethod: IPaymentMethodModel;\r\n}[]\r\n\r\nexport class InvoicePaymentModel extends Model implements IInvoicePaymentModel {\r\n invoicePaymentId: number;\r\n paymentMethodId: number;\r\n invoiceId: number;\r\n amount: number;\r\n dateCreated: string;\r\n paymentMethod: PaymentMethodModel;\r\n constructor(params: IInvoicePaymentModel) {\r\n super(params);\r\n this.invoicePaymentId = params.invoicePaymentId\r\n this.paymentMethodId = params.paymentMethodId\r\n this.invoiceId = params.invoiceId\r\n this.amount = params.amount\r\n this.dateCreated = params.dateCreated\r\n this.paymentMethod = new PaymentMethodModel(params.paymentMethod)\r\n }\r\n}\r\n","import { floorToTwoDecimals } from \"@common/utils/numberUtils\";\r\nimport { defaultTo } from \"lodash\";\r\nimport {IModel, InvoiceSalesItemTraitModel, Model} from \".\";\r\nimport { DiscountItemTypes } from \"./Enums\";\r\n\r\nexport interface IInvoiceSalesItemModel extends IModel {\r\n salesItemId: number;\r\n salesItemOptionId: number;\r\n invoiceId: number;\r\n invoiceSalesItemId: number;\r\n parentInvoiceSalesItemId: number | undefined;\r\n salesItemName: string;\r\n salesItemFullName: string;\r\n salesItemOptionName: string;\r\n salesItemOptionDisplayName: string;\r\n quantity: number;\r\n dispensingFee: number | undefined;\r\n salesItemPrice: number;\r\n rebateAmount: number | undefined;\r\n postRebatePrice: number | undefined;\r\n discountAmount: number | undefined;\r\n invoicePrice: number | undefined;\r\n invoiceUnitPrice: number | undefined;\r\n estimateQuantityLow: number | undefined;\r\n estimateQuantityHigh: number | undefined;\r\n salesItemOptionMinimumQuantity: number;\r\n salesItemOptionMaximumQuantity: number;\r\n salesItemOptionAllowUserEnteredPrice: boolean;\r\n wasDeclinedByClient: boolean;\r\n wasDeclinedByVeterinarian: boolean;\r\n salesItemOptionBusinessLineSKU: string | undefined;\r\n isInPackage: boolean;\r\n salesPackageId: number | undefined;\r\n salesPackageName: string | undefined;\r\n salesItemSalesItemTypeId: number;\r\n invoiceSalesItemTraits: InvoiceSalesItemTraitModel[];\r\n}\r\n\r\nexport class InvoiceSalesItemModel extends Model implements IInvoiceSalesItemModel {\r\n invoiceId: number;\r\n invoiceSalesItemId: number;\r\n salesItemId: number;\r\n salesItemOptionId: number;\r\n parentInvoiceSalesItemId: number | undefined;\r\n salesItemName: string;\r\n salesItemFullName: string;\r\n salesItemOptionName: string;\r\n salesItemOptionDisplayName: string;\r\n quantity: number;\r\n dispensingFee: number | undefined;\r\n salesItemPrice: number;\r\n rebateAmount: number | undefined;\r\n postRebatePrice: number | undefined;\r\n discountAmount: number | undefined;\r\n invoicePrice: number | undefined;\r\n invoiceUnitPrice: number | undefined;\r\n estimateQuantityLow: number | undefined;\r\n estimateQuantityHigh: number | undefined;\r\n salesItemOptionMinimumQuantity: number;\r\n salesItemOptionMaximumQuantity: number;\r\n salesItemOptionAllowUserEnteredPrice: boolean;\r\n wasDeclinedByClient: boolean;\r\n wasDeclinedByVeterinarian: boolean;\r\n salesItemOptionBusinessLineSKU: string | undefined;\r\n isInPackage: boolean;\r\n salesPackageId: number | undefined;\r\n salesPackageName: string | undefined;\r\n salesItemSalesItemTypeId: number;\r\n invoiceSalesItemTraits: InvoiceSalesItemTraitModel[];\r\n\r\n constructor(params: IInvoiceSalesItemModel) {\r\n super(params);\r\n this.invoiceId = defaultTo(params.invoiceId, 0);\r\n this.invoiceSalesItemId = defaultTo(params.invoiceSalesItemId, 0);\r\n this.salesItemId = defaultTo(params.salesItemId, 0);\r\n this.salesItemOptionId = defaultTo(params.salesItemOptionId, 0);\r\n this.parentInvoiceSalesItemId = params.parentInvoiceSalesItemId;\r\n this.salesItemName = params.salesItemName;\r\n this.salesItemFullName = params.salesItemFullName;\r\n this.salesItemOptionName = params.salesItemOptionName;\r\n this.salesItemOptionDisplayName = params.salesItemOptionDisplayName;\r\n this.quantity = params.quantity;\r\n this.dispensingFee = params.dispensingFee;\r\n this.salesItemPrice = defaultTo(params.salesItemPrice, 0);\r\n this.rebateAmount = params.rebateAmount;\r\n this.postRebatePrice = params.postRebatePrice;\r\n this.discountAmount = params.discountAmount;\r\n this.invoicePrice = params.invoicePrice;\r\n this.invoiceUnitPrice = params.invoiceUnitPrice;\r\n this.estimateQuantityLow = params.estimateQuantityLow;\r\n this.estimateQuantityHigh = params.estimateQuantityHigh;\r\n this.salesItemOptionMinimumQuantity = defaultTo(params.salesItemOptionMinimumQuantity, 0);\r\n this.salesItemOptionMaximumQuantity = defaultTo(params.salesItemOptionMaximumQuantity, 0);\r\n this.salesItemOptionAllowUserEnteredPrice = defaultTo(params.salesItemOptionAllowUserEnteredPrice, false);\r\n this.wasDeclinedByClient = defaultTo(params.wasDeclinedByClient, false);\r\n this.wasDeclinedByVeterinarian = defaultTo(params.wasDeclinedByVeterinarian, false);\r\n this.salesItemOptionBusinessLineSKU = defaultTo(params.salesItemOptionBusinessLineSKU, undefined);\r\n this.isInPackage = defaultTo(params.isInPackage, false)\r\n this.salesPackageId = params.salesPackageId;\r\n this.salesPackageName = params.salesPackageName;\r\n this.salesItemSalesItemTypeId = defaultTo(params.salesItemSalesItemTypeId, 0);\r\n this.invoiceSalesItemTraits = defaultTo(params.invoiceSalesItemTraits, []);\r\n }\r\n getBarcodePrice(scalar: number) {\r\n const handledScalar = !Number.isNaN(scalar) ? scalar : 1;\r\n const price = (this.invoicePrice ?? this.salesItemPrice);\r\n return floorToTwoDecimals(price * handledScalar);\r\n }\r\n IsDiscountItem = () => DiscountItemTypes.includes(this.salesItemSalesItemTypeId);\r\n}\r\n","\r\nimport { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface INoteTypeModel extends IModel {\r\n noteTypeId: number;\r\n name: string;\r\n}\r\n\r\nexport class NoteTypeModel extends Model implements ModelRecord {\r\n noteTypeId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.noteTypeId = defaultTo(params?.noteTypeId, 0);\r\n this.name = defaultTo(params?.name, \"\");\r\n }\r\n}\r\n","\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { NoteTypeModel } from \"./NoteTypeModel\";\r\n\r\nexport interface IInvoiceNoteModel extends IModel {\r\n invoiceNoteId: number;\r\n invoiceId: number;\r\n noteTypeId: number;\r\n noteType: NoteTypeModel;\r\n notes: string;\r\n isPrivate: boolean;\r\n}\r\n\r\nexport class InvoiceNoteModel extends Model implements ModelRecord {\r\n invoiceNoteId: number;\r\n invoiceId: number;\r\n noteTypeId: number;\r\n noteType: NoteTypeModel;\r\n notes: string;\r\n isPrivate: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.invoiceNoteId = _.defaultTo(params?.invoiceNoteId, 0);\r\n this.invoiceId = _.defaultTo(params?.invoiceId, 0);\r\n this.noteTypeId = _.defaultTo(params?.noteTypeId, 0);\r\n this.noteType = params?.noteType ? new NoteTypeModel(params?.noteType) : new NoteTypeModel();\r\n this.notes = _.defaultTo(params?.notes, \"\");\r\n this.isPrivate = _.defaultTo(params?.isPrivate, true);\r\n\r\n }\r\n}\r\n","import { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IInvoiceDiscrepancyReasonModel extends IModel {\r\n invoiceDiscrepancyReasonId: number;\r\n name: string;\r\n\r\n}\r\n\r\nexport class InvoiceDiscrepancyReasonModel extends Model implements ModelRecord {\r\n invoiceDiscrepancyReasonId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.invoiceDiscrepancyReasonId = _.defaultTo(params?.invoiceDiscrepancyReasonId, 0);\r\n this.name = _.defaultTo(params?.name, '');\r\n\r\n }\r\n}\r\n","import { DateTimeUtils } from \"@common/utils\";\r\nimport { defaultTo } from \"lodash\"\r\nimport { DateTime } from \"luxon\";\r\nimport { CommunicationType } from \"./Enums\";\r\nimport { InvoiceListingModel } from \"./InvoiceListingModel\";\r\nimport { InvoicePaymentModel, IInvoicePaymentModel } from \"./InvoicePaymentModel\";\r\nimport { InvoiceSalesItemModel, IInvoiceSalesItemModel } from \"./InvoiceSalesItemModel\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\"\r\nimport { IAddClientEmailRequest } from \"./requests/AddClientEmailRequest\";\r\nimport { VisitModel } from \"./VisitModel\";\r\nimport { IInvoiceNoteModel, InvoiceNoteModel } from \"./InvoiceNoteModel\";\r\nimport { InvoiceDiscrepancyReasonModel } from \"./InvoiceDiscrepancyReasonModel\";\r\n\r\nexport interface IInvoiceModel extends IModel {\r\n invoiceId: number;\r\n dateDueUTC: string;\r\n dateFullyPaidUTC: string | undefined;\r\n clientId: number;\r\n clientFirstName: string;\r\n clientLastName: string;\r\n petNames: string;\r\n amount: number;\r\n amountDue: number;\r\n serviceAmount: number;\r\n productAmount: number;\r\n licenseFeeAmount: number;\r\n vetcoPrescriptionAmount: number;\r\n discountAmount: number;\r\n taxPercentage: number;\r\n subtotalPreDiscountsAmount: number;\r\n subtotalPostDiscountsAmount: number;\r\n taxAmount: number;\r\n refundAmount: number;\r\n servicesOnlyDiscountAmount: number;\r\n productsOnlyDiscountAmount: number;\r\n servicesRebateAmount: number | undefined;\r\n productsRebateAmount: number | undefined;\r\n totalRebateAmount: number | undefined;\r\n nonTaxableFeeAmount: number | undefined;\r\n taxableFeeAmount: number | undefined;\r\n totalFeeAmount: number | undefined;\r\n totalAOVAmount: number | undefined;\r\n salesPackageId: number | undefined;\r\n salesPackageName: string | undefined;\r\n salesPackagePrice: number | undefined;\r\n salesPackageDiscountAmount: number | undefined;\r\n salesPackageInvoicePrice: number | undefined;\r\n taxableTotalAmount: number;\r\n nonTaxableTotalAmount: number;\r\n veterinarianId: number;\r\n vetFirstName: string;\r\n vetLastName: string;\r\n visitId: number;\r\n dateCreated: string;\r\n userCreated: string | undefined;\r\n dateUpdated: string | undefined;\r\n userUpdated: string | undefined;\r\n invoiceDiscrepancyReasonId: number | undefined;\r\n invoiceDiscrepancyReason: InvoiceDiscrepancyReasonModel | undefined;\r\n invoicePayments: IInvoicePaymentModel[];\r\n invoiceSalesItems: IInvoiceSalesItemModel[];\r\n notes: IInvoiceNoteModel[];\r\n}\r\n\r\nexport class InvoiceModel extends Model implements ModelRecord {\r\n invoiceId: number;\r\n dateDueUTC: DateTime;\r\n dateFullyPaidUTC: DateTime | undefined;\r\n clientId: number;\r\n clientFirstName: string;\r\n clientLastName: string;\r\n petNames: string;\r\n amount: number;\r\n amountDue: number;\r\n serviceAmount: number;\r\n productAmount: number;\r\n licenseFeeAmount: number;\r\n vetcoPrescriptionAmount: number;\r\n discountAmount: number;\r\n taxPercentage: number;\r\n subtotalPreDiscountsAmount: number;\r\n subtotalPostDiscountsAmount: number;\r\n taxAmount: number;\r\n refundAmount: number;\r\n servicesOnlyDiscountAmount: number;\r\n productsOnlyDiscountAmount: number;\r\n servicesRebateAmount: number | undefined;\r\n productsRebateAmount: number | undefined;\r\n totalRebateAmount: number | undefined;\r\n nonTaxableFeeAmount: number | undefined;\r\n taxableFeeAmount: number | undefined;\r\n totalFeeAmount: number | undefined;\r\n totalAOVAmount: number | undefined;\r\n salesPackageId: number | undefined;\r\n salesPackageName: string | undefined;\r\n salesPackagePrice: number | undefined;\r\n salesPackageDiscountAmount: number | undefined;\r\n salesPackageInvoicePrice: number | undefined;\r\n taxableTotalAmount: number;\r\n nonTaxableTotalAmount: number;\r\n veterinarianId: number;\r\n vetFirstName: string;\r\n vetLastName: string;\r\n visitId: number;\r\n dateCreated: DateTime;\r\n userCreated: string | undefined;\r\n dateUpdated: DateTime | undefined;\r\n userUpdated: string | undefined;\r\n invoiceDiscrepancyReasonId: number | undefined;\r\n invoiceDiscrepancyReason: InvoiceDiscrepancyReasonModel | undefined;\r\n invoicePayments: InvoicePaymentModel[];\r\n invoiceSalesItems: InvoiceSalesItemModel[];\r\n notes: IInvoiceNoteModel[];\r\n\r\n constructor(params: IInvoiceModel) {\r\n super(params);\r\n this.invoiceId = params.invoiceId;\r\n this.dateDueUTC = DateTime.fromISO(params.dateDueUTC, { zone: 'UTC' });\r\n this.dateFullyPaidUTC = params.dateFullyPaidUTC ? DateTime.fromISO(params.dateFullyPaidUTC, { zone: 'UTC' }) : undefined;\r\n this.clientId = params.clientId\r\n this.clientFirstName = params.clientFirstName;\r\n this.clientLastName = params.clientLastName;\r\n this.petNames = params.petNames;\r\n this.amount = params.amount;\r\n this.amountDue = params.amountDue;\r\n this.serviceAmount = params.serviceAmount;\r\n this.productAmount = params.productAmount;\r\n this.licenseFeeAmount = params.licenseFeeAmount;\r\n this.vetcoPrescriptionAmount = params.vetcoPrescriptionAmount;\r\n this.discountAmount = params.discountAmount;\r\n this.taxPercentage = params.taxPercentage;\r\n this.subtotalPreDiscountsAmount = params.subtotalPreDiscountsAmount;\r\n this.subtotalPostDiscountsAmount = params.subtotalPostDiscountsAmount;\r\n this.taxAmount = params.taxAmount;\r\n this.refundAmount = params.refundAmount;\r\n this.servicesOnlyDiscountAmount = params.servicesOnlyDiscountAmount;\r\n this.productsOnlyDiscountAmount = params.productsOnlyDiscountAmount;\r\n this.servicesRebateAmount = params.servicesRebateAmount;\r\n this.productsRebateAmount = params.productsRebateAmount;\r\n this.totalRebateAmount = params.totalRebateAmount;\r\n this.nonTaxableFeeAmount = params.nonTaxableFeeAmount;\r\n this.taxableFeeAmount = params.taxableFeeAmount;\r\n this.totalFeeAmount = params.totalFeeAmount;\r\n this.totalAOVAmount = params.totalAOVAmount;\r\n this.salesPackageId = params.salesPackageId;\r\n this.salesPackageName = params.salesPackageName;\r\n this.salesPackagePrice = params.salesPackagePrice;\r\n this.salesPackageDiscountAmount = params.salesPackageDiscountAmount;\r\n this.salesPackageInvoicePrice = params.salesPackageInvoicePrice;\r\n this.taxableTotalAmount = params.taxableTotalAmount;\r\n this.nonTaxableTotalAmount = params.nonTaxableTotalAmount;\r\n this.veterinarianId = params.veterinarianId;\r\n this.vetFirstName = params.vetFirstName;\r\n this.vetLastName = params.vetLastName;\r\n this.visitId = params.visitId;\r\n this.dateCreated = DateTimeUtils.getAsDateTimeUTC(params.dateCreated)!\r\n this.userCreated = params.userCreated ?? undefined;\r\n this.dateUpdated = params.dateUpdated == null ? undefined : DateTimeUtils.getAsDateTimeUTC(params.dateUpdated)!;\r\n this.userUpdated = params.userUpdated ?? undefined;\r\n this.invoiceDiscrepancyReasonId = params.invoiceDiscrepancyReasonId;\r\n this.invoiceDiscrepancyReason = params.invoiceDiscrepancyReason ? new InvoiceDiscrepancyReasonModel(params.invoiceDiscrepancyReason) : undefined;\r\n this.invoicePayments = (params.invoicePayments ?? []).map(si => new InvoicePaymentModel(si));\r\n this.invoiceSalesItems = (params.invoiceSalesItems ?? []).map(si => new InvoiceSalesItemModel(si));\r\n this.notes = (params.notes ?? []).map(n => new InvoiceNoteModel(n));\r\n }\r\n\r\n get doctorsName(): string {\r\n return `Dr. ${this.vetFirstName} ${this.vetLastName}`;\r\n }\r\n\r\n toListingModel(hospitalId?: number, hospitalName?: string, timeZone?: string): InvoiceListingModel {\r\n return InvoiceListingModel.fromInvoiceModel(this, defaultTo(hospitalId, 0), defaultTo(hospitalName, \"\"), defaultTo(timeZone, \"\"));\r\n }\r\n\r\n toClientEmailRequest(visit: VisitModel, communicationType: CommunicationType): IAddClientEmailRequest {\r\n return {\r\n visitId: visit.visitId,\r\n clientId: this.clientId!,\r\n visitSalesItemId: undefined,\r\n petId: visit.petId,\r\n invoiceId: this.invoiceId!,\r\n emailAddress: visit.client.emailAddress,\r\n salesDate: visit.visitDate!.toLocaleString(DateTime.DATE_SHORT),\r\n communicationTypeId: communicationType,\r\n communicationTypeName: CommunicationType.displayName(communicationType),\r\n storageContentUrl: undefined,\r\n includeRabiesCertificate: false\r\n }\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { ILicenseTypeModel, IModel, IPhotoModel, IStateModel, LicenseTypeModel, Model, PhotoModel, StateModel } from \".\";\r\n\r\nexport interface ILicenseModel extends IModel {\r\n licenseId: number\r\n number: string\r\n expirationDate: string\r\n isReadOnly: boolean\r\n state: IStateModel\r\n licenseType: ILicenseTypeModel\r\n licensePhoto: IPhotoModel | undefined\r\n}\r\n\r\nexport class LicenseModel extends Model implements ILicenseModel {\r\n licenseId: number;\r\n number: string;\r\n expirationDate: string;\r\n isReadOnly: boolean;\r\n state: IStateModel;\r\n licenseType: ILicenseTypeModel;\r\n licensePhoto: IPhotoModel | undefined;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.licenseId = defaultTo(params?.licenseId, 0);\r\n this.number = defaultTo(params?.number, '0');\r\n this.expirationDate = defaultTo(params?.expirationDate, '');\r\n this.isReadOnly = defaultTo(params?.isReadOnly, false);\r\n this.state = new StateModel(params?.state);\r\n this.licenseType = new LicenseTypeModel(params?.licenseType);\r\n this.licensePhoto = params?.licensePhoto ? new PhotoModel(params?.licensePhoto) : undefined;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model } from \".\";\r\n\r\nexport interface ILicenseTypeModel extends IModel {\r\n licenseTypeId: number\r\n name: string\r\n}\r\n\r\nexport class LicenseTypeModel extends Model implements ILicenseTypeModel {\r\n licenseTypeId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.licenseTypeId = defaultTo(params?.licenseTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","import { ISelectOption } from \"@common/components/forms\";\r\nimport { IModel, Model } from \".\";\r\nimport { MacroType } from \"./Enums/MacroType\";\r\n\r\nexport interface IMacroTypeModel extends IModel {\r\n macroTypeId: number\r\n name: string\r\n}\r\n\r\nexport class MacroTypeModel extends Model implements IMacroTypeModel {\r\n macroTypeId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.macroTypeId = _.defaultTo(params?.macroTypeId, 0);\r\n this.name = _.defaultTo(params?.name, '');\r\n }\r\n}\r\n\r\nexport const macroTypes: ISelectOption[] = [\r\n { value: MacroType.Hospitals, label: \"Hospitals\" },\r\n { value: MacroType.Location, label: \"Location\" },\r\n { value: MacroType.Provider, label: \"Provider\" }\r\n]\r\n","import { DateTime } from \"luxon\";\r\nimport { IModel, Model, ModelRecord } from \".\";\r\nimport { IMacroTypeModel, MacroTypeModel } from \"./MacroTypeModel\";\r\n\r\nexport interface IMacroModel extends IModel {\r\n macroId: number\r\n name: string\r\n macroTypeId: number\r\n macroType: IMacroTypeModel\r\n content: string\r\n hospitalId: number\r\n userId: number\r\n createdByUserId: number | undefined\r\n dateCreated: string\r\n userCreated: string\r\n dateUpdated: string\r\n userUpdated: string\r\n isActive: boolean\r\n macroTargetTypeId: number\r\n}\r\n\r\nexport class MacroModel extends Model implements ModelRecord {\r\n macroId: number\r\n name: string\r\n macroTypeId: number\r\n macroType: MacroTypeModel\r\n content: string\r\n hospitalId: number\r\n userId: number\r\n createdByUserId: number | undefined\r\n dateCreated: DateTime\r\n userCreated: string\r\n dateUpdated: DateTime\r\n userUpdated: string\r\n isActive: boolean\r\n macroTargetTypeId: number\r\n\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.macroId = _.defaultTo(params?.macroId, 0);\r\n this.name = _.defaultTo(params.name, \"\");\r\n this.macroTypeId = _.defaultTo(params?.macroTypeId, 0);\r\n this.macroType = new MacroTypeModel(params?.macroType);\r\n this.content = _.defaultTo(params.content, \"\");\r\n this.hospitalId = _.defaultTo(params?.hospitalId, 0);\r\n this.userId = _.defaultTo(params?.userId, 0);\r\n this.createdByUserId = _.defaultTo(params?.createdByUserId, undefined);\r\n this.dateCreated = params.dateCreated ? DateTime.fromISO(params.dateCreated, { zone: \"utc\" }) : DateTime.min();\r\n this.userCreated = _.defaultTo(params.userCreated, \"\");\r\n this.dateUpdated = params.dateUpdated ? DateTime.fromISO(params.dateUpdated, { zone: \"utc\" }) : DateTime.min();\r\n this.userUpdated = _.defaultTo(params.userUpdated, \"\");\r\n this.isActive = _.defaultTo(params?.isActive, false);\r\n this.macroTargetTypeId = _.defaultTo(params?.macroTargetTypeId, 1);\r\n }\r\n}\r\n","import { IModel, Model } from \"./Model\";\r\n\r\nexport interface IVisitSalesItemTraitListingModel extends IModel {\r\n visitSalesItemTraitId: number;\r\n visitSalesItemId: number;\r\n traitId: number;\r\n stringValue: string;\r\n numberValue: number | undefined;\r\n decimalValue: number | undefined;\r\n boolValue: boolean | undefined;\r\n extendedValue: string;\r\n traitName: string;\r\n}\r\n\r\nexport class VisitSalesItemTraitListingModel extends Model implements IVisitSalesItemTraitListingModel {\r\n visitSalesItemTraitId: number;\r\n visitSalesItemId: number;\r\n traitId: number;\r\n stringValue: string;\r\n numberValue: number | undefined;\r\n decimalValue: number | undefined;\r\n boolValue: boolean | undefined;\r\n extendedValue: string;\r\n traitName: string;\r\n constructor(params: IVisitSalesItemTraitListingModel) {\r\n super(params);\r\n this.visitSalesItemTraitId = params.visitSalesItemTraitId;\r\n this.visitSalesItemId = params.visitSalesItemId;\r\n this.traitId = params.traitId;\r\n this.stringValue = params.stringValue;\r\n this.numberValue = params.numberValue;\r\n this.decimalValue = params.decimalValue;\r\n this.extendedValue = params.extendedValue;\r\n this.traitName = params.traitName;\r\n }\r\n}\r\n","import { DocumentTypeModel, IDocumentTypeModel, IPhotoModel, IStorageContentModel, PhotoModel, StorageContentModel , IModel, Model } from \".\";\r\n\r\n\r\ntype AttachmentType = \"Visit\" | \"Pet\"\r\n\r\nexport interface IAttachmentModel extends IModel {\r\n documentTypeId: number;\r\n documentType: IDocumentTypeModel | undefined;\r\n photo: IPhotoModel | undefined;\r\n storageContent: IStorageContentModel | undefined\r\n}\r\n\r\nexport class AttachmentModel extends Model implements Record {\r\n entityId: number;\r\n entityType: AttachmentType;\r\n parentId: number;\r\n documentTypeId: number;\r\n documentType: DocumentTypeModel | undefined;\r\n photo: PhotoModel | undefined;\r\n storageContent: StorageContentModel | undefined;\r\n notes: string | undefined;\r\n\r\n constructor(params: IAttachmentModel, entityId: number, entityType: AttachmentType, parentId: number, notes?: string) {\r\n super(params);\r\n this.entityId = entityId;\r\n this.entityType = entityType;\r\n this.parentId = parentId;\r\n this.documentTypeId = params.documentTypeId;\r\n this.documentType = params.documentType ? new DocumentTypeModel(params.documentType) : undefined;\r\n this.photo = params.photo ? new PhotoModel(params.photo) : undefined;\r\n this.storageContent = params.storageContent ? new StorageContentModel(params.storageContent) : undefined;\r\n this.notes = notes;\r\n\r\n }\r\n}\r\n\r\nexport interface IVisitAttachmentModel extends IAttachmentModel {\r\n visitAttachmentId: number;\r\n visitId: number;\r\n}\r\n\r\nexport class VisitAttachmentModel extends AttachmentModel implements Record {\r\n visitAttachmentId: number;\r\n visitId: number;\r\n\r\n constructor(params: IVisitAttachmentModel) {\r\n super(params, params.visitAttachmentId, \"Visit\", params.visitId);\r\n this.visitAttachmentId = params.visitAttachmentId;\r\n this.visitId = params.visitId;\r\n }\r\n\r\n}\r\n","import { defaultTo } from \"lodash\";\r\n\r\nexport interface IVisitSalesItemAttributeListValueModel {\r\n visitSalesItemAttributeListValueId: number,\r\n visitSalesItemAttributeId: number,\r\n name: string,\r\n storage: string,\r\n sortOrder: number,\r\n isSelected: boolean,\r\n}\r\n\r\nexport class VisitSalesItemAttributeListValueModel implements Record {\r\n visitSalesItemAttributeListValueId: number;\r\n visitSalesItemAttributeId: number;\r\n name: string;\r\n storage: any;\r\n storageParsed: any;\r\n sortOrder: number;\r\n isSelected: boolean;\r\n\r\n constructor(params: Partial) {\r\n this.visitSalesItemAttributeListValueId = defaultTo(params.visitSalesItemAttributeListValueId, 0)\r\n this.visitSalesItemAttributeId = defaultTo(params.visitSalesItemAttributeId, 0)\r\n this.name = defaultTo(params.name, \"\")\r\n this.storage = params.storage;\r\n this.storageParsed = params.storage == \"undefined\" ? undefined : JSON.parse(defaultTo(params.storage, \"{}\"))\r\n this.sortOrder = defaultTo(params.sortOrder, 0)\r\n this.isSelected = defaultTo(params.isSelected, false)\r\n }\r\n}\r\n","import { htmlFrom } from \"@common/utils\";\r\nimport { defaultTo, find, isEmpty, orderBy } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { CommunicationType, VisitSalesItemAttributesName, VisitSalesItemAttributeType } from \"./Enums\";\r\nimport { IVisitSalesItemAttributeListValueModel, VisitSalesItemAttributeListValueModel } from \"./VisitSalesItemAttributeListValueModel\";\r\n\r\nexport interface IVisitSalesItemAttributeModel {\r\n visitSalesItemAttributeId: number,\r\n visitSalesItemId: number,\r\n salesItemAttributeId: number,\r\n salesItemAttributeTypeId: number,\r\n name: string,\r\n allowMultiple: boolean | undefined,\r\n isReadOnly: boolean | undefined,\r\n sortOrder: number,\r\n stringValue: string,\r\n bitValue: boolean | undefined,\r\n salesItemValidationFormat: string | undefined,\r\n visitSalesItemAttributeListValues: IVisitSalesItemAttributeListValueModel[],\r\n attributeHTML: string,\r\n}\r\n\r\nexport class VisitSalesItemAttributeModel implements Record {\r\n visitSalesItemAttributeId: number;\r\n visitSalesItemId: number;\r\n salesItemAttributeId: number;\r\n salesItemAttributeTypeId: number;\r\n name: string;\r\n allowMultiple: boolean;\r\n isReadOnly: boolean;\r\n sortOrder: number;\r\n stringValue: string;\r\n bitValue: boolean | undefined;\r\n salesItemValidationFormat: string;\r\n visitSalesItemAttributeListValues: VisitSalesItemAttributeListValueModel[];\r\n attributeHTML: string;\r\n selectedRabiesVaccineId: string | undefined;\r\n\r\n constructor(params: Partial, visitDate?: DateTime | undefined, quantity?: number, unitOfMeasureName?: string | undefined, salesItemCommunicationTypeId?: number) {\r\n this.visitSalesItemAttributeId = defaultTo(params.visitSalesItemAttributeId, 0)\r\n this.visitSalesItemId = defaultTo(params.visitSalesItemId, 0)\r\n this.salesItemAttributeId = defaultTo(params.salesItemAttributeId, 0)\r\n this.salesItemAttributeTypeId = defaultTo(params.salesItemAttributeTypeId, 0)\r\n this.name = defaultTo(params.name, \"\")\r\n this.allowMultiple = defaultTo(params.allowMultiple, false)\r\n this.isReadOnly = defaultTo(params.isReadOnly, false)\r\n this.sortOrder = defaultTo(params.sortOrder, 0)\r\n this.stringValue = handleStringValue(params.stringValue, this.name, this.salesItemAttributeTypeId, visitDate, quantity, unitOfMeasureName, salesItemCommunicationTypeId)\r\n this.bitValue = params.bitValue\r\n this.salesItemValidationFormat = defaultTo(params.salesItemValidationFormat, \"\")\r\n this.attributeHTML = defaultTo(params.attributeHTML, \"\")\r\n const listValues = (params.visitSalesItemAttributeListValues ?? []).map(x => new VisitSalesItemAttributeListValueModel(x))\r\n this.visitSalesItemAttributeListValues = params.salesItemAttributeTypeId == 5 // rabies\r\n // sort rabies vaccines by non-expired first, then the expiration date.\r\n ? orderBy(listValues, [(val) => val.storageParsed[\"expirationDate\"] && DateTime.fromFormat(val.storageParsed[\"expirationDate\"], \"M/d/yyyy\") < DateTime.now(), \"sortOrder\"])\r\n // sort all others just by their sort order.\r\n : orderBy(listValues, [\"sortOrder\"])\r\n this.selectedRabiesVaccineId = find(this.visitSalesItemAttributeListValues, { isSelected: true })?.visitSalesItemAttributeListValueId.toString();\r\n }\r\n\r\n static parseAttributeElements = (attributes: VisitSalesItemAttributeModel[]) =>\r\n attributes\r\n .filter(a => !isEmpty(a.attributeHTML))\r\n .filter(a => !a.attributeHTML.includes(\"\")) // the attribute isn't \"empty\".\r\n .map(a => htmlFrom(a.attributeHTML))\r\n}\r\n\r\n\r\n/**\r\n * \r\n * @param stringValue string value of attribute\r\n * @param name key name of attribute - familiar form of a label\r\n * @param salesItemAttributeTypeId what form the attribute takes in a visit\r\n * @param visitDate date of the visit\r\n * @param quantity selected quantity chosen for dosage\r\n * @param unitOfMeasureName the {string} name of measurement (chews, pills, etc)\r\n * @param salesItemCommunicationTypeId designated communication type of the sales item\r\n * @returns \r\n */\r\nconst handleStringValue = (stringValue: string | undefined, name: string, salesItemAttributeTypeId: number, visitDate: DateTime | undefined, quantity: number | undefined, unitOfMeasureName: string | undefined, salesItemCommunicationTypeId: number | undefined) => {\r\n if (stringValue) {\r\n return stringValue; // If there is already a value, return it\r\n }\r\n\r\n if (salesItemCommunicationTypeId === CommunicationType.Prescription && salesItemAttributeTypeId === VisitSalesItemAttributeType.DataEntry) {\r\n if (name === VisitSalesItemAttributesName.ExpiresBy) {\r\n if (visitDate)\r\n return visitDate.plus({ year: 1 }).toFormat(\"MM/dd/yyyy\");\r\n else { // defensive, if visitDate is undefined default to one year from todays date.\r\n return DateTime.fromJSDate(new Date()).plus({ year: 1 }).toFormat(\"MM/dd/yyyy\");\r\n }\r\n }\r\n else if (name === VisitSalesItemAttributesName.Quantity && quantity) {\r\n return quantity.toString();\r\n }\r\n else if (name === VisitSalesItemAttributesName.UnitOfMeasure && unitOfMeasureName) {\r\n return unitOfMeasureName;\r\n }\r\n else {\r\n return defaultTo(stringValue, \"\")\r\n }\r\n }\r\n\r\n else {\r\n return defaultTo(stringValue, \"\")\r\n }\r\n}\r\n","import { IVisitSalesItemTraitListingModel, VisitSalesItemTraitListingModel } from \"@common/models/VisitSalesItemTraitListingModel\";\r\nimport { CommunicationType } from \"./Enums/CommunicationType\";\r\nimport { IAddClientEmailRequest } from \"./requests\";\r\nimport { IStorageContentModel, StorageContentModel } from \"./StorageContentModel\";\r\nimport { IVisitAttachmentModel, VisitAttachmentModel } from \"./VisitAttachmentModel\";\r\nimport { IVisitSalesItemAttributeModel, VisitSalesItemAttributeModel } from \"./VisitSalesItemAttributeModel\";\r\n\r\nexport interface IMedicalHistoryModel {\r\n row: number;\r\n sortOrder: number;\r\n petId: number;\r\n visitId: number;\r\n clinicId: number;\r\n clientId: number;\r\n visitSalesItemId: number | undefined;\r\n visitSalesItemOptionId: number | undefined;\r\n salesItemId: number | undefined;\r\n salesPackageId: number | undefined;\r\n salesDate: string;\r\n code: string;\r\n description: string | undefined;\r\n name: string;\r\n fullName: string;\r\n price: number | undefined;\r\n invoicePrice: number | undefined;\r\n quantity: number | undefined;\r\n storeCode: string;\r\n hospitalName: string;\r\n veterinarianName: string;\r\n veterinarianLicense: string;\r\n isRabiesVaccination: boolean;\r\n isPending: boolean;\r\n given: boolean;\r\n communicationTypeId: number | undefined;\r\n communicationTypeName: string | undefined;\r\n diagnosticResultsDocumentId: number | undefined;\r\n diagnosticResultsBatchGroup: string | undefined;\r\n diagnosticResultsInterpreted: string | undefined;\r\n diagnosticResultsRawData: string | undefined;\r\n supplierProductCode: string | undefined;\r\n supplierProductName: string | undefined;\r\n creator: string;\r\n optionName: string | undefined;\r\n optionDisplayName: string | undefined;\r\n hasRabiesDoc: boolean;\r\n hasVisitSummaryDoc: boolean;\r\n hasPrescriptionDoc: boolean;\r\n hasInstantTestResults: boolean;\r\n hasDiagnosticTestResults: boolean;\r\n visitCompletionTypeId: number;\r\n isComplete: boolean;\r\n isFinalized: boolean;\r\n isPaid: boolean;\r\n isDiagnosis: boolean;\r\n salesItemSalesItemTypeId: number | undefined;\r\n salesItemDiscountTypeId: number | undefined;\r\n salesItemReminderDays: number | undefined;\r\n visitDiscountAmount: number;\r\n prescriptionId: number | undefined;\r\n prescriptionPublicId: string | undefined;\r\n prescriptionStatusId: number | undefined;\r\n prescriptionStatusName: string | undefined;\r\n prescriptionStatusCanBeRefilledByPetPass: boolean | undefined;\r\n prescriptionUnAbleToRefillMessage: string | undefined;\r\n prescriptionRefillSalesItemOptionId: number | undefined;\r\n diagnosticResultsDocument: IStorageContentModel | undefined;\r\n labReqForm?: IStorageContentModel | undefined;\r\n visitSalesItemAttributes: IVisitSalesItemAttributeModel[];\r\n visitSalesItemTraits: IVisitSalesItemTraitListingModel[];\r\n isDeclined: boolean;\r\n labOrderId: number | undefined;\r\n labOrderPublicId: string | undefined;\r\n labOrderDiagnosticResultsDocumentId: number | undefined;\r\n labOrderDiagnosticResultsDocument: IStorageContentModel | undefined;\r\n visitAttachments: IVisitAttachmentModel[];\r\n\r\n appointmentType: string | undefined;\r\n appointmentColor: string | undefined;\r\n\r\n // UI props\r\n isNote: boolean | undefined;\r\n businessLineId: number;\r\n}\r\n\r\nexport class MedicalHistoryModel implements Record {\r\n row: number;\r\n sortOrder: number;\r\n petId: number;\r\n visitId: number;\r\n clinicId: number;\r\n clientId: number;\r\n visitSalesItemId: number | undefined;\r\n visitSalesItemOptionId: number | undefined;\r\n salesItemId: number | undefined;\r\n salesPackageId: number | undefined;\r\n salesDate: string;\r\n code: string;\r\n description: string | undefined;\r\n name: string;\r\n fullName: string;\r\n price: number | undefined;\r\n invoicePrice: number | undefined;\r\n quantity: number | undefined;\r\n storeCode: string;\r\n hospitalName: string;\r\n veterinarianName: string;\r\n veterinarianLicense: string;\r\n isRabiesVaccination: boolean;\r\n isPending: boolean;\r\n given: boolean;\r\n communicationTypeId: number | undefined;\r\n communicationTypeName: string | undefined;\r\n diagnosticResultsDocumentId: number | undefined;\r\n diagnosticResultsBatchGroup: string | undefined;\r\n diagnosticResultsInterpreted: string | undefined;\r\n diagnosticResultsRawData: string | undefined;\r\n supplierProductCode: string | undefined;\r\n supplierProductName: string | undefined;\r\n creator: string;\r\n optionName: string | undefined;\r\n optionDisplayName: string | undefined;\r\n hasRabiesDoc: boolean;\r\n hasVisitSummaryDoc: boolean;\r\n hasPrescriptionDoc: boolean;\r\n hasInstantTestResults: boolean;\r\n hasDiagnosticTestResults: boolean;\r\n visitCompletionTypeId: number;\r\n isComplete: boolean;\r\n isFinalized: boolean;\r\n isPaid: boolean;\r\n isDiagnosis: boolean;\r\n salesItemSalesItemTypeId: number | undefined;\r\n salesItemDiscountTypeId: number | undefined;\r\n salesItemReminderDays: number | undefined;\r\n visitDiscountAmount: number;\r\n prescriptionId: number | undefined;\r\n prescriptionPublicId: string | undefined;\r\n prescriptionStatusId: number | undefined;\r\n prescriptionStatusName: string | undefined;\r\n prescriptionStatusCanBeRefilledByPetPass: boolean | undefined;\r\n prescriptionUnAbleToRefillMessage: string | undefined;\r\n prescriptionRefillSalesItemOptionId: number | undefined;\r\n diagnosticResultsDocument: IStorageContentModel | undefined;\r\n labReqForm: IStorageContentModel | undefined;\r\n visitSalesItemAttributes: VisitSalesItemAttributeModel[];\r\n visitSalesItemTraits: IVisitSalesItemTraitListingModel[];\r\n isDeclined: boolean;\r\n labOrderId: number | undefined;\r\n labOrderPublicId: string | undefined;\r\n labOrderDiagnosticResultsDocumentId: number | undefined;\r\n labOrderDiagnosticResultsDocument: IStorageContentModel | undefined;\r\n visitAttachments: VisitAttachmentModel[];\r\n appointmentType: string | undefined;\r\n appointmentColor: string | undefined;\r\n businessLineId: number;\r\n\r\n // UI props\r\n attributeElements: (string | JSX.Element | JSX.Element[])[];\r\n isNote: boolean | undefined;\r\n\r\n constructor(params: Partial = {}) {\r\n const {\r\n row = 0,\r\n sortOrder = 0,\r\n petId = 0,\r\n visitId = 0,\r\n clinicId = 0,\r\n clientId = 0,\r\n visitSalesItemId = undefined,\r\n visitSalesItemOptionId = undefined,\r\n salesItemId = 0,\r\n salesPackageId = 0,\r\n salesDate = \"\",\r\n code = \"\",\r\n description = \"\",\r\n name = \"\",\r\n fullName = \"\",\r\n price = undefined,\r\n invoicePrice = undefined,\r\n quantity = undefined,\r\n storeCode = \"\",\r\n hospitalName = \"\",\r\n veterinarianName = \"\",\r\n veterinarianLicense = \"\",\r\n isRabiesVaccination = false,\r\n isPending = false,\r\n given = false,\r\n communicationTypeId = undefined,\r\n communicationTypeName = \"\",\r\n diagnosticResultsDocumentId = undefined,\r\n diagnosticResultsBatchGroup = \"\",\r\n diagnosticResultsInterpreted = \"\",\r\n diagnosticResultsRawData = \"\",\r\n supplierProductCode = \"\",\r\n supplierProductName = \"\",\r\n creator = \"\",\r\n optionName = \"\",\r\n optionDisplayName = \"\",\r\n hasRabiesDoc = false,\r\n hasVisitSummaryDoc = false,\r\n hasPrescriptionDoc = false,\r\n hasInstantTestResults = false,\r\n hasDiagnosticTestResults = false,\r\n visitCompletionTypeId = 0,\r\n isComplete = false,\r\n isFinalized = false,\r\n isPaid = false,\r\n isDiagnosis = false,\r\n salesItemSalesItemTypeId = undefined,\r\n salesItemDiscountTypeId = undefined,\r\n salesItemReminderDays = undefined,\r\n visitDiscountAmount = 0,\r\n prescriptionId = undefined,\r\n prescriptionPublicId = undefined,\r\n prescriptionStatusId = undefined,\r\n prescriptionStatusName = \"\",\r\n prescriptionStatusCanBeRefilledByPetPass = undefined,\r\n prescriptionUnAbleToRefillMessage = \"\",\r\n prescriptionRefillSalesItemOptionId = undefined,\r\n diagnosticResultsDocument = undefined,\r\n visitSalesItemAttributes = [],\r\n visitSalesItemTraits = [],\r\n isDeclined = false,\r\n labOrderId = undefined,\r\n labOrderPublicId = undefined,\r\n labOrderDiagnosticResultsDocumentId = undefined,\r\n labOrderDiagnosticResultsDocument = undefined,\r\n labReqForm = undefined,\r\n visitAttachments: _visitAttachments = [],\r\n businessLineId = 0,\r\n } = params;\r\n\r\n this.row = row;\r\n this.sortOrder = sortOrder;\r\n this.petId = petId;\r\n this.visitId = visitId;\r\n this.clinicId = clinicId;\r\n this.clientId = clientId;\r\n this.visitSalesItemId = visitSalesItemId;\r\n this.visitSalesItemOptionId = visitSalesItemOptionId;\r\n this.salesItemId = salesItemId;\r\n this.salesPackageId = salesPackageId;\r\n this.salesDate = salesDate;\r\n this.code = code;\r\n this.description = description;\r\n this.name = name;\r\n this.fullName = fullName;\r\n this.price = price;\r\n this.invoicePrice = invoicePrice;\r\n this.quantity = quantity;\r\n this.storeCode = storeCode;\r\n this.hospitalName = hospitalName;\r\n this.veterinarianName = veterinarianName;\r\n this.veterinarianLicense = veterinarianLicense;\r\n this.isRabiesVaccination = isRabiesVaccination;\r\n this.isPending = isPending;\r\n this.given = given;\r\n this.communicationTypeId = communicationTypeId;\r\n this.communicationTypeName = communicationTypeName;\r\n this.diagnosticResultsDocumentId = diagnosticResultsDocumentId;\r\n this.diagnosticResultsBatchGroup = diagnosticResultsBatchGroup;\r\n this.diagnosticResultsInterpreted = diagnosticResultsInterpreted;\r\n this.diagnosticResultsRawData = diagnosticResultsRawData;\r\n this.supplierProductCode = supplierProductCode;\r\n this.supplierProductName = supplierProductName;\r\n this.creator = creator;\r\n this.optionName = optionName;\r\n this.optionDisplayName = optionDisplayName;\r\n this.hasRabiesDoc = hasRabiesDoc;\r\n this.hasVisitSummaryDoc = hasVisitSummaryDoc;\r\n this.hasPrescriptionDoc = hasPrescriptionDoc;\r\n this.hasInstantTestResults = hasInstantTestResults;\r\n this.hasDiagnosticTestResults = hasDiagnosticTestResults;\r\n this.visitCompletionTypeId = visitCompletionTypeId;\r\n this.isComplete = isComplete;\r\n this.isFinalized = isFinalized;\r\n this.isPaid = isPaid;\r\n this.isDiagnosis = isDiagnosis;\r\n this.salesItemSalesItemTypeId = salesItemSalesItemTypeId;\r\n this.salesItemDiscountTypeId = salesItemDiscountTypeId;\r\n this.salesItemReminderDays = salesItemReminderDays;\r\n this.visitDiscountAmount = visitDiscountAmount;\r\n this.prescriptionId = prescriptionId;\r\n this.prescriptionPublicId = prescriptionPublicId;\r\n this.prescriptionStatusId = prescriptionStatusId;\r\n this.prescriptionStatusName = prescriptionStatusName;\r\n this.prescriptionStatusCanBeRefilledByPetPass = prescriptionStatusCanBeRefilledByPetPass;\r\n this.prescriptionUnAbleToRefillMessage = prescriptionUnAbleToRefillMessage;\r\n this.prescriptionRefillSalesItemOptionId = prescriptionRefillSalesItemOptionId;\r\n this.diagnosticResultsDocument = diagnosticResultsDocument !== undefined ? new StorageContentModel(diagnosticResultsDocument) : diagnosticResultsDocument;\r\n this.visitSalesItemAttributes = (visitSalesItemAttributes ?? []).map(attr => new VisitSalesItemAttributeModel(attr));\r\n this.visitSalesItemTraits = (visitSalesItemTraits ?? []).map(t => new VisitSalesItemTraitListingModel(t));\r\n this.isDeclined = isDeclined;\r\n this.labOrderId = labOrderId;\r\n this.labOrderPublicId = labOrderPublicId;\r\n this.labOrderDiagnosticResultsDocumentId = labOrderDiagnosticResultsDocumentId;\r\n this.labOrderDiagnosticResultsDocument = labOrderDiagnosticResultsDocument !== undefined ? new StorageContentModel(labOrderDiagnosticResultsDocument) : labOrderDiagnosticResultsDocument;\r\n this.labReqForm = labReqForm !== undefined ? new StorageContentModel(labReqForm) : labReqForm;\r\n this.attributeElements = VisitSalesItemAttributeModel.parseAttributeElements(this.visitSalesItemAttributes);\r\n this.visitAttachments = (params.visitAttachments ?? []).map(v => new VisitAttachmentModel(v));\r\n this.isNote = params.isNote;\r\n this.appointmentType = params.appointmentType ?? \"\";\r\n this.appointmentColor = params.appointmentColor ?? \"\";\r\n this.businessLineId = businessLineId;\r\n }\r\n\r\n toClientEmailRequest(emailAddress: string, communicationTypeId: CommunicationType): IAddClientEmailRequest {\r\n const storageContentUrl = communicationTypeId === CommunicationType.LabResult\r\n ? this.diagnosticResultsDocument?.storageContentUrl ?? this.labOrderDiagnosticResultsDocument?.storageContentUrl\r\n : undefined;\r\n const includeRabiesCertificate = communicationTypeId === CommunicationType.VisitCompletionSummary\r\n\r\n return {\r\n visitId: this.visitId,\r\n clientId: this.clientId,\r\n visitSalesItemId: this.visitSalesItemId,\r\n petId: this.petId,\r\n invoiceId: 0,\r\n emailAddress,\r\n salesDate: this.salesDate,\r\n communicationTypeId,\r\n communicationTypeName: CommunicationType.displayName(communicationTypeId),\r\n storageContentUrl,\r\n includeRabiesCertificate\r\n }\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IMacroListingModel extends IModel {\r\n macroId: number;\r\n name: string;\r\n content: string;\r\n userId: number;\r\n hospitalId: number;\r\n macroTypeId: number;\r\n macroTypeName: string;\r\n macroTypeRowVersion: string;\r\n assignedTo: string;\r\n createdBy: string;\r\n dateCreated: string;\r\n isActive: boolean;\r\n macroTargetTypeId?: number | undefined;\r\n}\r\nexport class MacroListingModel extends Model implements ModelRecord {\r\n macroId: number;\r\n name: string;\r\n content: string;\r\n userId: number;\r\n hospitalId: number;\r\n macroTypeId: number;\r\n macroTypeName: string;\r\n macroTypeRowVersion: string;\r\n assignedTo: string;\r\n createdBy: string;\r\n dateCreated: DateTime;\r\n isActive: boolean;\r\n macroTargetTypeId: number | undefined;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.macroId = defaultTo(params.macroId, 0);\r\n this.name = defaultTo(params.name, \"\");\r\n this.content = defaultTo(params.content, \"\");\r\n this.userId = defaultTo(params.userId, 0);\r\n this.hospitalId = defaultTo(params.hospitalId, 0);\r\n this.macroTypeId = defaultTo(params.macroTypeId, 0);\r\n this.macroTypeName = defaultTo(params.macroTypeName, \"\");\r\n this.macroTypeRowVersion = defaultTo(params.macroTypeRowVersion, \"\");\r\n this.assignedTo = defaultTo(params.assignedTo, \"\");\r\n this.createdBy = defaultTo(params.createdBy, \"\");\r\n this.dateCreated = DateTime.fromISO(defaultTo(params.dateCreated, \"2000-01-01\"), { zone: \"utc\" });\r\n this.isActive = defaultTo(params.isActive, true);\r\n this.macroTargetTypeId = defaultTo(params.macroTargetTypeId, 1);\r\n }\r\n}\r\n","import {IModel, Model} from \"@common/models/Model\";\r\nimport {defaultTo} from \"lodash\";\r\n\r\nexport interface IOrganizationVersionModel extends IModel {\r\n name: string;\r\n organizationVersionId: number\r\n}\r\n\r\nexport class OrganizationVersionModel extends Model implements IOrganizationVersionModel {\r\n name: string;\r\n organizationVersionId: number\r\n\r\n constructor(params: Partial = {}) {\r\n super(params);\r\n const {\r\n name: _name = '',\r\n organizationVersionId: _organizationVersionId = 0\r\n } = params;\r\n this.name = defaultTo(params.name, '');\r\n this.organizationVersionId = defaultTo(params.organizationVersionId, 0);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\"\r\n\r\nexport interface IPaymentMethodModel extends IModel {\r\n paymentMethodId: number\r\n name: string\r\n}\r\n\r\nexport class PaymentMethodModel extends Model implements ModelRecord {\r\n paymentMethodId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.paymentMethodId = defaultTo(params?.paymentMethodId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { AuthApplicationModel } from \"./Security\";\r\n\r\nexport interface IPetAlertModel extends IModel {\r\n petAlertId: number;\r\n name: string;\r\n sortOrder: number;\r\n petAlertTypeId: number;\r\n authApplications: AuthApplicationModel[];\r\n}\r\n\r\nexport class PetAlertModel extends Model implements ModelRecord {\r\n petAlertId: number;\r\n name: string;\r\n sortOrder: number;\r\n petAlertTypeId: number;\r\n authApplications: AuthApplicationModel[]\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.petAlertId = defaultTo(params?.petAlertId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.petAlertTypeId = defaultTo(params?.petAlertTypeId, 0);\r\n this.authApplications = (params?.authApplications ?? []).map(au => new AuthApplicationModel(au));\r\n }\r\n}\r\n","import { isEmpty } from \"lodash\";\r\nimport { IPetAlertModel, PetAlertModel } from \".\";\r\nimport { PetAlerts } from \"@common/models/Enums\";\r\n\r\nexport interface IPetAlertPetModel {\r\n\tpetAlertPetId: number;\r\n\tpetAlertId: number | PetAlerts;\r\n\tpetId: number;\r\n\tpetAlert?: IPetAlertModel;\r\n}\r\n\r\nexport class PetAlertPetModel implements IPetAlertPetModel {\r\n\tpetAlertPetId: number;\r\n\tpetAlertId: number | PetAlerts;\r\n\tpetId: number;\r\n\tpetAlert?: IPetAlertModel | undefined;\r\n\r\n\tconstructor(params: Partial = {}) {\r\n\t\tconst { petAlertPetId = 0, petAlertId = 0, petId = 0, petAlert = undefined } = params;\r\n\r\n\t\tthis.petAlertPetId = petAlertPetId;\r\n\t\tthis.petAlertId = petAlertId;\r\n\t\tthis.petId = petId;\r\n\t\tthis.petAlert = !isEmpty(petAlert) ? new PetAlertModel(petAlert) : petAlert;\r\n\t}\r\n}\r\n","import { IModel, Model } from \"@common/models\";\r\n\r\nexport interface IPetVisitRemindersModel extends IModel {\r\n\tpetId: number;\r\n\tvisitId?: number;\r\n\tvisitSalesItemId?: number;\r\n\tsalesItemId: number;\r\n\tdateGiven: string;\r\n\tdueDate: string;\r\n\tdescription: string;\r\n\tname: string;\r\n\tfullName: string;\r\n\tprice?: number;\r\n\tisPending?: boolean;\r\n\treminderDays: number;\r\n\tpastDueDate: boolean;\r\n\tisComingDue: boolean;\r\n\tgiven: boolean;\r\n\tsalesItemTypeId?: number;\r\n\tpetCustomReminderId? : number;\r\n\treminderSourceId? : number;\r\n\tisCustomReminder: boolean;\r\n}\r\n\r\nexport class PetVisitReminderModel extends Model implements IPetVisitRemindersModel {\r\n\tpetId: number;\r\n\tvisitId?: number;\r\n\tvisitSalesItemId?: number;\r\n\tsalesItemId: number;\r\n\tdateGiven: string;\r\n\tdueDate: string;\r\n\tdescription: string;\r\n\tname: string;\r\n\tfullName: string;\r\n\tprice?: number;\r\n\tisPending?: boolean;\r\n\treminderDays: number;\r\n\tpastDueDate: boolean;\r\n\tisComingDue: boolean;\r\n\tgiven: boolean;\r\n\tsalesItemTypeId?: number;\r\n\tpetCustomReminderId? : number;\r\n\treminderSourceId? : number;\r\n\tisCustomReminder: boolean;\r\n\r\n\tconstructor(params: IPetVisitRemindersModel) {\r\n\t\tsuper(params);\r\n\t\tthis.petId = params.petId;\r\n\t\tthis.visitId = params.visitId;\r\n\t\tthis.visitSalesItemId = params.visitSalesItemId;\r\n\t\tthis.salesItemId = params.salesItemId;\r\n\t\tthis.dateGiven = params.dateGiven;\r\n\t\tthis.dueDate = params.dueDate;\r\n\t\tthis.description = params.description;\r\n\t\tthis.name = params.name;\r\n\t\tthis.fullName = params.fullName;\r\n\t\tthis.price = params.price;\r\n\t\tthis.isPending = params.isPending;\r\n\t\tthis.reminderDays = params.reminderDays;\r\n\t\tthis.pastDueDate = params.pastDueDate;\r\n\t\tthis.isComingDue = params.isComingDue;\r\n\t\tthis.given = params.given;\r\n\t\tthis.salesItemTypeId = params.salesItemTypeId;\r\n\t\tthis.petCustomReminderId = params.petCustomReminderId;\r\n\t\tthis.reminderSourceId = params.reminderSourceId;\r\n\t\tthis.isCustomReminder = params.isCustomReminder;\r\n\t}\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { PGRColorModel } from \".\";\r\nimport { IModel, Model, ModelRecord, } from \"./Model\";\r\n\r\nexport interface IPetColorModel extends IModel{\r\n petColorId: number;\r\n name: string;\r\n pgrColorId: number;\r\n pgrColor: PGRColorModel; \r\n}\r\n\r\nexport class PetColorModel extends Model implements ModelRecord {\r\n petColorId: number;\r\n name: string;\r\n pgrColorId: number;\r\n pgrColor: PGRColorModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.petColorId = defaultTo(params?.petColorId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.pgrColorId = defaultTo(params?.pgrColorId, 0);\r\n this.pgrColor = params?.pgrColor ? new PGRColorModel(params?.pgrColor) : new PGRColorModel();\r\n }\r\n}\r\n","import { IModel, Model } from \".\";\r\n\r\nexport interface IPGRBreedModel extends IModel {\r\n pgrBreedId: number;\r\n type: string;\r\n code: string;\r\n sort: string;\r\n species: string;\r\n defaultPetpassBreedId?: number;\r\n}\r\n\r\nexport class PGRBreedModel extends Model implements IPGRBreedModel {\r\n pgrBreedId: number;\r\n type: string;\r\n code: string;\r\n sort: string;\r\n species: string;\r\n defaultPetpassBreedId?: number | undefined;\r\n\r\n constructor(params: Partial = {} as IPGRBreedModel) {\r\n super(params);\r\n const {\r\n pgrBreedId = 0,\r\n type = '',\r\n code = '',\r\n sort = '',\r\n species = '',\r\n defaultPetpassBreedId = undefined\r\n } = params;\r\n\r\n this.pgrBreedId = pgrBreedId;\r\n this.type = type;\r\n this.code = code;\r\n this.sort = sort;\r\n this.species = species;\r\n this.defaultPetpassBreedId = defaultPetpassBreedId;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\"\r\n\r\nexport interface IPGRColorModel extends IModel {\r\n pgrColorId: number\r\n type: string\r\n code: string;\r\n sort: string;\r\n defaultPetpassPetColorId?: number | undefined;\r\n}\r\n\r\nexport class PGRColorModel extends Model implements ModelRecord {\r\n pgrColorId: number;\r\n type: string;\r\n code: string;\r\n sort: string;\r\n defaultPetpassPetColorId: number | undefined;\r\n \r\n constructor(params?: Partial) {\r\n super(params);\r\n this.pgrColorId = defaultTo(params?.pgrColorId, 0);\r\n this.type = defaultTo(params?.type, '');\r\n this.code = defaultTo(params?.code, '');\r\n this.sort = defaultTo(params?.sort, '');\r\n this.defaultPetpassPetColorId = defaultTo(params?.defaultPetpassPetColorId, undefined);\r\n }\r\n\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IPrescriptionEventTypeModel extends IModel {\r\n prescriptionEventTypeId: number;\r\n name: string;\r\n \r\n}\r\n\r\nexport class PrescriptionEventTypeModel extends Model implements ModelRecord {\r\n prescriptionEventTypeId: number;\r\n name: string;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.prescriptionEventTypeId = defaultTo(params?.prescriptionEventTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IPrescriptionFulfillmentModel extends IModel {\r\n prescriptionFulfillmentId: number;\r\n name: string;\r\n packageItemCount: number;\r\n packageRefillDays: number;\r\n packagesSold: number;\r\n packagesForYear: number;\r\n packagesSoldRefillDays: number;\r\n adminNotes: string;\r\n}\r\n\r\nexport class PrescriptionFulfillmentModel extends Model implements ModelRecord {\r\n prescriptionFulfillmentId: number;\r\n name: string;\r\n packageItemCount: number;\r\n packageRefillDays: number;\r\n packagesSold: number;\r\n packagesForYear: number;\r\n packagesSoldRefillDays: number;\r\n adminNotes: string;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.prescriptionFulfillmentId = defaultTo(params?.prescriptionFulfillmentId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.packageItemCount = defaultTo(params?.packageItemCount, 0);\r\n this.packageRefillDays = defaultTo(params?.packageRefillDays, 0);\r\n this.packagesSold = defaultTo(params?.packagesSold, 0);\r\n this.packagesForYear = defaultTo(params?.packagesForYear, 0);\r\n this.packagesSoldRefillDays = defaultTo(params?.packagesSoldRefillDays, 0);\r\n this.adminNotes = defaultTo(params?.adminNotes, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IPrescriptionStatusModel extends IModel {\r\n prescriptionStatusId: number;\r\n name: string;\r\n isOwnedByPetPass: boolean;\r\n canBeRefilledByPetPass: boolean;\r\n canBeRecalledByPetPass: boolean;\r\n canBeCancelledByPetPass: boolean;\r\n\r\n}\r\n\r\nexport class PrescriptionStatusModel extends Model implements ModelRecord {\r\n prescriptionStatusId: number;\r\n name: string;\r\n isOwnedByPetPass: boolean;\r\n canBeRefilledByPetPass: boolean;\r\n canBeRecalledByPetPass: boolean;\r\n canBeCancelledByPetPass: boolean;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.prescriptionStatusId = defaultTo(params?.prescriptionStatusId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.isOwnedByPetPass = defaultTo(params?.isOwnedByPetPass, false);\r\n this.canBeRefilledByPetPass = defaultTo(params?.canBeRefilledByPetPass, false);\r\n this.canBeRecalledByPetPass = defaultTo(params?.canBeRecalledByPetPass, false);\r\n this.canBeCancelledByPetPass = defaultTo(params?.canBeCancelledByPetPass, false);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IPrescriptionLabelModel extends IModel {\r\n prescriptionLabelId: number;\r\n name: string;\r\n instructions: string;\r\n}\r\n\r\nexport class PrescriptionLabelModel extends Model implements ModelRecord {\r\n prescriptionLabelId: number;\r\n name: string;\r\n instructions: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.prescriptionLabelId = defaultTo(params?.prescriptionLabelId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.instructions = defaultTo(params?.instructions, '');\r\n }\r\n}\r\n","import { IModel, Model, ModelRecord } from \"@common/models/Model\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface IPrescriptionPharmacyModel extends IModel {\r\n prescriptionPharmacyId: number;\r\n name: string;\r\n eventTypeNote: string;\r\n}\r\n\r\nexport class PrescriptionPharmacyModel extends Model implements ModelRecord {\r\n prescriptionPharmacyId: number;\r\n name: string;\r\n eventTypeNote: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.prescriptionPharmacyId = defaultTo(params?.prescriptionPharmacyId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.eventTypeNote = defaultTo(params?.eventTypeNote, '');\r\n }\r\n}\r\n","export interface IPronounModel {\r\n pronounId: number;\r\n name: string;\r\n}\r\n\r\nexport class PronounModel implements IPronounModel {\r\n pronounId: number;\r\n name: string;\r\n\r\n constructor(params: Partial = {} as PronounModel) {\r\n const {\r\n pronounId = 0,\r\n name = ''\r\n } = params;\r\n\r\n this.pronounId = pronounId;\r\n this.name = name;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface IQuestionListValueModel extends IModel {\r\n questionListValueId: number;\r\n questionId: number;\r\n name: string;\r\n sortOrder: number;\r\n storage: string;\r\n}\r\n\r\nexport class QuestionListValueModel extends Model implements ModelRecord {\r\n questionListValueId: number;\r\n questionId: number;\r\n name: string;\r\n sortOrder: number;\r\n storage: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.questionListValueId = defaultTo(params?.questionListValueId, 0);\r\n this.questionId = defaultTo(params?.questionId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.storage = defaultTo(params?.storage, '');\r\n }\r\n}\r\n","import { defaultTo, map, orderBy } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, PhotoModel, QuestionListValueModel, QuestionSpeciesModel, QuestionStateModel, QuestionTypeModel } from \"@common/models\";\r\n\r\nexport interface IQuestionModel extends IModel {\r\n questionId: number;\r\n sectionId: number;\r\n questionTypeId: number;\r\n questionType: QuestionTypeModel | undefined;\r\n name: string;\r\n followupQuestion: string;\r\n showFollowupWhenAnswerIs: boolean | undefined;\r\n allowMultiple: boolean | undefined;\r\n isReadOnly: boolean | undefined;\r\n defaultValue: string;\r\n sortOrder: number;\r\n photoId?: number | undefined;\r\n photo: PhotoModel | undefined;\r\n yesOverrideText: string;\r\n noOverrideText: string;\r\n useMultiChoiceDropDown: boolean | undefined;\r\n isFollowupReadOnly: boolean | undefined;\r\n isActive: boolean;\r\n questionListValues: QuestionListValueModel[];\r\n species: QuestionSpeciesModel[];\r\n states: QuestionStateModel[];\r\n}\r\n\r\nexport class QuestionModel extends Model implements ModelRecord {\r\n questionId: number;\r\n sectionId: number;\r\n questionTypeId: number;\r\n questionType: QuestionTypeModel | undefined;\r\n name: string;\r\n followupQuestion: string;\r\n showFollowupWhenAnswerIs: boolean | undefined;\r\n allowMultiple: boolean | undefined;\r\n isReadOnly: boolean | undefined;\r\n defaultValue: string;\r\n sortOrder: number;\r\n photoId: number | undefined;\r\n photo: PhotoModel | undefined;\r\n yesOverrideText: string;\r\n noOverrideText: string;\r\n useMultiChoiceDropDown: boolean | undefined;\r\n isFollowupReadOnly: boolean | undefined;\r\n isActive: boolean;\r\n questionListValues: QuestionListValueModel[] = [];\r\n species: QuestionSpeciesModel[] = [];\r\n states: QuestionStateModel[] = [];\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.questionId = defaultTo(params?.questionId, 0);\r\n this.sectionId = defaultTo(params?.sectionId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.questionTypeId = defaultTo(params?.questionTypeId, 0);\r\n this.questionType = params?.questionType ? new QuestionTypeModel(params?.questionType) : undefined;\r\n this.followupQuestion = defaultTo(params?.followupQuestion, '');\r\n this.showFollowupWhenAnswerIs = defaultTo(params?.showFollowupWhenAnswerIs, false);\r\n this.allowMultiple = defaultTo(params?.allowMultiple, false);\r\n this.isReadOnly = defaultTo(params?.isReadOnly, false);\r\n this.defaultValue = defaultTo(params?.defaultValue, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.photoId = defaultTo(params?.photoId, undefined);\r\n this.photo = params?.photo ? new PhotoModel(params?.photo) : undefined;\r\n this.yesOverrideText = defaultTo(params?.yesOverrideText, '');\r\n this.noOverrideText = defaultTo(params?.noOverrideText, '');\r\n this.useMultiChoiceDropDown = defaultTo(params?.useMultiChoiceDropDown, false);\r\n this.isFollowupReadOnly = defaultTo(params?.isFollowupReadOnly, false);\r\n this.isActive = defaultTo(params?.isActive, false);\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n map(orderBy(params?.questionListValues, v => v.sortOrder), (qlv) => { this.questionListValues.push(new QuestionListValueModel(qlv)) });\r\n map(params?.species, (s) => { this.species.push(new QuestionSpeciesModel(s)) });\r\n map(params?.states, (s) => { this.states.push(new QuestionStateModel(s)) });\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, SpeciesModel } from \"@common/models\";\r\n\r\nexport interface IQuestionSpeciesModel extends IModel {\r\n questionSpeciesId: number;\r\n questionId: number;\r\n speciesId: number;\r\n species: SpeciesModel;\r\n}\r\n\r\nexport class QuestionSpeciesModel extends Model implements ModelRecord {\r\n questionSpeciesId: number;\r\n questionId: number;\r\n speciesId: number;\r\n species: SpeciesModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.questionSpeciesId = defaultTo(params?.questionSpeciesId, 0);\r\n this.questionId = defaultTo(params?.questionId, 0);\r\n this.speciesId = defaultTo(params?.speciesId, 0);\r\n this.species = params?.species ? new SpeciesModel(params?.species) : new SpeciesModel();\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, StateModel } from \"@common/models\";\r\n\r\nexport interface IQuestionStateModel extends IModel {\r\n questionStateId: number;\r\n questionId: number;\r\n stateId: number;\r\n state: StateModel;\r\n}\r\n\r\nexport class QuestionStateModel extends Model implements ModelRecord {\r\n questionStateId: number;\r\n questionId: number;\r\n stateId: number;\r\n state: StateModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.questionStateId = defaultTo(params?.questionStateId, 0);\r\n this.questionId = defaultTo(params?.questionId, 0);\r\n this.stateId = defaultTo(params?.stateId, 0);\r\n this.state = params?.state ? new StateModel(params?.state) : new StateModel();\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface IQuestionTypeModel extends IModel {\r\n questionTypeId: number;\r\n name: string;\r\n}\r\n\r\nexport class QuestionTypeModel extends Model implements ModelRecord {\r\n questionTypeId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.questionTypeId = defaultTo(params?.questionTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\"\r\nimport { ClientListingModel } from \".\";\r\n\r\nexport interface IRecentClientListingModel {\r\n userId: number\r\n clientId: number\r\n firstName: string\r\n lastName: string\r\n emailAddress: string\r\n cellPhone: string\r\n homePhone: string\r\n alternatePhone: string\r\n address: string\r\n address2: string\r\n isOkToSms: boolean\r\n city: string\r\n state: string\r\n fullName: string\r\n pgrMasterId: string\r\n palsNumber: string\r\n isPinned: boolean\r\n sort: number\r\n rowNumber: number\r\n lastVisitDate: string | undefined\r\n canCall: boolean\r\n canSMS: boolean\r\n isActive: boolean\r\n}\r\n\r\nexport class RecentClientListingModel implements IRecentClientListingModel {\r\n userId: number\r\n clientId: number\r\n firstName: string\r\n lastName: string\r\n emailAddress: string\r\n cellPhone: string\r\n homePhone: string\r\n alternatePhone: string\r\n address: string\r\n address2: string\r\n isOkToSms: boolean\r\n city: string\r\n state: string\r\n fullName: string\r\n pgrMasterId: string\r\n palsNumber: string\r\n isPinned: boolean\r\n sort: number\r\n rowNumber: number\r\n lastVisitDate: string | undefined\r\n canCall: boolean\r\n canSMS: boolean\r\n isActive: boolean\r\n\r\n constructor(params: IRecentClientListingModel) {\r\n this.userId = defaultTo(params.userId, 0);\r\n this.clientId = defaultTo(params.clientId, 0);\r\n this.firstName = defaultTo(params.firstName, \"\");\r\n this.lastName = defaultTo(params.lastName, \"\");\r\n this.emailAddress = defaultTo(params.emailAddress, \"\");\r\n this.cellPhone = defaultTo(params.cellPhone, \"\");\r\n this.homePhone = defaultTo(params.homePhone, \"\");\r\n this.alternatePhone = defaultTo(params.alternatePhone, \"\");\r\n this.address = defaultTo(params.address, \"\");\r\n this.address2 = defaultTo(params.address2, \"\");\r\n this.isOkToSms = defaultTo(params.isOkToSms, false);\r\n this.city = defaultTo(params.city, \"\");\r\n this.state = defaultTo(params.state, \"\");\r\n this.fullName = defaultTo(params.fullName, \"\");\r\n this.pgrMasterId = defaultTo(params.pgrMasterId, \"\");\r\n this.palsNumber = defaultTo(params.palsNumber, \"\");\r\n this.isPinned = defaultTo(params.isPinned, false);\r\n this.sort = defaultTo(params.userId, 0);\r\n this.rowNumber = defaultTo(params.userId, 0);\r\n this.canCall = params.canCall;\r\n this.canSMS = params.canSMS;\r\n this.isActive = params.isActive;\r\n }\r\n\r\n toClientListingModel(): ClientListingModel {\r\n return new ClientListingModel({\r\n ClientId: this.clientId.toString(),\r\n FirstName: this.firstName,\r\n LastName: this.lastName,\r\n FullName: this.fullName,\r\n AlternatePetParentName: \"\",\r\n EmailAddress: this.emailAddress,\r\n HomePhone: this.homePhone,\r\n CellPhone: this.cellPhone,\r\n AlternatePhone: this.alternatePhone,\r\n Address: this.address,\r\n Address2: this.address2,\r\n City: this.city,\r\n State: this.state,\r\n LastVisitDate: this.lastVisitDate,\r\n CanCall: this.canCall,\r\n CanSMS: this.canSMS,\r\n IsActive: this.isActive\r\n })\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IRecommendationTypeModel extends IModel {\r\n recommendationTypeId: number;\r\n name: string;\r\n isActive: boolean;\r\n}\r\n\r\nexport class RecommendationTypeModel extends Model implements ModelRecord {\r\n recommendationTypeId: number;\r\n name: string;\r\n isActive: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.recommendationTypeId = defaultTo(params?.recommendationTypeId, 0);\r\n this.name = defaultTo(params?.name, \"\");\r\n this.isActive = defaultTo(params?.isActive, true);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IReferralTypeModel extends IModel {\r\n referralTypeId: number;\r\n name: string; \r\n}\r\n\r\nexport class ReferralTypeModel extends Model implements ModelRecord {\r\n referralTypeId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.referralTypeId = defaultTo(params?.referralTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n \r\n }\r\n}\r\n","export interface IRelationshipType {\r\n relationshipTypeId: number;\r\n name: string;\r\n}\r\n\r\nexport class RelationshipTypeModel implements IRelationshipType {\r\n relationshipTypeId: number;\r\n name: string;\r\n\r\n constructor(params: Partial = {} as RelationshipTypeModel) {\r\n const {\r\n relationshipTypeId = 0,\r\n name = ''\r\n } = params;\r\n\r\n this.relationshipTypeId = relationshipTypeId;\r\n this.name = name;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IReportingGroupModel extends IModel {\r\n reportingGroupId: number;\r\n name: string; \r\n displayName: string;\r\n sortOrder: number;\r\n}\r\n\r\nexport class ReportingGroupModel extends Model implements ModelRecord {\r\n reportingGroupId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.reportingGroupId = defaultTo(params?.reportingGroupId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.displayName = defaultTo(params?.displayName, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n }\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { HospitalModel, IHospitalModel, IModel, IPetModel, IPronounModel, IReferralTypeModel, IRelationshipType, IStateModel, Model, PetModel, PronounModel, ReferralTypeModel, RelationshipTypeModel, StateModel, IClientNoteModel, ClientNoteModel } from \".\";\r\nexport interface IClientModel extends IModel {\r\n id?: number;\r\n clientId: number;\r\n firstName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n emailAddressNotAvailable: boolean;\r\n cellPhone: string | undefined;\r\n homePhone: string | undefined;\r\n alternatePhone: string | undefined;\r\n address: string;\r\n address2: string | undefined;\r\n city: string;\r\n stateId: number | undefined;\r\n county: string;\r\n zipCode: string;\r\n isOKToSMS: boolean;\r\n palsNumber: string | undefined;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n lastVisitDate: string | undefined;\r\n firstVisitDate: string | undefined;\r\n alternatePetParentName: string | undefined;\r\n pets: IPetModel[];\r\n state: IStateModel | undefined;\r\n referralTypeId: number | undefined;\r\n referralType: IReferralTypeModel | undefined;\r\n isDeleted: boolean;\r\n pgrMasterId: string | undefined;\r\n businessName: string | undefined;\r\n isActive: boolean;\r\n hospitalId: number | undefined;\r\n primaryHospital: Omit | undefined;\r\n pronounId: number | undefined;\r\n pronoun: IPronounModel | undefined;\r\n relationshipTypeId: number | undefined;\r\n relationshipType: IRelationshipType | undefined;\r\n canSMS: boolean | undefined;\r\n canSMSDateUpdated: string | undefined;\r\n canSMSUpdatedUserTitle: string | undefined;\r\n canSMSUpdatedUserFirstName: string | undefined;\r\n canSMSUpdatedUserLastName: string | undefined;\r\n canCall: boolean | undefined;\r\n canCallDateUpdated: string | undefined;\r\n canCallUpdatedUserTitle: string | undefined;\r\n canCallUpdatedUserFirstName: string | undefined;\r\n canCallUpdatedUserLastName: string | undefined;\r\n nationwideId: string | undefined;\r\n nationwideIdNotAvailable: boolean | undefined;\r\n notes: IClientNoteModel[];\r\n\r\n}\r\nexport interface ClientPhone {\r\n cellPhone: string | undefined,\r\n homePhone: string | undefined,\r\n alternatePhone: string | undefined\r\n}\r\nexport class ClientModel extends Model implements Record {\r\n id: number | undefined;\r\n clientId: number;\r\n firstName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n emailAddressNotAvailable: boolean;\r\n cellPhone: string | undefined;\r\n homePhone: string | undefined;\r\n alternatePhone: string | undefined;\r\n address: string;\r\n address2: string | undefined;\r\n city: string;\r\n stateId: number | undefined;\r\n county: string;\r\n zipCode: string;\r\n isOKToSMS: boolean;\r\n palsNumber: string | undefined;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n lastVisitDate: string | undefined;\r\n firstVisitDate: string | undefined;\r\n alternatePetParentName: string | undefined;\r\n pets: IPetModel[];\r\n state: IStateModel | undefined;\r\n referralTypeId: number | undefined;\r\n referralType: IReferralTypeModel | undefined;\r\n isDeleted: boolean;\r\n pgrMasterId: string | undefined;\r\n businessName: string | undefined;\r\n isActive: boolean;\r\n hospitalId: number | undefined;\r\n primaryHospital: Omit | undefined;\r\n pronounId: number | undefined;\r\n pronoun: IPronounModel | undefined;\r\n relationshipTypeId: number | undefined;\r\n relationshipType: IRelationshipType | undefined;\r\n\r\n canSMS: boolean | undefined;\r\n canSMSDateUpdated: DateTime | undefined;\r\n canSMSUpdatedUserTitle: string | undefined;\r\n canSMSUpdatedUserFirstName: string | undefined;\r\n canSMSUpdatedUserLastName: string | undefined;\r\n canCall: boolean | undefined;\r\n canCallDateUpdated: DateTime | undefined;\r\n canCallUpdatedUserTitle: string | undefined;\r\n canCallUpdatedUserFirstName: string | undefined;\r\n canCallUpdatedUserLastName: string | undefined;\r\n\r\n nationwideId: string | undefined;\r\n nationwideIdNotAvailable: boolean | undefined;\r\n notes: IClientNoteModel[] = [];\r\n\r\n constructor(params: IClientModel) {\r\n super(params);\r\n this.id = params.id;\r\n this.clientId = params.clientId;\r\n this.firstName = params.firstName;\r\n this.lastName = params.lastName;\r\n this.emailAddress = params.emailAddress;\r\n this.emailAddressNotAvailable = params.emailAddressNotAvailable;\r\n this.cellPhone = StringUtility.SanitizeString(params.cellPhone);\r\n this.homePhone = StringUtility.SanitizeString(params.homePhone);\r\n this.alternatePhone = StringUtility.SanitizeString(params.alternatePhone);\r\n this.alternatePetParentName = StringUtility.SanitizeString(params.alternatePetParentName);\r\n this.businessName = StringUtility.SanitizeString(params.businessName);\r\n this.address = params.address;\r\n this.address2 = StringUtility.SanitizeString(params.address2);\r\n this.city = params.city;\r\n this.stateId = StringUtility.SanitizeNumber(params.stateId);\r\n this.state = params.state ? new StateModel(params.state) : undefined;\r\n this.county = params.county;\r\n this.zipCode = params.zipCode;\r\n this.isOKToSMS = params.isOKToSMS;\r\n this.palsNumber = StringUtility.SanitizeString(params.palsNumber);\r\n this.dateCreated = params.dateCreated;\r\n this.lastVisitDate = params.lastVisitDate;\r\n this.dateUpdated = params.dateUpdated;\r\n this.pets = (params.pets ?? []).map(p => new PetModel(p));\r\n this.referralTypeId = StringUtility.SanitizeNumber(params.referralTypeId);\r\n this.referralType = params.referralType ? new ReferralTypeModel(params.referralType) : undefined;\r\n this.isDeleted = params.isDeleted;\r\n this.isActive = params.isActive;\r\n this.pgrMasterId = StringUtility.SanitizeString(params.pgrMasterId);\r\n this.hospitalId = StringUtility.SanitizeNumber(params.hospitalId);\r\n this.primaryHospital = params.primaryHospital ? new HospitalModel(params.primaryHospital as IHospitalModel) : undefined;\r\n this.pronounId = StringUtility.SanitizeNumber(params.pronounId);\r\n this.pronoun = params.pronoun ? new PronounModel(params.pronoun) : undefined;\r\n this.relationshipTypeId = StringUtility.SanitizeNumber(params.relationshipTypeId);\r\n this.relationshipType = params.relationshipType ? new RelationshipTypeModel(params.relationshipType) : undefined;\r\n\r\n this.canSMS = _.defaultTo(params?.canSMS, true);\r\n this.canSMSDateUpdated = params?.canSMSDateUpdated ? StringUtility.SanitizeDateTimeISOAsUtc(params?.canSMSDateUpdated.toString()) : undefined;\r\n this.canSMSUpdatedUserTitle = _.defaultTo(params?.canSMSUpdatedUserTitle, '');\r\n this.canSMSUpdatedUserFirstName = _.defaultTo(params?.canSMSUpdatedUserFirstName, '');\r\n this.canSMSUpdatedUserLastName = _.defaultTo(params?.canSMSUpdatedUserLastName, '');\r\n this.canCall = _.defaultTo(params?.canCall, true);\r\n this.canCallDateUpdated = params?.canCallDateUpdated ? StringUtility.SanitizeDateTimeISOAsUtc(params?.canCallDateUpdated.toString()) : undefined;\r\n this.canCallUpdatedUserTitle = _.defaultTo(params?.canCallUpdatedUserTitle, '');\r\n this.canCallUpdatedUserFirstName = _.defaultTo(params?.canCallUpdatedUserFirstName, '');\r\n this.canCallUpdatedUserLastName = _.defaultTo(params?.canCallUpdatedUserLastName, '');\r\n this.nationwideId = _.defaultTo(params?.nationwideId, '');\r\n this.nationwideIdNotAvailable = _.defaultTo(params?.nationwideIdNotAvailable, false);\r\n this.notes = (params.notes ?? []).map(n => new ClientNoteModel(n));\r\n }\r\n\r\n get fullName() {\r\n return `${this.firstName ? this.firstName + ' ' : ''}${this.lastName ?? ''}`;\r\n }\r\n get canCallFullName() {\r\n if (this.canCallUpdatedUserFirstName && this.canCallUpdatedUserLastName)\r\n return StringUtility.formattedUserName(this.canCallUpdatedUserFirstName, this.canCallUpdatedUserLastName, this.canCallUpdatedUserTitle);\r\n else\r\n return undefined\r\n }\r\n get canSMSFullName() {\r\n if (this.canSMSUpdatedUserFirstName && this.canSMSUpdatedUserLastName)\r\n return StringUtility.formattedUserName(this.canSMSUpdatedUserFirstName, this.canSMSUpdatedUserLastName, this.canSMSUpdatedUserTitle);\r\n else\r\n return undefined\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IEntityMappingModel extends IModel {\r\n entityMappingId: number;\r\n entityMappingTypeId: number;\r\n entityId: number;\r\n sourceSystemId: number;\r\n sourceSystemName: string;\r\n sourceSystemKey: string;\r\n dateCreated: string;\r\n}\r\n\r\nexport class EntityMappingModel extends Model implements ModelRecord {\r\n entityMappingId: number;\r\n entityMappingTypeId: number;\r\n entityId: number;\r\n sourceSystemId: number;\r\n sourceSystemName: string;\r\n sourceSystemKey: string;\r\n dateCreated: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.entityMappingId = defaultTo(params?.entityMappingId, 0);\r\n this.entityMappingTypeId = defaultTo(params?.entityMappingTypeId, 0);\r\n this.entityId = defaultTo(params?.entityId, 0);\r\n this.sourceSystemId = defaultTo(params?.sourceSystemId, 0);\r\n this.sourceSystemName = defaultTo(params?.sourceSystemName, '');\r\n this.sourceSystemKey = defaultTo(params?.sourceSystemKey, '');\r\n this.dateCreated = defaultTo(params?.dateCreated, '');\r\n }\r\n}\r\n","\r\nimport { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { NoteTypeModel } from \"./NoteTypeModel\";\r\n\r\nexport interface IPetNoteModel extends IModel {\r\n petNoteId: number;\r\n petId: number;\r\n noteTypeId: number;\r\n noteType: NoteTypeModel;\r\n notes: string;\r\n createdUserTitle: string;\r\n createdUserFirstName: string;\r\n createdUserLastName: string;\r\n dateCreated: string\r\n}\r\n\r\nexport class PetNoteModel extends Model implements ModelRecord {\r\n petNoteId: number;\r\n petId: number;\r\n noteTypeId: number;\r\n noteType: NoteTypeModel\r\n notes: string;\r\n createdUserTitle: string;\r\n createdUserFirstName: string;\r\n createdUserLastName: string;\r\n dateCreated: string\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.petNoteId = defaultTo(params?.petNoteId, 0);\r\n this.petId = defaultTo(params?.petId, 0);\r\n this.noteTypeId = defaultTo(params?.noteTypeId, 0);\r\n this.noteType = params?.noteType ? new NoteTypeModel(params?.noteType) : new NoteTypeModel();\r\n this.notes = defaultTo(params?.notes, \"\");\r\n this.createdUserTitle = defaultTo(params?.createdUserTitle, \"\");\r\n this.createdUserFirstName = defaultTo(params?.createdUserFirstName, \"\");\r\n this.createdUserLastName = defaultTo(params?.createdUserLastName, \"\");\r\n this.dateCreated = defaultTo(params?.dateCreated, \"\");\r\n }\r\n}\r\n","import { ISelectOption } from \"@common/components/forms\";\r\nimport { StringUtility } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { BreedModel, GenderModel, IBreedModel, IGenderModel, IModel, IPetAlertPetModel, IPetColorModel, IPhotoModel, ISpeciesModel, Model, PetAlertPetModel, PetColorModel, PhotoModel, SpeciesModel } from \".\";\r\nimport { EntityMappingModel, IEntityMappingModel } from \"./EntityMappingModel\";\r\nimport { IPetNoteModel, PetNoteModel } from \"./PetNoteModel\";\r\n\r\nexport interface IPetModel extends IModel {\r\n id?: number;\r\n status?: number;\r\n alerts?: string;\r\n birthDate?: string;\r\n breed?: IBreedModel;\r\n breedId?: number;\r\n breedFullName: string;\r\n clientId: number;\r\n firstVisitDate?: string;\r\n gender?: IGenderModel;\r\n genderId?: number;\r\n hasAlerts: boolean;\r\n isActive?: boolean;\r\n isDeceased: boolean;\r\n isMixedBreed: boolean;\r\n lastVisitDate?: string;\r\n medications?: string;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n // Needs to be StorageContent\r\n medicalHistoryDocument?: any;\r\n medicalHistoryDocumentId?: number;\r\n microchipNumber?: string;\r\n name: string;\r\n petAlerts: IPetAlertPetModel[];\r\n petColor?: IPetColorModel;\r\n petColorId?: number;\r\n petId: number;\r\n photoId?: number;\r\n photo?: IPhotoModel;\r\n rabiesTagNumber?: string;\r\n speciesId?: number;\r\n species?: ISpeciesModel;\r\n weight?: number;\r\n lastAppointmentType?: string;\r\n notes: IPetNoteModel[];\r\n entityMappings: IEntityMappingModel[];\r\n}\r\n\r\nexport class PetModel extends Model implements IPetModel {\r\n alerts?: string;\r\n birthDate?: string;\r\n breed: IBreedModel;\r\n breedId?: number | undefined;\r\n breedFullName: string;\r\n clientId: number;\r\n firstVisitDate?: string;\r\n gender: IGenderModel;\r\n genderId?: number | undefined;\r\n hasAlerts: boolean;\r\n isActive?: boolean | undefined;\r\n isDeceased: boolean;\r\n isMixedBreed: boolean;\r\n lastVisitDate?: string;\r\n medications?: string;\r\n medicalHistoryDocument?: any;\r\n medicalHistoryDocumentId?: number;\r\n microchipNumber?: string;\r\n name: string;\r\n petAlerts: IPetAlertPetModel[] = [];\r\n petColor: IPetColorModel;\r\n petColorId?: number | undefined;\r\n petId: number;\r\n photoId?: number | undefined;\r\n photo?: IPhotoModel;\r\n rabiesTagNumber?: string;\r\n speciesId?: number | undefined;\r\n species?: ISpeciesModel;\r\n weight?: number | undefined;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n lastAppointmentType?: string;\r\n notes: IPetNoteModel[] = [];\r\n entityMappings: IEntityMappingModel[] = [];\r\n\r\n\r\n constructor(params: Partial = {}) {\r\n super(params);\r\n const {\r\n alerts = '',\r\n birthDate = undefined,\r\n breed = {} as IBreedModel,\r\n breedId = undefined,\r\n breedFullName = '',\r\n clientId = 0,\r\n firstVisitDate = undefined,\r\n gender = {} as IGenderModel,\r\n genderId = undefined,\r\n hasAlerts = false,\r\n isActive = true, // Default to true\r\n isDeceased = false,\r\n isMixedBreed = false,\r\n lastVisitDate = undefined,\r\n medications = '',\r\n medicalHistoryDocument = undefined,\r\n medicalHistoryDocumentId = undefined,\r\n microchipNumber = '',\r\n name = '',\r\n petAlerts = [] as Array,\r\n petColorId = undefined,\r\n petColor = {} as IPetColorModel,\r\n petId = 0,\r\n photoId = undefined,\r\n photo = {} as IPhotoModel,\r\n rabiesTagNumber = '',\r\n speciesId = undefined,\r\n species = {} as ISpeciesModel,\r\n weight = 0, // default to 0\r\n dateCreated = \"\",\r\n dateUpdated = \"\",\r\n lastAppointmentType = \"\",\r\n notes = [] as Array,\r\n entityMappings = [] as Array\r\n\r\n } = params;\r\n\r\n const sanitizedBirthDate = StringUtility.SanitizeString(birthDate);\r\n\r\n this.alerts = StringUtility.SanitizeString(alerts);\r\n this.birthDate = sanitizedBirthDate ? DateTime.fromISO(sanitizedBirthDate).toISODate() : undefined;\r\n this.breed = breed && new BreedModel(breed);\r\n this.breedId = breedId;\r\n this.breedFullName = breedFullName;\r\n this.clientId = clientId;\r\n this.firstVisitDate = firstVisitDate;\r\n this.gender = gender && new GenderModel(gender);\r\n this.genderId = genderId;\r\n this.hasAlerts = hasAlerts;\r\n this.isActive = isActive;\r\n this.isDeceased = isDeceased;\r\n this.isMixedBreed = isMixedBreed;\r\n this.lastVisitDate = lastVisitDate;\r\n this.medications = medications;\r\n // TODO - MS: MedicalHistoryDocument;\r\n this.medicalHistoryDocument = medicalHistoryDocument;\r\n this.medicalHistoryDocumentId = medicalHistoryDocumentId;\r\n this.microchipNumber = StringUtility.SanitizeString(microchipNumber);\r\n this.name = name;\r\n this.petAlerts = (petAlerts ?? []).map(pa => new PetAlertPetModel(pa));\r\n this.petColorId = petColorId;\r\n this.petColor = petColor && new PetColorModel(petColor);\r\n this.petId = petId;\r\n this.photoId = photoId;\r\n this.photo = photo && new PhotoModel(photo);\r\n this.rabiesTagNumber = StringUtility.SanitizeString(rabiesTagNumber);\r\n this.speciesId = speciesId;\r\n this.species = species && new SpeciesModel(species);\r\n this.weight = weight;\r\n this.dateCreated = dateCreated;\r\n this.dateUpdated = dateUpdated;\r\n this.lastAppointmentType = lastAppointmentType;\r\n this.notes = (notes ?? []).map(n => new PetNoteModel(n));\r\n this.entityMappings = (entityMappings ?? []).map(e => new EntityMappingModel(e));\r\n // TODO - MS: Computed\r\n // age: number -> calculated off of birthdate\r\n // ageYears: number;\r\n // ageMonths: number;\r\n // ageWeeks: number;\r\n // Computed\r\n //genderAbbreviation: string;\r\n // UI Property\r\n //friendlyBirthDate: string;\r\n // UI Property\r\n //isNewPet: boolean;\r\n }\r\n}\r\n\r\nexport const getBreedLabel = (pet: IPetModel) => {\r\n return pet.breed && pet.isMixedBreed ? `${pet.breed.name} Mix` : pet.breed?.name;\r\n}\r\n\r\nexport const petStatusOptions: ISelectOption[] = [\r\n { value: 1, label: 'Active' },\r\n { value: 2, label: 'Inactive' },\r\n { value: 3, label: 'Deceased' }\r\n]\r\n","//created from:\r\n//SELECT REPLACE(REPLACE(REPLACE([Name],' ',''),'-','_'), '&', '') + ' = ' + CONVERT(varchar, SourceSystemId) + ',' from [dbo].[SourceSystems] aa WITH(NOLOCK) ORDER BY SourceSystemId\r\n\r\nexport enum SourceSystem {\r\n PetPass = 1,\r\n vetPoint = 2,\r\n SALK = 3,\r\n VOB = 4,\r\n Idexx = 5,\r\n RXService = 6,\r\n VetSpire = 7,\r\n MA_Austin = 8,\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { ClientModel, IClientModel } from \"./ClientModel\";\r\nimport { IModel, Model } from \"./Model\";\r\nimport { IPetModel, PetModel } from \"./PetModel\";\r\nimport { ISpeciesModel, SpeciesModel } from \"./SpeciesModel\";\r\nimport { DateTime } from \"luxon\";\r\nimport { SourceSystem } from \"@common/models/Enums/SourceSystem\";\r\n\r\nexport interface IReservationModel extends IModel {\r\n reservationId: number;\r\n clinicId: number;\r\n speciesId: number;\r\n clientId: number | undefined;\r\n petId: number | undefined;\r\n reservedDate: string;\r\n confirmationDate: string | undefined;\r\n startDate: string;\r\n endDate: string;\r\n firstName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n phone1: string;\r\n petName: string;\r\n sourceSystemKey: string;\r\n wasPriorCustomer: boolean;\r\n cancellationDate: string | undefined;\r\n confirmation1SMSDate: string | undefined;\r\n confirmation2SMSDate: string | undefined;\r\n confirmation3SMSDate: string | undefined;\r\n isHidden: boolean;\r\n source: string;\r\n preVisitSMSDate: string | undefined;\r\n preVisitSMSResponseDate: string | undefined;\r\n preVisitSMSResponse: boolean | undefined;\r\n addedToCalendar: boolean;\r\n rebooked: boolean;\r\n bookingSMSDate: string | undefined;\r\n // clinic: IClinicModel; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n species: ISpeciesModel;\r\n client: IClientModel | undefined;\r\n pet: IPetModel | undefined;\r\n intakeId: number | undefined;\r\n intakeResponseCompleteDate: string | undefined;\r\n intakePetId: number | undefined;\r\n intakePetResponseCompleteDate: string | undefined;\r\n intakePublicId: string | undefined;\r\n clinicCancellationProcessedDate: string | undefined;\r\n reservationPublicId: string | undefined;\r\n hasVisit: boolean;\r\n notes: string | undefined;\r\n reasonForVisit: string | undefined;\r\n reservationAssignmentStatusId: number | undefined;\r\n canCall: boolean;\r\n canSMS: boolean;\r\n}\r\n\r\nexport class ReservationModel extends Model implements Record {\r\n reservationId: number;\r\n clinicId: number;\r\n speciesId: number;\r\n clientId: number | undefined;\r\n petId: number | undefined;\r\n reservedDate: string;\r\n confirmationDate: DateTime | undefined;\r\n startDate: string;\r\n endDate: string;\r\n firstName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n phone1: string;\r\n petName: string;\r\n sourceSystemKey: string;\r\n wasPriorCustomer: boolean;\r\n cancellationDate: DateTime | undefined;\r\n confirmation1SMSDate: DateTime | undefined;\r\n confirmation2SMSDate: DateTime | undefined;\r\n confirmation3SMSDate: DateTime | undefined;\r\n isHidden: boolean;\r\n source: string;\r\n preVisitSMSDate: DateTime | undefined;\r\n preVisitSMSResponseDate: DateTime | undefined;\r\n preVisitSMSResponse: boolean | undefined;\r\n addedToCalendar: boolean;\r\n rebooked: boolean;\r\n bookingSMSDate: DateTime | undefined;\r\n species: SpeciesModel;\r\n client: ClientModel | undefined;\r\n pet: PetModel | undefined;\r\n intakeId: number | undefined;\r\n intakeResponseCompleteDate: DateTime | undefined;\r\n intakePetId: number | undefined;\r\n intakePetResponseCompleteDate: DateTime | undefined;\r\n intakePublicId: string | undefined;\r\n clinicCancellationProcessedDate: DateTime | undefined;\r\n reservationPublicId: string | undefined;\r\n hasVisit: boolean;\r\n notes: string | undefined;\r\n reasonForVisit: string | undefined;\r\n reservationAssignmentStatusId: number | undefined;\r\n canCall: boolean;\r\n canSMS: boolean;\r\n\r\n constructor(params: IReservationModel) {\r\n super(params)\r\n\r\n this.reservationId = params.reservationId\r\n this.clinicId = params.clinicId\r\n this.speciesId = params.speciesId\r\n this.clientId = StringUtility.SanitizeNumber(params.clientId)\r\n this.petId = StringUtility.SanitizeNumber(params.petId)\r\n this.reservedDate = params.reservedDate\r\n this.confirmationDate = params.confirmationDate ? StringUtility.SanitizeDateTimeISOAsUtc(params.confirmationDate) : undefined\r\n this.startDate = params.startDate\r\n this.endDate = params.endDate\r\n this.firstName = params.firstName\r\n this.lastName = params.lastName\r\n this.emailAddress = params.emailAddress\r\n this.phone1 = params.phone1\r\n this.petName = params.petName\r\n this.sourceSystemKey = params.sourceSystemKey\r\n this.wasPriorCustomer = params.wasPriorCustomer\r\n this.cancellationDate = StringUtility.SanitizeDateTimeISOAsUtc(params.cancellationDate)\r\n this.confirmation1SMSDate = StringUtility.SanitizeDateTimeISOAsUtc(params.confirmation1SMSDate)\r\n this.confirmation2SMSDate = StringUtility.SanitizeDateTimeISOAsUtc(params.confirmation2SMSDate)\r\n this.confirmation3SMSDate = StringUtility.SanitizeDateTimeISOAsUtc(params.confirmation3SMSDate)\r\n this.isHidden = params.isHidden\r\n this.source = params.source\r\n this.preVisitSMSDate = StringUtility.SanitizeDateTimeISOAsUtc(params.preVisitSMSDate)\r\n this.preVisitSMSResponseDate = StringUtility.SanitizeDateTimeISOAsUtc(params.preVisitSMSResponseDate)\r\n this.preVisitSMSResponse = params.preVisitSMSResponse\r\n this.addedToCalendar = params.addedToCalendar\r\n this.rebooked = params.rebooked\r\n this.bookingSMSDate = StringUtility.SanitizeDateTimeISOAsUtc(params.bookingSMSDate)\r\n this.species = new SpeciesModel(params.species)\r\n this.client = params.client ? new ClientModel(params.client) : undefined\r\n this.pet = params.pet ? new PetModel(params.pet) : undefined\r\n this.intakeId = StringUtility.SanitizeNumber(params.intakeId)\r\n this.intakeResponseCompleteDate = StringUtility.SanitizeDateTimeISOAsUtc(params.intakeResponseCompleteDate)\r\n this.intakePetId = StringUtility.SanitizeNumber(params.intakePetId)\r\n this.intakePetResponseCompleteDate = StringUtility.SanitizeDateTimeISOAsUtc(params.intakePetResponseCompleteDate)\r\n this.intakePublicId = StringUtility.SanitizeString(params.intakePublicId)\r\n this.clinicCancellationProcessedDate = StringUtility.SanitizeDateTimeISOAsUtc(params.clinicCancellationProcessedDate)\r\n this.reservationPublicId = StringUtility.SanitizeString(params.reservationPublicId)\r\n this.hasVisit = params.hasVisit\r\n this.notes = StringUtility.SanitizeString(params.notes) // \"appointment notes\" in the exam intake\r\n this.reasonForVisit = StringUtility.SanitizeString(params.reasonForVisit)\r\n this.reservationAssignmentStatusId = StringUtility.SanitizeNumber(params.reservationAssignmentStatusId)\r\n this.canCall = params.canCall\r\n this.canSMS = params.canSMS\r\n }\r\n\r\n\tisFollowUpReservation(): boolean {\r\n\t\treturn this.source === SourceSystem[SourceSystem.PetPass].toLowerCase();\r\n\t}\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, SalesSubCategoryModel } from \"@common/models\";\r\n\r\nexport interface ISalesCategoryModel extends IModel {\r\n salesCategoryId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n salesSubCategories: SalesSubCategoryModel[];\r\n}\r\n\r\nexport class SalesCategoryModel extends Model implements ModelRecord {\r\n salesCategoryId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n salesSubCategories: SalesSubCategoryModel[];\r\n\r\n constructor(params?: ISalesCategoryModel) {\r\n super(params);\r\n this.salesCategoryId = defaultTo(params?.salesCategoryId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.displayName = defaultTo(params?.displayName, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 999);\r\n this.salesSubCategories = defaultTo(params?.salesSubCategories, [] as Array).map(s => new SalesSubCategoryModel(s));\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface IUnitOfMeasureModel extends IModel {\r\n unitOfMeasureId: number;\r\n name:string;\r\n}\r\n\r\nexport class UnitOfMeasureModel extends Model implements ModelRecord {\r\n unitOfMeasureId: number;\r\n name:string;\r\n \r\n constructor(params?: Partial) {\r\n super(params);\r\n this.unitOfMeasureId = defaultTo(params?.unitOfMeasureId, 0);\r\n this.name = defaultTo(params?.name, ''); \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \".\";\r\n\r\nexport interface ISalesItemUpgradeListingModel extends IModel {\r\n salesItemId: number;\r\n salesItemTypeId: number;\r\n speciesId: number|undefined;\r\n name: string;\r\n fullName: string;\r\n}\r\n\r\nexport class SalesItemUpgradeListingModel extends Model implements ModelRecord {\r\n salesItemId: number;\r\n salesItemTypeId: number;\r\n speciesId: number|undefined;\r\n name: string;\r\n fullName: string;\r\n\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.salesItemTypeId = defaultTo(params?.salesItemTypeId, 0);\r\n this.speciesId = defaultTo(params?.speciesId, undefined);\r\n this.name = defaultTo(params?.name, '');\r\n this.fullName = defaultTo(params?.fullName, ''); \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \".\";\r\n\r\nexport interface ISalesItemOptionTagAlongListingModel extends IModel {\r\n salesItemOptionTagAlongId: number;\r\n salesItemOptionId: number;\r\n tagAlongSalesItemOptionId: number;\r\n tagAlongSalesItemOptionName: string;\r\n tagAlongSalesItemOptionDisplayName: string; \r\n tagAlongSalesItemId: number;\r\n tagAlongSalesItemName: string;\r\n tagAlongSalesItemDescription: string;\r\n tagAlongSalesItemSalesSubCategoryId: number;\r\n\r\n}\r\n\r\nexport class SalesItemOptionTagAlongListingModel extends Model implements ModelRecord {\r\n salesItemOptionTagAlongId: number;\r\n salesItemOptionId: number;\r\n tagAlongSalesItemOptionId: number;\r\n tagAlongSalesItemOptionName: string;\r\n tagAlongSalesItemOptionDisplayName: string; \r\n tagAlongSalesItemId: number;\r\n tagAlongSalesItemName: string;\r\n tagAlongSalesItemDescription: string;\r\n tagAlongSalesItemSalesSubCategoryId: number;\r\n\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemOptionTagAlongId = defaultTo(params?.salesItemOptionTagAlongId, 0);\r\n this.salesItemOptionId = defaultTo(params?.salesItemOptionId, 0);\r\n this.tagAlongSalesItemOptionId = defaultTo(params?.tagAlongSalesItemOptionId, 0);\r\n this.tagAlongSalesItemOptionName = defaultTo(params?.tagAlongSalesItemOptionName, '');\r\n this.tagAlongSalesItemOptionDisplayName = defaultTo(params?.tagAlongSalesItemOptionDisplayName, '');\r\n this.tagAlongSalesItemId = defaultTo(params?.tagAlongSalesItemId, 0);\r\n this.tagAlongSalesItemName = defaultTo(params?.tagAlongSalesItemName, '');\r\n this.tagAlongSalesItemDescription = defaultTo(params?.tagAlongSalesItemDescription, '');\r\n this.tagAlongSalesItemSalesSubCategoryId = defaultTo(params?.tagAlongSalesItemSalesSubCategoryId, 0);\r\n }\r\n}\r\n","import { IModel, Model, ModelRecord } from \".\";\r\n\r\nexport interface ISalesItemAttributeListValueModel extends IModel {\r\n salesItemAttributeListValueId: number;\r\n salesItemAttributeId: number;\r\n name: string;\r\n storage: string;\r\n sortOrder: number;\r\n storageUI: any; //UI Field Only\r\n isExpired: boolean; //UI Field Only\r\n userUpdated: string;\r\n lotNumber: string; //UI Field Only\r\n serialNumber: string; //UI Field Only\r\n}\r\n\r\nexport class SalesItemAttributeListValueModel extends Model implements ModelRecord {\r\n salesItemAttributeListValueId: number;\r\n salesItemAttributeId: number;\r\n name: string;\r\n storage: string;\r\n sortOrder: number;\r\n storageUI: any; //UI Field Only\r\n isExpired: boolean; //UI Field Only\r\n userUpdated: string;\r\n lotNumber: string; //UI Field Only\r\n serialNumber: string; //UI Field Only\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemAttributeListValueId = _.defaultTo(params?.salesItemAttributeListValueId, 0);\r\n this.salesItemAttributeId = _.defaultTo(params?.salesItemAttributeId, 0);\r\n this.name = _.defaultTo(params?.name, '');\r\n this.storage = _.defaultTo(params?.storage, '{}');\r\n this.sortOrder = _.defaultTo(params?.sortOrder, 0);\r\n this.userUpdated = _.defaultTo(params?.userUpdated, '');\r\n try {\r\n this.storageUI = JSON.parse(this.storage);\r\n }\r\n catch (e) {\r\n this.storageUI = {};\r\n this.storage = '{}';\r\n }\r\n this.isExpired = _.defaultTo(new Date(this.storageUI?.expirationDate) < new Date(), false);\r\n this.lotNumber = _.defaultTo(this.storageUI?.serialNumber?.split('/')[0], '');\r\n this.serialNumber = this.storageUI?.serialNumber?.split('/').length > 1 ? _.defaultTo(this.storageUI?.serialNumber?.split('/')[1], '') : \"\";\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \".\";\r\n\r\nexport interface ISalesItemAttributeProcessingTypeModel extends IModel {\r\n salesItemAttributeProcessingTypeId: number;\r\n name: string;\r\n}\r\n\r\nexport class SalesItemAttributeProcessingTypeModel extends Model implements ModelRecord {\r\n salesItemAttributeProcessingTypeId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemAttributeProcessingTypeId = defaultTo(params?.salesItemAttributeProcessingTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \".\";\r\n\r\nexport interface ISalesItemAttributeTypeModel extends IModel {\r\n salesItemAttributeTypeId: number;\r\n name: string;\r\n}\r\n\r\nexport class SalesItemAttributeTypeModel extends Model implements ModelRecord {\r\n salesItemAttributeTypeId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemAttributeTypeId = defaultTo(params?.salesItemAttributeTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n }\r\n}\r\n","import { defaultTo, map, orderBy } from \"lodash\";\r\nimport {\r\n IModel,\r\n Model,\r\n ModelRecord,\r\n SalesItemAttributeTypeModel,\r\n SalesItemAttributeProcessingTypeModel,\r\n SalesItemAttributeListValueModel,\r\n BusinessLineModel\r\n} from \"@common/models\";\r\n\r\nexport interface ISalesItemAttributeModel extends IModel {\r\n salesItemAttributeId: number;\r\n salesItemId: number;\r\n salesItemAttributeTypeId: number\r\n salesItemAttributeProcessingTypeId: number;\r\n name: string;\r\n allowMultiple?: boolean | undefined;\r\n isReadOnly?: boolean | undefined;\r\n defaultValue: string;\r\n sortOrder: number;\r\n relatedEntityId?: number | undefined;\r\n validationFormat: string;\r\n salesItemAttributeType: SalesItemAttributeTypeModel;\r\n salesItemAttributeProcessingType: SalesItemAttributeProcessingTypeModel;\r\n salesItemAttributeListValues: SalesItemAttributeListValueModel[];\r\n businessLine: BusinessLineModel | undefined;\r\n businessLineId: number | undefined;\r\n}\r\n\r\nexport class SalesItemAttributeModel extends Model implements ModelRecord {\r\n salesItemAttributeId: number;\r\n salesItemId: number;\r\n salesItemAttributeTypeId: number\r\n salesItemAttributeProcessingTypeId: number;\r\n name: string;\r\n allowMultiple: boolean;\r\n isReadOnly: boolean;\r\n defaultValue: string;\r\n sortOrder: number;\r\n relatedEntityId: number | undefined;\r\n validationFormat: string;\r\n salesItemAttributeType: SalesItemAttributeTypeModel;\r\n salesItemAttributeProcessingType: SalesItemAttributeProcessingTypeModel;\r\n salesItemAttributeListValues: SalesItemAttributeListValueModel[] = [];\r\n businessLine: BusinessLineModel | undefined;\r\n businessLineId: number | undefined;\r\n\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemAttributeId = defaultTo(params?.salesItemAttributeId, 0);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.salesItemAttributeTypeId = defaultTo(params?.salesItemAttributeTypeId, 0);\r\n this.salesItemAttributeProcessingTypeId = defaultTo(params?.salesItemAttributeProcessingTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.allowMultiple = defaultTo(params?.allowMultiple, false);\r\n this.isReadOnly = defaultTo(params?.isReadOnly, false);\r\n this.defaultValue = defaultTo(params?.defaultValue, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.relatedEntityId = defaultTo(params?.relatedEntityId, undefined);\r\n this.validationFormat = defaultTo(params?.validationFormat, '');\r\n this.salesItemAttributeType = params?.salesItemAttributeType ? new SalesItemAttributeTypeModel(params.salesItemAttributeType) : new SalesItemAttributeTypeModel();\r\n this.salesItemAttributeProcessingType = params?.salesItemAttributeProcessingType ? new SalesItemAttributeProcessingTypeModel(params.salesItemAttributeProcessingType) : new SalesItemAttributeProcessingTypeModel();\r\n map(orderBy(params?.salesItemAttributeListValues, v => v.sortOrder), (alv) => {\r\n this.salesItemAttributeListValues.push(new SalesItemAttributeListValueModel(alv))\r\n });\r\n this.businessLine = defaultTo(params?.businessLine, undefined);\r\n this.businessLineId = defaultTo(params?.businessLineId, undefined);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord,BrandModel } from \"@common/models\";\r\n\r\nexport interface ISalesItemPriceRuleBrandModel extends IModel {\r\n salesItemPriceRuleBrandId: number;\r\n salesItemPriceRuleId:number;\r\n brandId:number\r\n brand:BrandModel;\r\n \r\n}\r\n\r\nexport class SalesItemPriceRuleBrandModel extends Model implements ModelRecord {\r\n salesItemPriceRuleBrandId: number;\r\n salesItemPriceRuleId:number;\r\n brandId:number\r\n brand:BrandModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemPriceRuleBrandId = defaultTo(params?.salesItemPriceRuleBrandId, 0);\r\n this.salesItemPriceRuleId = defaultTo(params?.salesItemPriceRuleId, 0);\r\n this.brandId = defaultTo(params?.brandId, 0);\r\n this.brand = params?.brand ? new BrandModel(params.brand) : new BrandModel();\r\n\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord,OrganizationListingModel } from \"@common/models\";\r\n\r\nexport interface ISalesItemPriceRuleOrganizationModel extends IModel {\r\n salesItemPriceRuleOrganizationId: number;\r\n salesItemPriceRuleId:number;\r\n organizationId:number\r\n organization:OrganizationListingModel;\r\n \r\n}\r\n\r\nexport class SalesItemPriceRuleOrganizationModel extends Model implements ModelRecord {\r\n salesItemPriceRuleOrganizationId: number;\r\n salesItemPriceRuleId:number;\r\n organizationId:number\r\n organization:OrganizationListingModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemPriceRuleOrganizationId = defaultTo(params?.salesItemPriceRuleOrganizationId, 0);\r\n this.salesItemPriceRuleId = defaultTo(params?.salesItemPriceRuleId, 0);\r\n this.organizationId = defaultTo(params?.organizationId, 0);\r\n this.organization = params?.organization ? new OrganizationListingModel(params.organization) : new OrganizationListingModel();\r\n\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord,StateModel } from \"@common/models\";\r\n\r\nexport interface ISalesItemPriceRuleStateModel extends IModel {\r\n salesItemPriceRuleStateId: number;\r\n salesItemPriceRuleId:number;\r\n stateId:number\r\n state:StateModel;\r\n \r\n}\r\n\r\nexport class SalesItemPriceRuleStateModel extends Model implements ModelRecord {\r\n salesItemPriceRuleStateId: number;\r\n salesItemPriceRuleId:number;\r\n stateId:number\r\n state:StateModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemPriceRuleStateId = defaultTo(params?.salesItemPriceRuleStateId, 0);\r\n this.salesItemPriceRuleId = defaultTo(params?.salesItemPriceRuleId, 0);\r\n this.stateId = defaultTo(params?.stateId, 0);\r\n this.state = params?.state ? new StateModel(params.state) : new StateModel();\r\n\r\n }\r\n}\r\n","import { defaultTo, map, orderBy } from \"lodash\";\r\nimport { IModel, Model, ModelRecord,SalesItemOptionModel,SalesItemPriceRuleOrganizationModel,SalesItemPriceRuleStateModel,SalesItemPriceRuleBrandModel,BusinessLineModel } from \"@common/models\";\r\nimport { BusinessLineEnum } from \"@common/models/Enums\";\r\n\r\nexport interface ISalesItemPriceRuleModel extends IModel {\r\n salesItemPriceRuleId: number;\r\n salesItemId:number;\r\n salesItemOptionId:number|undefined;\r\n priority: number;\r\n isBlocking:boolean;\r\n startDate: string;\r\n endDate:string;\r\n price: number;\r\n packageAddOnPrice: number | undefined;\r\n dispensingFee: number | undefined;\r\n businessLineId: number;\r\n salesItemOption:SalesItemOptionModel;\r\n organizations: SalesItemPriceRuleOrganizationModel[];\r\n states: SalesItemPriceRuleStateModel[];\r\n brands:SalesItemPriceRuleBrandModel[];\r\n businessLine: BusinessLineModel;\r\n}\r\n\r\nexport class SalesItemPriceRuleModel extends Model implements ModelRecord {\r\n salesItemPriceRuleId: number;\r\n salesItemId:number;\r\n salesItemOptionId:number|undefined;\r\n priority: number;\r\n isBlocking:boolean;\r\n startDate: string;\r\n endDate:string;\r\n price: number;\r\n packageAddOnPrice: number | undefined;\r\n dispensingFee: number | undefined;\r\n businessLineId: number;\r\n salesItemOption:SalesItemOptionModel;\r\n organizations: SalesItemPriceRuleOrganizationModel[]=[];\r\n states: SalesItemPriceRuleStateModel[]=[];\r\n brands:SalesItemPriceRuleBrandModel[]=[];\r\n businessLine: BusinessLineModel;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemPriceRuleId = defaultTo(params?.salesItemPriceRuleId, 0);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.salesItemOptionId = defaultTo(params?.salesItemOptionId, undefined);\r\n this.priority = defaultTo(params?.priority, 0);\r\n this.isBlocking = defaultTo(params?.isBlocking, false);\r\n this.startDate = defaultTo(params?.startDate, ''); \r\n this.endDate = defaultTo(params?.endDate, ''); \r\n this.price = defaultTo(params?.price, 0);\r\n this.packageAddOnPrice = defaultTo(params?.packageAddOnPrice, undefined); \r\n this.dispensingFee = defaultTo(params?.dispensingFee, undefined); \r\n this.businessLineId = defaultTo(params?.businessLineId, BusinessLineEnum.Clinic);\r\n this.salesItemOption = params?.salesItemOption ? new SalesItemOptionModel(params.salesItemOption) : new SalesItemOptionModel();\r\n map(orderBy(params?.organizations, o => o.organization?.name), (org) => { this.organizations.push(new SalesItemPriceRuleOrganizationModel(org)) }); \r\n map(orderBy(params?.states, o => o.state?.name), (st) => { this.states.push(new SalesItemPriceRuleStateModel(st)) }); \r\n map(orderBy(params?.brands, o => o.brand?.name), (br) => { this.brands.push(new SalesItemPriceRuleBrandModel(br)) });\r\n this.businessLine = params?.businessLine ? new BusinessLineModel(params.businessLine) : new BusinessLineModel(); \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \".\";\r\n\r\nexport interface ISalesItemTypeModel extends IModel {\r\n salesItemTypeId: number;\r\n name: string;\r\n sortOrder: number;\r\n allowAttributes: boolean;\r\n}\r\n\r\nexport class SalesItemTypeModel extends Model implements ModelRecord {\r\n salesItemTypeId: number;\r\n name: string;\r\n sortOrder: number;\r\n allowAttributes: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemTypeId = defaultTo(params?.salesItemTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.allowAttributes = defaultTo(params?.allowAttributes, false); \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord,PhotoModel } from \"@common/models\";\r\n\r\nexport interface ISalesItemListingModel extends IModel {\r\n salesItemId: number;\r\n salesSubCategoryId:number;\r\n salesItemTypeId: number;\r\n discountTypeId: number;\r\n speciesId: number;\r\n name: string;\r\n fullName:string;\r\n description:string;\r\n helpPhotoId:number;\r\n isAutomaticallyGiven:boolean;\r\n salesSubCategoryName: string;\r\n salesItemTypeName:string;\r\n discountTypeName:string;\r\n speciesName:string;\r\n helpPhoto:PhotoModel;\r\n currentPrice:number;\r\n hasAttributes:number;\r\n hasRequirements:number;\r\n hasSatisfiers:number;\r\n hasMarkets:number;\r\n hasTraits: number;\r\n businessLineId:number;\r\n\r\n}\r\n\r\nexport class SalesItemListingModel extends Model implements ModelRecord {\r\n salesItemId: number;\r\n salesSubCategoryId:number;\r\n salesItemTypeId: number;\r\n discountTypeId: number;\r\n speciesId: number;\r\n name: string;\r\n fullName:string;\r\n description:string;\r\n helpPhotoId:number;\r\n isAutomaticallyGiven:boolean;\r\n salesSubCategoryName: string;\r\n salesItemTypeName:string;\r\n discountTypeName:string;\r\n speciesName:string;\r\n helpPhoto:PhotoModel;\r\n currentPrice:number;\r\n hasAttributes:number;\r\n hasRequirements:number;\r\n hasSatisfiers:number;\r\n hasMarkets:number;\r\n hasTraits: number;\r\n businessLineId:number;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.salesSubCategoryId = defaultTo(params?.salesSubCategoryId, 0);\r\n this.salesItemTypeId = defaultTo(params?.salesItemTypeId, 0);\r\n this.discountTypeId = defaultTo(params?.discountTypeId, 0);\r\n this.speciesId = defaultTo(params?.speciesId, 0);\r\n this.name = defaultTo(params?.name, ''); \r\n this.fullName = defaultTo(params?.fullName, ''); \r\n this.description = defaultTo(params?.description, ''); \r\n this.helpPhotoId = defaultTo(params?.helpPhotoId, 0);\r\n this.isAutomaticallyGiven = defaultTo(params?.isAutomaticallyGiven, false);\r\n this.salesSubCategoryName = defaultTo(params?.salesSubCategoryName, '');\r\n this.salesItemTypeName = defaultTo(params?.salesItemTypeName, '');\r\n this.discountTypeName = defaultTo(params?.discountTypeName, '');\r\n this.speciesName = defaultTo(params?.speciesName, '');\r\n this.helpPhoto = params?.helpPhoto ? new PhotoModel(params.helpPhoto) : new PhotoModel();\r\n this.currentPrice = defaultTo(params?.currentPrice, 0);\r\n this.hasAttributes = defaultTo(params?.hasAttributes, 0);\r\n this.hasRequirements = defaultTo(params?.hasRequirements, 0);\r\n this.hasSatisfiers = defaultTo(params?.hasSatisfiers, 0);\r\n this.hasMarkets = defaultTo(params?.hasMarkets, 0);\r\n this.hasTraits = defaultTo(params?.hasTraits, 0);\r\n this.businessLineId = defaultTo(params?.businessLineId, 0); \r\n }\r\n}\r\n","import { defaultTo, map, orderBy } from \"lodash\";\r\nimport { IModel, ModelRecord, ISalesItemOptionModel, ISalesItemPriceModel, Model, SalesItemOptionModel, SalesItemPriceModel, SalesRequirementModel, SalesItemAttributeModel, SalesItemResetCategoryModel, SalesItemPriceRuleModel, ReportingGroupModel, MarketModel, AutoAddToVisitTypeModel, PhotoModel, SpeciesModel, BusinessLineModel, CommunicationTypeModel, SalesSubCategoryModel, SalesItemTypeModel, DiscountTypeModel, SalesItemDiscountSalesItemModel, SalesItemDiscountSubcategoryModel, SalesItemRebateSalesItemModel } from \".\";\r\nimport { ISalesItemTraitModel, SalesItemTraitModel } from \"./SalesItemTraitModel\";\r\n\r\nexport interface ISalesItemModel extends IModel {\r\n salesItemId: number;\r\n salesCategoryId: number; //UI Field Only\r\n salesSubCategoryId: number;\r\n salesItemTypeId: number;\r\n discountTypeId: number;\r\n speciesId: number | undefined;\r\n name: string;\r\n fullName: string;\r\n description: string;\r\n helpPhotoId: number | undefined;\r\n isAutomaticallyGiven: boolean;\r\n isArchived: boolean;\r\n isRabiesVaccination: boolean;\r\n communicationTypeId: number | undefined;\r\n isPricedByOption: boolean;\r\n supplierProductCode: string;\r\n supplierProductName: string;\r\n salesItemUpgradeId: number | undefined;\r\n deepLinkedSalesSubCategoryId: number | undefined;\r\n autoAddToVisitTypeId: number;\r\n businessLineId: number;\r\n includeInDrugLog: boolean;\r\n businessLine: BusinessLineModel;\r\n communicationType: CommunicationTypeModel;\r\n salesSubCategory: SalesSubCategoryModel;\r\n deepLinkedSalesCategoryId: number | undefined; //UI Field Only\r\n deepLinkedSalesSubCategory: SalesSubCategoryModel;\r\n salesItemType: SalesItemTypeModel;\r\n discountType: DiscountTypeModel;\r\n species: SpeciesModel;\r\n helpPhoto: PhotoModel;\r\n autoAddToVisitType: AutoAddToVisitTypeModel;\r\n markets: MarketModel[];\r\n reportingGroups: ReportingGroupModel[];\r\n prices: ISalesItemPriceModel[];\r\n priceRules: SalesItemPriceRuleModel[];\r\n salesItemAttributes: SalesItemAttributeModel[];\r\n options: ISalesItemOptionModel[];\r\n resetCategories: SalesItemResetCategoryModel[];\r\n requirements: SalesRequirementModel[];\r\n satisfiers: SalesRequirementModel[];\r\n traits: ISalesItemTraitModel[];\r\n salesItemDiscountSalesItems: SalesItemDiscountSalesItemModel[];\r\n salesItemDiscountSubcategories: SalesItemDiscountSubcategoryModel[];\r\n salesItemRebateSalesItems: SalesItemRebateSalesItemModel[];\r\n defaultStartDate: string;//UI Field Only\r\n hospitalSKU: string;\r\n petcoSKU: string;\r\n}\r\n\r\nexport class SalesItemModel extends Model implements ModelRecord\r\n{\r\n salesItemId: number;\r\n salesCategoryId: number; //UI Field Only\r\n salesSubCategoryId: number;\r\n salesItemTypeId: number;\r\n discountTypeId: number;\r\n speciesId: number | undefined;\r\n name: string;\r\n fullName: string;\r\n description: string;\r\n helpPhotoId: number | undefined;\r\n isAutomaticallyGiven: boolean;\r\n isArchived: boolean;\r\n isRabiesVaccination: boolean;\r\n communicationTypeId: number | undefined;\r\n isPricedByOption: boolean;\r\n supplierProductCode: string;\r\n supplierProductName: string;\r\n salesItemUpgradeId: number | undefined;\r\n deepLinkedSalesCategoryId: number | undefined; //UI Field Only\r\n deepLinkedSalesSubCategoryId: number | undefined;\r\n autoAddToVisitTypeId: number;\r\n businessLineId: number;\r\n includeInDrugLog: boolean;\r\n businessLine: BusinessLineModel;\r\n communicationType: CommunicationTypeModel;\r\n salesSubCategory: SalesSubCategoryModel;\r\n deepLinkedSalesSubCategory: SalesSubCategoryModel;\r\n salesItemType: SalesItemTypeModel;\r\n discountType: DiscountTypeModel;\r\n species: SpeciesModel;\r\n helpPhoto: PhotoModel;\r\n autoAddToVisitType: AutoAddToVisitTypeModel;\r\n markets: MarketModel[];\r\n reportingGroups: ReportingGroupModel[];\r\n prices: SalesItemPriceModel[];\r\n priceRules: SalesItemPriceRuleModel[];\r\n salesItemAttributes: SalesItemAttributeModel[] = [];\r\n options: SalesItemOptionModel[] = [];\r\n resetCategories: SalesItemResetCategoryModel[];\r\n requirements: SalesRequirementModel[];\r\n satisfiers: SalesRequirementModel[];\r\n traits: SalesItemTraitModel[];\r\n salesItemDiscountSalesItems: SalesItemDiscountSalesItemModel[];\r\n salesItemDiscountSubcategories: SalesItemDiscountSubcategoryModel[];\r\n salesItemRebateSalesItems: SalesItemRebateSalesItemModel[];\r\n defaultStartDate: string;//UI Field Only\r\n hospitalSKU: string;\r\n petcoSKU: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.salesCategoryId = params?.salesSubCategory ? defaultTo(params?.salesSubCategory?.salesCategoryId, 0) : 0;\r\n this.salesSubCategoryId = defaultTo(params?.salesSubCategoryId, 0);\r\n this.salesItemTypeId = defaultTo(params?.salesItemTypeId, 0);\r\n this.discountTypeId = defaultTo(params?.discountTypeId, 0);\r\n this.speciesId = params?.speciesId;\r\n this.name = defaultTo(params?.name, '');\r\n this.fullName = defaultTo(params?.fullName, '');\r\n this.description = defaultTo(params?.description, '');\r\n this.helpPhotoId = defaultTo(params?.helpPhotoId, undefined);\r\n this.isAutomaticallyGiven = defaultTo(params?.isAutomaticallyGiven, false);\r\n this.isArchived = defaultTo(params?.isArchived, false);\r\n this.isRabiesVaccination = defaultTo(params?.isRabiesVaccination, false);\r\n this.communicationTypeId = defaultTo(params?.communicationTypeId, undefined);\r\n this.isPricedByOption = defaultTo(params?.isPricedByOption, false);\r\n this.supplierProductCode = defaultTo(params?.supplierProductCode, '');\r\n this.supplierProductName = defaultTo(params?.supplierProductName, '');\r\n this.salesItemUpgradeId = defaultTo(params?.salesItemUpgradeId, undefined);\r\n this.deepLinkedSalesCategoryId = params?.deepLinkedSalesSubCategory ? defaultTo(params?.deepLinkedSalesSubCategory?.salesCategoryId, undefined) : undefined;\r\n this.deepLinkedSalesSubCategoryId = params?.deepLinkedSalesSubCategoryId;\r\n this.autoAddToVisitTypeId = defaultTo(params?.autoAddToVisitTypeId, 0);\r\n this.businessLineId = defaultTo(params?.businessLineId, 0);\r\n this.includeInDrugLog = defaultTo(params?.includeInDrugLog, false);\r\n this.businessLine = params?.businessLine ? new BusinessLineModel(params.businessLine) : new BusinessLineModel();\r\n this.communicationType = params?.communicationType ? new CommunicationTypeModel(params.communicationType) : new CommunicationTypeModel();\r\n this.salesSubCategory = params?.salesSubCategory ? new SalesSubCategoryModel(params.salesSubCategory) : new SalesSubCategoryModel();\r\n this.deepLinkedSalesSubCategory = params?.deepLinkedSalesSubCategory ? new SalesSubCategoryModel(params.deepLinkedSalesSubCategory) : new SalesSubCategoryModel();\r\n this.salesItemType = params?.salesItemType ? new SalesItemTypeModel(params.salesItemType) : new SalesItemTypeModel();\r\n this.discountType = params?.discountType ? new DiscountTypeModel(params.discountType) : new DiscountTypeModel();\r\n this.species = params?.species ? new SpeciesModel(params.species) : new SpeciesModel();\r\n this.helpPhoto = params?.helpPhoto ? new PhotoModel(params.helpPhoto) : new PhotoModel();\r\n this.autoAddToVisitType = params?.autoAddToVisitType ? new AutoAddToVisitTypeModel(params.autoAddToVisitType) : new AutoAddToVisitTypeModel();\r\n this.markets = (params?.markets ?? []).map(p => new MarketModel(p));\r\n this.reportingGroups = (params?.reportingGroups ?? []).map(p => new ReportingGroupModel(p));\r\n this.prices = (params?.prices ?? []).map(p => new SalesItemPriceModel(p));\r\n this.priceRules = (params?.priceRules ?? []).map(p => new SalesItemPriceRuleModel(p));\r\n map(orderBy(params?.salesItemAttributes, v => v.sortOrder), (attribute) => { this.salesItemAttributes.push(new SalesItemAttributeModel(attribute)) });\r\n map(orderBy(params?.options, v => v.sortOrder), (sio) => { this.options.push(new SalesItemOptionModel(sio)) });\r\n this.resetCategories = (params?.resetCategories ?? []).map(p => new SalesItemResetCategoryModel(p));\r\n this.requirements = (params?.requirements ?? []).map(p => new SalesRequirementModel(p));\r\n this.satisfiers = (params?.satisfiers ?? []).map(p => new SalesRequirementModel(p));\r\n this.traits = (params?.traits ?? []).map(t => new SalesItemTraitModel(t));\r\n this.salesItemDiscountSalesItems = (params?.salesItemDiscountSalesItems ?? []).map(sids => new SalesItemDiscountSalesItemModel(sids));\r\n this.salesItemDiscountSubcategories = (params?.salesItemDiscountSubcategories ?? []).map(sids => new SalesItemDiscountSubcategoryModel(sids));\r\n this.salesItemRebateSalesItems = (params?.salesItemRebateSalesItems ?? []).map(sids => new SalesItemRebateSalesItemModel(sids));\r\n this.defaultStartDate = defaultTo(params?.defaultStartDate, (new Date()).toISOString());\r\n this.hospitalSKU = defaultTo(params?.hospitalSKU, \"\");\r\n this.petcoSKU = defaultTo(params?.petcoSKU, \"\");\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \".\";\r\n\r\nexport interface ISalesItemPriceModel extends IModel {\r\n salesItemPriceId: number;\r\n salesItemId: number;\r\n salesItemOptionId: number | undefined;\r\n startDate: string;\r\n endDate: string | undefined;\r\n price: number;\r\n packageAddOnPrice: number | undefined;\r\n}\r\n\r\nexport class SalesItemPriceModel extends Model implements ModelRecord {\r\n salesItemPriceId: number;\r\n salesItemId: number;\r\n salesItemOptionId: number | undefined;\r\n startDate: string;\r\n endDate: string | undefined;\r\n price: number;\r\n packageAddOnPrice: number | undefined;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemPriceId = defaultTo(params?.salesItemPriceId, 0);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.salesItemOptionId = defaultTo(params?.salesItemOptionId, undefined);\r\n this.startDate = defaultTo(params?.startDate, \"2000-01-01\");\r\n this.endDate = defaultTo(params?.endDate, undefined);\r\n this.price = defaultTo(params?.price, 0);\r\n this.packageAddOnPrice = params?.packageAddOnPrice;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface ISalesItemResetCategoryModel extends IModel {\r\n salesItemResetCategoryId: number;\r\n name: string;\r\n}\r\n\r\nexport class SalesItemResetCategoryModel extends Model implements ModelRecord {\r\n salesItemResetCategoryId: number;\r\n name: string;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemResetCategoryId = defaultTo(params?.salesItemResetCategoryId, 0);\r\n this.name = defaultTo(params?.name, ''); \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface ISalesItemSimpleListingModel extends IModel {\r\n salesItemId: number;\r\n salesItemOptionId: number;\r\n itemName:string;\r\n fullName:string;\r\n optionName:string;\r\n code:string;\r\n}\r\n\r\nexport class SalesItemSimpleListingModel extends Model implements ModelRecord {\r\n salesItemId: number;\r\n salesItemOptionId: number;\r\n itemName:string;\r\n fullName:string;\r\n optionName:string;\r\n code:string;\r\n \r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.salesItemOptionId = defaultTo(params?.salesItemOptionId, 0); \r\n this.itemName = defaultTo(params?.itemName, ''); \r\n this.fullName = defaultTo(params?.fullName, ''); \r\n this.optionName = defaultTo(params?.optionName, ''); \r\n this.code = defaultTo(params?.code, ''); \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord,SalesItemOptionModel } from \"@common/models\";\r\n\r\nexport interface ISalesPackageContentModel extends IModel {\r\n salesPackageContentId: number;\r\n salesPackageId:number;\r\n salesItemOptionId: number;\r\n sortOrder:number;\r\n salesItemId:number;\r\n salesItemName: string;\r\n salesItemOption:SalesItemOptionModel;\r\n \r\n}\r\n\r\nexport class SalesPackageContentModel extends Model implements ModelRecord {\r\n salesPackageContentId: number;\r\n salesPackageId:number;\r\n salesItemOptionId: number;\r\n sortOrder:number;\r\n salesItemId:number;\r\n salesItemName: string;\r\n salesItemOption:SalesItemOptionModel;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesPackageContentId = defaultTo(params?.salesPackageContentId, 0);\r\n this.salesPackageId = defaultTo(params?.salesPackageId, 0);\r\n this.salesItemOptionId = defaultTo(params?.salesItemOptionId, 0);\r\n this.salesItemName = defaultTo(params?.salesItemName, ''); \r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.salesItemOption = params?.salesItemOption ? new SalesItemOptionModel(params.salesItemOption) : new SalesItemOptionModel();\r\n \r\n }\r\n}\r\n","import { IModel, Model, ModelRecord, SalesSubCategoryModel, SpeciesModel, PhotoModel, MarketModel, SalesPackageContentModel, SalesPackagePriceModel, SalesPackagePriceRuleModel, ReportingGroupModel, BusinessLineModel, VisitSalesItemPublicModel, InvoiceSalesItemModel } from \"@common/models\";\r\n\r\nexport interface ISalesPackageModel extends IModel {\r\n salesPackageId: number;\r\n salesSubCategoryId: number;\r\n speciesId: number | undefined;\r\n name: string;\r\n displayName: string;\r\n description: string;\r\n code: string;\r\n helpPhotoId: number;\r\n sortOrder: number;\r\n expirationDays: number;\r\n vaccineReminderDefaultDays: number;\r\n businessLineId: number;\r\n businessLine: BusinessLineModel;\r\n salesSubCategory: SalesSubCategoryModel;\r\n species: SpeciesModel;\r\n helpPhoto: PhotoModel;\r\n markets: MarketModel[];\r\n reportingGroups: ReportingGroupModel[];\r\n contents: SalesPackageContentModel[];\r\n prices: SalesPackagePriceModel[];\r\n priceRules: SalesPackagePriceRuleModel[];\r\n color: string;\r\n clinicSKU: string;\r\n hospitalSKU: string;\r\n defaultStartDate: string;//UI Field Only\r\n}\r\n\r\nexport class SalesPackageModel extends Model implements ModelRecord {\r\n salesPackageId: number;\r\n salesSubCategoryId: number;\r\n speciesId: number | undefined;\r\n name: string;\r\n displayName: string;\r\n description: string;\r\n code: string;\r\n helpPhotoId: number;\r\n sortOrder: number;\r\n expirationDays: number;\r\n vaccineReminderDefaultDays: number;\r\n businessLineId: number;\r\n businessLine: BusinessLineModel;\r\n salesSubCategory: SalesSubCategoryModel;\r\n species: SpeciesModel;\r\n helpPhoto: PhotoModel;\r\n markets: MarketModel[];\r\n reportingGroups: ReportingGroupModel[];\r\n contents: SalesPackageContentModel[];\r\n prices: SalesPackagePriceModel[];\r\n priceRules: SalesPackagePriceRuleModel[];\r\n color: string;\r\n clinicSKU: string;\r\n hospitalSKU: string;\r\n defaultStartDate: string;//UI Field Only\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesPackageId = _.defaultTo(params?.salesPackageId, 0);\r\n this.salesSubCategoryId = _.defaultTo(params?.salesSubCategoryId, 0);\r\n this.speciesId = _.defaultTo(params?.speciesId, undefined);\r\n this.name = _.defaultTo(params?.name, '');\r\n this.displayName = _.defaultTo(params?.displayName, '');\r\n this.description = _.defaultTo(params?.description, '');\r\n this.code = _.defaultTo(params?.code, '');\r\n this.helpPhotoId = _.defaultTo(params?.helpPhotoId, 0);\r\n this.sortOrder = _.defaultTo(params?.sortOrder, 0);\r\n this.expirationDays = _.defaultTo(params?.expirationDays, 0);\r\n this.vaccineReminderDefaultDays = _.defaultTo(params?.vaccineReminderDefaultDays, 0);\r\n this.businessLineId = _.defaultTo(params?.businessLineId, 0);\r\n this.businessLine = params?.businessLine ? new BusinessLineModel(params.businessLine) : new BusinessLineModel();\r\n this.salesSubCategory = params?.salesSubCategory ? new SalesSubCategoryModel(params.salesSubCategory) : new SalesSubCategoryModel();\r\n this.species = params?.species ? new SpeciesModel(params.species) : new SpeciesModel();\r\n this.helpPhoto = params?.helpPhoto ? new PhotoModel(params.helpPhoto) : new PhotoModel();\r\n this.markets = (params?.markets ?? []).map(p => new MarketModel(p));\r\n this.reportingGroups = (params?.reportingGroups ?? []).map(p => new ReportingGroupModel(p));\r\n this.contents = (params?.contents ?? []).map(p => new SalesPackageContentModel(p));\r\n this.prices = (params?.prices ?? []).map(p => new SalesPackagePriceModel(p));\r\n this.priceRules = (params?.priceRules ?? []).map(p => new SalesPackagePriceRuleModel(p));\r\n this.color = _.defaultTo(params?.color, \"#fff\")\r\n this.clinicSKU = _.defaultTo(params?.clinicSKU, '');\r\n this.hospitalSKU = _.defaultTo(params?.hospitalSKU, '');\r\n this.defaultStartDate = _.defaultTo(params?.defaultStartDate, (new Date()).toISOString());\r\n\r\n }\r\n\r\n /**\r\n * Orders a set of visit/estimate sales items for presentation. Packaged items will appear first in their admin-defined sort order. Remaining items will appear last in the order they were added to the visit/estimate.\r\n * @param salesPackage The sales package applied to the visit/estimate (if any).\r\n * @param items The visit/estimate sales items.\r\n * @returns an ordered collection of visit/estimate sales items.\r\n */\r\n static OrderSalesItems(items: T[], orderBy: string): T[] {\r\n // find all the visit sales items contained in the sales package (if there is one.) \r\n const visitItemsInPackage = items.filter(vsi => vsi.salesPackageId !== undefined);\r\n // order the package contents by their admin-defined sort order...\r\n // const orderedPackageItems = _.orderBy(salesPackage?.contents, \"sortOrder\");\r\n // ... and subsequently order the visit package items by that same sort order.\r\n const orderedVisitItemsInPackage = _.orderBy(visitItemsInPackage, orderBy);\r\n // find all the visit sales items NOT contained in the sales package (if there is one)...\r\n const visitItemsNotInPackage = _.differenceBy(items, visitItemsInPackage, 'salesItemId');\r\n // ... and sort them by their visitSalesItemId. (This is a proxy for the order they were added to the visit.)\r\n const orderedVisitItemsNotInPackage = _.orderBy(visitItemsNotInPackage, orderBy);\r\n // concat the two lists with package items appearing first.\r\n return [...orderedVisitItemsInPackage, ...orderedVisitItemsNotInPackage];\r\n }\r\n\r\n /**\r\n * Orders a set of customer-visible visit sales items for presentation. Packaged items will appear first.\r\n * @param items The public visit sales items.\r\n * @returns sales package information (if any) and visit sales items.\r\n */\r\n static OrderPublicSalesItems(items: VisitSalesItemPublicModel[]): { packageName: string | undefined, packagePrice: number | undefined, items: VisitSalesItemPublicModel[] } {\r\n // find all the visit sales items contained in the sales package (if there is one.) \r\n const visitItemsInPackage = items.filter(vsi => vsi.salesPackageName !== undefined);\r\n // find all the visit sales items NOT contained in the sales package (if there is one)...\r\n const visitItemsNotInPackage = items.filter(vsi => vsi.salesPackageName === undefined);\r\n return {\r\n packageName: _.isEmpty(visitItemsInPackage) ? undefined : visitItemsInPackage[0].salesPackageName,\r\n packagePrice: _.isEmpty(visitItemsInPackage) ? undefined : visitItemsInPackage[0].salesPackagePrice,\r\n items: [...visitItemsInPackage, ...visitItemsNotInPackage]\r\n }\r\n }\r\n\r\n static OrderInvoiceSalesItems(items: InvoiceSalesItemModel[]) {\r\n // find all the visit sales items contained in the sales package (if there is one.) \r\n const visitItemsInPackage = items.filter(vsi => vsi.salesPackageId !== undefined);\r\n // ... and subsequently order the visit package items by that same sort order.\r\n const orderedVisitItemsInPackage = _.orderBy(visitItemsInPackage, 'invoiceSalesItemId');\r\n // find all the visit sales items NOT contained in the sales package (if there is one)...\r\n const visitItemsNotInPackage = _.differenceBy(items, visitItemsInPackage, 'invoiceSalesItemId');\r\n\r\n // Group and sort invoice items with their parents\r\n var orderedVisitItemsNotInPackage: InvoiceSalesItemModel[] = [];\r\n _(visitItemsNotInPackage)\r\n .groupBy(el => el.parentInvoiceSalesItemId)\r\n .forEach(element => {\r\n var parent = visitItemsNotInPackage.find(el => el.invoiceSalesItemId == element[0].parentInvoiceSalesItemId);\r\n if (parent) {\r\n orderedVisitItemsNotInPackage.push(parent);\r\n }\r\n orderedVisitItemsNotInPackage = orderedVisitItemsNotInPackage.concat(_.differenceBy(element, orderedVisitItemsNotInPackage));\r\n });\r\n\r\n return [...orderedVisitItemsInPackage, ...orderedVisitItemsNotInPackage];\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface ISalesPackagePriceModel extends IModel {\r\n salesPackagePriceId: number;\r\n salesPackageId: number;\r\n startDate: string;\r\n endDate: string;\r\n price: number;\r\n\r\n}\r\n\r\nexport class SalesPackagePriceModel extends Model implements ModelRecord {\r\n salesPackagePriceId: number;\r\n salesPackageId: number;\r\n startDate: string;\r\n endDate: string;\r\n price: number;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesPackagePriceId = defaultTo(params?.salesPackagePriceId, 0);\r\n this.salesPackageId = defaultTo(params?.salesPackageId, 0);\r\n this.startDate = defaultTo(params?.startDate, '');\r\n this.endDate = defaultTo(params?.endDate, '');\r\n this.price = defaultTo(params?.price, 0);\r\n\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord,BrandModel } from \"@common/models\";\r\n\r\nexport interface ISalesPackagePriceRuleBrandModel extends IModel {\r\n salesPackagePriceRuleBrandId: number;\r\n salesPackagePriceRuleId:number;\r\n brandId: number; \r\n brand:BrandModel; \r\n}\r\n\r\nexport class SalesPackagePriceRuleBrandModel extends Model implements ModelRecord {\r\n salesPackagePriceRuleBrandId: number;\r\n salesPackagePriceRuleId:number;\r\n brandId: number;\r\n brand:BrandModel; \r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesPackagePriceRuleBrandId = defaultTo(params?.salesPackagePriceRuleBrandId, 0);\r\n this.salesPackagePriceRuleId = defaultTo(params?.salesPackagePriceRuleId, 0);\r\n this.brandId = defaultTo(params?.brandId, 0); \r\n this.brand = params?.brand ? new BrandModel(params.brand) : new BrandModel();\r\n \r\n }\r\n}\r\n","import { IModel, Model, ModelRecord,SalesPackagePriceRuleOrganizationModel,SalesPackagePriceRuleStateModel,SalesPackagePriceRuleBrandModel, BusinessLineModel } from \"@common/models\";\r\nimport { BusinessLineEnum } from \"@common/models/Enums\";\r\n\r\nexport interface ISalesPackagePriceRuleModel extends IModel {\r\n salesPackagePriceRuleId: number;\r\n salesPackageId:number;\r\n priority: number;\r\n isBlocking: boolean;\r\n startDate:string;\r\n endDate:string;\r\n price:string;\r\n businessLineId: number;\r\n organizations:SalesPackagePriceRuleOrganizationModel[]|undefined;\r\n states:SalesPackagePriceRuleStateModel[]|undefined;\r\n brands:SalesPackagePriceRuleBrandModel[]|undefined; \r\n businessLine: BusinessLineModel;\r\n}\r\n\r\nexport class SalesPackagePriceRuleModel extends Model implements ModelRecord {\r\n salesPackagePriceRuleId: number;\r\n salesPackageId:number;\r\n priority: number;\r\n isBlocking: boolean;\r\n startDate:string;\r\n endDate:string;\r\n price:string;\r\n businessLineId: number;\r\n organizations:SalesPackagePriceRuleOrganizationModel[]=[];\r\n states:SalesPackagePriceRuleStateModel[]=[];\r\n brands:SalesPackagePriceRuleBrandModel[]=[]; \r\n businessLine: BusinessLineModel;\r\n \r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesPackagePriceRuleId = _.defaultTo(params?.salesPackagePriceRuleId, 0);\r\n this.salesPackageId = _.defaultTo(params?.salesPackageId, 0);\r\n this.priority = _.defaultTo(params?.priority, 0);\r\n this.isBlocking = _.defaultTo(params?.isBlocking, false); \r\n this.startDate = _.defaultTo(params?.startDate, ''); \r\n this.endDate = _.defaultTo(params?.endDate, ''); \r\n this.price = _.defaultTo(params?.price, ''); \r\n this.businessLineId = _.defaultTo(params?.businessLineId, BusinessLineEnum.Clinic);\r\n _.map(_.orderBy(params?.organizations, o => o.organization?.name), (org) => { this.organizations.push(new SalesPackagePriceRuleOrganizationModel(org)) }); \r\n _.map(_.orderBy(params?.states, o => o.state?.name), (st) => { this.states.push(new SalesPackagePriceRuleStateModel(st)) }); \r\n _.map(_.orderBy(params?.brands, o => o.brand?.name), (br) => { this.brands.push(new SalesPackagePriceRuleBrandModel(br)) });\r\n this.businessLine = params?.businessLine ? new BusinessLineModel(params.businessLine) : new BusinessLineModel(); \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord,OrganizationListingModel } from \"@common/models\";\r\n\r\nexport interface ISalesPackagePriceRuleOrganizationModel extends IModel {\r\n salesPackagePriceRuleOrganizationId: number;\r\n salesPackagePriceRuleId:number;\r\n organizationId: number; \r\n organization:OrganizationListingModel; \r\n}\r\n\r\nexport class SalesPackagePriceRuleOrganizationModel extends Model implements ModelRecord {\r\n salesPackagePriceRuleOrganizationId: number;\r\n salesPackagePriceRuleId:number;\r\n organizationId: number;\r\n organization:OrganizationListingModel; \r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesPackagePriceRuleOrganizationId = defaultTo(params?.salesPackagePriceRuleOrganizationId, 0);\r\n this.salesPackagePriceRuleId = defaultTo(params?.salesPackagePriceRuleId, 0);\r\n this.organizationId = defaultTo(params?.organizationId, 0); \r\n this.organization = params?.organization ? new OrganizationListingModel(params.organization) : new OrganizationListingModel();\r\n \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord,StateModel } from \"@common/models\";\r\n\r\nexport interface ISalesPackagePriceRuleStateModel extends IModel {\r\n salesPackagePriceRuleStateId: number;\r\n salesPackagePriceRuleId:number;\r\n stateId: number;\r\n state:StateModel; \r\n}\r\n\r\nexport class SalesPackagePriceRuleStateModel extends Model implements ModelRecord {\r\n salesPackagePriceRuleStateId: number;\r\n salesPackagePriceRuleId:number;\r\n stateId: number;\r\n state:StateModel;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesPackagePriceRuleStateId = defaultTo(params?.salesPackagePriceRuleStateId, 0);\r\n this.salesPackagePriceRuleId = defaultTo(params?.salesPackagePriceRuleId, 0);\r\n this.stateId = defaultTo(params?.stateId, 0); \r\n this.state = params?.state ? new StateModel(params.state) : new StateModel();\r\n \r\n }\r\n}\r\n","import { defaultTo, map, orderBy } from \"lodash\";\r\nimport { BusinessLineModel, IBusinessLineModel, IModel, ISalesPlanContentModel, ISpeciesModel, Model, SalesPlanContentModel, SpeciesModel } from \"@common/models\";\r\n\r\nexport interface ISalesPlanModel extends IModel {\r\n salesPlanId: number;\r\n speciesId: number | undefined;\r\n name: string;\r\n sortOrder: number | undefined;\r\n businessLineId: number;\r\n businessLine: IBusinessLineModel | undefined;\r\n species: ISpeciesModel | null;\r\n contents: ISalesPlanContentModel[];\r\n}\r\n\r\nexport class SalesPlanModel extends Model implements ISalesPlanModel {\r\n salesPlanId: number;\r\n speciesId: number | undefined;\r\n name: string;\r\n sortOrder: number;\r\n businessLineId: number;\r\n businessLine: BusinessLineModel;\r\n species: SpeciesModel;\r\n contents: SalesPlanContentModel[] = [];\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesPlanId = defaultTo(params?.salesPlanId, 0);\r\n this.speciesId = defaultTo(params?.speciesId, undefined);\r\n this.name = defaultTo(params?.name, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.businessLineId = defaultTo(params?.businessLineId, 0);\r\n this.businessLine = params?.businessLine ? new BusinessLineModel(params.businessLine) : new BusinessLineModel();\r\n this.species = params?.species ? new SpeciesModel(params.species) : new SpeciesModel();\r\n map(orderBy(params?.contents, v => v.sortOrder), (content) => { this.contents.push(new SalesPlanContentModel(content)) });\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, ISalesItemOptionModel, Model, SalesItemOptionModel } from \"@common/models\";\r\n\r\nexport interface ISalesPlanContentModel extends IModel {\r\n salesPlanContentId: number;\r\n salesPlanId: number;\r\n salesItemOptionId: number;\r\n sortOrder: number;\r\n salesItemId: number;\r\n salesItemName: string;\r\n salesItemOption: ISalesItemOptionModel;\r\n}\r\n\r\nexport class SalesPlanContentModel extends Model implements ISalesPlanContentModel {\r\n salesPlanContentId: number;\r\n salesPlanId: number;\r\n salesItemOptionId: number;\r\n sortOrder: number;\r\n salesItemId: number;\r\n salesItemName: string;\r\n salesItemOption: SalesItemOptionModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesPlanContentId = defaultTo(params?.salesPlanContentId, 0);\r\n this.salesPlanId = defaultTo(params?.salesPlanId, 0);\r\n this.salesItemOptionId = defaultTo(params?.salesItemOptionId, 0);\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.salesItemName = defaultTo(params?.salesItemName, \"\");\r\n this.salesItemOption = defaultTo(params?.salesItemOption, new SalesItemOptionModel());\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface ISalesRequirementModel extends IModel {\r\n salesRequirementId: number;\r\n name: string;\r\n inactive:boolean;\r\n}\r\n\r\nexport class SalesRequirementModel extends Model implements ModelRecord {\r\n salesRequirementId: number;\r\n name: string;\r\n inactive:boolean;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesRequirementId = defaultTo(params?.salesRequirementId, 0);\r\n this.name = defaultTo(params?.name, ''); \r\n this.inactive = defaultTo(params?.inactive, false); \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface ISalesSubCategoryModel extends IModel {\r\n salesSubCategoryId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n salesCategoryId: number;\r\n salesCategoryName: string;\r\n salesCategoryDisplayName: string;\r\n salesCategorySortOrder: number;\r\n fullDisplayName: string;\r\n shouldSendToRX: boolean;\r\n sourceSystemId: number;\r\n sourceSystemKey: string;\r\n}\r\n\r\nexport class SalesSubCategoryModel extends Model implements ModelRecord {\r\n salesSubCategoryId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n salesCategoryId: number;\r\n salesCategoryName: string;\r\n salesCategoryDisplayName: string;\r\n salesCategorySortOrder: number;\r\n fullDisplayName: string;\r\n shouldSendToRX: boolean;\r\n sourceSystemId: number;\r\n sourceSystemKey: string;\r\n\r\n constructor(params?: ISalesSubCategoryModel) {\r\n super(params);\r\n this.salesSubCategoryId = defaultTo(params?.salesSubCategoryId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.displayName = defaultTo(params?.displayName, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 999);\r\n this.salesCategoryId = defaultTo(params?.salesCategoryId, 0);\r\n this.salesCategoryName = defaultTo(params?.salesCategoryName, '');\r\n this.salesCategoryDisplayName = defaultTo(params?.salesCategoryDisplayName, '');\r\n this.salesCategorySortOrder = defaultTo(params?.salesCategorySortOrder, 0);\r\n this.fullDisplayName = defaultTo(params?.fullDisplayName, '');\r\n this.shouldSendToRX = defaultTo(params?.shouldSendToRX, false);\r\n this.sourceSystemId = defaultTo(params?.sourceSystemId, 0);\r\n this.sourceSystemKey = defaultTo(params?.sourceSystemKey, \"\");\r\n }\r\n}\r\n","export interface ISearchResponse {\r\n results: Array,\r\n totalRecordCount: number\r\n}\r\n\r\nexport interface IODataSearchResult {\r\n \"@odata.count\": number,\r\n value: Array\r\n}\r\n\r\nexport class SearchResponse {\r\n results: Array;\r\n totalRecordCount: number;\r\n\r\n constructor(init: { results: Array, totalRecordCount: number }) {\r\n this.results = init.results;\r\n this.totalRecordCount = init.totalRecordCount;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface ISectionListingModel extends IModel {\r\n sectionId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n}\r\n\r\nexport class SectionListingModel extends Model implements ModelRecord {\r\n sectionId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.sectionId = defaultTo(params?.sectionId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.displayName = defaultTo(params?.displayName, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n }\r\n}\r\n","import { defaultTo, map, orderBy } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, QuestionModel } from \"@common/models\";\r\n\r\nexport interface ISectionModel extends IModel {\r\n sectionId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n questions: QuestionModel[];\r\n}\r\n\r\nexport class SectionModel extends Model implements ModelRecord {\r\n sectionId: number;\r\n name: string;\r\n displayName: string;\r\n sortOrder: number;\r\n questions: QuestionModel[] = [];\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.sectionId = defaultTo(params?.sectionId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.displayName = defaultTo(params?.displayName, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n map(orderBy(params?.questions, v => v.sortOrder), (question) => { this.questions.push(new QuestionModel(question)); });\r\n }\r\n}\r\n","import { IModel, Model } from \"@common/models/Model\";\r\n\r\nexport interface IStoreCommunicationStatModel extends IModel {\r\n storeCommunicationStatId: number;\r\n storeId: number;\r\n unreadMessageCount: number;\r\n unreadMessageClientCount: number;\r\n}\r\n\r\nexport class StoreCommunicationStatModel extends Model implements IStoreCommunicationStatModel {\r\n storeCommunicationStatId: number;\r\n storeId: number;\r\n unreadMessageCount: number;\r\n unreadMessageClientCount: number;\r\n\r\n constructor(params?:Partial) {\r\n super(params);\r\n this.storeCommunicationStatId = _.defaultTo(params?.storeCommunicationStatId, 0);\r\n this.storeId = _.defaultTo(params?.storeId, 0);\r\n this.unreadMessageCount = _.defaultTo(params?.unreadMessageCount, 0);\r\n this.unreadMessageClientCount = _.defaultTo(params?.unreadMessageClientCount, 0);\r\n }\r\n}\r\n","import { IModel, ModelRecord, Model } from \"./Model\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface ITemplateTypeModel extends IModel {\r\n templateTypeId: number,\r\n name: string,\r\n sortOrder: number\r\n}\r\n\r\nexport class TemplateTypeModel extends Model implements ModelRecord {\r\n templateTypeId: number;\r\n name: string;\r\n sortOrder: number;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.templateTypeId = defaultTo(params?.templateTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0)\r\n }\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { ITemplateTypeModel } from \".\";\r\nimport { IModel, ModelRecord, Model } from \"./Model\";\r\nimport { TemplateTypeModel } from \"./TemplateTypeModel\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface ITemplateModel extends IModel {\r\n templateId: number;\r\n name: string | undefined;\r\n templateValue: string | undefined;\r\n description: string | undefined;\r\n templateTypeId: number;\r\n enabled: boolean;\r\n showEnabledInAdmin: boolean;\r\n sortOrder: number;\r\n templateType: ITemplateTypeModel;\r\n dateCreated: string;\r\n dateUpdated: string | undefined;\r\n TemplateMaxSize: number | undefined;\r\n}\r\n\r\nexport class TemplateModel extends Model implements ModelRecord {\r\n templateId: number;\r\n name: string;\r\n templateValue: string;\r\n description: string;\r\n templateTypeId: number;\r\n enabled: boolean;\r\n showEnabledInAdmin: boolean;\r\n sortOrder: number;\r\n templateType: TemplateTypeModel;\r\n dateUpdated: string;\r\n dateCreated: string;\r\n TemplateMaxSize: number;\r\n\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.templateId = defaultTo(params?.templateId, 0);\r\n this.name = defaultTo(StringUtility.SanitizeStringWithEmpty(params?.name), '');\r\n this.templateValue = defaultTo(StringUtility.SanitizeStringWithEmpty(params?.templateValue), '');\r\n this.description = defaultTo(StringUtility.SanitizeStringWithEmpty(params?.description), '');\r\n this.templateTypeId = defaultTo(params?.templateTypeId, 0);\r\n this.enabled = defaultTo(params?.enabled, false);\r\n this.showEnabledInAdmin = defaultTo(params?.showEnabledInAdmin, false);\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.templateType = params?.templateType ? new TemplateTypeModel(params?.templateType) : new TemplateTypeModel();\r\n this.dateUpdated = defaultTo(params?.dateUpdated, params?.dateCreated) ?? '';\r\n this.dateCreated = params?.dateCreated ?? '';\r\n this.TemplateMaxSize = defaultTo(params?.TemplateMaxSize, 10000);\r\n }\r\n\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface ITrustedApplicationModel extends IModel {\r\n trustedApplicationId: number;\r\n name: string;\r\n appId: string;\r\n appKey: string;\r\n appKey2: string;\r\n appKeyCreatedDate: string;\r\n appKey2CreatedDate: string;\r\n}\r\n\r\nexport class TrustedApplicationModel extends Model implements ModelRecord {\r\n trustedApplicationId: number;\r\n name: string;\r\n appId: string;\r\n appKey: string;\r\n appKey2: string;\r\n appKeyCreatedDate: Date;\r\n appKey2CreatedDate: Date;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.trustedApplicationId = defaultTo(params?.trustedApplicationId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.appId = defaultTo(params?.appId, '');\r\n this.appKey = defaultTo(params?.appKey, '');\r\n this.appKey2 = defaultTo(params?.appKey2, '');\r\n this.appKeyCreatedDate = new Date(defaultTo(params?.appKeyCreatedDate, \"2000-01-01\"));\r\n this.appKey2CreatedDate = new Date(defaultTo(params?.appKey2CreatedDate, \"2000-01-01\"));\r\n }\r\n}\r\n","import { Model } from \"./Model\";\r\nimport { FeatureFlagModel, IFeatureFlagModel } from \"./FeatureFlagModel\";\r\nimport { IUserModel } from './UserModel';\r\n\r\n\r\nexport interface IUserFeatureFlagModel extends Model {\r\n userFeatureFlagId: number;\r\n userId: number;\r\n featureFlagId: number;\r\n startDate: string | undefined;\r\n endDate: string | undefined;\r\n enabled: boolean;\r\n featureFlag: IFeatureFlagModel;\r\n}\r\n\r\nexport class UserFeatureFlagModel extends Model implements IUserFeatureFlagModel {\r\n userFeatureFlagId: number;\r\n userId: number;\r\n featureFlagId: number;\r\n startDate: string | undefined;\r\n endDate: string | undefined;\r\n enabled: boolean;\r\n featureFlag: FeatureFlagModel;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n\r\n const {\r\n userFeatureFlagId = 0,\r\n userId = 0,\r\n featureFlagId = 0,\r\n startDate = undefined,\r\n endDate = undefined,\r\n enabled = false,\r\n featureFlag = {}\r\n } = params;\r\n\r\n this.userFeatureFlagId = userFeatureFlagId;\r\n this.userId = userId;\r\n this.featureFlagId = featureFlagId;\r\n this.startDate = startDate;\r\n this.endDate = endDate;\r\n this.enabled = enabled;\r\n this.featureFlag = featureFlag && new FeatureFlagModel(featureFlag);\r\n\r\n }\r\n\r\n static GetUserFeatureFlag = (user: IUserModel, featureFlag: FeatureFlagModel) => {\r\n return new UserFeatureFlagModel({\r\n userFeatureFlagId: 0,\r\n userId: user.userId,\r\n featureFlagId: featureFlag.featureFlagId,\r\n startDate: undefined,\r\n endDate: undefined,\r\n enabled: true,\r\n featureFlag: featureFlag,\r\n rowVersion: featureFlag.rowVersion\r\n });\r\n }\r\n}\r\n","import { ClinicUserListingModel, IClinicUserListingModel, IUserFeatureFlagModel, UserFeatureFlagModel, HospitalOrganizationRelationListingModel, IHospitalOrganizationRelationListingModel, IModel, Model, IOrganizationRelationListingModel, OrganizationRelationListingModel } from '@common/models';\r\nimport { AuthOperationModel, IAuthOperationModel, AuthRoleModel, IAuthRoleModel } from '@common/models/Security';\r\n\r\nexport interface IUserModel extends IModel {\r\n userId: number\r\n firstName: string | undefined\r\n lastName: string | undefined\r\n emailAddress: string | undefined\r\n objectIdentifier: string | undefined\r\n allowSecurityAdmin: boolean\r\n organizationRelationKey: string | undefined\r\n implicitAuthRoles: IAuthRoleModel[]\r\n explicitAuthRoles: IAuthRoleModel[]\r\n authOperations: IAuthOperationModel[]\r\n recentClinics: IClinicUserListingModel[]\r\n organizations: IOrganizationRelationListingModel[]\r\n userFeatureFlags: IUserFeatureFlagModel[]\r\n hospitalOrganizations: IHospitalOrganizationRelationListingModel[]\r\n employeeId: string | undefined\r\n employeeType: string | undefined\r\n\temploymentStatusName: string | undefined\r\n isProfileActive: boolean\r\n\t\r\n}\r\n\r\nexport class UserModel extends Model implements IUserModel {\r\n userId: number;\r\n firstName: string | undefined;\r\n lastName: string | undefined;\r\n emailAddress: string | undefined;\r\n objectIdentifier: string | undefined;\r\n allowSecurityAdmin: boolean;\r\n organizationRelationKey: string | undefined;\r\n implicitAuthRoles: IAuthRoleModel[];\r\n explicitAuthRoles: IAuthRoleModel[];\r\n authOperations: IAuthOperationModel[];\r\n recentClinics: IClinicUserListingModel[];\r\n organizations: IOrganizationRelationListingModel[];\r\n userFeatureFlags: IUserFeatureFlagModel[];\r\n hospitalOrganizations: IHospitalOrganizationRelationListingModel[];\r\n employeeId: string | undefined;\r\n employeeType: string | undefined;\r\n\temploymentStatusName: string | undefined;\r\n isProfileActive: boolean;\r\n\t\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n const {\r\n userId = 0,\r\n firstName = undefined,\r\n lastName = undefined,\r\n emailAddress = undefined,\r\n objectIdentifier = undefined,\r\n allowSecurityAdmin = false,\r\n organizationRelationKey = '',\r\n implicitAuthRoles = [],\r\n explicitAuthRoles = [],\r\n authOperations = [],\r\n recentClinics = [],\r\n organizations = [],\r\n userFeatureFlags = [],\r\n hospitalOrganizations = [],\r\n employeeId = undefined,\r\n employeeType = undefined,\r\n employmentStatusName = undefined,\r\n isProfileActive = false\r\n } = params;\r\n\r\n this.userId = userId;\r\n this.firstName = firstName;\r\n this.lastName = lastName;\r\n this.emailAddress = emailAddress;\r\n this.objectIdentifier = objectIdentifier;\r\n this.allowSecurityAdmin = allowSecurityAdmin;\r\n this.organizationRelationKey = organizationRelationKey;\r\n this.employeeId = employeeId;\r\n this.employeeType = employeeType;\r\n this.employmentStatusName = employmentStatusName;\r\n this.isProfileActive = isProfileActive;\r\n\r\n this.implicitAuthRoles = new Array();\r\n if (implicitAuthRoles && implicitAuthRoles.length) {\r\n implicitAuthRoles.forEach(value => {\r\n this.implicitAuthRoles.push(new AuthRoleModel(value));\r\n })\r\n }\r\n\r\n this.explicitAuthRoles = new Array();\r\n if (explicitAuthRoles && explicitAuthRoles.length) {\r\n explicitAuthRoles.forEach(value => {\r\n this.explicitAuthRoles.push(new AuthRoleModel(value));\r\n })\r\n }\r\n\r\n this.organizations = new Array();\r\n if (organizations && organizations.length) {\r\n organizations.forEach(value => {\r\n this.organizations.push(new OrganizationRelationListingModel(value));\r\n })\r\n }\r\n\r\n this.recentClinics = new Array();\r\n if (recentClinics && recentClinics.length) {\r\n recentClinics.forEach(value => {\r\n this.recentClinics.push(new ClinicUserListingModel(value));\r\n })\r\n }\r\n\r\n this.authOperations = new Array();\r\n if (authOperations && authOperations.length) {\r\n authOperations.forEach(value => {\r\n this.authOperations.push(new AuthOperationModel(value));\r\n });\r\n }\r\n\r\n this.userFeatureFlags = new Array();\r\n if (userFeatureFlags && userFeatureFlags.length) {\r\n userFeatureFlags.forEach(value => {\r\n this.userFeatureFlags.push(new UserFeatureFlagModel(value));\r\n });\r\n }\r\n\r\n this.hospitalOrganizations = new Array();\r\n if (hospitalOrganizations && hospitalOrganizations.length) {\r\n hospitalOrganizations.forEach(value => {\r\n this.hospitalOrganizations.push(new HospitalOrganizationRelationListingModel(value));\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IVaccineAdministeredModel extends IModel {\r\n vaccineAdministeredId: number;\r\n name: string;\r\n}\r\n\r\nexport class VaccineAdministeredModel extends Model implements ModelRecord {\r\n vaccineAdministeredId: number;\r\n name: string;\r\n \r\n constructor(params?: Partial) {\r\n super(params);\r\n this.vaccineAdministeredId = _.defaultTo(params?.vaccineAdministeredId, 0);\r\n this.name = _.defaultTo(params?.name, '');\r\n \r\n }\r\n}\r\n","import { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IVaccineManufacturerModel extends IModel {\r\n vaccineManufacturerId: number;\r\n name: string;\r\n}\r\n\r\nexport class VaccineManufacturerModel extends Model implements ModelRecord {\r\n vaccineManufacturerId: number;\r\n name: string;\r\n \r\n constructor(params?: Partial) {\r\n super(params);\r\n this.vaccineManufacturerId = _.defaultTo(params?.vaccineManufacturerId, 0);\r\n this.name = _.defaultTo(params?.name, '');\r\n \r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IVaccineNameModel extends IModel {\r\n vaccineNameId: number;\r\n name: string;\r\n}\r\n\r\nexport class VaccineNameModel extends Model implements ModelRecord {\r\n vaccineNameId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.vaccineNameId = defaultTo(params?.vaccineNameId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IVaccineVirusTypeModel extends IModel {\r\n vaccineVirusTypeId: number;\r\n name: string;\r\n}\r\n\r\nexport class VaccineVirusTypeModel extends Model implements ModelRecord {\r\n vaccineVirusTypeId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.vaccineVirusTypeId = defaultTo(params?.vaccineVirusTypeId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n\r\n }\r\n}\r\n","import { IModel, IPhotoModel, Model, PhotoModel } from \".\";\r\n\r\nexport interface IVeterinarianSignatureModel extends IModel {\r\n veterinarianSinatureId: number\r\n veterinarianId: number\r\n photoId: number\r\n active: boolean\r\n signature: IPhotoModel\r\n}\r\n\r\nexport class VeterinarianSignatureModel extends Model implements IVeterinarianSignatureModel {\r\n veterinarianSinatureId: number;\r\n veterinarianId: number;\r\n photoId: number;\r\n active: boolean;\r\n signature: IPhotoModel;\r\n\r\n constructor(params: IVeterinarianSignatureModel) {\r\n super(params);\r\n this.veterinarianSinatureId = params.veterinarianSinatureId;\r\n this.veterinarianId = params.veterinarianId;\r\n this.photoId = params.photoId;\r\n this.active = params.active;\r\n this.signature = params.signature && new PhotoModel(params.signature);\r\n }\r\n\r\n}\r\n","import { IModel, Model } from \"./Model\";\r\n\r\nexport interface IVisitCompletionTypeModel extends IModel {\r\n visitCompletionTypeId: number;\r\n name: string;\r\n isComplete: boolean;\r\n isManuallyAssignable: boolean;\r\n businessLineId: number;\r\n}\r\n\r\nexport class VisitCompletionTypeModel extends Model implements IVisitCompletionTypeModel {\r\n visitCompletionTypeId: number;\r\n name: string;\r\n isComplete: boolean;\r\n isManuallyAssignable: boolean;\r\n businessLineId: number;\r\n constructor(params: IVisitCompletionTypeModel) {\r\n super(params);\r\n this.visitCompletionTypeId = params.visitCompletionTypeId;\r\n this.name = params.name;\r\n this.isComplete = params.isComplete;\r\n this.isManuallyAssignable = params.isManuallyAssignable;\r\n this.businessLineId = params.businessLineId;\r\n }\r\n}\r\n","import { ConsentModel, IConsentModel, IModel, IPhotoModel, Model, PhotoModel } from \".\";\r\n\r\nexport interface IVisitConsentModel extends IModel {\r\n visitConsentId: number;\r\n visitId: number;\r\n consentId: number;\r\n clientSignaturePhotoId: number | undefined;\r\n consent: IConsentModel;\r\n clientSignaturePhoto: IPhotoModel;\r\n}\r\n\r\nexport class VisitConsentModel extends Model implements Record {\r\n visitConsentId: number;\r\n visitId: number;\r\n consentId: number;\r\n clientSignaturePhotoId: number | undefined;\r\n consent: ConsentModel;\r\n clientSignaturePhoto: PhotoModel | undefined;\r\n\r\n constructor(params: IVisitConsentModel) {\r\n super(params);\r\n this.visitConsentId = params.visitConsentId;\r\n this.visitId = params.visitId;\r\n this.consentId = params.consentId;\r\n this.clientSignaturePhotoId = params.clientSignaturePhotoId;\r\n this.consent = new ConsentModel(params.consent);\r\n this.clientSignaturePhoto = params.clientSignaturePhoto ? new PhotoModel(params.clientSignaturePhoto) : undefined;\r\n }\r\n\r\n}\r\n","import { DiagnosisModel, IDiagnosisModel } from \"./DiagnosisModel\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IVisitDiagnosisModel extends IModel {\r\n visitDiagnosisId: number;\r\n diagnosisId: number;\r\n visitId: number;\r\n diagnosis: IDiagnosisModel;\r\n}\r\n\r\nexport class VisitDiagnosisModel extends Model implements ModelRecord {\r\n visitDiagnosisId: number;\r\n diagnosisId: number;\r\n visitId: number;\r\n diagnosis: DiagnosisModel;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.visitDiagnosisId = params.visitDiagnosisId ?? 0;\r\n this.diagnosisId = params.diagnosisId ?? 0;\r\n this.visitId = params.visitId ?? 0;\r\n this.diagnosis = new DiagnosisModel(params.diagnosis);\r\n }\r\n}\r\n","import { IModel, Model } from \"./Model\";\r\nimport { DateTime } from \"luxon\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { FollowUpTypeModel } from \"./FollowUpTypeModel\";\r\n\r\nexport interface IVisitNoteModel extends IModel {\r\n visitNoteId: number;\r\n visitId: number;\r\n followUpTypeId: number;\r\n notes: string;\r\n isPrivateNote: boolean;\r\n followUpType: undefined; // FollowUpTypeModel\r\n noteDate: string;\r\n createdUserTitle: string;\r\n createdUserFirstName: string;\r\n createdUserLastName: string;\r\n visitNoteTypeId: number | undefined;\r\n\r\n}\r\n\r\nexport class VisitNoteModel extends Model implements Record {\r\n visitNoteId: number;\r\n visitId: number;\r\n followUpTypeId: number;\r\n notes: string;\r\n isPrivateNote: boolean;\r\n followUpType: FollowUpTypeModel | undefined;\r\n noteDate: DateTime | undefined;\r\n createdUserTitle: string;\r\n createdUserFirstName: string;\r\n createdUserLastName: string;\r\n visitNoteTypeId: number | undefined;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.visitNoteId = defaultTo(params.visitNoteId, 0);\r\n this.visitId = defaultTo(params.visitId, 0);\r\n this.visitNoteTypeId = params.visitNoteTypeId;\r\n this.followUpTypeId = defaultTo(params.followUpTypeId, 1); // default to NoFollowup\r\n this.followUpType = params.followUpType ?\r\n new FollowUpTypeModel(params.followUpType) :\r\n FollowUpTypeModel.defaultFollowUpType; // default to NoFollowup\r\n this.notes = defaultTo(params.notes, \"\");\r\n this.isPrivateNote = params.isPrivateNote ?? false;\r\n this.noteDate = params.noteDate ? DateTime.fromISO(params.noteDate, { zone: \"utc\" }) : undefined;\r\n this.createdUserTitle = defaultTo(params.createdUserTitle, \"\");\r\n this.createdUserFirstName = defaultTo(params.createdUserFirstName, \"\");\r\n this.createdUserLastName = defaultTo(params.createdUserLastName, \"\");\r\n }\r\n\r\n static fromVisit(visitId: number, visitNoteTypeId: number | undefined) {\r\n return new VisitNoteModel({ visitId: visitId, visitNoteTypeId: visitNoteTypeId });\r\n }\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { IVisitSalesItemPublicModel, VisitSalesItemPublicModel } from \".\";\r\n\r\nexport interface IVisitPublicModel {\r\n visitPublicId: string;\r\n visitDate: string;\r\n clientFirstName: string;\r\n clientLastName: string;\r\n clientEmailAddress: string;\r\n clientPhone: string;\r\n clientAddress: string;\r\n clientAddress2: string;\r\n clientCity: string;\r\n clientStateAbbreviation: string;\r\n clientZipCode: string;\r\n clientCounty: string;\r\n petName: string;\r\n petSpeciesName: string;\r\n petGenderName: string;\r\n petBreedName: string;\r\n petBirthDate: string;\r\n petWeight: number;\r\n salesPackageId: number | undefined;\r\n salesPackagePrice: number | undefined;\r\n salesPackageName: string | undefined;\r\n salesPackageDiscountAmount: number | undefined;\r\n salesPackageInvoicePrice: number | undefined;\r\n storeCode: string;\r\n storeName: string;\r\n storeAddress: string;\r\n storeAddress2: string;\r\n storeCity: string;\r\n storeStateAbbreviation: string;\r\n storeZipCode: string;\r\n storePhone: string;\r\n storeSecondaryPhone: string;\r\n storeBrandName: string;\r\n storePartnerName: string;\r\n storePartnerLabel: string;\r\n storeTimezoneName: string;\r\n storeLatitude: number;\r\n storeLongitude: number;\r\n vetFirstName: string;\r\n vetLastName: string;\r\n vetEmail: string;\r\n vetLicenseNumber: string;\r\n vetLicenseStateAbbreviation: string;\r\n vetLicenseExpirationDate: string;\r\n vetLicenseLicenseTypeName: string;\r\n hospitalName: string;\r\n hospitalCode: string;\r\n hospitalPhone: string;\r\n visitSalesItems: IVisitSalesItemPublicModel[];\r\n}\r\n\r\nexport class VisitPublicModel implements Record {\r\n visitPublicId: string;\r\n visitDate: DateTime;\r\n clientFirstName: string;\r\n clientLastName: string;\r\n clientEmailAddress: string;\r\n clientPhone: string;\r\n clientAddress: string;\r\n clientAddress2: string;\r\n clientCity: string;\r\n clientStateAbbreviation: string;\r\n clientZipCode: string;\r\n clientCounty: string;\r\n petName: string;\r\n petSpeciesName: string;\r\n petGenderName: string;\r\n petBreedName: string;\r\n petBirthDate: string; // intentionally left as string so it can be parsed and pretty-printed.\r\n petWeight: number;\r\n salesPackageId: number | undefined;\r\n salesPackagePrice: number | undefined;\r\n salesPackageName: string | undefined;\r\n salesPackageDiscountAmount: number | undefined;\r\n salesPackageInvoicePrice: number | undefined;\r\n storeCode: string;\r\n storeName: string;\r\n storeAddress: string;\r\n storeAddress2: string;\r\n storeCity: string;\r\n storeStateAbbreviation: string;\r\n storeZipCode: string;\r\n storePhone: string;\r\n storeSecondaryPhone: string;\r\n storeBrandName: string;\r\n storePartnerName: string;\r\n storePartnerLabel: string;\r\n storeTimezoneName: string;\r\n storeLatitude: number;\r\n storeLongitude: number;\r\n vetFirstName: string;\r\n vetLastName: string;\r\n vetEmail: string;\r\n vetLicenseNumber: string;\r\n vetLicenseStateAbbreviation: string;\r\n vetLicenseExpirationDate: DateTime;\r\n vetLicenseLicenseTypeName: string;\r\n hospitalName: string;\r\n hospitalCode: string;\r\n hospitalPhone: string;\r\n visitSalesItems: VisitSalesItemPublicModel[];\r\n\r\n constructor(params: IVisitPublicModel) {\r\n this.visitPublicId = params.visitPublicId;\r\n this.visitDate = DateTime.fromISO(params.visitDate, { zone: 'utc' });\r\n this.clientFirstName = params.clientFirstName;\r\n this.clientLastName = params.clientLastName;\r\n this.clientEmailAddress = params.clientEmailAddress;\r\n this.clientPhone = params.clientPhone;\r\n this.clientAddress = params.clientAddress;\r\n this.clientAddress2 = params.clientAddress2;\r\n this.clientCity = params.clientCity;\r\n this.clientStateAbbreviation = params.clientStateAbbreviation;\r\n this.clientZipCode = params.clientZipCode;\r\n this.clientCounty = params.clientCounty;\r\n this.petName = params.petName;\r\n this.petSpeciesName = params.petSpeciesName;\r\n this.petGenderName = params.petGenderName;\r\n this.petBreedName = params.petBreedName;\r\n this.petBirthDate = params.petBirthDate; // intentionally left as string so it can be parsed and pretty-printed.\r\n this.petWeight = params.petWeight;\r\n this.salesPackageId = params.salesPackageId;\r\n this.salesPackageName = params.salesPackageName;\r\n this.salesPackagePrice = params.salesPackagePrice\r\n this.salesPackageDiscountAmount = params.salesPackageDiscountAmount\r\n this.salesPackageInvoicePrice = params.salesPackageInvoicePrice;\r\n this.storeCode = params.storeCode;\r\n this.storeName = params.storeName;\r\n this.storeAddress = params.storeAddress;\r\n this.storeAddress2 = params.storeAddress2;\r\n this.storeCity = params.storeCity;\r\n this.storeStateAbbreviation = params.storeStateAbbreviation;\r\n this.storeZipCode = params.storeZipCode;\r\n this.storePhone = params.storePhone;\r\n this.storeSecondaryPhone = params.storeSecondaryPhone;\r\n this.storeBrandName = params.storeBrandName;\r\n this.storePartnerName = params.storePartnerName;\r\n this.storePartnerLabel = params.storePartnerLabel;\r\n this.storeTimezoneName = params.storeTimezoneName;\r\n this.storeLatitude = params.storeLatitude;\r\n this.storeLongitude = params.storeLongitude;\r\n this.vetFirstName = params.vetFirstName;\r\n this.vetLastName = params.vetLastName;\r\n this.vetEmail = params.vetEmail;\r\n this.vetLicenseNumber = params.vetLicenseNumber;\r\n this.vetLicenseStateAbbreviation = params.vetLicenseStateAbbreviation;\r\n this.vetLicenseExpirationDate = DateTime.fromISO(params.vetLicenseExpirationDate, { zone: 'utc' });\r\n this.vetLicenseLicenseTypeName = params.vetLicenseLicenseTypeName;\r\n this.hospitalName = params.hospitalName;\r\n this.hospitalCode = params.hospitalCode;\r\n this.hospitalPhone = params.hospitalPhone;\r\n this.visitSalesItems = (params.visitSalesItems ?? []).map(vsi => new VisitSalesItemPublicModel(vsi));\r\n }\r\n}\r\n","import { IVisitSalesItemPublicModel, VisitSalesItemPublicModel } from \"./\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface IEstimateSalesItemModel extends IVisitSalesItemPublicModel {\r\n estimateSalesItemId: number,\r\n estimateId: number\r\n salesItemId: number;\r\n salesItemOptionId: number;\r\n parentEstimateSalesItemId: number | undefined;\r\n salesPlanId: number | undefined;\r\n salesPlanName: string | undefined;\r\n}\r\n\r\nexport class EstimateSalesItemModel extends VisitSalesItemPublicModel implements IEstimateSalesItemModel {\r\n estimateSalesItemId: number;\r\n estimateId: number;\r\n salesItemId: number;\r\n salesItemOptionId: number;\r\n parentEstimateSalesItemId: number | undefined;\r\n salesPlanId: number | undefined;\r\n salesPlanName: string | undefined;\r\n\r\n constructor(params: IEstimateSalesItemModel) {\r\n super(params);\r\n this.estimateSalesItemId = params.estimateSalesItemId;\r\n this.estimateId = params.estimateId;\r\n this.salesItemId = defaultTo(params.salesItemId, 0);\r\n this.salesItemOptionId = defaultTo(params.salesItemOptionId, 0);\r\n this.salesPackageId = params.salesPackageId;\r\n this.parentEstimateSalesItemId = params.parentEstimateSalesItemId;\r\n this.salesPlanId = params.salesPlanId;\r\n this.salesPlanName = params.salesPlanName;\r\n }\r\n}\r\n","import { DateTime } from \"luxon\"\r\nimport { IModel, Model, IEstimateSalesItemModel, EstimateSalesItemModel } from \".\"\r\n\r\nexport interface IEstimateModel extends IModel {\r\n estimateId: number,\r\n petId: number,\r\n clinicId: number,\r\n name: string,\r\n dateCreated: string\r\n redeemedDate: string | undefined\r\n estimateSalesItems: IEstimateSalesItemModel[]\r\n salesPackageId: number | undefined\r\n salesPackageName: string | undefined\r\n salesPackagePrice: number | undefined\r\n}\r\n\r\nexport class EstimateModel extends Model implements Record {\r\n estimateId: number\r\n petId: number\r\n clinicId: number\r\n name: string\r\n dateCreated: DateTime\r\n redeemedDate: DateTime | undefined\r\n estimateSalesItems: EstimateSalesItemModel[]\r\n salesPackageId: number | undefined\r\n salesPackageName: string | undefined\r\n salesPackagePrice: number | undefined\r\n\r\n constructor(params: IEstimateModel) {\r\n super(params);\r\n this.estimateId = params.estimateId\r\n this.petId = params.petId\r\n this.clinicId = params.clinicId\r\n this.name = params.name\r\n this.dateCreated = DateTime.fromISO(params.dateCreated, { zone: \"utc\" })\r\n this.redeemedDate = params.redeemedDate ? DateTime.fromISO(params.redeemedDate, { zone: \"utc\" }) : undefined\r\n this.estimateSalesItems = (params.estimateSalesItems ?? []).map(esi => new EstimateSalesItemModel(esi));\r\n this.salesPackageId = params.salesPackageId\r\n this.salesPackageName = params.salesPackageName\r\n this.salesPackagePrice = params.salesPackagePrice\r\n }\r\n}\r\n","export interface IVisitStatusModel {\r\n visitStatusId: number;\r\n name: string;\r\n}\r\n\r\nexport class VisitStatusModel implements IVisitStatusModel {\r\n visitStatusId: number;\r\n name: string;\r\n\r\n constructor(params: Partial = {} as VisitStatusModel) {\r\n const {\r\n visitStatusId = 0,\r\n name = ''\r\n } = params;\r\n\r\n this.visitStatusId = visitStatusId;\r\n this.name = name;\r\n }\r\n}\r\n","import { IStateModel, StateModel} from \".\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, } from \"./Model\";\r\n\r\nexport interface IZipCode extends IModel {\r\n zipCodeId: number;\r\n zipcode: string;\r\n city: string;\r\n county: string;\r\n stateId: number;\r\n state: IStateModel;\r\n timezoneName: string;\r\n}\r\n\r\nexport class ZipCode extends Model implements ModelRecord {\r\n zipCodeId: number;\r\n zipcode: string;\r\n city: string;\r\n county: string;\r\n stateId: number;\r\n state: StateModel;\r\n timezoneName: string;\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.zipCodeId = defaultTo(params?.zipCodeId, 0);\r\n this.zipcode = defaultTo(params?.zipcode, '');\r\n this.city = defaultTo(params?.city, '');\r\n this.county = defaultTo(params?.county, '');\r\n this.stateId = defaultTo(params?.stateId, 0);\r\n this.state = params?.state ? new StateModel(params.state) : new StateModel(); \r\n this.timezoneName = defaultTo(params?.timezoneName, ''); \r\n }\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { IModel, Model } from \"./Model\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport interface IVisitEventModel extends IModel {\r\n checkinTime: string | undefined;\r\n confirmationSMSSent: string | undefined;\r\n consultationStart: string | undefined;\r\n consultation2Start: string | undefined;\r\n vetServicesStart: string | undefined;\r\n checkoutTime: string | undefined;\r\n inProgressStart: string | undefined;\r\n admittedStart: string | undefined;\r\n finalizedStart: string | undefined;\r\n finalizedComplete: string | undefined;\r\n paidStart: string | undefined;\r\n}\r\n\r\nexport class VisitEventModel extends Model implements Record {\r\n checkinTime: DateTime | undefined;\r\n confirmationSMSSent: DateTime | undefined;\r\n consultationStart: DateTime | undefined;\r\n consultation2Start: DateTime | undefined;\r\n vetServicesStart: DateTime | undefined;\r\n checkoutTime: DateTime | undefined;\r\n inProgressStart: DateTime | undefined;\r\n admittedStart: DateTime | undefined;\r\n finalizedStart: DateTime | undefined;\r\n finalizedComplete: DateTime | undefined;\r\n paidStart: DateTime | undefined;\r\n\r\n constructor(params: IVisitEventModel) {\r\n super(params);\r\n this.checkinTime = StringUtility.SanitizeDateTimeISOAsUtc(params.checkinTime)\r\n this.confirmationSMSSent = StringUtility.SanitizeDateTimeISOAsUtc(params.confirmationSMSSent);\r\n this.consultationStart = StringUtility.SanitizeDateTimeISOAsUtc(params.consultationStart);\r\n this.consultation2Start = StringUtility.SanitizeDateTimeISOAsUtc(params.consultation2Start);\r\n this.vetServicesStart = StringUtility.SanitizeDateTimeISOAsUtc(params.vetServicesStart);\r\n this.checkoutTime = StringUtility.SanitizeDateTimeISOAsUtc(params.checkoutTime);\r\n this.inProgressStart = StringUtility.SanitizeDateTimeISOAsUtc(params.inProgressStart);\r\n this.admittedStart = StringUtility.SanitizeDateTimeISOAsUtc(params.admittedStart);\r\n this.finalizedStart = StringUtility.SanitizeDateTimeISOAsUtc(params.finalizedStart);\r\n this.finalizedComplete = StringUtility.SanitizeDateTimeISOAsUtc(params.finalizedComplete);\r\n this.paidStart = StringUtility.SanitizeDateTimeISOAsUtc(params.paidStart);\r\n }\r\n}\r\n","import { ExamObservationModel, IExamObservationModel } from \"./ExamObservationModel\";\r\nimport { IModel, Model } from \"./Model\";\r\n\r\nexport interface IVisitExamResultObservationModel extends IModel {\r\n visitExamResultObservationId: number;\r\n visitExamResultId: number;\r\n examObservationId: number;\r\n examObservation: IExamObservationModel;\r\n}\r\n\r\nexport class VisitExamResultObservationModel extends Model implements IVisitExamResultObservationModel {\r\n visitExamResultObservationId: number;\r\n visitExamResultId: number;\r\n examObservationId: number;\r\n examObservation: ExamObservationModel;\r\n\r\n constructor(params: IVisitExamResultObservationModel) {\r\n super(params);\r\n this.visitExamResultObservationId = params.visitExamResultObservationId;\r\n this.visitExamResultId = params.visitExamResultId;\r\n this.examObservationId = params.examObservationId;\r\n this.examObservation = new ExamObservationModel(params.examObservation)\r\n }\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { ExamCategoryModel, IExamCategoryModel } from \"./ExamCategoryModel\";\r\nimport { ExamResultTypeModel, IExamResultTypeModel } from \"./ExamResultTypeModel\";\r\nimport { IModel, Model } from \"./Model\";\r\nimport { IVisitExamResultObservationModel, VisitExamResultObservationModel } from \"./VisitExamResultObservationModel\";\r\n\r\nexport interface IVisitExamResultModel extends IModel {\r\n visitExamResultId: number;\r\n visitId: number;\r\n examCategoryId: number;\r\n examResultTypeId: number | undefined;\r\n notes: string | undefined;\r\n examCategory: IExamCategoryModel;\r\n examResultType: IExamResultTypeModel | undefined;\r\n observations: IVisitExamResultObservationModel[];\r\n}\r\n\r\nexport class VisitExamResultModel extends Model implements Record {\r\n visitExamResultId: number;\r\n visitId: number;\r\n examCategoryId: number;\r\n examResultTypeId: number | undefined;\r\n notes: string | undefined;\r\n examCategory: ExamCategoryModel;\r\n examResultType: ExamResultTypeModel | undefined;\r\n observations: VisitExamResultObservationModel[];\r\n\r\n constructor(params: IVisitExamResultModel) {\r\n super(params);\r\n this.visitExamResultId = params.visitExamResultId;\r\n this.visitId = params.visitId\r\n this.examCategoryId = params.examCategoryId;\r\n this.examResultTypeId = StringUtility.SanitizeNumber(params.examResultTypeId);\r\n this.notes = StringUtility.SanitizeString(params.notes);\r\n this.examCategory = new ExamCategoryModel(params.examCategory);\r\n this.examResultType = params.examResultType ? new ExamResultTypeModel(params.examResultType) : undefined;\r\n this.observations = (params.observations ?? []).map(o => new VisitExamResultObservationModel(o));\r\n }\r\n}\r\n","import { IModel, Model, ModelRecord } from \"./Model\";\r\n\r\nexport interface IVisitSectionTypeModel extends IModel {\r\n visitSectionTypeId: number;\r\n name: string;\r\n}\r\n\r\nexport class VisitSectionTypeModel extends Model implements ModelRecord {\r\n visitSectionTypeId: number;\r\n name: string;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.visitSectionTypeId = _.defaultTo(params.visitSectionTypeId, 0);\r\n this.name = _.defaultTo(params.name, \"\");\r\n }\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { IVisitSectionTypeModel, VisitSectionTypeModel } from \"./VisitSectionTypeModel\";\r\n\r\nexport interface IVisitSectionVersionModel extends IModel {\r\n visitSectionVersionId: number;\r\n visitSectionTypeId: number;\r\n visitSectionType: IVisitSectionTypeModel;\r\n visitId: number;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n userUpdatedTitle: string;\r\n userUpdatedFirstName: string;\r\n userUpdatedLastName: string;\r\n}\r\n\r\nexport class VisitSectionVersionModel extends Model implements ModelRecord {\r\n visitSectionVersionId: number;\r\n visitSectionTypeId: number;\r\n visitSectionType: VisitSectionTypeModel;\r\n visitId: number;\r\n dateCreated: DateTime;\r\n dateUpdated: DateTime;\r\n userUpdatedTitle: string;\r\n userUpdatedFirstName: string;\r\n userUpdatedLastName: string;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.visitSectionVersionId = _.defaultTo(params.visitSectionVersionId, 0);\r\n this.visitSectionTypeId = _.defaultTo(params.visitSectionTypeId, 0);\r\n this.visitSectionType = new VisitSectionTypeModel(params.visitSectionType ?? {});\r\n this.visitId = _.defaultTo(params.visitId, 0);\r\n this.dateCreated = params.dateCreated ? DateTime.fromISO(params.dateCreated, { zone: \"utc\" }) : DateTime.min();\r\n this.dateUpdated = params.dateUpdated ? DateTime.fromISO(params.dateUpdated, { zone: \"utc\" }) : DateTime.min();\r\n this.userUpdatedTitle = _.defaultTo(params.userUpdatedTitle, \"\");\r\n this.userUpdatedFirstName = _.defaultTo(params.userUpdatedFirstName, \"\");\r\n this.userUpdatedLastName = _.defaultTo(params.userUpdatedLastName, \"\");\r\n }\r\n}\r\n","\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { VisitReferralRecommendationModel } from \"@common/models/VisitReferralRecommendationModel\";\r\n\r\nexport interface IVisitReferralModel extends IModel {\r\n visitReferralId: number;\r\n visitId: number;\r\n assessmentReferralId: number; \r\n isReferred: boolean;\r\n assessmentReferralName: string; \r\n assessmentReferralDescription: string;\r\n assessmentReferralSortOrder: number; \r\n assessmentReferralAttachmentStorageContentId: number | undefined;\r\n recommendations: VisitReferralRecommendationModel[];\r\n}\r\n\r\nexport class VisitReferralModel extends Model implements ModelRecord {\r\n \r\n visitReferralId: number;\r\n visitId: number;\r\n assessmentReferralId: number; \r\n isReferred: boolean;\r\n assessmentReferralName: string; \r\n assessmentReferralDescription: string;\r\n assessmentReferralSortOrder: number; \r\n assessmentReferralAttachmentStorageContentId: number | undefined;\r\n recommendations: VisitReferralRecommendationModel[];\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.visitReferralId = params.visitReferralId ?? 0;\r\n this.visitId = params.visitId ?? 0;\r\n this.assessmentReferralId = params.assessmentReferralId ?? 0;\r\n this.isReferred = _.defaultTo(params.isReferred, false);\r\n this.assessmentReferralName = params.assessmentReferralName ??'';\r\n this.assessmentReferralDescription = params.assessmentReferralDescription ??'';\r\n this.assessmentReferralSortOrder = params.visitReferralId ?? 0;\r\n this.assessmentReferralAttachmentStorageContentId = params.assessmentReferralAttachmentStorageContentId ?? 0;\r\n this.recommendations = params.recommendations ??[]; \r\n }\r\n \r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { ILabOrderModel, IVisitConsentModel, IVisitNoteModel, LabOrderModel, VisitConsentModel, VisitNoteModel, IVisitAttachmentModel, VisitAttachmentModel, IIntakeModel, IntakeModel } from \".\";\r\nimport { AppointmentTypeModel, IAppointmentTypeModel } from \"./AppointmentTypeModel\";\r\nimport { ClientModel, IClientModel } from \"./ClientModel\";\r\nimport { CommunicationType, ReservationAssignmentStatuses, VisitNoteType } from \"./Enums\";\r\nimport { IModel, Model } from \"./Model\";\r\n\r\nimport { IPetModel, PetModel } from \"./PetModel\";\r\nimport { IPhotoModel, PhotoModel } from \"./PhotoModel\";\r\nimport { IReservationModel, ReservationModel } from \"./ReservationModel\";\r\nimport { IStorageContentModel, StorageContentModel } from \"./StorageContentModel\";\r\nimport { IVisitCompletionTypeModel, VisitCompletionTypeModel } from \"./VisitCompletionTypeModel\";\r\nimport { IVisitDiagnosisModel, VisitDiagnosisModel } from \"./VisitDiagnosisModel\";\r\nimport { IVisitEventModel, VisitEventModel } from \"./VisitEventModel\";\r\nimport { IVisitExamResultModel, VisitExamResultModel } from \"./VisitExamResultModel\";\r\nimport { VisitSalesItemModel } from \"./VisitSalesItemModel\";\r\nimport { IVisitStatusModel, VisitStatusModel } from \"./VisitStatusModel\";\r\nimport { IVisitWellnessExamModel, VisitWellnessExamModel } from \"./VisitWellnessExamModel\";\r\nimport { IVisitSectionVersionModel, VisitSectionVersionModel } from \"./VisitSectionVersionModel\";\r\nimport { IVisitAnesthesiaFormModel, VisitAnesthesiaFormModel } from \"./VisitAnesthesiaFormModel\";\r\nimport { HospitalPrescriptionModel, IHospitalPrescriptionModel } from \"./HospitalPrescriptionModel\";\r\nimport { FollowUpAppointmentModel } from \"@common/models/FollowUpAppointmentModel\";\r\nimport { VisitReferralModel } from \"@common/models/VisitReferralModel\";\r\n\r\n\r\nexport interface IVisitModel extends IModel {\r\n visitId: number;\r\n visitPublicId: string | undefined;\r\n cashPayment: number;\r\n checkPayment: number;\r\n clinicId: number;\r\n clinicStoreId: number;\r\n consultationValidationStatusId: number;\r\n consultationHasBeenValidated: boolean;\r\n visitDate: string | undefined;\r\n fleaTickProductId: number | undefined;\r\n hasMicrochip: boolean | undefined;\r\n hasOptedOutOfPackage: boolean;\r\n hasOutsideContact: boolean | undefined;\r\n heartwormProductId: number | undefined;\r\n isExpress: boolean;\r\n isRxOnly: boolean;\r\n isPetNotPresent: boolean | undefined;\r\n isPetPregnant: boolean | undefined;\r\n lastVaccineDate: string | undefined;\r\n lastRabiesDate: string | undefined;\r\n paymentMethodId: number | undefined;\r\n petId: number;\r\n veterinarianSignaturePhotoId: number | undefined;\r\n vetServicesHasBeenValidated: boolean;\r\n vetServicesValidationStatusId: number;\r\n visitCompletionTypeId: number;\r\n visitStatusId: number;\r\n visitSummaryDocumentId: number | undefined;\r\n sMSStatus: number;\r\n hasVetAttestation: boolean;\r\n hasPetAttestation: boolean;\r\n room: string | undefined;\r\n visitWellnessExam: IVisitWellnessExamModel;\r\n visitDiagnoses: IVisitDiagnosisModel[];\r\n reasonForVisit: string | undefined;\r\n visitHistory: string;\r\n visitSubjective: string;\r\n normalResponses: string;\r\n abnormalResponses: string;\r\n unableToExamResponses: string;\r\n freeNonPackageSalesItems: VisitSalesItemModel[]; \r\n addOnSalesItems: VisitSalesItemModel[]; \r\n paidNonPackageSalesItems: VisitSalesItemModel[]; \r\n discountAndRebateSalesItems: VisitSalesItemModel[];\r\n additionalInfoLabels: string[];\r\n // siblings: VisitSiblingModel[]; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n showRabiesDisclaimer: boolean;\r\n vetAssistantFirstLast: string;\r\n brandId: number;\r\n clinicStateId: number;\r\n clinicAllowChangingSingleVisitVet: boolean;\r\n marketId: number;\r\n firstVisitDate: string | undefined;\r\n lastVisitDate: string | undefined;\r\n checkinStart: string | undefined;\r\n consultationStart: string | undefined;\r\n vetServicesStart: string | undefined;\r\n checkoutStart: string | undefined;\r\n clientSignaturePhotoId: number | undefined;\r\n rabiesCertificateDocumentId: number | undefined;\r\n prescriptionDocumentId: number | undefined;\r\n partnerId: number;\r\n visitStatus: IVisitStatusModel;\r\n // consultationValidationStatus: ValidationStatusModel; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n // vetServicesValidationStatus: ValidationStatusModel; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n pet: IPetModel;\r\n client: IClientModel;\r\n visitEvent: IVisitEventModel;\r\n historicalVisitWellnessExams: IVisitWellnessExamModel[] | undefined;\r\n // paymentMethod: PaymentMethodModel; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n visitSalesItems: VisitSalesItemModel[];\r\n veterinarianSignaturePhoto: IPhotoModel | undefined;\r\n clinicVetSignaturePhoto: IPhotoModel | undefined;\r\n clientSignaturePhoto: IPhotoModel | undefined;\r\n visitSummaryDocument: IStorageContentModel | undefined;\r\n rabiesCertificateDocument: IStorageContentModel | undefined;\r\n prescriptionDocument: IStorageContentModel | undefined;\r\n // heartwormProduct: HeartwormProductModel; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n // fleaTickProduct: FleaTickProductModel; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n salesPackageId: number | undefined;\r\n salesPackagePrice: number | undefined;\r\n salesPackageName: string | undefined;\r\n salesPackageDiscountAmount: number | undefined;\r\n salesPackageInvoicePrice: number | undefined;\r\n salesPackageSalesSubCategoryId: number | undefined;\r\n salesPackageSalesSubCategoryName: string;\r\n salesPackageSpeciesId: number | undefined;\r\n salesPackageSpeciesName: string;\r\n salesPackageDisplayName: string;\r\n salesPackageDescription: string;\r\n salesPackageCode: string;\r\n salesPackageHelpPhotoId: number | undefined;\r\n salesPackageSortOrder: number | undefined;\r\n salesPackageExpirationDays: number | undefined;\r\n salesPackageVaccineReminderDefaultDays: number | undefined;\r\n isSalesPackageRefunded: boolean;\r\n visitCompletionType: IVisitCompletionTypeModel;\r\n serviceAmount: number;\r\n productAmount: number;\r\n licenseFeeAmount: number;\r\n vetcoPrescriptionAmount: number;\r\n discountAmount: number;\r\n taxPercentage: number;\r\n subtotalPreDiscountsAmount: number;\r\n subtotalPostDiscountsAmount: number;\r\n taxAmount: number;\r\n refundAmount: number;\r\n taxableTotalAmount: number;\r\n nonTaxableTotalAmount: number;\r\n totalAmount: number;\r\n servicesOnlyDiscountAmount: number;\r\n productsOnlyDiscountAmount: number;\r\n servicesRebateAmount: number | undefined;\r\n productsRebateAmount: number | undefined;\r\n totalRebateAmount: number | undefined;\r\n nonTaxableFeeAmount: number | undefined;\r\n taxableFeeAmount: number | undefined;\r\n totalFeeAmount: number | undefined;\r\n totalAOVAmount: number | undefined;\r\n veterinarianId: number | undefined;\r\n veterinarianFirstName: string;\r\n veterinarianLastName: string;\r\n veterinarianLicenseNumber: string;\r\n veterinarianLicenseStateId: number | undefined;\r\n veterinarianLicenseStateAbbreviation: string;\r\n veterinarianFullName: string;\r\n veterinarianLicenseExpirationDate: string | undefined;\r\n veterinarianEmail: string;\r\n dispensingAuthUserId: number | undefined;\r\n dispensingUserFirstName: string | undefined;\r\n dispensingUserLastName: string | undefined;\r\n thankYouNote: string;\r\n storeStateNote: string;\r\n clientStateNote: string;\r\n visitTagId: number | undefined;\r\n // visitTag: VisitTagModel; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n reservationId: number | undefined;\r\n reservation: IReservationModel | undefined;\r\n examResults: IVisitExamResultModel[] | undefined;\r\n visitNotes: IVisitNoteModel[] | undefined;\r\n referrals: VisitReferralModel[]; \r\n hasEvaluatedAutoRecommendations: boolean;\r\n intakeId: number | undefined;\r\n intake: IIntakeModel;\r\n arrived: string | undefined;\r\n firstCheckIn: string | undefined;\r\n visitStarted: string | undefined;\r\n arrivedWaitingTime: number | undefined;\r\n checkInWaitingTime: number | undefined;\r\n intakeCompletionStatusId: number | undefined;\r\n // intakeCompletionStatus: IntakeCompletionStatusModel; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n consents: IVisitConsentModel[];\r\n needsProactiveFleaTickPrescription: boolean | undefined;\r\n appointmentType: IAppointmentTypeModel | undefined;\r\n notes: string | undefined;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n visitAttachments: IVisitAttachmentModel[];\r\n visitSectionVersions: IVisitSectionVersionModel[];\r\n labOrders: ILabOrderModel[];\r\n anesthesiaForms: IVisitAnesthesiaFormModel[];\r\n hospitalPrescriptions: IHospitalPrescriptionModel[];\r\n isInAdminMode: boolean;\r\n followUpBookingURL: string | undefined;\r\n}\r\n\r\nexport class VisitModel extends Model implements Record {\r\n id: number; // for json-server\r\n visitId: number;\r\n visitPublicId: string | undefined;\r\n cashPayment: number;\r\n checkPayment: number;\r\n clinicId: number;\r\n clinicStoreId: number;\r\n consultationValidationStatusId: number;\r\n consultationHasBeenValidated: boolean;\r\n visitDate: DateTime | undefined;\r\n fleaTickProductId: number | undefined;\r\n hasMicrochip: boolean | undefined;\r\n hasOptedOutOfPackage: boolean;\r\n hasOutsideContact: boolean | undefined;\r\n heartwormProductId: number | undefined;\r\n isExpress: boolean;\r\n isRxOnly: boolean;\r\n isPetNotPresent: boolean | undefined;\r\n isPetPregnant: boolean | undefined;\r\n lastVaccineDate: DateTime | undefined;\r\n lastRabiesDate: DateTime | undefined;\r\n paymentMethodId: number | undefined;\r\n petId: number;\r\n veterinarianSignaturePhotoId: number | undefined;\r\n vetServicesHasBeenValidated: boolean;\r\n vetServicesValidationStatusId: number;\r\n visitCompletionTypeId: number;\r\n visitStatusId: number;\r\n visitSummaryDocumentId: number | undefined;\r\n sMSStatus: number;\r\n hasVetAttestation: boolean;\r\n hasPetAttestation: boolean;\r\n room: string | undefined;\r\n visitWellnessExam: VisitWellnessExamModel;\r\n visitDiagnoses: VisitDiagnosisModel[];\r\n reasonForVisit: string | undefined;\r\n visitHistory: string;\r\n visitSubjective: string;\r\n normalResponses: string;\r\n abnormalResponses: string;\r\n unableToExamResponses: string;\r\n additionalInfoLabels: string[];\r\n showRabiesDisclaimer: boolean;\r\n vetAssistantFirstLast: string;\r\n brandId: number;\r\n clinicStateId: number;\r\n clinicAllowChangingSingleVisitVet: boolean;\r\n marketId: number;\r\n firstVisitDate: DateTime | undefined;\r\n lastVisitDate: DateTime | undefined;\r\n checkinStart: DateTime | undefined;\r\n consultationStart: DateTime | undefined;\r\n vetServicesStart: DateTime | undefined;\r\n checkoutStart: DateTime | undefined;\r\n clientSignaturePhotoId: number | undefined;\r\n rabiesCertificateDocumentId: number | undefined;\r\n prescriptionDocumentId: number | undefined;\r\n partnerId: number;\r\n visitStatus: VisitStatusModel;\r\n pet: PetModel;\r\n client: ClientModel;\r\n visitEvent: VisitEventModel;\r\n historicalVisitWellnessExams: VisitWellnessExamModel[];\r\n visitSalesItems: VisitSalesItemModel[];\r\n veterinarianSignaturePhoto: PhotoModel | undefined;\r\n clinicVetSignaturePhoto: PhotoModel | undefined;\r\n clientSignaturePhoto: PhotoModel | undefined;\r\n visitSummaryDocument: StorageContentModel | undefined;\r\n rabiesCertificateDocument: StorageContentModel | undefined;\r\n prescriptionDocument: StorageContentModel | undefined;\r\n salesPackageId: number | undefined;\r\n salesPackagePrice: number | undefined;\r\n salesPackageName: string | undefined;\r\n salesPackageDiscountAmount: number | undefined;\r\n salesPackageInvoicePrice: number | undefined;\r\n salesPackageSalesSubCategoryId: number | undefined;\r\n salesPackageSalesSubCategoryName: string;\r\n salesPackageSpeciesId: number | undefined;\r\n salesPackageSpeciesName: string;\r\n salesPackageDisplayName: string;\r\n salesPackageDescription: string;\r\n salesPackageCode: string;\r\n salesPackageHelpPhotoId: number | undefined;\r\n salesPackageSortOrder: number | undefined;\r\n salesPackageExpirationDays: number | undefined;\r\n salesPackageVaccineReminderDefaultDays: number | undefined;\r\n isSalesPackageRefunded: boolean;\r\n visitCompletionType: VisitCompletionTypeModel;\r\n serviceAmount: number;\r\n productAmount: number;\r\n licenseFeeAmount: number;\r\n vetcoPrescriptionAmount: number;\r\n discountAmount: number;\r\n taxPercentage: number;\r\n subtotalPreDiscountsAmount: number;\r\n subtotalPostDiscountsAmount: number;\r\n taxAmount: number;\r\n refundAmount: number;\r\n taxableTotalAmount: number;\r\n nonTaxableTotalAmount: number;\r\n totalAmount: number;\r\n servicesOnlyDiscountAmount: number;\r\n productsOnlyDiscountAmount: number;\r\n servicesRebateAmount: number | undefined;\r\n productsRebateAmount: number | undefined;\r\n totalRebateAmount: number | undefined;\r\n nonTaxableFeeAmount: number | undefined;\r\n taxableFeeAmount: number | undefined;\r\n totalFeeAmount: number | undefined;\r\n totalAOVAmount: number | undefined;\r\n veterinarianId: number | undefined;\r\n veterinarianFirstName: string;\r\n veterinarianLastName: string;\r\n veterinarianLicenseNumber: string;\r\n veterinarianLicenseStateId: number | undefined;\r\n veterinarianLicenseStateAbbreviation: string;\r\n veterinarianFullName: string;\r\n veterinarianLicenseExpirationDate: DateTime | undefined;\r\n veterinarianEmail: string;\r\n dispensingAuthUserId: number | undefined;\r\n dispensingUserFirstName: string | undefined;\r\n dispensingUserLastName: string | undefined;\r\n thankYouNote: string;\r\n storeStateNote: string;\r\n clientStateNote: string;\r\n visitTagId: number | undefined;\r\n reservationId: number | undefined;\r\n reservation: ReservationModel | undefined;\r\n examResults: VisitExamResultModel[];\r\n visitNotes: VisitNoteModel[] | undefined;\r\n hasEvaluatedAutoRecommendations: boolean;\r\n intakeId: number | undefined;\r\n intake: IntakeModel;\r\n arrived: DateTime | undefined;\r\n firstCheckIn: DateTime | undefined;\r\n visitStarted: DateTime | undefined;\r\n arrivedWaitingTime: number | undefined;\r\n checkInWaitingTime: number | undefined;\r\n intakeCompletionStatusId: number | undefined;\r\n needsProactiveFleaTickPrescription: boolean | undefined;\r\n appointmentType: AppointmentTypeModel | undefined;\r\n notes: string | undefined;\r\n dateCreated: DateTime;\r\n dateUpdated: DateTime;\r\n visitAttachments: VisitAttachmentModel[];\r\n consents: VisitConsentModel[];\r\n visitSectionVersions: VisitSectionVersionModel[];\r\n labOrders: LabOrderModel[];\r\n anesthesiaForms: VisitAnesthesiaFormModel[];\r\n hospitalPrescriptions: HospitalPrescriptionModel[];\r\n isInAdminMode: boolean;\r\n freeNonPackageSalesItems: VisitSalesItemModel[];\r\n addOnSalesItems: VisitSalesItemModel[];\r\n paidNonPackageSalesItems: VisitSalesItemModel[];\r\n discountAndRebateSalesItems: VisitSalesItemModel[];\r\n referrals: VisitReferralModel[];\r\n followUpBookingURL: string | undefined;\r\n constructor(params: IVisitModel) {\r\n super(params);\r\n\r\n this.visitId = params.visitId ?? 0\r\n this.visitPublicId = StringUtility.SanitizeString(params.visitPublicId)\r\n this.cashPayment = params.cashPayment ?? 0\r\n this.checkPayment = params.checkPayment ?? 0\r\n this.clinicId = params.clinicId ?? 0\r\n this.clinicStoreId = params.clinicStoreId ?? 0\r\n this.consultationHasBeenValidated = params.consultationHasBeenValidated ?? false\r\n this.consultationValidationStatusId = params.consultationValidationStatusId ?? 0\r\n this.visitDate = StringUtility.SanitizeDateTimeISOAsUtc(params.visitDate)\r\n this.fleaTickProductId = StringUtility.SanitizeNumber(params.fleaTickProductId)\r\n this.hasMicrochip = params.hasMicrochip ?? false\r\n this.hasOptedOutOfPackage = params.hasOptedOutOfPackage ?? false\r\n this.hasOutsideContact = StringUtility.SanitizeBool(params.hasOutsideContact)\r\n this.heartwormProductId = StringUtility.SanitizeNumber(params.heartwormProductId)\r\n this.isExpress = params.isExpress ?? false\r\n this.isRxOnly = params.isRxOnly ?? false\r\n this.isPetNotPresent = StringUtility.SanitizeBool(params.isPetNotPresent)\r\n this.isPetPregnant = StringUtility.SanitizeBool(params.isPetPregnant)\r\n this.lastVaccineDate = StringUtility.SanitizeDateTimeISO(params.lastVaccineDate)\r\n this.lastRabiesDate = StringUtility.SanitizeDateTimeISO(params.lastRabiesDate)\r\n this.paymentMethodId = StringUtility.SanitizeNumber(params.paymentMethodId)\r\n this.petId = params.petId ?? 0\r\n this.veterinarianSignaturePhotoId = StringUtility.SanitizeNumber(params.veterinarianSignaturePhotoId)\r\n this.vetServicesHasBeenValidated = params.vetServicesHasBeenValidated ?? false\r\n this.vetServicesValidationStatusId = params.vetServicesValidationStatusId ?? 0\r\n this.visitCompletionTypeId = params.visitCompletionTypeId ?? 0\r\n this.visitStatusId = params.visitStatusId ?? 0\r\n this.sMSStatus = params.sMSStatus ?? 0\r\n this.hasVetAttestation = params.hasVetAttestation ?? false\r\n this.hasPetAttestation = params.hasPetAttestation ?? false\r\n this.room = StringUtility.SanitizeString(params.room)\r\n this.visitWellnessExam = new VisitWellnessExamModel(params.visitWellnessExam)\r\n this.visitDiagnoses = (params.visitDiagnoses ?? []).map(vd => new VisitDiagnosisModel(vd))\r\n this.reasonForVisit = StringUtility.SanitizeString(params.reasonForVisit)\r\n this.notes = StringUtility.SanitizeString(params.notes)\r\n\r\n this.visitHistory = params.visitHistory\r\n this.visitSubjective = params.visitSubjective\r\n this.normalResponses = params.normalResponses\r\n this.abnormalResponses = params.abnormalResponses\r\n this.unableToExamResponses = params.unableToExamResponses\r\n this.additionalInfoLabels = params.additionalInfoLabels\r\n this.showRabiesDisclaimer = params.showRabiesDisclaimer\r\n this.vetAssistantFirstLast = params.vetAssistantFirstLast\r\n this.id = params.visitId\r\n this.brandId = params.brandId\r\n this.clinicStateId = params.clinicStateId\r\n this.clinicAllowChangingSingleVisitVet = params.clinicAllowChangingSingleVisitVet\r\n this.marketId = params.marketId\r\n\r\n // vist start event times\r\n this.firstVisitDate = StringUtility.SanitizeDateTimeISO(params.firstVisitDate)\r\n this.lastVisitDate = StringUtility.SanitizeDateTimeISO(params.lastVisitDate)\r\n this.checkinStart = StringUtility.SanitizeDateTimeISO(params.checkinStart)\r\n this.consultationStart = StringUtility.SanitizeDateTimeISO(params.consultationStart)\r\n this.vetServicesStart = StringUtility.SanitizeDateTimeISO(params.vetServicesStart)\r\n this.checkoutStart = StringUtility.SanitizeDateTimeISO(params.checkoutStart)\r\n\r\n this.rabiesCertificateDocumentId = StringUtility.SanitizeNumber(params.rabiesCertificateDocumentId)\r\n this.prescriptionDocumentId = StringUtility.SanitizeNumber(params.prescriptionDocumentId)\r\n this.partnerId = params.partnerId\r\n this.visitStatus = new VisitStatusModel(params.visitStatus)\r\n this.pet = new PetModel(params.pet)\r\n this.client = new ClientModel(params.client)\r\n this.visitEvent = new VisitEventModel(params.visitEvent)\r\n this.historicalVisitWellnessExams = (params.historicalVisitWellnessExams ?? []).map(e => new VisitWellnessExamModel(e));\r\n this.visitSalesItems = (params.visitSalesItems ?? []).map(si => new VisitSalesItemModel(si, this.visitDate));\r\n this.veterinarianSignaturePhoto = params.veterinarianSignaturePhoto ? new PhotoModel(params.veterinarianSignaturePhoto) : undefined\r\n this.clinicVetSignaturePhoto = params.clinicVetSignaturePhoto ? new PhotoModel(params.clinicVetSignaturePhoto) : undefined\r\n this.clientSignaturePhoto = params.clientSignaturePhoto ? new PhotoModel(params.clientSignaturePhoto) : undefined\r\n this.visitSummaryDocument = params.visitSummaryDocument ? new StorageContentModel(params.visitSummaryDocument) : undefined\r\n this.rabiesCertificateDocument = params.rabiesCertificateDocument ? new StorageContentModel(params.rabiesCertificateDocument) : undefined\r\n this.prescriptionDocument = params.prescriptionDocument ? new StorageContentModel(params.prescriptionDocument) : undefined\r\n this.salesPackageId = StringUtility.SanitizeNumber(params.salesPackageId)\r\n this.salesPackagePrice = StringUtility.SanitizeNumber(params.salesPackagePrice)\r\n this.salesPackageDiscountAmount = params.salesPackageDiscountAmount\r\n this.salesPackageInvoicePrice = params.salesPackageInvoicePrice;\r\n this.salesPackageName = params.salesPackageName\r\n this.salesPackageSalesSubCategoryId = StringUtility.SanitizeNumber(params.salesPackageSalesSubCategoryId)\r\n this.salesPackageSalesSubCategoryName = params.salesPackageSalesSubCategoryName\r\n this.salesPackageSpeciesId = StringUtility.SanitizeNumber(params.salesPackageSpeciesId)\r\n this.salesPackageSpeciesName = params.salesPackageSpeciesName\r\n this.salesPackageDisplayName = params.salesPackageDisplayName\r\n this.salesPackageDescription = params.salesPackageDescription\r\n this.salesPackageCode = params.salesPackageCode\r\n this.salesPackageHelpPhotoId = StringUtility.SanitizeNumber(params.salesPackageHelpPhotoId)\r\n this.salesPackageSortOrder = StringUtility.SanitizeNumber(params.salesPackageSortOrder)\r\n this.salesPackageExpirationDays = StringUtility.SanitizeNumber(params.salesPackageExpirationDays)\r\n this.salesPackageVaccineReminderDefaultDays = StringUtility.SanitizeNumber(params.salesPackageVaccineReminderDefaultDays)\r\n this.isSalesPackageRefunded = params.isSalesPackageRefunded\r\n this.visitCompletionType = new VisitCompletionTypeModel(params.visitCompletionType)\r\n this.serviceAmount = params.serviceAmount\r\n this.productAmount = params.productAmount\r\n this.licenseFeeAmount = params.licenseFeeAmount\r\n this.vetcoPrescriptionAmount = params.vetcoPrescriptionAmount\r\n this.discountAmount = params.discountAmount\r\n this.taxPercentage = params.taxPercentage\r\n this.subtotalPreDiscountsAmount = params.subtotalPreDiscountsAmount\r\n this.subtotalPostDiscountsAmount = params.subtotalPostDiscountsAmount\r\n this.taxAmount = params.taxAmount\r\n this.refundAmount = params.refundAmount\r\n this.taxableTotalAmount = params.taxableTotalAmount\r\n this.nonTaxableTotalAmount = params.nonTaxableTotalAmount\r\n this.totalAmount = params.totalAmount\r\n this.servicesOnlyDiscountAmount = params.servicesOnlyDiscountAmount\r\n this.productsOnlyDiscountAmount = params.productsOnlyDiscountAmount\r\n this.servicesRebateAmount = StringUtility.SanitizeNumber(params.servicesRebateAmount)\r\n this.productsRebateAmount = StringUtility.SanitizeNumber(params.productsRebateAmount)\r\n this.totalRebateAmount = StringUtility.SanitizeNumber(params.totalRebateAmount)\r\n this.nonTaxableFeeAmount = StringUtility.SanitizeNumber(params.nonTaxableFeeAmount)\r\n this.taxableFeeAmount = StringUtility.SanitizeNumber(params.taxableFeeAmount)\r\n this.totalFeeAmount = StringUtility.SanitizeNumber(params.totalFeeAmount)\r\n this.totalAOVAmount = StringUtility.SanitizeNumber(params.totalAOVAmount)\r\n this.veterinarianId = StringUtility.SanitizeNumber(params.veterinarianId)\r\n this.veterinarianFirstName = params.veterinarianFirstName\r\n this.veterinarianLastName = params.veterinarianLastName\r\n this.veterinarianLicenseNumber = params.veterinarianLicenseNumber\r\n this.veterinarianLicenseStateId = StringUtility.SanitizeNumber(params.veterinarianLicenseStateId)\r\n this.veterinarianLicenseStateAbbreviation = params.veterinarianLicenseStateAbbreviation\r\n this.veterinarianFullName = params.veterinarianFullName\r\n this.veterinarianLicenseExpirationDate = StringUtility.SanitizeDateTimeISO(params.veterinarianLicenseExpirationDate)\r\n this.veterinarianEmail = params.veterinarianEmail\r\n this.dispensingAuthUserId = StringUtility.SanitizeNumber(params.dispensingAuthUserId)\r\n this.dispensingUserFirstName = StringUtility.SanitizeString(params.dispensingUserFirstName)\r\n this.dispensingUserLastName = StringUtility.SanitizeString(params.dispensingUserLastName)\r\n this.thankYouNote = params.thankYouNote\r\n this.storeStateNote = params.storeStateNote\r\n this.clientStateNote = params.clientStateNote\r\n this.visitTagId = StringUtility.SanitizeNumber(params.visitTagId)\r\n this.reservationId = StringUtility.SanitizeNumber(params.reservationId)\r\n this.reservation = params.reservation ? new ReservationModel(params.reservation) : undefined;\r\n this.examResults = (params.examResults ?? []).map(e => new VisitExamResultModel(e));\r\n this.visitNotes = (params.visitNotes ?? []).map(n => new VisitNoteModel(n))\r\n this.hasEvaluatedAutoRecommendations = params.hasEvaluatedAutoRecommendations\r\n this.intakeId = StringUtility.SanitizeNumber(params.intakeId)\r\n this.intake = new IntakeModel(params.intake)\r\n this.arrived = StringUtility.SanitizeDateTimeISO(params.arrived)\r\n this.firstCheckIn = StringUtility.SanitizeDateTimeISO(params.firstCheckIn)\r\n this.visitStarted = StringUtility.SanitizeDateTimeISO(params.visitStarted)\r\n this.arrivedWaitingTime = StringUtility.SanitizeNumber(params.arrivedWaitingTime)\r\n this.checkInWaitingTime = StringUtility.SanitizeNumber(params.checkInWaitingTime)\r\n this.intakeCompletionStatusId = StringUtility.SanitizeNumber(params.intakeCompletionStatusId)\r\n this.needsProactiveFleaTickPrescription = StringUtility.SanitizeBool(params.needsProactiveFleaTickPrescription)\r\n this.appointmentType = params.appointmentType ? new AppointmentTypeModel(params.appointmentType) : undefined;\r\n this.reasonForVisit = StringUtility.SanitizeString(params.reasonForVisit);\r\n this.notes = StringUtility.SanitizeString(params.notes);\r\n this.dateCreated = DateTime.fromISO(params.dateCreated, { zone: \"utc\" });\r\n this.dateUpdated = DateTime.fromISO(params.dateUpdated, { zone: \"utc\" });\r\n this.visitAttachments = (params.visitAttachments ?? []).map(v => new VisitAttachmentModel(v));\r\n this.consents = (params.consents ?? []).map(c => new VisitConsentModel(c));\r\n this.visitSectionVersions = (params.visitSectionVersions ?? []).map(vsv => new VisitSectionVersionModel(vsv));\r\n this.labOrders = (params.labOrders ?? []).map(lo => new LabOrderModel(lo));\r\n this.anesthesiaForms = (params.anesthesiaForms ?? []).map(af => new VisitAnesthesiaFormModel(af));\r\n this.hospitalPrescriptions = (params.hospitalPrescriptions ?? []).map(hp => new HospitalPrescriptionModel(hp));\r\n this.isInAdminMode = params.isInAdminMode;\r\n this.freeNonPackageSalesItems = (params.freeNonPackageSalesItems ?? []).map(si => new VisitSalesItemModel(si, this.visitDate));\r\n this.addOnSalesItems = (params.addOnSalesItems ?? []).map(si => new VisitSalesItemModel(si, this.visitDate));\r\n this.paidNonPackageSalesItems = (params.paidNonPackageSalesItems ?? []).map(si => new VisitSalesItemModel(si, this.visitDate));\r\n this.discountAndRebateSalesItems = (params.discountAndRebateSalesItems ?? []).map(si => new VisitSalesItemModel(si, this.visitDate));\r\n this.referrals = (params.referrals ?? []).map(rf => new VisitReferralModel(rf));\r\n this.followUpBookingURL=params.followUpBookingURL;\r\n }\r\n \r\n\r\n filterVisitNotesByVisitNoteType = (visitNoteType: VisitNoteType | undefined): VisitNoteModel[] | undefined => {\r\n return this.visitNotes?.filter((v) => v.visitNoteTypeId == visitNoteType);\r\n }\r\n\r\n hasVisitSummary = () =>\r\n this.visitSalesItems.some(vsi => vsi.salesItemCommunicationTypeId === CommunicationType.VisitSummary);\r\n\r\n hasPrescription = () =>\r\n this.visitSalesItems.some(vsi => vsi.salesItemCommunicationTypeId === CommunicationType.Prescription);\r\n\r\n hasRabiesCertificate = () =>\r\n this.visitSalesItems.some(vsi => vsi.salesItemCommunicationTypeId === CommunicationType.RabiesCertificate);\r\n\r\n hasDischargeInstructions = () =>\r\n this.visitWellnessExam.dischargeNotes !== undefined || (this.visitNotes ?? []).some(vn => vn.visitNoteTypeId === VisitNoteType.Discharge);\r\n\r\n hasAnesthesiaMonitoring = () =>\r\n this.visitSalesItems.some(vsi => vsi.salesItemCommunicationTypeId === CommunicationType.AnesthesiaMonitoring);\r\n\r\n isVetTechExam = () => {\r\n return ReservationAssignmentStatuses.Assigned_Technician === this.reservation?.reservationAssignmentStatusId;\r\n }\r\n\r\n hasHospitalPrescriptions = () => this.hospitalPrescriptions.length > 0 || this.isRxOnly === true\r\n\r\n getFollowUpAppointmentInfo = () =>{\r\n return new FollowUpAppointmentModel({\r\n followUpBookingURL:this.followUpBookingURL!,\r\n clinetFirstname:this.client?.firstName!,\r\n clinetLastName:this.client?.lastName!,\r\n clinetCellPhone:this.client?.cellPhone!,\r\n clinetEmailAddress:this.client?.emailAddress!,\r\n petname:this.pet?.name!,\r\n petspecies:this.pet?.species?.name!\r\n ,store_number:\"\",\r\n clinicZipCode:\"\",\r\n isreturningcustomer:\"true\"\r\n })\r\n }\r\n}\r\n","import { Model, IModel, ModelRecord } from \"./Model\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface IConsentTypeModel extends IModel {\r\n consentTypeId: number,\r\n authApplicationId: number,\r\n name: string\r\n consentTypePublicId: string\r\n sortOrder: number,\r\n}\r\n\r\nexport class ConsentTypeModel extends Model implements ModelRecord {\r\n consentTypeId: number;\r\n authApplicationId: number;\r\n name: string;\r\n consentTypePublicId: string;\r\n sortOrder: number;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.consentTypeId = defaultTo(params?.consentTypeId, 0);\r\n this.authApplicationId = defaultTo(params?.authApplicationId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.consentTypePublicId = defaultTo(params?.consentTypePublicId, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model } from \"./Model\";\r\nimport { SalesItemListingModel } from \"./SalesItemListingModel\";\r\n\r\nexport interface IRabiesInformationContentModel extends IModel {\r\n rabiesInformationContentId: number;\r\n rabiesInformationId: number;\r\n salesItemId: number;\r\n salesItem: SalesItemListingModel;\r\n}\r\n\r\nexport class RabiesInformationContentModel extends Model implements IRabiesInformationContentModel {\r\n rabiesInformationContentId: number;\r\n rabiesInformationId: number;\r\n salesItemId: number;\r\n salesItem: SalesItemListingModel;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.rabiesInformationContentId = defaultTo(params?.rabiesInformationContentId, 0);\r\n this.rabiesInformationId = defaultTo(params?.rabiesInformationId, 0);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.salesItem = defaultTo(params?.salesItem, new SalesItemListingModel());\r\n }\r\n}\r\n","import { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { defaultTo, map, orderBy } from \"lodash\";\r\nimport { IRabiesInformationContentModel, RabiesInformationContentModel } from \"./RabiesInformationContentModel\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport interface IRabiesInformationModel extends IModel {\r\n rabiesInformationId: number;\r\n vaccineAdministeredName: string;\r\n vaccineManufacturerName: string;\r\n vaccineName: string;\r\n vaccineVirusTypeName: string;\r\n fullName: string;\r\n contents: IRabiesInformationContentModel[];\r\n serialNumber: string;\r\n lotNumber: string;\r\n expirationDate: string;\r\n addNewLotNumber: boolean;\r\n}\r\n\r\nexport class RabiesInformationModel extends Model implements ModelRecord{\r\n rabiesInformationId: number;\r\n vaccineAdministeredName: string;\r\n vaccineManufacturerName: string;\r\n vaccineName: string;\r\n vaccineVirusTypeName: string;\r\n fullName: string;\r\n contents: IRabiesInformationContentModel[] = [];\r\n serialNumber: string;\r\n lotNumber: string;\r\n expirationDate: string;\r\n addNewLotNumber: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params)\r\n\r\n this.rabiesInformationId = defaultTo(params?.rabiesInformationId, 0);\r\n this.vaccineAdministeredName = defaultTo(params?.vaccineAdministeredName, \"\")\r\n this.vaccineManufacturerName = defaultTo(params?.vaccineManufacturerName, \"\")\r\n this.vaccineName = defaultTo(params?.vaccineName, \"\");\r\n this.vaccineVirusTypeName = defaultTo(params?.vaccineVirusTypeName, \"\")\r\n this.fullName = defaultTo(params?.fullName, \"\")\r\n this.serialNumber = defaultTo(params?.serialNumber, \"\")\r\n this.lotNumber = defaultTo(params?.lotNumber, \"\")\r\n this.expirationDate = defaultTo(params?.expirationDate, new Date().toISOString().split('T')[0])\r\n this.addNewLotNumber = defaultTo(params?.addNewLotNumber, false)\r\n map(orderBy(params?.contents, v => v.rabiesInformationContentId), (content) => { this.contents.push(new RabiesInformationContentModel(content)) });\r\n }\r\n}\r\n","import { IModel, Model, ModelRecord } from \"@common/models\";\r\nimport { defaultTo } from \"lodash\";\r\n\r\nexport interface IClinicCancellationReasonModel extends IModel {\r\n clinicCancellationReasonId: number;\r\n name: string;\r\n sortOrder: number;\r\n isManuallyAssignable: boolean;\r\n}\r\n\r\nexport class ClinicCancellationReasonModel extends Model implements ModelRecord{\r\n clinicCancellationReasonId: number;\r\n name: string;\r\n sortOrder: number;\r\n isManuallyAssignable: boolean;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.clinicCancellationReasonId = defaultTo(params?.clinicCancellationReasonId, 0);\r\n this.name = defaultTo(params?.name, '');\r\n this.sortOrder = defaultTo(params?.sortOrder, 0);\r\n this.isManuallyAssignable = defaultTo(params?.isManuallyAssignable, false);\r\n }\r\n\r\n}\r\n","import { IModel, Model, ModelRecord } from \"@common/models/Model\";\r\n\r\nexport interface IVisitTag extends IModel {\r\n\tname: string; // \"9:56 AM\";\r\n\tsortOrder: number; // 380;\r\n\tvisitTagId: number; // 616;\r\n}\r\n\r\nexport class VisitTagModel extends Model implements ModelRecord {\r\n\tname: string; // \"9:56 AM\";\r\n\tsortOrder: number; // 380;\r\n\tvisitTagId: number; // 616;\r\n\r\n\tconstructor(params: Partial) {\r\n\t\tsuper(params);\r\n\t\tthis.name = _.defaultTo(params.name, \"\");\r\n\t\tthis.rowVersion = _.defaultTo(params.rowVersion, \"\");\r\n\t\tthis.sortOrder = _.defaultTo(params.sortOrder, 0);\r\n\t\tthis.visitTagId = _.defaultTo(params.visitTagId, 0);\r\n\t}\r\n}\r\n","import { IModel, Model } from \"@common/models/Model\";\r\n\r\nexport interface IReminderSourceModel extends IModel {\r\n reminderSourceId: number;\r\n name: string;\r\n}\r\n\r\nexport class ReminderSourceModel extends Model implements IReminderSourceModel {\r\n reminderSourceId: number;\r\n name: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n\r\n this.reminderSourceId = _.defaultTo(params?.reminderSourceId, 0);\r\n this.name = _.defaultTo(params?.name, \"\");\r\n }\r\n}\r\n","import { IModel, Model } from \"@common/models/Model\";\r\n\r\nexport interface IReminderDeactivationReasonModel extends IModel {\r\n reminderDeactivationReasonId: number;\r\n name: string;\r\n}\r\n\r\nexport class ReminderDeactivationReasonModel extends Model implements IReminderDeactivationReasonModel\r\n{\r\n reminderDeactivationReasonId: number;\r\n name: string;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n\r\n this.reminderDeactivationReasonId = _.defaultTo(params?.reminderDeactivationReasonId, 0);\r\n this.name = _.defaultTo(params.name, \"\");\r\n }\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { CommunicationTypeModel, ICommunicationTypeModel, IOrganizationListingModel, OrganizationListingModel, IStateModel, BrandModel, BreedModel, ClinicRoleModel, ClinicRoleTypeModel, IClinicRoleTypeModel, ExamObservationModel, IExamObservationModel, ExamResultTypeModel, IExamResultTypeModel, FeatureFlagModel, IFeatureFlagModel, GenderModel, IGenderModel, ILicenseTypeModel, LicenseTypeModel, PartnerModel, IPetAlertModel, PetAlertModel, IPetColorModel, PetColorModel, IReferralTypeModel, ReferralTypeModel, IRelationshipType, RelationshipTypeModel, IScheduleBlockTypeModel, ISpeciesModel, SpeciesModel, StateModel, ITemplateModel, TemplateModel, ITemplateTypeModel, TemplateTypeModel, IVisitCompletionTypeModel, VisitCompletionTypeModel, IVisitStatusModel, VisitStatusModel, IBrandModel, IPartnerModel, IBreedModel, IPronounModel, IExamCategoryModel, IClinicRoleModel, IDiagnosisModel, DiagnosisModel, RecommendationTypeModel, AutoRecommendationTypeModel, AssessmentReferralModel, IPaymentMethodModel, ISalesSubCategoryModel, SalesSubCategoryModel, BusinessLineModel, IBusinessLineModel, QuestionTypeModel, IOrganizationVersionModel, OrganizationVersionModel, IConsentModel, ConsentModel, ISalesItemAttributeTypeModel, SalesItemAttributeTypeModel, ISalesItemAttributeProcessingTypeModel, SalesItemAttributeProcessingTypeModel, ISalesItemTypeModel, SalesItemTypeModel, IDiscountTypeModel, DiscountTypeModel, IAutoAddToVisitTypeModel, AutoAddToVisitTypeModel, IPrescriptionLabelModel, PrescriptionLabelModel, IAdditionalInfoLabelModel, AdditionalInfoLabelModel, IPrescriptionEventTypeModel, PrescriptionEventTypeModel, IPrescriptionFulfillmentModel, PrescriptionFulfillmentModel, IPrescriptionStatusModel, PrescriptionStatusModel, TraitModel, ITraitModel, IUnitOfMeasureModel, UnitOfMeasureModel, ICallCodeModel, ICallOriginModel, CallOriginModel, CallCodeModel, SalesCategoryModel, ISalesCategoryModel, IVaccineNameModel, VaccineNameModel, IVaccineManufacturerModel, IVaccineVirusTypeModel, IVaccineAdministeredModel, VaccineManufacturerModel, VaccineVirusTypeModel, VaccineAdministeredModel, MedicationTypeModel, IMedicationTypeModel, schedule, ScheduleBlockTypeModel, ScheduleBlockTypeUIModel, InvoiceDiscrepancyReasonModel, IInvoiceDiscrepancyReasonModel, IPrescriptionPharmacyModel, PrescriptionPharmacyModel } from \".\";\r\nimport { AuthOperationModel, AuthRoleModel, IAuthOperationModel, IAuthRoleModel } from \"./Security\";\r\nimport { AuthApplicationKeys, AuthOperationRoleNames, BusinessLineEnum, EntityScheduleType } from \"./Enums\";\r\nimport { PronounModel } from \"./PronounModel\";\r\nimport { ExamCategoryModel } from \"./ExamCategoryModel\";\r\nimport { ClinicTaskTypeModel, IClinicTaskTypeModel } from \"./ClinicTaskTypeModel\";\r\nimport { ISelectOption } from \"@common/components/forms\";\r\nimport { orderBy } from \"lodash\";\r\nimport { PaymentMethodModel } from \"./PaymentMethodModel\";\r\nimport { ConsentTypeModel, IConsentTypeModel } from \"./ConsentTypeModel\";\r\nimport { HospitalPrescriptionRefillStatusModel, IHospitalPrescriptionRefillStatusModel } from \"./HospitalPrescriptionRefillStatusModel\";\r\nimport { AuthOperationUINames } from \"./Enums/AuthOperationStrings\";\r\nimport { HospitalPrescriptionStatusModel, IHospitalPrescriptionStatusModel } from \"./HospitalPrescriptionStatusModel\";\r\nimport { IRabiesInformationModel, RabiesInformationModel } from \"./RabiesInformationModel\";\r\nimport { ClinicCancellationReasonModel, IClinicCancellationReasonModel } from \"./ClinicCancellationReasonModel\";\r\nimport { VisitTagModel } from \"@common/models/VisitTagModel\";\r\nimport { IReminderSourceModel, ReminderSourceModel } from \"@common/models/ReminderSourceModel\";\r\nimport { IReminderDeactivationReasonModel, ReminderDeactivationReasonModel } from \"@common/models/ReminderDeactivationReasonModel\";\r\n\r\nexport interface IClientConfigurationModel {\r\n\tauthApplicationId: number;\r\n\tauthApplicationKey: string;\r\n\tauthApplicationDescription: string;\r\n\tuserId: number;\r\n\tuserIdentityName: string;\r\n\tarrivalToastTimeoutSeconds: number;\r\n\tauthorizedOperations: string[];\r\n\tusersFeatureFlagIds: number[];\r\n\tclearPendingAfterDays: string | undefined;\r\n\tfullName: string;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\tuserInitials: string;\r\n\temailAddress: string;\r\n\tsystemEnvironment: string;\r\n\tshouldShowRemindersInVisitBuilder: boolean;\r\n\tpGRLookupEnabled: boolean;\r\n\ttwilioLookupEnabled: boolean;\r\n\tvobRescheduleEnabled: boolean;\r\n\tjackpotReservationBookingEnabled: boolean;\r\n\tjackpotReservationBookingUrl: string | undefined;\r\n\thospitalDateRestrictionsOnAppointmentActionsDisabled: boolean;\r\n\twrittenHospitalPrescriptionsEnabled: boolean;\r\n\tcurrentUTCDateTime: string | undefined;\r\n\ttimerIntervalMilliseconds: number;\r\n\ttimerQuantizeSeconds: number;\r\n\ttimerWarningThresholdSeconds: number;\r\n\tvetspireDocumentViewerUrl: string;\r\n\ttemplates: ITemplateModel[];\r\n\tbrands: IBrandModel[];\r\n\tpartners: IPartnerModel[];\r\n\tbreeds: IBreedModel[];\r\n\tcommunicationTypes: ICommunicationTypeModel[];\r\n\tclinicRoles: IClinicRoleModel[];\r\n\tclinicRoleTypes: IClinicRoleTypeModel[];\r\n\tfeatureFlags: IFeatureFlagModel[];\r\n\tgenders: IGenderModel[];\r\n\tpetColors: IPetColorModel[];\r\n\treferralTypes: IReferralTypeModel[];\r\n\tspecies: ISpeciesModel[];\r\n\tvisitStatuses: IVisitStatusModel[];\r\n\tpetAlerts: IPetAlertModel[];\r\n\tclinicTaskTypes: IClinicTaskTypeModel[];\r\n\tdiagnoses: IDiagnosisModel[];\r\n\tcallCodes: ICallCodeModel[];\r\n\tcallOrigins: ICallOriginModel[];\r\n\t// heartWormProducts: IHeartwormProductModel[]\r\n\t// fleaTickProducts: IFleaTickProductModel[]\r\n\tpaymentMethods: IPaymentMethodModel[];\r\n\t// reportingGroups: IReportingGroupModel[]\r\n\tsalesItemAttributeTypes: ISalesItemAttributeTypeModel[];\r\n\tsalesItemAttributeProcessingTypes: ISalesItemAttributeProcessingTypeModel[];\r\n\tsalesItemTypes: ISalesItemTypeModel[];\r\n\tdiscountTypes: IDiscountTypeModel[];\r\n\tsalesCategories: ISalesCategoryModel[];\r\n\tsalesSubCategories: ISalesSubCategoryModel[];\r\n\tstates: IStateModel[];\r\n\tvisitCompletionTypes: IVisitCompletionTypeModel[];\r\n\texamResultTypes: IExamResultTypeModel[];\r\n\t// mobileRigs: IMobileRigModel[]\r\n\tautoAddToVisitTypes: IAutoAddToVisitTypeModel[];\r\n\tprescriptionLabels: IPrescriptionLabelModel[];\r\n\t// followUpTypes: IFollowUpTypeModel[]\r\n\tadditionalInfoLabels: IAdditionalInfoLabelModel[];\r\n\tauthRoles: IAuthRoleModel[];\r\n\tauthOperations: IAuthOperationModel[];\r\n\torganizationVersions: IOrganizationVersionModel[];\r\n\tcurrentCorpOrganization: IOrganizationListingModel;\r\n\t//visitTags: IVisitTags[]; //needs implemented\r\n\ttemplateTypes: ITemplateTypeModel[];\r\n\texamCategories: IExamCategoryModel[];\r\n\texamObservations: IExamObservationModel[];\r\n\trecommendationTypes: RecommendationTypeModel[];\r\n\tautoRecommendationTypes: AutoRecommendationTypeModel[];\r\n\tassessmentReferrals: AssessmentReferralModel[];\r\n\tquestionTypes: QuestionTypeModel[];\r\n\t//intakeCompletionStatuses: IIntakeCompletionStatusModel[]; //needs implemented\r\n\tclinicCancellationReasons: IClinicCancellationReasonModel[]; //needs implemented\r\n\tconsentTypes: IConsentTypeModel[];\r\n\tconsents: IConsentModel[];\r\n\tlicenseTypes: ILicenseTypeModel[];\r\n\tprescriptionEventTypes: IPrescriptionEventTypeModel[];\r\n\tprescriptionFulfillments: IPrescriptionFulfillmentModel[];\r\n\tprescriptionStatuses: IPrescriptionStatusModel[];\r\n\tprescriptionPharmacies: IPrescriptionPharmacyModel[];\r\n\tpronouns: IPronounModel[];\r\n\t//TODO: Rename scheduleBlockTypes to vetAndTemplateScheduleBlockTypes, as it only contains blocks for those entity types now, avoided massive changes by renaming it.\r\n\tscheduleEntityTypes: schedule.IScheduleEntityTypeModel[];\r\n\tscheduleBlockTypes: IScheduleBlockTypeModel[];\r\n\tscheduleEntityBlockTypes: schedule.IScheduleEntityBlockTypeModel[]; //<- contains the schedule block type ids that are allowed for each ScheduleEntityTypeId (ie. what blocks are available for vets, for template, for technicians, for unassinged, etc.)\r\n\trelationshipTypes: IRelationshipType[];\r\n\ttraits: ITraitModel[];\r\n\tbusinessLines: IBusinessLineModel[];\r\n\tunitOfMeasures: IUnitOfMeasureModel[];\r\n\tclinicBusinessLineOrganization: IOrganizationListingModel;\r\n\thospitalBusinessLineOrganization: IOrganizationListingModel;\r\n\thospitalPricingTierOrganizations: IOrganizationListingModel[];\r\n\thospitalPrescriptionRefillStatuses: IHospitalPrescriptionRefillStatusModel[];\r\n\thospitalPrescriptionStatuses: IHospitalPrescriptionStatusModel[];\r\n\tvaccineNames: IVaccineNameModel[];\r\n\tvaccineManufacturers: IVaccineManufacturerModel[];\r\n\tvaccineVirusTypes: IVaccineVirusTypeModel[];\r\n\tvaccineAdministereds: IVaccineAdministeredModel[];\r\n\trabiesInformations: IRabiesInformationModel[];\r\n\tmedicationTypes: IMedicationTypeModel[];\r\n\tinvoiceDiscrepancyReasons: IInvoiceDiscrepancyReasonModel[];\r\n\tshortClientSideCacheTimeToLive: number;\r\n\tmediumClientSideCacheTimeToLive: number;\r\n\tlongClientSideCacheTimeToLive: number;\r\n\tbaseUrlCSR: string;\r\n\tbaseUrlGlobalAdmin: string;\r\n\ttemplateMaxSize: number;\r\n\tvisitTags: VisitTagModel[];\r\n\treminderSources: IReminderSourceModel[];\r\n\treminderDeactivationReasons: IReminderDeactivationReasonModel[];\r\n}\r\n\r\nexport class ClientConfigurationModel implements Record {\r\n\tcurrentAppBusinessLine: BusinessLineEnum;\r\n\tauthApplicationId: number;\r\n\tauthApplicationKey: string;\r\n\tauthApplicationDescription: string;\r\n\tuserId: number;\r\n\tuserIdentityName: string;\r\n\tarrivalToastTimeoutSeconds: number;\r\n\tauthorizedOperations: string[];\r\n\tusersFeatureFlagIds: number[];\r\n\tclearPendingAfterDays: string | undefined;\r\n\tfullName: string;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\tuserInitials: string;\r\n\temailAddress: string;\r\n\tsystemEnvironment: string;\r\n\tshouldShowRemindersInVisitBuilder: boolean;\r\n\tpGRLookupEnabled: boolean;\r\n\ttwilioLookupEnabled: boolean;\r\n\tjackpotReservationBookingEnabled: boolean;\r\n\tvobRescheduleEnabled: boolean;\r\n\tjackpotReservationBookingUrl: string | undefined;\r\n\thospitalDateRestrictionsOnAppointmentActionsDisabled: boolean;\r\n\twrittenHospitalPrescriptionsEnabled: boolean;\r\n\tcurrentUTCDateTime: DateTime | undefined;\r\n\ttimerIntervalMilliseconds: number;\r\n\ttimerQuantizeSeconds: number;\r\n\ttimerWarningThresholdSeconds: number;\r\n\tvetspireDocumentViewerUrl: string;\r\n\ttemplates: TemplateModel[];\r\n\tbrands: BrandModel[];\r\n\tpartners: PartnerModel[];\r\n\tbreeds: BreedModel[];\r\n\tdiagnoses: DiagnosisModel[];\r\n\tcommunicationTypes: CommunicationTypeModel[];\r\n\tclinicRoles: ClinicRoleModel[];\r\n\tclinicRoleTypes: ClinicRoleTypeModel[];\r\n\tfeatureFlags: FeatureFlagModel[];\r\n\tgenders: IGenderModel[];\r\n\tpetColors: IPetColorModel[];\r\n\treferralTypes: ReferralTypeModel[];\r\n\tspecies: ISpeciesModel[];\r\n\tvisitStatuses: IVisitStatusModel[];\r\n\tpetAlerts: IPetAlertModel[];\r\n\tclinicTaskTypes: ClinicTaskTypeModel[];\r\n\tcallCodes: ICallCodeModel[];\r\n\tcallOrigins: ICallOriginModel[];\r\n\t// heartWormProducts: IHeartwormProductModel[]\r\n\t// fleaTickProducts: IFleaTickProductModel[]\r\n\tpaymentMethods: IPaymentMethodModel[];\r\n\t// reportingGroups: IReportingGroupModel[]\r\n\tsalesItemAttributeTypes: ISalesItemAttributeTypeModel[];\r\n\tsalesItemAttributeProcessingTypes: ISalesItemAttributeProcessingTypeModel[];\r\n\tsalesItemTypes: ISalesItemTypeModel[];\r\n\tdiscountTypes: IDiscountTypeModel[];\r\n\tsalesCategories: ISalesCategoryModel[];\r\n\tsalesSubCategories: ISalesSubCategoryModel[];\r\n\tstates: IStateModel[];\r\n\tvisitCompletionTypes: IVisitCompletionTypeModel[];\r\n\texamResultTypes: IExamResultTypeModel[];\r\n\t// mobileRigs: IMobileRigModel[]\r\n\tautoAddToVisitTypes: IAutoAddToVisitTypeModel[];\r\n\tprescriptionLabels: IPrescriptionLabelModel[];\r\n\t// followUpTypes: IFollowUpTypeModel[]\r\n\tadditionalInfoLabels: IAdditionalInfoLabelModel[];\r\n\tauthRoles: IAuthRoleModel[];\r\n\tauthOperations: IAuthOperationModel[];\r\n\torganizationVersions: IOrganizationVersionModel[];\r\n\tcurrentCorpOrganization: IOrganizationListingModel;\r\n\t//visitTags: IVisitTags[]; //needs implemented\r\n\ttemplateTypes: ITemplateTypeModel[];\r\n\texamCategories: IExamCategoryModel[];\r\n\texamObservations: IExamObservationModel[];\r\n\trecommendationTypes: RecommendationTypeModel[];\r\n\tautoRecommendationTypes: AutoRecommendationTypeModel[];\r\n\tassessmentReferrals: AssessmentReferralModel[];\r\n\tquestionTypes: QuestionTypeModel[];\r\n\t//intakeCompletionStatuses: IIntakeCompletionStatusModel[]; //needs implemented\r\n\tclinicCancellationReasons: IClinicCancellationReasonModel[]; //needs implemented\r\n\tconsentTypes: IConsentTypeModel[];\r\n\tconsents: ConsentModel[]; //needs implemented\r\n\tlicenseTypes: ILicenseTypeModel[];\r\n\tprescriptionEventTypes: IPrescriptionEventTypeModel[];\r\n\tprescriptionFulfillments: IPrescriptionFulfillmentModel[];\r\n\tprescriptionStatuses: IPrescriptionStatusModel[];\r\n\tprescriptionPharmacies: IPrescriptionPharmacyModel[];\r\n\tpronouns: IPronounModel[];\r\n\tscheduleEntityTypes: schedule.IScheduleEntityTypeModel[];\r\n\tappScheduleEntityTypes: schedule.IScheduleEntityTypeModel[];\r\n\tscheduleBlockTypes: IScheduleBlockTypeModel[];\r\n\tscheduleEntityBlockTypes: schedule.ScheduleEntityBlockTypeModel[];\r\n\tallScheduleBlockTypes: IScheduleBlockTypeModel[];\r\n\trelationshipTypes: IRelationshipType[];\r\n\ttraits: ITraitModel[];\r\n\tbusinessLines: IBusinessLineModel[];\r\n\tunitOfMeasures: IUnitOfMeasureModel[];\r\n\tclinicBusinessLineOrganization: IOrganizationListingModel;\r\n\thospitalBusinessLineOrganization: IOrganizationListingModel;\r\n\thospitalPricingTierOrganizations: IOrganizationListingModel[];\r\n\thospitalPrescriptionRefillStatuses: IHospitalPrescriptionRefillStatusModel[];\r\n\thospitalPrescriptionStatuses: IHospitalPrescriptionStatusModel[];\r\n\tvaccineNames: IVaccineNameModel[];\r\n\tvaccineManufacturers: IVaccineManufacturerModel[];\r\n\tvaccineVirusTypes: IVaccineVirusTypeModel[];\r\n\tvaccineAdministereds: IVaccineAdministeredModel[];\r\n\trabiesInformations: IRabiesInformationModel[];\r\n\tmedicationTypes: IMedicationTypeModel[];\r\n\tinvoiceDiscrepancyReasons: IInvoiceDiscrepancyReasonModel[];\r\n\tshortClientSideCacheTimeToLive: number;\r\n\tmediumClientSideCacheTimeToLive: number;\r\n\tlongClientSideCacheTimeToLive: number;\r\n\tbaseUrlCSR: string;\r\n\tbaseUrlGlobalAdmin: string;\r\n\ttemplateMaxSize: number;\r\n\tvisitTags: VisitTagModel[];\r\n\treminderSources: IReminderSourceModel[];\r\n\treminderDeactivationReasons: IReminderDeactivationReasonModel[];\r\n\r\n\tconstructor(params?: Partial) {\r\n\t\tconst {\r\n\t\t\tauthApplicationId = 0,\r\n\t\t\tauthApplicationKey = AuthApplicationKeys.PetPass,\r\n\t\t\tauthApplicationDescription = \"PetPass\",\r\n\t\t\tuserId = 0,\r\n\t\t\tuserIdentityName = \"\",\r\n\t\t\tarrivalToastTimeoutSeconds = 0,\r\n\t\t\tauthorizedOperations = [],\r\n\t\t\tusersFeatureFlagIds = [],\r\n\t\t\tclearPendingAfterDays = undefined,\r\n\t\t\tfullName = \"\",\r\n\t\t\tfirstName = \"\",\r\n\t\t\tlastName = \"\",\r\n\t\t\tuserInitials = \"\",\r\n\t\t\temailAddress = \"\",\r\n\t\t\tsystemEnvironment = \"DEVLOCAL\",\r\n\t\t\tshouldShowRemindersInVisitBuilder = false,\r\n\t\t\tpGRLookupEnabled = false,\r\n\t\t\ttwilioLookupEnabled = false,\r\n\t\t\tvobRescheduleEnabled = false,\r\n\t\t\tjackpotReservationBookingEnabled = false,\r\n\t\t\tjackpotReservationBookingUrl = undefined,\r\n\t\t\thospitalDateRestrictionsOnAppointmentActionsDisabled = false,\r\n\t\t\twrittenHospitalPrescriptionsEnabled = false,\r\n\t\t\tcurrentUTCDateTime = undefined,\r\n\t\t\ttimerIntervalMilliseconds = 0,\r\n\t\t\ttimerQuantizeSeconds = 0,\r\n\t\t\ttimerWarningThresholdSeconds = 0,\r\n\t\t\tvetspireDocumentViewerUrl = \"\",\r\n\t\t\ttemplates = [],\r\n\t\t\tbrands = [],\r\n\t\t\tpartners = [],\r\n\t\t\tbreeds = [],\r\n\t\t\tdiagnoses = [],\r\n\t\t\tcommunicationTypes = [],\r\n\t\t\tclinicRoles = [],\r\n\t\t\tclinicRoleTypes = [],\r\n\t\t\tfeatureFlags = [],\r\n\t\t\tgenders = [],\r\n\t\t\tpetColors = [],\r\n\t\t\treferralTypes = [],\r\n\t\t\tspecies = [],\r\n\t\t\tvisitStatuses = [],\r\n\t\t\tpetAlerts = [],\r\n\t\t\tclinicTaskTypes = [],\r\n\t\t\tcallCodes = [],\r\n\t\t\tcallOrigins = [],\r\n\t\t\t// heartWormProducts: IHeartwormProductModel[]\r\n\t\t\t// fleaTickProducts: IFleaTickProductModel[]\r\n\t\t\tpaymentMethods = [],\r\n\t\t\t// reportingGroups: IReportingGroupModel[]\r\n\t\t\tsalesItemAttributeTypes = [],\r\n\t\t\tsalesItemAttributeProcessingTypes = [],\r\n\t\t\tsalesItemTypes = [],\r\n\t\t\tdiscountTypes = [],\r\n\t\t\tsalesCategories = [],\r\n\t\t\tsalesSubCategories = [],\r\n\t\t\tstates = [],\r\n\t\t\tvisitCompletionTypes = [],\r\n\t\t\texamResultTypes = [],\r\n\t\t\t// mobileRigs: IMobileRigModel[]\r\n\t\t\tautoAddToVisitTypes = [],\r\n\t\t\tprescriptionLabels = [],\r\n\t\t\t// followUpTypes: IFollowUpTypeModel[]\r\n\t\t\tadditionalInfoLabels = [],\r\n\t\t\tauthRoles = [],\r\n\t\t\tauthOperations = [],\r\n\t\t\torganizationVersions = [],\r\n\t\t\tcurrentCorpOrganization = {} as IOrganizationListingModel,\r\n\t\t\t//visitTags: IVisitTags[]; //needs implemented\r\n\t\t\ttemplateTypes = [],\r\n\t\t\texamCategories = [],\r\n\t\t\texamObservations = [],\r\n\t\t\trecommendationTypes = [],\r\n\t\t\tautoRecommendationTypes = [],\r\n\t\t\tassessmentReferrals = [],\r\n\t\t\tquestionTypes = [],\r\n\t\t\t//intakeCompletionStatuses: IIntakeCompletionStatusModel[]; //needs implemented\r\n\t\t\tclinicCancellationReasons = [] as IClinicCancellationReasonModel[], //needs implemented\r\n\t\t\tconsentTypes = [],\r\n\t\t\tconsents = [], //needs implemented\r\n\t\t\tlicenseTypes = [],\r\n\t\t\tprescriptionEventTypes = [],\r\n\t\t\tprescriptionFulfillments = [],\r\n\t\t\tprescriptionStatuses = [],\r\n\t\t\tprescriptionPharmacies = [],\r\n\t\t\tpronouns = [],\r\n\t\t\tscheduleEntityTypes = [],\r\n\t\t\tscheduleBlockTypes = [],\r\n\t\t\tscheduleEntityBlockTypes = [],\r\n\t\t\trelationshipTypes = [],\r\n\t\t\tbusinessLines = [],\r\n\t\t\ttraits = [],\r\n\t\t\tunitOfMeasures = [],\r\n\t\t\tclinicBusinessLineOrganization = {} as IOrganizationListingModel,\r\n\t\t\thospitalBusinessLineOrganization = {} as IOrganizationListingModel,\r\n\t\t\thospitalPricingTierOrganizations = [] as IOrganizationListingModel[],\r\n\t\t\thospitalPrescriptionRefillStatuses = [] as IHospitalPrescriptionRefillStatusModel[],\r\n\t\t\thospitalPrescriptionStatuses = [] as IHospitalPrescriptionStatusModel[],\r\n\t\t\tvaccineNames = [] as IVaccineNameModel[],\r\n\t\t\tvaccineManufacturers = [] as IVaccineManufacturerModel[],\r\n\t\t\tvaccineVirusTypes = [] as IVaccineVirusTypeModel[],\r\n\t\t\tvaccineAdministereds = [] as IVaccineAdministeredModel[],\r\n\t\t\trabiesInformations = [] as IRabiesInformationModel[],\r\n\t\t\tmedicationTypes = [] as IMedicationTypeModel[],\r\n\t\t\tinvoiceDiscrepancyReasons = [] as IInvoiceDiscrepancyReasonModel[],\r\n\t\t\tshortClientSideCacheTimeToLive = 0,\r\n\t\t\tmediumClientSideCacheTimeToLive = 0,\r\n\t\t\tlongClientSideCacheTimeToLive = 0,\r\n\t\t\tbaseUrlCSR = \"\",\r\n\t\t\tbaseUrlGlobalAdmin = \"\",\r\n\t\t\ttemplateMaxSize = 10000,\r\n\t\t\tvisitTags = [],\r\n\t\t\treminderSources = [] as IReminderSourceModel[],\r\n\t\t\treminderDeactivationReasons = [] as IReminderDeactivationReasonModel[]\r\n\t\t} = params ? params : {};\r\n\r\n\t\tthis.authApplicationId = authApplicationId;\r\n\t\tthis.authApplicationKey = authApplicationKey!;\r\n\t\tthis.authApplicationDescription = authApplicationDescription!;\r\n\r\n\t\tswitch (this.authApplicationKey?.toUpperCase() ?? \"unknown\") {\r\n\t\t\tcase AuthApplicationKeys.Admin:\r\n\t\t\t\tthis.currentAppBusinessLine = BusinessLineEnum.Global;\r\n\t\t\t\tbreak;\r\n\t\t\tcase AuthApplicationKeys.PetPass:\r\n\t\t\t\tthis.currentAppBusinessLine = BusinessLineEnum.Clinic;\r\n\t\t\t\tbreak;\r\n\t\t\tcase AuthApplicationKeys.SWIFT:\r\n\t\t\t\tthis.currentAppBusinessLine = BusinessLineEnum.Hospital;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow \"Unkown authApplication\";\r\n\t\t}\r\n\r\n\t\tthis.userId = userId;\r\n\t\tthis.userIdentityName = userIdentityName!;\r\n\t\tthis.arrivalToastTimeoutSeconds = arrivalToastTimeoutSeconds;\r\n\t\tthis.authorizedOperations = authorizedOperations;\r\n\t\tthis.usersFeatureFlagIds = usersFeatureFlagIds;\r\n\t\tthis.clearPendingAfterDays = clearPendingAfterDays ? clearPendingAfterDays : undefined;\r\n\t\tthis.fullName = fullName;\r\n\t\tthis.firstName = firstName;\r\n\t\tthis.lastName = lastName;\r\n\t\tthis.userInitials = userInitials;\r\n\t\tthis.emailAddress = emailAddress;\r\n\t\tthis.systemEnvironment = systemEnvironment;\r\n\t\tthis.shouldShowRemindersInVisitBuilder = shouldShowRemindersInVisitBuilder;\r\n\t\tthis.pGRLookupEnabled = pGRLookupEnabled;\r\n\t\tthis.twilioLookupEnabled = twilioLookupEnabled;\r\n\t\tthis.vobRescheduleEnabled = vobRescheduleEnabled;\r\n\t\tthis.jackpotReservationBookingEnabled = jackpotReservationBookingEnabled;\r\n\t\tthis.jackpotReservationBookingUrl = jackpotReservationBookingUrl;\r\n\t\tthis.hospitalDateRestrictionsOnAppointmentActionsDisabled = hospitalDateRestrictionsOnAppointmentActionsDisabled ? true : false;\r\n\t\tthis.writtenHospitalPrescriptionsEnabled = writtenHospitalPrescriptionsEnabled ? true : false;\r\n\t\tthis.currentUTCDateTime = currentUTCDateTime ? DateTime.fromISO(currentUTCDateTime) : undefined;\r\n\t\tthis.timerIntervalMilliseconds = timerIntervalMilliseconds;\r\n\t\tthis.timerQuantizeSeconds = timerQuantizeSeconds;\r\n\t\tthis.timerWarningThresholdSeconds = timerWarningThresholdSeconds;\r\n\t\tthis.vetspireDocumentViewerUrl = vetspireDocumentViewerUrl;\r\n\t\tthis.templates = templates.map(t => new TemplateModel(t));\r\n\t\tthis.brands = brands.map(b => new BrandModel(b));\r\n\t\tthis.partners = partners.map(p => new PartnerModel(p));\r\n\t\tthis.breeds = breeds.map(b => new BreedModel(b));\r\n\t\tthis.diagnoses = diagnoses.map(d => new DiagnosisModel(d));\r\n\t\tthis.communicationTypes = communicationTypes.map(c => new CommunicationTypeModel(c));\r\n\t\tthis.clinicRoles = clinicRoles.map(cr => new ClinicRoleModel(cr));\r\n\t\tthis.clinicRoleTypes = clinicRoleTypes.map(crt => new ClinicRoleTypeModel(crt));\r\n\t\tthis.featureFlags = featureFlags.map(ff => new FeatureFlagModel(ff));\r\n\t\tthis.genders = genders.map(g => new GenderModel(g));\r\n\t\tthis.petColors = petColors.map(pc => new PetColorModel(pc));\r\n\t\tthis.referralTypes = referralTypes.map(rft => new ReferralTypeModel(rft));\r\n\t\tthis.species = species.map(sp => new SpeciesModel(sp));\r\n\t\tthis.visitStatuses = visitStatuses.map(vs => new VisitStatusModel(vs));\r\n\t\tthis.petAlerts = petAlerts.map(pa => new PetAlertModel(pa));\r\n\t\tthis.clinicTaskTypes = clinicTaskTypes.map(ctt => new ClinicTaskTypeModel(ctt));\r\n\t\tthis.callCodes = callCodes.map(cc => new CallCodeModel(cc));\r\n\t\tthis.callOrigins = callOrigins.map(co => new CallOriginModel(co));\r\n\t\t// heartWormProducts: IHeartwormProductModel[]\r\n\t\t// fleaTickProducts: IFleaTickProductModel[]\r\n\t\tthis.paymentMethods = paymentMethods.map(p => new PaymentMethodModel(p));\r\n\t\t// reportingGroups: IReportingGroupModel[]\r\n\t\tthis.salesItemAttributeTypes = salesItemAttributeTypes.map(sa => new SalesItemAttributeTypeModel(sa));\r\n\t\tthis.salesItemAttributeProcessingTypes = salesItemAttributeProcessingTypes.map(sa => new SalesItemAttributeProcessingTypeModel(sa));\r\n\t\tthis.salesItemTypes = salesItemTypes.map(st => new SalesItemTypeModel(st));\r\n\t\tthis.discountTypes = discountTypes.map(dt => new DiscountTypeModel(dt));\r\n\t\tthis.salesCategories = salesCategories.map(sp => new SalesCategoryModel(sp));\r\n\t\tthis.salesSubCategories = salesSubCategories.map(sp => new SalesSubCategoryModel(sp));\r\n\t\tthis.states = states.map(st => new StateModel(st));\r\n\t\tthis.visitCompletionTypes = visitCompletionTypes.map(vct => new VisitCompletionTypeModel(vct));\r\n\t\tthis.examResultTypes = examResultTypes.map(ert => new ExamResultTypeModel(ert));\r\n\t\t// mobileRigs: IMobileRigModel[]\r\n\t\tthis.autoAddToVisitTypes = autoAddToVisitTypes.map(at => new AutoAddToVisitTypeModel(at));\r\n\t\tthis.prescriptionLabels = prescriptionLabels.map(pr => new PrescriptionLabelModel(pr));\r\n\t\t// followUpTypes: IFollowUpTypeModel[]\r\n\t\tthis.additionalInfoLabels = additionalInfoLabels.map(ad => new AdditionalInfoLabelModel(ad));\r\n\t\tthis.authRoles = authRoles.map(ar => new AuthRoleModel(ar));\r\n\t\tthis.authOperations = authOperations.map(ao => new AuthOperationModel(ao));\r\n\t\tthis.organizationVersions = organizationVersions.map(ov => new OrganizationVersionModel(ov));\r\n\t\tthis.currentCorpOrganization = new OrganizationListingModel(currentCorpOrganization);\r\n\t\t//visitTags: IVisitTags[]; //needs implemented\r\n\t\tthis.templates = templates.map(t => new TemplateModel(t));\r\n\t\t//visitTags: IVisitTags[]; //needs implemented\r\n\t\tthis.templateTypes = templateTypes.map(tt => new TemplateTypeModel(tt));\r\n\t\tthis.examCategories = examCategories.map(ec => new ExamCategoryModel(ec));\r\n\t\tthis.examObservations = examObservations.map(eo => new ExamObservationModel(eo));\r\n\t\tthis.recommendationTypes = recommendationTypes.map(rt => new RecommendationTypeModel(rt));\r\n\t\tthis.autoRecommendationTypes = autoRecommendationTypes.map(art => new AutoRecommendationTypeModel(art));\r\n\t\tthis.assessmentReferrals = assessmentReferrals.map(ar => new AssessmentReferralModel(ar));\r\n\t\tthis.questionTypes = questionTypes.map(qt => new QuestionTypeModel(qt));\r\n\t\t//intakeCompletionStatuses: IIntakeCompletionStatusModel[]; //needs implemented\r\n\t\tthis.clinicCancellationReasons = clinicCancellationReasons.map(ccr => new ClinicCancellationReasonModel(ccr));\r\n\t\tthis.consentTypes = consentTypes.map(c => new ConsentTypeModel(c));\r\n\t\tthis.consents = consents.map(c => new ConsentModel(c));\r\n\t\tthis.licenseTypes = licenseTypes.map(lt => new LicenseTypeModel(lt));\r\n\t\tthis.prescriptionEventTypes = prescriptionEventTypes.map(p => new PrescriptionEventTypeModel(p));\r\n\t\tthis.prescriptionFulfillments = prescriptionFulfillments.map(p => new PrescriptionFulfillmentModel(p));\r\n\t\tthis.prescriptionStatuses = prescriptionStatuses.map(p => new PrescriptionStatusModel(p));\r\n\t\tthis.prescriptionPharmacies = prescriptionPharmacies.map(p => new PrescriptionPharmacyModel(p));\r\n\t\tthis.pronouns = pronouns.map(p => new PronounModel(p));\r\n\t\tthis.scheduleEntityTypes = scheduleEntityTypes.map(set => new schedule.ScheduleEntityTypeModel(set));\r\n\t\tthis.appScheduleEntityTypes = this.scheduleEntityTypes.filter(sebt => sebt.businessLineId === this.currentAppBusinessLine);\r\n\t\tthis.allScheduleBlockTypes = scheduleBlockTypes.map(sbt => new ScheduleBlockTypeModel(sbt));\r\n\t\tthis.scheduleEntityBlockTypes = scheduleEntityBlockTypes.map(sebt => new schedule.ScheduleEntityBlockTypeModel(sebt));\r\n\t\tthis.scheduleBlockTypes = this.getScheduleBlockTypesForEntity([EntityScheduleType.Veterinarian, EntityScheduleType.Template]);\r\n\t\tthis.relationshipTypes = relationshipTypes.map(rt => new RelationshipTypeModel(rt));\r\n\t\tthis.traits = traits.map(trait => new TraitModel(trait));\r\n\t\tthis.businessLines = businessLines.map(bl => new BusinessLineModel(bl));\r\n\t\tthis.unitOfMeasures = unitOfMeasures.map(um => new UnitOfMeasureModel(um));\r\n\t\tthis.clinicBusinessLineOrganization = new OrganizationListingModel(clinicBusinessLineOrganization);\r\n\t\tthis.hospitalBusinessLineOrganization = new OrganizationListingModel(hospitalBusinessLineOrganization);\r\n\t\tthis.hospitalPricingTierOrganizations = hospitalPricingTierOrganizations.map(o => new OrganizationListingModel(o));\r\n\t\tthis.hospitalPrescriptionRefillStatuses = hospitalPrescriptionRefillStatuses.map(h => new HospitalPrescriptionRefillStatusModel(h));\r\n\t\tthis.hospitalPrescriptionStatuses = hospitalPrescriptionStatuses.map(h => new HospitalPrescriptionStatusModel(h));\r\n\t\tthis.vaccineNames = vaccineNames.map(vn => new VaccineNameModel(vn));\r\n\t\tthis.vaccineManufacturers = vaccineManufacturers.map(vn => new VaccineManufacturerModel(vn));\r\n\t\tthis.vaccineVirusTypes = vaccineVirusTypes.map(vn => new VaccineVirusTypeModel(vn));\r\n\t\tthis.vaccineAdministereds = vaccineAdministereds.map(vn => new VaccineAdministeredModel(vn));\r\n\t\tthis.rabiesInformations = rabiesInformations.map(ri => new RabiesInformationModel(ri));\r\n\t\tthis.medicationTypes = medicationTypes.map(md => new MedicationTypeModel(md));\r\n\t\tthis.invoiceDiscrepancyReasons = invoiceDiscrepancyReasons.map(idr => new InvoiceDiscrepancyReasonModel(idr));\r\n\t\tthis.shortClientSideCacheTimeToLive = shortClientSideCacheTimeToLive;\r\n\t\tthis.mediumClientSideCacheTimeToLive = mediumClientSideCacheTimeToLive;\r\n\t\tthis.longClientSideCacheTimeToLive = longClientSideCacheTimeToLive;\r\n\t\tthis.baseUrlCSR = baseUrlCSR;\r\n\t\tthis.baseUrlGlobalAdmin = baseUrlGlobalAdmin;\r\n\t\tthis.templateMaxSize = templateMaxSize;\r\n\t\tthis.visitTags = visitTags.map(vt => new VisitTagModel(vt));\r\n\t\tthis.reminderSources = reminderSources.map(rs => new ReminderSourceModel(rs));\r\n\t\tthis.reminderDeactivationReasons = reminderDeactivationReasons.map(rdr => new ReminderDeactivationReasonModel(rdr));\r\n\t}\r\n\r\n\tuserHasRole(roleName: AuthOperationRoleNames | string) {\r\n\t\tconst inRoles = _.intersectionWith(\r\n\t\t\tthis.authRoles.filter(r => _.isEqual(r.description, roleName)),\r\n\t\t\tthis.authorizedOperations,\r\n\t\t\t(roleModel, authOp) => _.isEqual(roleModel.roleAuthOperationName, authOp)\r\n\t\t);\r\n\t\treturn inRoles.length > 0;\r\n\t}\r\n\r\n\tselectOptions = {\r\n\t\tauthRoles: (): ISelectOption[] => orderBy(this.authRoles, \"description\").map(ar => ({ label: ar.description, value: ar.authRoleId })),\r\n\t\tclinicTaskTypes: (): ISelectOption[] => this.clinicTaskTypes.map(ctt => ({ label: ctt.name, value: ctt.clinicTaskTypeId })),\r\n\t\thospitalPrescriptionRefillStatuses: (): ISelectOption[] => this.hospitalPrescriptionRefillStatuses.map(h => ({ label: h.name, value: h.hospitalPrescriptionRefillStatusId })),\r\n\t\thospitalPrescriptionStatuses: (): ISelectOption[] => this.hospitalPrescriptionStatuses.map(h => ({ label: h.name, value: h.hospitalPrescriptionStatusId })),\r\n\t\tprescriptionPharmacies: (): ISelectOption[] => this.prescriptionPharmacies.map(p => ({ label: p.name, value: p.prescriptionPharmacyId }))\r\n\t};\r\n\r\n\tgetPricingTierOrganization(orgId: number) {\r\n\t\tconst org = _.first(this.hospitalPricingTierOrganizations.filter(a => a.organizationId === orgId));\r\n\t\treturn org;\r\n\t}\r\n\r\n\tIsDVM = () => this.userHasRole(AuthOperationRoleNames.Veterinarian);\r\n\r\n\tHasUIFlag = (opName: AuthOperationUINames) => {\r\n\t\treturn this.authorizedOperations.find(op => {\r\n\t\t\treturn op.toLowerCase() === opName.toLowerCase();\r\n\t\t})\r\n\t\t\t? true\r\n\t\t\t: false;\r\n\t};\r\n\r\n\thasFeatureFlag = (featureFlagId: number) => {\r\n\t\treturn this.usersFeatureFlagIds.find(ff => {\r\n\t\t\treturn _.isEqual(ff, featureFlagId);\r\n\t\t})\r\n\t\t\t? true\r\n\t\t\t: false;\r\n\t};\r\n\r\n\t/**\r\n\t * Returns all the existing schedule blocks that are valid for a ScheduleEntityType or Array of ScheduleEntityTypes.\r\n\t * @param entityType A single NewEntityScheduleType or an Array of them to include all the Block Types for Each Entity Type in the array.\r\n\t * @returns\r\n\t */\r\n\tgetScheduleBlockTypesForEntity = (entityType: EntityScheduleType | EntityScheduleType[]) => {\r\n\t\tlet entityTypeArray = Array.isArray(entityType) ? entityType : [entityType];\r\n\t\tconst filteredItems = _.filter(this.scheduleEntityBlockTypes, item => _.includes(entityTypeArray, item.scheduleEntityTypeId));\r\n\t\tconst groupedByBlockTypeId = _.groupBy(filteredItems, \"scheduleBlockTypeId\");\r\n\t\tconst allowedBlockTypeIds = _.filter(_.keys(groupedByBlockTypeId), e => groupedByBlockTypeId[e].length === entityTypeArray.length).map(a => parseInt(a));\r\n\t\treturn _.filter(this.allScheduleBlockTypes, sbt => allowedBlockTypeIds.includes(sbt.scheduleBlockTypeId)).map(e => new ScheduleBlockTypeUIModel({ ...e, isDisabled: false }));\r\n\t};\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, SalesItemOptionModel } from \".\";\r\n\r\nexport interface ISalesItemDiscountSalesItemModel extends IModel {\r\n salesItemDiscountSalesItemId: number;\r\n salesItemId: number;\r\n discountSalesItemOptionId: number;\r\n discountSalesItemOption: SalesItemOptionModel | undefined;\r\n discountSalesItemOptionFullName: string;\r\n}\r\nexport class SalesItemDiscountSalesItemModel extends Model implements ModelRecord {\r\n salesItemDiscountSalesItemId: number;\r\n salesItemId: number;\r\n discountSalesItemOptionId: number;\r\n discountSalesItemOption: SalesItemOptionModel | undefined;\r\n discountSalesItemOptionFullName: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemDiscountSalesItemId = defaultTo(params?.salesItemDiscountSalesItemId, 0);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.discountSalesItemOptionId = defaultTo(params?.discountSalesItemOptionId, 0);\r\n this.discountSalesItemOption = params?.discountSalesItemOption ? new SalesItemOptionModel(params?.discountSalesItemOption) : undefined;\r\n this.discountSalesItemOptionFullName = defaultTo(params?.discountSalesItemOptionFullName, '');\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, SalesSubCategoryModel } from \".\";\r\n\r\nexport interface ISalesItemDiscountSubcategoryModel extends IModel {\r\n salesItemDiscountSubcategoryId: number;\r\n salesItemId: number;\r\n salesSubCategoryId: number;\r\n salesSubCategory: SalesSubCategoryModel | undefined;\r\n}\r\nexport class SalesItemDiscountSubcategoryModel extends Model implements ModelRecord {\r\n salesItemDiscountSubcategoryId: number;\r\n salesItemId: number;\r\n salesSubCategoryId: number;\r\n salesSubCategory: SalesSubCategoryModel | undefined;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemDiscountSubcategoryId = defaultTo(params?.salesItemDiscountSubcategoryId, 0);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.salesSubCategoryId = defaultTo(params?.salesSubCategoryId, 0);\r\n this.salesSubCategory = params?.salesSubCategory ? new SalesSubCategoryModel(params?.salesSubCategory) : undefined;\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord, SalesItemOptionModel } from \".\";\r\n\r\nexport interface ISalesItemRebateSalesItemModel extends IModel {\r\n salesItemRebateSalesItemId: number;\r\n salesItemId: number;\r\n rebateSalesItemOptionId: number;\r\n rebateSalesItemOption: SalesItemOptionModel | undefined;\r\n rebateSalesItemOptionFullName: string;\r\n}\r\n\r\nexport class SalesItemRebateSalesItemModel extends Model implements ModelRecord {\r\n salesItemRebateSalesItemId: number;\r\n salesItemId: number;\r\n rebateSalesItemOptionId: number;\r\n rebateSalesItemOption: SalesItemOptionModel | undefined;\r\n rebateSalesItemOptionFullName: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.salesItemRebateSalesItemId = defaultTo(params?.salesItemRebateSalesItemId, 0);\r\n this.salesItemId = defaultTo(params?.salesItemId, 0);\r\n this.rebateSalesItemOptionId = defaultTo(params?.rebateSalesItemOptionId, 0);\r\n this.rebateSalesItemOption = params?.rebateSalesItemOption ? new SalesItemOptionModel(params?.rebateSalesItemOption) : undefined;\r\n this.rebateSalesItemOptionFullName = defaultTo(params?.rebateSalesItemOptionFullName, '');\r\n }\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { IAttachmentModel, AttachmentModel } from \".\";\r\n\r\n\r\nexport interface IPetAttachmentModel extends IAttachmentModel {\r\n petAttachmentId: number;\r\n petId: number;\r\n notes: string | undefined;\r\n dateCreated: string;\r\n userCreated: string;\r\n hospitalName: string\r\n}\r\n\r\nexport class PetAttachmentModel extends AttachmentModel implements Record {\r\n petAttachmentId: number;\r\n petId: number;\r\n dateCreated: DateTime;\r\n userCreated: string;\r\n hospitalName: string\r\n\r\n constructor(params: IPetAttachmentModel) {\r\n super(params, params.petAttachmentId, \"Pet\", params.petId, params.notes);\r\n this.petAttachmentId = params.petAttachmentId;\r\n this.petId = params.petId;\r\n this.dateCreated = DateTime.fromISO(params.dateCreated);\r\n this.userCreated = params.userCreated;\r\n this.hospitalName = params.hospitalName;\r\n }\r\n\r\n}\r\n","\r\nimport { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { NoteTypeModel } from \"./NoteTypeModel\";\r\n\r\nexport interface IClientNoteModel extends IModel {\r\n clientNoteId: number;\r\n clientId: number;\r\n noteTypeId: number;\r\n noteType: NoteTypeModel;\r\n notes: string;\r\n createdUserTitle: string;\r\n createdUserFirstName: string;\r\n createdUserLastName: string;\r\n dateCreated: string\r\n}\r\n\r\nexport class ClientNoteModel extends Model implements ModelRecord {\r\n clientNoteId: number;\r\n clientId: number;\r\n noteTypeId: number;\r\n noteType: NoteTypeModel\r\n notes: string;\r\n createdUserTitle: string;\r\n createdUserFirstName: string;\r\n createdUserLastName: string;\r\n dateCreated: string\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.clientNoteId = _.defaultTo(params?.clientNoteId, 0);\r\n this.clientId = _.defaultTo(params?.clientId, 0);\r\n this.noteTypeId = _.defaultTo(params?.noteTypeId, 0);\r\n this.noteType = params?.noteType ? new NoteTypeModel(params?.noteType) : new NoteTypeModel();\r\n this.notes = _.defaultTo(params?.notes, \"\");\r\n this.createdUserTitle = _.defaultTo(params?.createdUserTitle, \"\");\r\n this.createdUserFirstName = _.defaultTo(params?.createdUserFirstName, \"\");\r\n this.createdUserLastName = _.defaultTo(params?.createdUserLastName, \"\");\r\n this.dateCreated = _.defaultTo(params?.dateCreated, \"\");\r\n }\r\n}\r\n","import { IModel, Model, ModelRecord } from \"./Model\";\r\nimport { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { DateTimeUtils } from '@common/utils/datetimeUtils';\r\n\r\nexport interface IClinicListingModel extends IModel {\r\n\r\n clinicId: number;\r\n storeId: number;\r\n storeCode: string;\r\n storeAddress: string;\r\n scheduledStartDate: string | undefined;\r\n scheduledEndDate: string;\r\n isClosed: boolean;\r\n isPendingClose: boolean;\r\n isCancelled: boolean;\r\n isPublished: boolean;\r\n storeParent: string;\r\n storeStateAbbrev: string;\r\n}\r\n\r\nexport class ClinicListingModel extends Model implements ModelRecord {\r\n\r\n clinicId: number;\r\n storeId: number\r\n storeCode: string;\r\n storeAddress: string;\r\n scheduledStartDate: DateTime | undefined;\r\n scheduledEndDate: DateTime | undefined;\r\n startTime: string;\r\n endTime: string;\r\n isClosed: boolean;\r\n isPendingClose: boolean;\r\n isCancelled: boolean;\r\n isPublished: boolean;\r\n storeParent: string;\r\n storeStateAbbrev: string;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.clinicId = defaultTo(params.clinicId, 0);\r\n this.storeId = defaultTo(params.storeId, 0);\r\n this.storeCode = defaultTo(params.storeCode, \"\");\r\n this.storeAddress = defaultTo(params.storeAddress, \"\");\r\n this.scheduledStartDate = DateTime.fromISO(defaultTo(params.scheduledStartDate, \"2000-01-01\"), { zone: \"utc\" });\r\n this.scheduledEndDate = DateTime.fromISO(defaultTo(params.scheduledEndDate, \"2000-01-01\"), { zone: \"utc\" });\r\n this.startTime = DateTimeUtils.getTimehour12(this.scheduledStartDate)\r\n this.endTime = DateTimeUtils.getTimehour12(this.scheduledEndDate);\r\n this.isClosed = defaultTo(params.isClosed, false);\r\n this.isPendingClose = defaultTo(params.isPendingClose, false);\r\n this.isCancelled = defaultTo(params.isCancelled, false);\r\n this.isPublished = defaultTo(params.isPublished, false);\r\n this.storeParent = defaultTo(params.storeParent, \"\");\r\n this.storeStateAbbrev = defaultTo(params.storeStateAbbrev, \"\");\r\n }\r\n\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models/Model\";\r\nimport { VeterinarianModel } from \"@common/models/VeterinarianModel\";\r\n\r\nexport interface IClinicVeterinarianModel extends IModel {\r\n\tclinicVeterinarianId: number;\r\n\tveterinarianId: number;\r\n\tclinicId: number;\r\n\tisClinicVeterinarian: boolean;\r\n\tveterinarian: VeterinarianModel;\r\n\tclinic: any; // Assuming clinic can be any type\r\n}\r\n\r\nexport class ClinicVeterinarianModel extends Model implements ModelRecord {\r\n\tclinicVeterinarianId: number;\r\n\tveterinarianId: number;\r\n\tclinicId: number;\r\n\tisClinicVeterinarian: boolean;\r\n\tveterinarian: VeterinarianModel;\r\n\tclinic: any; // Assuming clinic can be any type\r\n\r\n\tconstructor(params: Partial) {\r\n\t\tsuper(params);\r\n\t\tthis.clinicVeterinarianId = defaultTo(params.clinicVeterinarianId, 0);\r\n\t\tthis.veterinarianId = defaultTo(params.veterinarianId, 0);\r\n\t\tthis.isClinicVeterinarian = defaultTo(params.isClinicVeterinarian, false);\r\n\t\tthis.veterinarian = new VeterinarianModel(params.veterinarian);\r\n\t\tthis.clinicId = defaultTo(params.clinicId, 0);\r\n\t}\r\n}\r\n","import { IModel, Model, ModelRecord } from \"@common/models\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport interface IClinicUserModel extends IModel {\r\n\tclinicUserId: number;\r\n\tauthUserId: number;\r\n\tclinicId: number;\r\n\tfirstName: string | undefined;\r\n\tlastName: string | undefined;\r\n\tjoinDate: string | undefined;\r\n\tclinicRoleName: string | undefined;\r\n\tclinicRoleDisplayName: string | undefined;\r\n\tclinicRoleAbbreviation: string | undefined;\r\n\tisPrimaryInClinicRole: boolean;\r\n\tisClinicRole: boolean;\r\n\tisVetAssistant: boolean;\r\n\tisDVM: boolean;\r\n\tanonymizedFirstLastOnly: string | undefined;\r\n}\r\n\r\nexport class ClinicUserModel extends Model implements ModelRecord {\r\n\tclinicUserId: number;\r\n\tauthUserId: number;\r\n\tclinicId: number;\r\n\tfirstName: string | undefined;\r\n\tlastName: string | undefined;\r\n\tjoinDate: DateTime | undefined;\r\n\tclinicRoleName: string | undefined;\r\n\tclinicRoleDisplayName: string | undefined;\r\n\tclinicRoleAbbreviation: string | undefined;\r\n\tisPrimaryInClinicRole: boolean;\r\n\tisClinicRole: boolean;\r\n\tisVetAssistant: boolean;\r\n\tisDVM: boolean;\r\n\tanonymizedFirstLastOnly;\r\n\r\n\tconstructor(params: Partial) {\r\n\t\tsuper(params);\r\n\t\tthis.clinicUserId = _.defaultTo(params.clinicUserId, 0);\r\n\t\tthis.authUserId = _.defaultTo(params.authUserId, 0);\r\n\t\tthis.clinicId = _.defaultTo(params.clinicId, 0);\r\n\t\tthis.firstName = _.defaultTo(params.firstName, \"\");\r\n\t\tthis.lastName = _.defaultTo(params.lastName, \"\");\r\n\t\tthis.joinDate = DateTime.fromISO(_.defaultTo(params.joinDate, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.clinicRoleName = _.defaultTo(params.clinicRoleName, \"\");\r\n\t\tthis.clinicRoleDisplayName = _.defaultTo(params.clinicRoleDisplayName, \"\");\r\n\t\tthis.clinicRoleAbbreviation = _.defaultTo(params.clinicRoleAbbreviation, \"\");\r\n\t\tthis.isPrimaryInClinicRole = _.defaultTo(params.isPrimaryInClinicRole, false);\r\n\t\tthis.isClinicRole = _.defaultTo(params.isClinicRole, false);\r\n\t\tthis.isVetAssistant = _.defaultTo(params.isVetAssistant, false);\r\n\t\tthis.isDVM = _.defaultTo(params.isDVM, false);\r\n\t\tthis.anonymizedFirstLastOnly = (this.isDVM ? \"Dr. \" : \"\") + this.firstName + \" \" + (this.lastName ? this.lastName.substring(0, 1) + \".\" : \"\");\r\n\t}\r\n}\r\n","import {\r\n\tIModel,\r\n\tModel,\r\n\tModelRecord,\r\n\tIVisitClient,\r\n\tVisitClientModel,\r\n\tIVisitPet,\r\n\tVisitPetModel,\r\n\tIVisitIntakeCompletionStatus,\r\n\tVisitIntakeCompletionStatusModel,\r\n\tIReservationModel,\r\n\tReservationModel,\r\n} from \"@common/models\";\r\nimport { VisitStatus, IntakeCompletionStatuses } from \"@common/models/Enums\";\r\nimport { SourceSystem } from \"@common/models/Enums/SourceSystem\";\r\nimport { IVisitTag, VisitTagModel } from \"@common/models/VisitTagModel\";\r\nimport { DateTime } from \"luxon\";\r\n\r\n/**\r\n * FROM: VisitListingModel.cs\r\n */\r\nexport interface IVisitListing extends IModel {\r\n\tclinicId: number;\r\n\tvisitId: number;\r\n\tpetId: number;\r\n\tclientId: number;\r\n\tisExpress: boolean;\r\n\tisRxOnly: boolean;\r\n\tvisitStatusId: VisitStatus;\r\n\tvisitStatusName: string;\r\n\tvisitCompletionTypeId: number;\r\n\tvisitCompletionTypeName: string;\r\n\tvisitCompletionTypeIsComplete: boolean;\r\n\tvisitCompletionTypeIsManuallyAssignable: boolean;\r\n\tcheckinTime?: string | undefined;\r\n\tconsultationStart?: string | undefined;\r\n\tconsultation2Start?: string | undefined;\r\n\tvetServicesStart?: string | undefined;\r\n\tcheckoutTime?: string | undefined;\r\n\tvisitCheckinStart?: string | undefined;\r\n\tvisitConsultationStart?: string | undefined;\r\n\tvisitVetServicesStart?: string | undefined;\r\n\tvisitCheckoutStart?: string | undefined;\r\n\tvisitInProgressStart?: string | undefined;\r\n\tvisitAdmittedStart?: string | undefined;\r\n\tvisitFinalizedStart?: string | undefined;\r\n\tvisitPaidStart?: string | undefined;\r\n\tsmsStatus: number;\r\n\thasVetAttestation: boolean;\r\n\tpaymentMethodId?: number | undefined;\r\n\tcashPayment?: number | undefined;\r\n\tprocessedPhotoBaseUrl: string;\r\n\tphotoUrl: string;\r\n\tserviceAmount: number;\r\n\tproductAmount: number;\r\n\tlicenseFeeAmount: number;\r\n\tvetcoPrescriptionAmount: number;\r\n\tdiscountAmount: number;\r\n\ttaxPercentage: number;\r\n\tsubtotalPreDiscountsAmount: number;\r\n\tsubtotalPostDiscountsAmount: number;\r\n\ttaxAmount: number;\r\n\ttotalAmount: number;\r\n\tservicesRebateAmount?: number | undefined;\r\n\tproductsRebateAmount?: number | undefined;\r\n\ttotalRebateAmount?: number | undefined;\r\n\tnonTaxableFeeAmount?: number | undefined;\r\n\ttaxableFeeAmount?: number | undefined;\r\n\ttotalFeeAmount?: number | undefined;\r\n\ttotalAOVAmount?: number | undefined;\r\n\tvisitTagId?: number | undefined;\r\n\treservationId?: number | undefined;\r\n\tapprovedForVaccinations?: boolean | undefined;\r\n\tpet: IVisitPet;\r\n\tclient: IVisitClient;\r\n\tpaymentMethod: any; // PaymentMethodModel;\r\n\tvisitTag: IVisitTag; // VisitTagModel;\r\n\treservation: IReservationModel | undefined;\r\n\tarrived?: string | undefined;\r\n\tfirstCheckIn?: string | undefined;\r\n\tvisitStarted?: string | undefined;\r\n\tarrivedWaitingTime?: number | undefined;\r\n\tcheckInWaitingTime?: number | undefined;\r\n\tintakeId?: number | undefined;\r\n\tintakePetId?: number | undefined;\r\n\tintakePublicId?: string | undefined;\r\n\tintakeCompletionStatusId?: IntakeCompletionStatuses | undefined;\r\n\tintakeCompletionStatus: IVisitIntakeCompletionStatus;\r\n}\r\n\r\nexport class VisitListingModel extends Model implements ModelRecord {\r\n\tclinicId: number;\r\n\tvisitId: number;\r\n\tpetId: number;\r\n\tclientId: number;\r\n\tisExpress: boolean;\r\n\tisRxOnly: boolean;\r\n\tvisitStatusId: VisitStatus;\r\n\tvisitStatusName: string;\r\n\tvisitCompletionTypeId: number;\r\n\tvisitCompletionTypeName: string;\r\n\tvisitCompletionTypeIsComplete: boolean;\r\n\tvisitCompletionTypeIsManuallyAssignable: boolean;\r\n\tcheckinTime: DateTime | undefined;\r\n\tconsultationStart: DateTime | undefined;\r\n\tconsultation2Start: DateTime | undefined;\r\n\tvetServicesStart: DateTime | undefined;\r\n\tcheckoutTime: DateTime | undefined;\r\n\tvisitCheckinStart: DateTime | undefined;\r\n\tvisitConsultationStart: DateTime | undefined;\r\n\tvisitVetServicesStart: DateTime | undefined;\r\n\tvisitCheckoutStart: DateTime | undefined;\r\n\tvisitInProgressStart: DateTime | undefined;\r\n\tvisitAdmittedStart: DateTime | undefined;\r\n\tvisitFinalizedStart: DateTime | undefined;\r\n\tvisitPaidStart: DateTime | undefined;\r\n\tsmsStatus: number;\r\n\thasVetAttestation: boolean;\r\n\tpaymentMethodId: number | undefined;\r\n\tcashPayment: number | undefined;\r\n\tprocessedPhotoBaseUrl: string;\r\n\tphotoUrl: string;\r\n\tserviceAmount: number;\r\n\tproductAmount: number;\r\n\tlicenseFeeAmount: number;\r\n\tvetcoPrescriptionAmount: number;\r\n\tdiscountAmount: number;\r\n\ttaxPercentage: number;\r\n\tsubtotalPreDiscountsAmount: number;\r\n\tsubtotalPostDiscountsAmount: number;\r\n\ttaxAmount: number;\r\n\ttotalAmount: number;\r\n\tservicesRebateAmount: number | undefined;\r\n\tproductsRebateAmount: number | undefined;\r\n\ttotalRebateAmount: number | undefined;\r\n\tnonTaxableFeeAmount: number | undefined;\r\n\ttaxableFeeAmount: number | undefined;\r\n\ttotalFeeAmount: number | undefined;\r\n\ttotalAOVAmount: number | undefined;\r\n\tvisitTagId: number | undefined;\r\n\treservationId: number | undefined;\r\n\tapprovedForVaccinations: boolean | undefined;\r\n\tpet: IVisitPet;\r\n\tclient: IVisitClient;\r\n\tpaymentMethod: any; // PaymentMethodModel;\r\n\tvisitTag: VisitTagModel | undefined; // VisitTagModel;\r\n\treservation: ReservationModel | undefined;\r\n\tarrived: DateTime | undefined;\r\n\tfirstCheckIn: DateTime | undefined;\r\n\tvisitStarted: DateTime | undefined;\r\n\tarrivedWaitingTime: number | undefined;\r\n\tcheckInWaitingTime: number | undefined;\r\n\tintakeId: number | undefined;\r\n\tintakePetId: number | undefined;\r\n\tintakePublicId: string | undefined;\r\n\tintakeCompletionStatusId: IntakeCompletionStatuses | undefined;\r\n\tintakeCompletionStatus: IVisitIntakeCompletionStatus;\r\n\r\n\tconstructor(params: Partial) {\r\n\t\tsuper(params);\r\n\t\tthis.clinicId = _.defaultTo(params.clinicId, 0);\r\n\t\tthis.visitId = _.defaultTo(params.visitId, 0);\r\n\t\tthis.petId = _.defaultTo(params.petId, 0);\r\n\t\tthis.clientId = _.defaultTo(params.clientId, 0);\r\n\t\tthis.isExpress = _.defaultTo(params.isExpress, false);\r\n\t\tthis.isRxOnly = _.defaultTo(params.isRxOnly, false);\r\n\t\tthis.visitStatusId = _.defaultTo(params.visitStatusId, 0 as VisitStatus);\r\n\t\tthis.visitStatusName = _.defaultTo(params.visitStatusName, \"\");\r\n\t\tthis.visitCompletionTypeId = _.defaultTo(params.visitCompletionTypeId, 0);\r\n\t\tthis.visitCompletionTypeName = _.defaultTo(params.visitCompletionTypeName, \"\");\r\n\t\tthis.visitCompletionTypeIsComplete = _.defaultTo(params.visitCompletionTypeIsComplete, false);\r\n\t\tthis.visitCompletionTypeIsManuallyAssignable = _.defaultTo(params.visitCompletionTypeIsManuallyAssignable, false);\r\n\r\n\t\tthis.checkinTime = DateTime.fromISO(_.defaultTo(params.checkinTime, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.consultationStart = DateTime.fromISO(_.defaultTo(params.consultationStart, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.consultation2Start = DateTime.fromISO(_.defaultTo(params.consultation2Start, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.vetServicesStart = DateTime.fromISO(_.defaultTo(params.vetServicesStart, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.checkoutTime = DateTime.fromISO(_.defaultTo(params.checkoutTime, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.visitCheckinStart = DateTime.fromISO(_.defaultTo(params.visitCheckinStart, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.visitConsultationStart = DateTime.fromISO(_.defaultTo(params.visitConsultationStart, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.visitVetServicesStart = DateTime.fromISO(_.defaultTo(params.visitVetServicesStart, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.visitCheckoutStart = DateTime.fromISO(_.defaultTo(params.visitCheckoutStart, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.visitInProgressStart = DateTime.fromISO(_.defaultTo(params.visitInProgressStart, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.visitAdmittedStart = DateTime.fromISO(_.defaultTo(params.visitAdmittedStart, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.visitFinalizedStart = DateTime.fromISO(_.defaultTo(params.visitFinalizedStart, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.visitPaidStart = DateTime.fromISO(_.defaultTo(params.visitPaidStart, \"2000-01-01\"), { zone: \"utc\" });\r\n\r\n\t\tthis.smsStatus = _.defaultTo(params.smsStatus, 0);\r\n\t\tthis.hasVetAttestation = _.defaultTo(params.hasVetAttestation, false);\r\n\t\tthis.paymentMethodId = _.defaultTo(params.paymentMethodId, undefined);\r\n\t\tthis.cashPayment = _.defaultTo(params.cashPayment, undefined);\r\n\t\tthis.processedPhotoBaseUrl = _.defaultTo(params.processedPhotoBaseUrl, \"\");\r\n\t\tthis.photoUrl = _.defaultTo(params.photoUrl, \"\");\r\n\t\tthis.serviceAmount = _.defaultTo(params.serviceAmount, 0);\r\n\t\tthis.productAmount = _.defaultTo(params.productAmount, 0);\r\n\t\tthis.licenseFeeAmount = _.defaultTo(params.licenseFeeAmount, 0);\r\n\t\tthis.vetcoPrescriptionAmount = _.defaultTo(params.vetcoPrescriptionAmount, 0);\r\n\t\tthis.discountAmount = _.defaultTo(params.discountAmount, 0);\r\n\t\tthis.taxPercentage = _.defaultTo(params.taxPercentage, 0);\r\n\t\tthis.subtotalPreDiscountsAmount = _.defaultTo(params.subtotalPreDiscountsAmount, 0);\r\n\t\tthis.subtotalPostDiscountsAmount = _.defaultTo(params.subtotalPostDiscountsAmount, 0);\r\n\t\tthis.taxAmount = _.defaultTo(params.taxAmount, 0);\r\n\t\tthis.totalAmount = _.defaultTo(params.totalAmount, 0);\r\n\t\tthis.servicesRebateAmount = _.defaultTo(params.servicesRebateAmount, undefined);\r\n\t\tthis.productsRebateAmount = _.defaultTo(params.productsRebateAmount, undefined);\r\n\t\tthis.totalRebateAmount = _.defaultTo(params.totalRebateAmount, undefined);\r\n\t\tthis.nonTaxableFeeAmount = _.defaultTo(params.nonTaxableFeeAmount, undefined);\r\n\t\tthis.taxableFeeAmount = _.defaultTo(params.taxableFeeAmount, undefined);\r\n\t\tthis.totalFeeAmount = _.defaultTo(params.totalFeeAmount, undefined);\r\n\t\tthis.totalAOVAmount = _.defaultTo(params.totalAOVAmount, undefined);\r\n\t\tthis.visitTagId = _.defaultTo(params.visitTagId, undefined);\r\n\t\tthis.reservationId = _.defaultTo(params.reservationId, undefined);\r\n\t\tthis.approvedForVaccinations = _.defaultTo(params.approvedForVaccinations, undefined);\r\n\r\n\t\tthis.pet = params.pet ? new VisitPetModel(params.pet) : new VisitPetModel({});\r\n\t\tthis.client = params.client ? new VisitClientModel(params.client) : new VisitClientModel({});\r\n\t\tthis.reservation = params.reservation ? new ReservationModel(params.reservation as any) : undefined;\r\n\r\n\t\tthis.paymentMethod = _.defaultTo(params.paymentMethod, undefined);\r\n\t\tthis.visitTag = params.visitTag ? new VisitTagModel(params.visitTag) : undefined;\r\n\r\n\t\tthis.arrived = params.arrived ? DateTime.fromISO(params.arrived, { zone: \"utc\" }) : undefined;\r\n\t\tthis.firstCheckIn = params.firstCheckIn ? DateTime.fromISO(params.firstCheckIn, { zone: \"utc\" }) : undefined;\r\n\t\tthis.visitStarted = params.visitStarted ? DateTime.fromISO(params.visitStarted, { zone: \"utc\" }) : undefined;\r\n\r\n\t\tthis.arrivedWaitingTime = _.defaultTo(params.arrivedWaitingTime, undefined);\r\n\t\tthis.checkInWaitingTime = _.defaultTo(params.checkInWaitingTime, undefined);\r\n\t\tthis.intakeId = _.defaultTo(params.intakeId, undefined);\r\n\t\tthis.intakePetId = _.defaultTo(params.intakePetId, undefined);\r\n\t\tthis.intakePublicId = _.defaultTo(params.intakePublicId, undefined);\r\n\t\tthis.intakeCompletionStatusId = _.defaultTo(params.intakeCompletionStatusId, undefined);\r\n\r\n\t\tthis.intakeCompletionStatus = params.intakeCompletionStatus\r\n\t\t\t? new VisitIntakeCompletionStatusModel(params.intakeCompletionStatus)\r\n\t\t\t: new VisitIntakeCompletionStatusModel({});\r\n\t}\r\n\r\n\tisFollowUpVisit(): boolean {\r\n\t\treturn !_.isNil(this.reservation) && this.reservation.source === SourceSystem[SourceSystem.PetPass].toLowerCase();\r\n\t}\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models/Model\";\r\nimport { StoreModel } from \"@common/models/StoreModel\";\r\nimport { DateTimeUtils } from \"@common/utils\";\r\nimport { ClinicVeterinarianModel } from \"@common/models/ClinicVeterinarianModel\";\r\nimport { ClinicUserModel, IClinicUserModel } from \"@common/models/ClinicUserModel\";\r\nimport { IVisitListing, VisitListingModel } from \"@common/models/VisitListingModel\";\r\nimport { IReservationModel, ReservationModel } from \"@common/models\";\r\n\r\n/**\r\n * FROM: ClinicModel.cs\r\n */\r\nexport interface IClinicModel extends IModel {\r\n\tclinicId: number;\r\n\tstoreId: number;\r\n\tscheduledStartDate: string;\r\n\tscheduledEndDate: string;\r\n\tstartDate?: string | undefined;\r\n\tendDate?: string | undefined;\r\n\tcanOpen: boolean;\r\n\tcanJoin: boolean;\r\n\tisPendingClose: boolean;\r\n\tallowChangingSingleVisitVet: boolean;\r\n\tveterinarianOverrideName: string;\r\n\tveterinarianOverrideFirstName: string;\r\n\tveterinarianOverrideLastName: string;\r\n\tveterinarianOverrideLicense: string;\r\n\tveterinarianOverrideEmail: string;\r\n\tveterinarianOverrideExpirationDate?: string | undefined;\r\n\tveterinarianName: string;\r\n\tveterinarianFirstName: string;\r\n\tveterinarianLastName: string;\r\n\tveterinarianLicense: string;\r\n\tveterinarianLicenseExpirationDate?: string | undefined;\r\n\tveterinarianEmail: string;\r\n\tdefaultRabiesSerialNumber: string;\r\n\tstore: StoreModel | undefined;\r\n\tveterinarians: ClinicVeterinarianModel[] | undefined;\r\n\tusers: IClinicUserModel[] | undefined;\r\n\tvisits: IVisitListing[]; // VisitListingModel[];\r\n\treservations: IReservationModel[];\r\n\tmobileRig: any; // MobileRigModel;\r\n\tserverRootUrl: string | undefined;\r\n\tisCancelled: boolean;\r\n\tisPublished: boolean;\r\n\ttargetAOV?: number | undefined;\r\n\tclinicAOV?: number | undefined;\r\n\twasAOVTargetMet?: boolean | undefined;\r\n\tveterinarianSignaturePhotoId?: number | undefined;\r\n\tsaveVetSignatureToClinic: boolean;\r\n\tveterinarianSignaturePhoto: any; // PhotoModel;\r\n\tslotDuration: number;\r\n\tappointmentCapacity: number;\r\n\tcancelledDate?: string | undefined;\r\n\tclinicCancellationReasonId?: number | undefined;\r\n\tclinicCancelledBy: string;\r\n\tclinicCancelledApprovedBy: string;\r\n\tclinicCancellationNotes: string;\r\n\tclinicCancellationProcessedDate?: string | undefined;\r\n\tbusinessLineId: number;\r\n\tdispatchPcc?: number | undefined;\r\n}\r\n\r\nexport class ClinicModel extends Model implements ModelRecord {\r\n\tclinicId: number;\r\n\tstoreId: number;\r\n\tscheduledStartDate: DateTime;\r\n\tscheduledEndDate: DateTime;\r\n\tstartTime: string;\r\n\tendTime: string;\r\n\tstartDate: DateTime;\r\n\tendDate: DateTime | undefined;\r\n\tcanJoin: boolean;\r\n\tcanOpen: boolean;\r\n\tisPendingClose: boolean;\r\n\tveterinarianName: string;\r\n\tveterinarianFirstName: string;\r\n\tveterinarianLastName: string;\r\n\tveterinarianLicense: string;\r\n\tveterinarianLicenseExpirationDate: DateTime | undefined;\r\n\tveterinarianEmail: string;\r\n\tstore: StoreModel | undefined;\r\n\tstoreName: string;\r\n\tstoreNumber: string;\r\n\tstoreAddress: string;\r\n\tstoreCity: string;\r\n\tstateAbbr: string;\r\n\tclinicAddress: string;\r\n\tisCancelled: boolean;\r\n\tveterinarians: ClinicVeterinarianModel[] | undefined;\r\n\tusers: ClinicUserModel[] | undefined;\r\n\tserverRootUrl: string | undefined;\r\n\tvisits: VisitListingModel[];\r\n\treservations: ReservationModel[];\r\n\tisPublished: boolean;\r\n\tsaveVetSignatureToClinic: boolean;\r\n\tslotDuration: number;\r\n\tappointmentCapacity: number;\r\n\tcancelledDate: string | undefined;\r\n\tclinicCancellationReasonId: number | undefined;\r\n\tclinicCancelledBy: string | undefined;\r\n\tclinicCancelledApprovedBy: string | undefined;\r\n\tclinicCancellationNotes: string | undefined;\r\n\tclinicCancellationProcessedDate: string | undefined;\r\n\tbusinessLineId: number;\r\n\r\n\tallowChangingSingleVisitVet: boolean;\r\n\tveterinarianOverrideName: string | undefined;\r\n\tveterinarianOverrideFirstName: string | undefined;\r\n\tveterinarianOverrideLastName: string | undefined;\r\n\tveterinarianOverrideLicense: string | undefined;\r\n\tveterinarianOverrideEmail: string | undefined;\r\n\tveterinarianOverrideExpirationDate: string | undefined;\r\n\tdefaultRabiesSerialNumber: string | undefined;\r\n\r\n\tconstructor(params: Partial) {\r\n\t\tsuper(params);\r\n\t\tthis.clinicId = _.defaultTo(params.clinicId, 0);\r\n\t\tthis.storeId = _.defaultTo(params.storeId, 0);\r\n\t\tthis.scheduledStartDate = DateTime.fromISO(_.defaultTo(params.scheduledStartDate, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.scheduledEndDate = DateTime.fromISO(_.defaultTo(params.scheduledEndDate, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.startTime = DateTimeUtils.getTimehour12(this.scheduledStartDate);\r\n\t\tthis.endTime = DateTimeUtils.getTimehour12(this.scheduledEndDate);\r\n\t\tthis.startDate = DateTime.fromISO(_.defaultTo(params.startDate, \"2000-01-01\"), { zone: \"utc\" });\r\n\t\tthis.endDate = params.endDate ? DateTime.fromISO(params.endDate, { zone: \"utc\" }) : undefined;\r\n\t\tthis.canJoin = _.defaultTo(params.canJoin, false);\r\n\t\tthis.isPendingClose = _.defaultTo(params.isPendingClose, false);\r\n\t\tthis.canOpen = _.defaultTo(params.canOpen, false);\r\n\t\tthis.veterinarianName = _.defaultTo(params.veterinarianName, \"\");\r\n\t\tthis.veterinarianFirstName = _.defaultTo(params.veterinarianFirstName, \"\");\r\n\t\tthis.veterinarianLastName = _.defaultTo(params.veterinarianLastName, \"\");\r\n\t\tthis.veterinarianLicense = _.defaultTo(params.veterinarianLicense, \"\");\r\n\t\tthis.veterinarianEmail = _.defaultTo(params.veterinarianEmail, \"\");\r\n\t\tthis.veterinarianLicenseExpirationDate = params.veterinarianLicenseExpirationDate ? DateTime.fromISO(params.veterinarianLicenseExpirationDate, { zone: \"utc\" }) : undefined;\r\n\t\tthis.store = params.store ? new StoreModel(params.store) : undefined;\r\n\t\tthis.storeName = _.defaultTo(this.store?.name?.split(\" \")[0], \"\");\r\n\t\tthis.storeNumber = _.defaultTo(this.store?.name?.split(\" \")[1], \"\");\r\n\t\tthis.storeAddress = _.defaultTo(this.store?.address, \"\");\r\n\t\tthis.storeCity = _.defaultTo(this.store?.city, \"\");\r\n\t\tthis.stateAbbr = _.defaultTo(this.store?.state?.abbreviation, \"\");\r\n\t\tthis.clinicAddress = _.defaultTo(this.store?.address + \", \" + this.storeCity + \", \" + this.stateAbbr + \" \" + this.store?.zipCode, \"\");\r\n\t\tthis.isCancelled = _.defaultTo(params.isCancelled, false);\r\n\t\tthis.veterinarians = params?.veterinarians ? params?.veterinarians.map(p => new ClinicVeterinarianModel(p)) : ([] as ClinicVeterinarianModel[]);\r\n\t\tthis.users = params?.users ? params?.users.map(p => new ClinicUserModel(p)) : ([] as ClinicUserModel[]);\r\n\t\tthis.serverRootUrl = _.defaultTo(params.serverRootUrl, \"\");\r\n\r\n\t\tthis.visits = params?.visits ? params?.visits.map(v => new VisitListingModel(v)) : ([] as VisitListingModel[]);\r\n\t\tthis.reservations = params.reservations?.map(r => new ReservationModel(r)) ?? [];\r\n\t\tthis.isPublished = _.defaultTo(params.isPublished, false);\r\n\t\tthis.saveVetSignatureToClinic = _.defaultTo(params.saveVetSignatureToClinic, false);\r\n\t\tthis.slotDuration = _.defaultTo(params.slotDuration, 0);\r\n\t\tthis.appointmentCapacity = _.defaultTo(params.appointmentCapacity, 0);\r\n\t\tthis.cancelledDate = _.defaultTo(params.cancelledDate, undefined);\r\n\t\tthis.clinicCancellationReasonId = _.defaultTo(params.clinicCancellationReasonId, undefined);\r\n\t\tthis.clinicCancelledBy = _.defaultTo(params.clinicCancelledBy, undefined);\r\n\t\tthis.clinicCancelledApprovedBy = _.defaultTo(params.clinicCancelledApprovedBy, undefined);\r\n\t\tthis.clinicCancellationNotes = _.defaultTo(params.clinicCancellationNotes, undefined);\r\n\t\tthis.clinicCancellationProcessedDate = _.defaultTo(params.clinicCancellationProcessedDate, undefined);\r\n\t\tthis.businessLineId = _.defaultTo(params.businessLineId, 0);\r\n\r\n\t\tthis.allowChangingSingleVisitVet = _.defaultTo(params.allowChangingSingleVisitVet, false);\r\n\t\tthis.veterinarianOverrideName = _.defaultTo(params.veterinarianOverrideName, undefined);\r\n\t\tthis.veterinarianOverrideFirstName = _.defaultTo(params.veterinarianOverrideFirstName, undefined);\r\n\t\tthis.veterinarianOverrideLastName = _.defaultTo(params.veterinarianOverrideLastName, undefined);\r\n\t\tthis.veterinarianOverrideLicense = _.defaultTo(params.veterinarianOverrideLicense, undefined);\r\n\t\tthis.veterinarianOverrideEmail = _.defaultTo(params.veterinarianOverrideEmail, undefined);\r\n\t\tthis.veterinarianOverrideExpirationDate = _.defaultTo(params.veterinarianOverrideExpirationDate, undefined);\r\n\t\tthis.defaultRabiesSerialNumber = _.defaultTo(params.defaultRabiesSerialNumber, undefined);\r\n\t}\r\n\tmobileRig: any;\r\n\ttargetAOV: any;\r\n\tclinicAOV: any;\r\n\twasAOVTargetMet: any;\r\n\tveterinarianSignaturePhotoId: any;\r\n\tveterinarianSignaturePhoto: any;\r\n\tdispatchPcc: any;\r\n}\r\n","import { IModel, Model, ModelRecord } from \"@common/models/Model\";\r\n\r\nexport interface IVisitClient extends IModel {\r\n\tclientId: number;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\tcellPhone: string;\r\n\tisOKToSMS: boolean;\r\n\tcanSMS: boolean;\r\n\tcanCall: boolean;\r\n}\r\n\r\nexport class VisitClientModel extends Model implements ModelRecord {\r\n\tclientId: number;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\tcellPhone: string;\r\n\tisOKToSMS: boolean;\r\n\tcanSMS: boolean;\r\n\tcanCall: boolean;\r\n\tconstructor(params: Partial) {\r\n\t\tsuper(params);\r\n\t\tthis.clientId = _.defaultTo(params.clientId, 0);\r\n\t\tthis.firstName = _.defaultTo(params.firstName, \"\");\r\n\t\tthis.lastName = _.defaultTo(params.lastName, \"\");\r\n\t\tthis.cellPhone = _.defaultTo(params.cellPhone, \"\");\r\n\t\tthis.isOKToSMS = _.defaultTo(params.isOKToSMS, false);\r\n\t\tthis.canSMS = _.defaultTo(params.canSMS, false);\r\n\t\tthis.canCall = _.defaultTo(params.canCall, false);\r\n\t}\r\n}\r\n","import { IntakeCompletionStatuses } from \"@common/models/Enums\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models/Model\";\r\n\r\nexport interface IVisitIntakeCompletionStatus extends IModel {\r\n\tintakeCompletionStatusId: IntakeCompletionStatuses;\r\n\tname: string;\r\n}\r\n\r\nexport class VisitIntakeCompletionStatusModel extends Model implements ModelRecord {\r\n\tintakeCompletionStatusId: IntakeCompletionStatuses;\r\n\tname: string;\r\n\tconstructor(params: Partial) {\r\n\t\tsuper(params);\r\n\t\tthis.intakeCompletionStatusId = _.defaultTo(params.intakeCompletionStatusId, 0 as IntakeCompletionStatuses);\r\n\t\tthis.name = _.defaultTo(params.name, \"\");\r\n\t}\r\n}\r\n","import { SpeciesType } from \"@common/models/Enums\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models/Model\";\r\n\r\nexport interface IVisitPet extends IModel {\r\n\tpetId: number;\r\n\tname: string;\r\n\tspeciesId: SpeciesType;\r\n\tspeciesName: string;\r\n\thasHadReaction: boolean;\r\n\tprocessedPhotoBaseUrl: string;\r\n\tphotoUrl: string;\r\n\tazureImage: { container: string; fileName: string; } | undefined;\r\n}\r\n\r\nexport class VisitPetModel extends Model implements ModelRecord {\r\n\tpetId: number;\r\n\tname: string;\r\n\tspeciesId: SpeciesType;\r\n\tspeciesName: string;\r\n\thasHadReaction: boolean;\r\n\tprocessedPhotoBaseUrl: string;\r\n\tphotoUrl: string;\r\n\tazureImage: { container: string; fileName: string; } | undefined;\r\n\r\n\tconstructor(params: Partial) {\r\n\t\tsuper(params);\r\n\t\tthis.petId = _.defaultTo(params.petId, 0);\r\n\t\tthis.name = _.defaultTo(params.name, \"\");\r\n\t\tthis.speciesId = _.defaultTo(params.speciesId, SpeciesType.Unknown);\r\n\t\tthis.speciesName = _.defaultTo(params.speciesName, \"\");\r\n\t\tthis.hasHadReaction = _.defaultTo(params.hasHadReaction, false);\r\n\t\tthis.processedPhotoBaseUrl = _.defaultTo(params.processedPhotoBaseUrl, \"\");\r\n\t\tthis.photoUrl = _.defaultTo(params.photoUrl, \"\");\r\n\r\n\t\tif (this.processedPhotoBaseUrl !== \"\") {\r\n\t\t\t// \"processedPhotoBaseUrl\": \"/azure/pet/0-20240123210614-english-springer-spaniel-dog-breed-info.png\"\r\n\t\t\tlet url = this.processedPhotoBaseUrl.split(\"/\");\r\n\t\t\tthis.azureImage = {\r\n\t\t\t\tcontainer: url[2],\r\n\t\t\t\tfileName: url[3],\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n}\r\n","import { IModel, Model } from \"@common/models/Model\";\r\nimport { StringUtility } from \"@common/utils/stringUtility\";\r\nimport { PhotoModel, StorageContentModel } from \".\";\r\nimport { LabOrderEventListingModel } from \"./LabOrderEventListingModel\";\r\nimport { LabOrderTestListingModel } from \"./LabOrderTestListingModel\";\r\n\r\nexport interface ILabOrderModel extends IModel {\r\n labOrderId: number;\r\n labOrderPublicId: string;\r\n visitId: number;\r\n clientId: number;\r\n petId: number;\r\n clinicId: number;\r\n storeId: number;\r\n sourceSystemId: number;\r\n veterinarianId?: number;\r\n licenseId?: number;\r\n diagnosticResultsDocumentId?: number;\r\n dateResulted?: string;\r\n // Client Fields\r\n clientPublicId: string;\r\n clientFirstName: string;\r\n clientLastName: string;\r\n clientEmailAddress: string;\r\n clientPhone: string;\r\n clientAddress: string;\r\n clientAddress2: string;\r\n clientCity: string;\r\n clientStateAbbreviation: string;\r\n clientZipCode: string;\r\n clientCounty: string;\r\n\r\n //Pet Fields\r\n petPublicId: string;\r\n petName: string;\r\n petSpeciesName: string;\r\n petGenderName: string;\r\n petBreedName: string;\r\n petBirthDate: string;\r\n petWeight: number;\r\n petMedications: string;\r\n petMicrochipNumber: string;\r\n petRabiesTagNumber: string;\r\n\r\n // Vet Fields\r\n veterinarianPublicId: string;\r\n vetFirstName: string;\r\n vetLastName: string;\r\n vetEmail: string;\r\n vetLicenseNumber: string;\r\n vetLicenseStateAbbreviation: string;\r\n vetLicenseExpirationDate: string;\r\n vetLicenseLicenseTypeName: string;\r\n vetSignaturePhotoId?: number;\r\n\r\n // Technician Fields\r\n technicianFirstName: string;\r\n technicianLastName: string;\r\n\r\n // Clinic Fields\r\n storeCode: string;\r\n storeName: string;\r\n storeAddress: string;\r\n storeAddress2: string;\r\n storeCity: string;\r\n storeStateAbbreviation: string;\r\n storeZipCode: string;\r\n storePhone: string;\r\n storeSecondaryPhone: string;\r\n storeBrandName: string;\r\n storePartnerName: string;\r\n storePartnerLabel: string;\r\n storeTimezoneName: string;\r\n storeLatitude: number;\r\n storeLongitude: number;\r\n\r\n // Other Fields\r\n isInHouseDiagnostic: boolean;\r\n specimenCollectionDate: string;\r\n inHouseLabStationDevices: string;\r\n paperlessBarcode: string; // i.e. IDEXX's PLOBarcode\r\n\r\n // Lab Supplied Order Fields\r\n orderSourceSystemKey: string;\r\n orderStatus: string;\r\n orderUIUrl: string;\r\n orderPDFUrl: string;\r\n\r\n // Lab Supplied Result Fields\r\n resultSourceSystemKey: string; // i.e. The Lab's ResultId\r\n resultDataPayload: string; // i.e. The Lab's Result Data in JSON format. This will change over time as partial and complete results flow in\r\n resultUIUrl: string; // i.e. The Lab's Result UI URL. This is the URL we use if we want to show Refernce Lab's Results UI. The result of this URL will be JSON, with a time-sensitive, single-use, URL that is used in a browser.\r\n resultPDFUrl: string; // i.e. The Lab's PDF URL. This is the url we use to *obtain* the PDF. The resulting PDF is then stored in PetPass for repeatid reads from our infrastructure. See DiagnosticResultsDocumentId and DiagnosticResultsDocument fields.\r\n resultStatus: string | undefined; // i.e. The Lab's Status. This will change over time as partial and complete results are received.\r\n resultModality: string; // i.e. The Lab's Modality. Ref-Lab vs In-House\r\n\r\n vetSignaturePhoto: PhotoModel;\r\n diagnosticResultsDocument: StorageContentModel;\r\n orderPDFDocument: StorageContentModel;\r\n events: LabOrderEventListingModel[];\r\n tests: LabOrderTestListingModel[];\r\n\r\n notes: string;\r\n reviewedBy: string;\r\n communicatedBy: string;\r\n}\r\n\r\nexport class LabOrderModel extends Model implements ILabOrderModel {\r\n labOrderId: number;\r\n labOrderPublicId: string;\r\n visitId: number;\r\n clientId: number;\r\n petId: number;\r\n clinicId: number;\r\n storeId: number;\r\n sourceSystemId: number;\r\n veterinarianId?: number;\r\n licenseId?: number;\r\n diagnosticResultsDocumentId?: number;\r\n\r\n // Client Fields\r\n clientPublicId: string;\r\n clientFirstName: string;\r\n clientLastName: string;\r\n clientEmailAddress: string;\r\n clientPhone: string;\r\n clientAddress: string;\r\n clientAddress2: string;\r\n clientCity: string;\r\n clientStateAbbreviation: string;\r\n clientZipCode: string;\r\n clientCounty: string;\r\n dateResulted?: string;\r\n //Pet Fields\r\n petPublicId: string;\r\n petName: string;\r\n petSpeciesName: string;\r\n petGenderName: string;\r\n petBreedName: string;\r\n petBirthDate: string;\r\n petWeight: number;\r\n petMedications: string;\r\n petMicrochipNumber: string;\r\n petRabiesTagNumber: string;\r\n\r\n // Vet Fields\r\n veterinarianPublicId: string;\r\n vetFirstName: string;\r\n vetLastName: string;\r\n vetEmail: string;\r\n vetLicenseNumber: string;\r\n vetLicenseStateAbbreviation: string;\r\n vetLicenseExpirationDate: string;\r\n vetLicenseLicenseTypeName: string;\r\n vetSignaturePhotoId?: number;\r\n\r\n // Technician Fields\r\n technicianFirstName: string;\r\n technicianLastName: string;\r\n\r\n // Clinic Fields\r\n storeCode: string;\r\n storeName: string;\r\n storeAddress: string;\r\n storeAddress2: string;\r\n storeCity: string;\r\n storeStateAbbreviation: string;\r\n storeZipCode: string;\r\n storePhone: string;\r\n storeSecondaryPhone: string;\r\n storeBrandName: string;\r\n storePartnerName: string;\r\n storePartnerLabel: string;\r\n storeTimezoneName: string;\r\n storeLatitude: number;\r\n storeLongitude: number;\r\n\r\n // Other Fields\r\n isInHouseDiagnostic: boolean;\r\n specimenCollectionDate: string;\r\n inHouseLabStationDevices: string;\r\n paperlessBarcode: string; // i.e. IDEXX's PLOBarcode\r\n\r\n // Lab Supplied Order Fields\r\n orderSourceSystemKey: string;\r\n orderStatus: string;\r\n orderUIUrl: string;\r\n orderPDFUrl: string;\r\n\r\n // Lab Supplied Result Fields\r\n resultSourceSystemKey: string; // i.e. The Lab's ResultId\r\n resultDataPayload: string; // i.e. The Lab's Result Data in JSON format. This will change over time as partial and complete results flow in\r\n resultUIUrl: string; // i.e. The Lab's Result UI URL. This is the URL we use if we want to show Refernce Lab's Results UI. The result of this URL will be JSON, with a time-sensitive, single-use, URL that is used in a browser.\r\n resultPDFUrl: string; // i.e. The Lab's PDF URL. This is the url we use to *obtain* the PDF. The resulting PDF is then stored in PetPass for repeatid reads from our infrastructure. See DiagnosticResultsDocumentId and DiagnosticResultsDocument fields.\r\n resultStatus: string | undefined; // i.e. The Lab's Status. This will change over time as partial and complete results are received.\r\n resultModality: string; // i.e. The Lab's Modality. Ref-Lab vs In-House\r\n\r\n vetSignaturePhoto: PhotoModel;\r\n diagnosticResultsDocument: StorageContentModel;\r\n orderPDFDocument: StorageContentModel;\r\n events: LabOrderEventListingModel[];\r\n tests: LabOrderTestListingModel[];\r\n\r\n clientName: string;\r\n vetName: string;\r\n\r\n notes: string;\r\n reviewedBy: string;\r\n communicatedBy: string;\r\n\r\n constructor(params: Partial = {}) {\r\n super(params);\r\n const {\r\n labOrderId = 0,\r\n labOrderPublicId = '',\r\n visitId = 0,\r\n clientId = 0,\r\n petId = 0,\r\n clinicId = 0,\r\n storeId = 0,\r\n sourceSystemId = 0,\r\n veterinarianId = 0,\r\n licenseId = 0,\r\n diagnosticResultsDocumentId = 0,\r\n clientPublicId = '',\r\n clientFirstName = '',\r\n clientLastName = '',\r\n clientEmailAddress = '',\r\n clientPhone = '',\r\n clientAddress = '',\r\n clientAddress2 = '',\r\n clientCity = '',\r\n clientStateAbbreviation = '',\r\n clientZipCode = '',\r\n clientCounty = '',\r\n petPublicId = '',\r\n petName = '',\r\n petSpeciesName = '',\r\n petGenderName = '',\r\n petBreedName = '',\r\n petBirthDate = '',\r\n petWeight = 0,\r\n petMedications = '',\r\n petMicrochipNumber = '',\r\n petRabiesTagNumber = '',\r\n veterinarianPublicId = '',\r\n vetFirstName = '',\r\n vetLastName = '',\r\n vetEmail = '',\r\n vetLicenseNumber = '',\r\n vetLicenseStateAbbreviation = '',\r\n vetLicenseExpirationDate = '',\r\n vetLicenseLicenseTypeName = '',\r\n vetSignaturePhotoId = 0,\r\n technicianFirstName = '',\r\n technicianLastName = '',\r\n storeCode = '',\r\n storeName = '',\r\n storeAddress = '',\r\n storeAddress2 = '',\r\n storeCity = '',\r\n storeStateAbbreviation = '',\r\n storeZipCode = '',\r\n storePhone = '',\r\n storeSecondaryPhone = '',\r\n storeBrandName = '',\r\n storePartnerName = '',\r\n storePartnerLabel = '',\r\n storeTimezoneName = '',\r\n storeLatitude = 0,\r\n storeLongitude = 0,\r\n isInHouseDiagnostic = false,\r\n specimenCollectionDate = '',\r\n inHouseLabStationDevices = '',\r\n paperlessBarcode = '',\r\n orderSourceSystemKey = '',\r\n orderStatus = '',\r\n orderUIUrl = '',\r\n orderPDFUrl = '',\r\n resultSourceSystemKey = '',\r\n resultDataPayload = '',\r\n resultUIUrl = '',\r\n resultPDFUrl = '',\r\n resultStatus = '',\r\n resultModality = '',\r\n vetSignaturePhoto = new PhotoModel(),\r\n diagnosticResultsDocument = new StorageContentModel(),\r\n orderPDFDocument = new StorageContentModel(),\r\n events = [],\r\n tests = [],\r\n notes = '',\r\n reviewedBy = '',\r\n communicatedBy = '',\r\n dateResulted = ''\r\n } = params;\r\n\r\n this.labOrderId = labOrderId;\r\n this.labOrderPublicId = labOrderPublicId;\r\n this.visitId = visitId;\r\n this.clientId = clientId;\r\n this.petId = petId;\r\n this.clinicId = clinicId;\r\n this.storeId = storeId;\r\n this.sourceSystemId = sourceSystemId;\r\n this.veterinarianId = veterinarianId;\r\n this.licenseId = licenseId;\r\n this.diagnosticResultsDocumentId = diagnosticResultsDocumentId;\r\n this.clientPublicId = clientPublicId;\r\n this.clientFirstName = clientFirstName;\r\n this.clientLastName = clientLastName;\r\n this.clientEmailAddress = clientEmailAddress;\r\n this.clientPhone = clientPhone;\r\n this.clientAddress = clientAddress;\r\n this.clientAddress2 = clientAddress2;\r\n this.clientCity = clientCity;\r\n this.clientStateAbbreviation = clientStateAbbreviation;\r\n this.clientZipCode = clientZipCode;\r\n this.clientCounty = clientCounty;\r\n this.petPublicId = petPublicId;\r\n this.petName = petName;\r\n this.petSpeciesName = petSpeciesName;\r\n this.petGenderName = petGenderName;\r\n this.petBreedName = petBreedName;\r\n this.petBirthDate = petBirthDate;\r\n this.petWeight = petWeight;\r\n this.petMedications = petMedications;\r\n this.petMicrochipNumber = petMicrochipNumber;\r\n this.petRabiesTagNumber = petRabiesTagNumber;\r\n this.veterinarianPublicId = veterinarianPublicId;\r\n this.vetFirstName = vetFirstName;\r\n this.vetLastName = vetLastName;\r\n this.vetEmail = vetEmail;\r\n this.vetLicenseNumber = vetLicenseNumber;\r\n this.vetLicenseStateAbbreviation = vetLicenseStateAbbreviation;\r\n this.vetLicenseExpirationDate = vetLicenseExpirationDate;\r\n this.vetLicenseLicenseTypeName = vetLicenseLicenseTypeName;\r\n this.vetSignaturePhotoId = vetSignaturePhotoId;\r\n this.technicianFirstName = technicianFirstName;\r\n this.technicianLastName = technicianLastName;\r\n this.storeCode = storeCode;\r\n this.storeName = storeName;\r\n this.storeAddress = storeAddress;\r\n this.storeAddress2 = storeAddress2;\r\n this.storeCity = storeCity;\r\n this.storeStateAbbreviation = storeStateAbbreviation;\r\n this.storeZipCode = storeZipCode;\r\n this.storePhone = storePhone;\r\n this.storeSecondaryPhone = storeSecondaryPhone;\r\n this.storeBrandName = storeBrandName;\r\n this.storePartnerName = storePartnerName;\r\n this.storePartnerLabel = storePartnerLabel;\r\n this.storeTimezoneName = storeTimezoneName;\r\n this.storeLatitude = storeLatitude;\r\n this.storeLongitude = storeLongitude;\r\n this.isInHouseDiagnostic = isInHouseDiagnostic;\r\n this.specimenCollectionDate = specimenCollectionDate;\r\n this.inHouseLabStationDevices = inHouseLabStationDevices;\r\n this.paperlessBarcode = paperlessBarcode;\r\n this.orderSourceSystemKey = orderSourceSystemKey;\r\n this.orderStatus = orderStatus;\r\n this.orderUIUrl = orderUIUrl;\r\n this.orderPDFUrl = orderPDFUrl;\r\n this.resultSourceSystemKey = resultSourceSystemKey;\r\n this.resultDataPayload = resultDataPayload;\r\n this.resultUIUrl = resultUIUrl;\r\n this.resultPDFUrl = resultPDFUrl;\r\n this.resultStatus = resultStatus;\r\n this.resultModality = resultModality;\r\n this.vetSignaturePhoto = vetSignaturePhoto;\r\n this.diagnosticResultsDocument = diagnosticResultsDocument;\r\n this.orderPDFDocument = orderPDFDocument;\r\n this.events = events;\r\n this.tests = tests;\r\n\r\n this.clientName = StringUtility.formattedUserName(clientFirstName, clientLastName, undefined);\r\n this.vetName = StringUtility.formattedUserName(vetFirstName, vetLastName, \"Dr\");\r\n\r\n this.notes = notes;\r\n this.communicatedBy = communicatedBy;\r\n this.reviewedBy = reviewedBy;\r\n this.dateResulted = dateResulted;\r\n }\r\n}\r\n","import { IReservationModel, ReservationModel } from \"@common/models\";\r\n\r\nexport interface IRebookReservationResponse {\r\n reservation: IReservationModel | undefined;\r\n reschedulingSystemUrl: string;\r\n}\r\n\r\nexport class RebookReservationResponse implements Record {\r\n reservation: ReservationModel | undefined;\r\n reschedulingSystemUrl: string;\r\n\r\n constructor(params: IRebookReservationResponse) {\r\n\r\n this.reservation = params.reservation ? new ReservationModel(params.reservation) : undefined;\r\n this.reschedulingSystemUrl = params.reschedulingSystemUrl;\r\n }\r\n}\r\n","import { DateTime } from \"luxon\"\r\nimport {\r\n enums,\r\n PhotoModel,\r\n VisitModel,\r\n VisitNoteModel,\r\n VisitWellnessExamModel,\r\n DiagnosisModel, SalesItemPriceRuleModel, SalesItemTraitModel, LabOrderModel\r\n}\r\n from \"@common/models\"\r\nimport { VisitSectionTypes } from \"../Enums\";\r\nimport { convertToNumber } from \"@common/utils/numberUtils\";\r\n\r\nexport interface IExamFollowupVisit {\r\n visitNotes: VisitNoteModel[] | undefined\r\n followupNote: VisitNoteModel | undefined;\r\n}\r\nexport interface IHasSectionVersion {\r\n sectionRowVersion: string\r\n}\r\nexport interface IHasFollowupVisitNotes extends IHasSectionVersion {\r\n followupVisit: IExamFollowupVisit,\r\n}\r\nexport interface IExamAssignment extends IHasSectionVersion {\r\n vetId: number | undefined\r\n room: string | undefined\r\n reservationAssignmentStatusId: number | undefined\r\n dispensingAuthUserId: number | undefined\r\n dispensingUserFirstName: string | undefined\r\n dispensingUserLastName: string | undefined\r\n appointmentTypeId: number | undefined\r\n}\r\nexport interface IWellnessExamCategory {\r\n examCategoryId: number\r\n name: string,\r\n visitExamResultId: number | undefined\r\n resultType: enums.ExamResultType | undefined\r\n observationIds: number[]\r\n notes: string | undefined\r\n}\r\nexport interface IWellnessExamIntake extends IHasFollowupVisitNotes {\r\n reasonForVisit: string | undefined\r\n appointmentNotes: string | undefined\r\n intakeNotes: string | undefined\r\n}\r\nexport interface IWellnessExamVital {\r\n sortOrder: number\r\n name: string\r\n required: boolean\r\n inputType: \"text\" | \"number\" | \"decimal\"\r\n label: string\r\n value: number | string | undefined\r\n valueSuffix: string | undefined\r\n unableToEvaluate: boolean | undefined;\r\n min: number | undefined\r\n max: number | undefined\r\n didNotEvaluate: boolean | undefined;\r\n}\r\n\r\nexport interface IHistoricWellnessExamVitals {\r\n visitDate: DateTime | undefined\r\n categories: IWellnessExamVital[]\r\n notes: string | undefined\r\n}\r\nexport interface IWellnessExamVitals extends IHistoricWellnessExamVitals, IHasFollowupVisitNotes {\r\n}\r\nexport interface IWellnessExamSubjective extends IHasFollowupVisitNotes {\r\n notes: string | undefined\r\n}\r\nexport interface IWellnessExamObjectiveWithoutNotes extends IHasSectionVersion {\r\n categories: IWellnessExamCategory[]\r\n}\r\n\r\nexport interface IWellnessExamObjective extends IWellnessExamObjectiveWithoutNotes, IHasFollowupVisitNotes {\r\n notes: string | undefined\r\n}\r\n\r\nexport interface IWellnessExamAssessmentDiagnosis extends IHasFollowupVisitNotes {\r\n diagnoses: DiagnosisModel[]\r\n notes: string | undefined\r\n}\r\nexport interface IWellnessExamPlan extends IHasFollowupVisitNotes {\r\n notes: string | undefined\r\n}\r\nexport interface IWellnessExamPrognosis extends IHasFollowupVisitNotes {\r\n score: number | undefined // for radio button value\r\n notes: string | undefined\r\n}\r\nexport interface IWellnessExamDischarge extends IHasFollowupVisitNotes {\r\n notes: string | undefined\r\n}\r\nexport interface IWellnessExamPrivateNotes extends IHasFollowupVisitNotes {\r\n notes: string | undefined\r\n}\r\nexport interface IWellnessExamSignature extends IHasSectionVersion {\r\n veterinarianFullName: string;\r\n signatureAppliedToVisit: PhotoModel | undefined;\r\n veterinarianLicenseNumber: string | undefined;\r\n vetClinicSignature: PhotoModel | undefined;\r\n hasVetAttestation: boolean\r\n}\r\nexport interface IWellnessExamSalesItem {\r\n salesItemId: number\r\n salesItemOptionId: number\r\n salesItemTypeId: number\r\n name: string\r\n option: string\r\n price: number\r\n dispensingFee: number | undefined\r\n sortOrder: number\r\n searchPattern: string\r\n salesSubCategoryId: number\r\n priceRules?: SalesItemPriceRuleModel[] | undefined\r\n hospitalSKU?: string | undefined\r\n petcoSKU?: string | undefined\r\n traits?: SalesItemTraitModel[];\r\n salesItemUpgradeId?: number | undefined;\r\n reminderDays?: number | undefined;\r\n}\r\n\r\nexport interface IWellnessExamVisitBuilder extends IHasFollowupVisitNotes {\r\n}\r\n\r\nexport interface IWellnessExamPostVisit extends IHasFollowupVisitNotes {\r\n}\r\n\r\nexport interface IWellnessExamDiagnostics extends IHasSectionVersion {\r\n notes: string | undefined\r\n}\r\n\r\nexport interface IWellnessExamForm {\r\n assignment: IExamAssignment\r\n intake: IWellnessExamIntake\r\n vitals: IWellnessExamVitals\r\n historicalVitals: IHistoricWellnessExamVitals[]\r\n subjective: IWellnessExamSubjective\r\n objectiveWithoutNotes: IWellnessExamObjectiveWithoutNotes\r\n objective: IWellnessExamObjective\r\n assessment: IWellnessExamAssessmentDiagnosis\r\n plan: IWellnessExamPlan\r\n prognosis: IWellnessExamPrognosis\r\n discharge: IWellnessExamDischarge\r\n privateNotes: IWellnessExamPrivateNotes\r\n signature: IWellnessExamSignature\r\n visitBuilder: IWellnessExamVisitBuilder\r\n postVisit: IWellnessExamPostVisit\r\n diagnostics: IWellnessExamDiagnostics\r\n}\r\n\r\nexport class WellnessExamForm implements IWellnessExamForm {\r\n assignment: IExamAssignment\r\n intake: IWellnessExamIntake\r\n vitals: IWellnessExamVitals\r\n historicalVitals: IHistoricWellnessExamVitals[]\r\n subjective: IWellnessExamSubjective\r\n objectiveWithoutNotes: IWellnessExamObjectiveWithoutNotes\r\n objective: IWellnessExamObjective\r\n assessment: IWellnessExamAssessmentDiagnosis\r\n plan: IWellnessExamPlan\r\n prognosis: IWellnessExamPrognosis\r\n discharge: IWellnessExamDischarge\r\n privateNotes: IWellnessExamPrivateNotes\r\n signature: IWellnessExamSignature\r\n visitBuilder: IWellnessExamVisitBuilder\r\n postVisit: IWellnessExamPostVisit\r\n diagnostics: IWellnessExamDiagnostics\r\n\r\n constructor(visit: VisitModel) {\r\n\r\n this.assignment = {\r\n vetId: visit.veterinarianId,\r\n room: visit.room,\r\n reservationAssignmentStatusId: visit?.reservation?.reservationAssignmentStatusId,\r\n dispensingAuthUserId: visit.dispensingAuthUserId,\r\n dispensingUserFirstName: visit.dispensingUserFirstName,\r\n dispensingUserLastName: visit.dispensingUserLastName,\r\n appointmentTypeId: visit.appointmentType?.appointmentTypeId,\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Assignment })!.rowVersion\r\n };\r\n this.intake = {\r\n reasonForVisit: visit.reasonForVisit,\r\n appointmentNotes: visit.notes,\r\n intakeNotes: visit.visitWellnessExam?.intakeNotes,\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(enums.VisitNoteType.Intake),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, enums.VisitNoteType.Intake)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Intake })!.rowVersion\r\n };\r\n this.vitals = {\r\n ...WellnessExamForm.ToExamVitals(visit.visitWellnessExam),\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(enums.VisitNoteType.Intake),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, enums.VisitNoteType.Intake)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Vitals })!.rowVersion\r\n };\r\n this.historicalVitals = visit.historicalVisitWellnessExams.map(e => WellnessExamForm.ToExamVitals(e));\r\n this.subjective = {\r\n notes: visit.visitWellnessExam?.subjectiveNotes,\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(enums.VisitNoteType.Subjective),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, enums.VisitNoteType.Subjective)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Subjective })!.rowVersion\r\n };\r\n this.objective = {\r\n categories: visit.examResults.map(er => ({\r\n examCategoryId: er.examCategoryId,\r\n name: er.examCategory.name,\r\n visitExamResultId: er.visitExamResultId,\r\n resultType: er.examResultTypeId,\r\n observationIds: er.observations.map(o => o.examObservationId) || [],\r\n notes: er.notes,\r\n })),\r\n notes: visit.visitWellnessExam?.objectiveNotes,\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(enums.VisitNoteType.Objective),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, enums.VisitNoteType.Objective)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Objective })!.rowVersion\r\n };\r\n this.objectiveWithoutNotes = {\r\n categories: visit.examResults.map(er => ({\r\n examCategoryId: er.examCategoryId,\r\n name: er.examCategory.name,\r\n visitExamResultId: er.visitExamResultId,\r\n resultType: er.examResultTypeId,\r\n observationIds: er.observations.map(o => o.examObservationId) || [],\r\n notes: er.notes,\r\n })),\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Objective })!.rowVersion\r\n }\r\n this.assessment = {\r\n diagnoses: visit.visitDiagnoses.map(visitDiagnosis => visitDiagnosis.diagnosis),\r\n notes: visit.visitWellnessExam?.notes,\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(enums.VisitNoteType.Assessment),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, enums.VisitNoteType.Assessment)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Assessment })!.rowVersion\r\n };\r\n this.plan = {\r\n notes: visit.visitWellnessExam?.planNotes,\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(enums.VisitNoteType.Plan),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, enums.VisitNoteType.Plan)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Plan })!.rowVersion\r\n };\r\n this.prognosis = {\r\n score: visit.visitWellnessExam?.prognosisScoreId,\r\n notes: visit.visitWellnessExam?.prognosisNotes,\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(enums.VisitNoteType.Prognosis),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, enums.VisitNoteType.Prognosis)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Prognosis })!.rowVersion\r\n };\r\n this.discharge = {\r\n notes: visit.visitWellnessExam?.dischargeNotes,\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(enums.VisitNoteType.Discharge),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, enums.VisitNoteType.Discharge)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Discharge })!.rowVersion\r\n };\r\n this.privateNotes = {\r\n notes: visit.visitWellnessExam?.privateNotes,\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(enums.VisitNoteType.Private),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, enums.VisitNoteType.Private)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.PrivateNotes })!.rowVersion\r\n };\r\n this.signature = {\r\n veterinarianFullName: `${visit.veterinarianFirstName} ${visit.veterinarianLastName}`,\r\n signatureAppliedToVisit: visit.veterinarianSignaturePhoto,\r\n vetClinicSignature: visit.clinicVetSignaturePhoto,\r\n veterinarianLicenseNumber: visit.veterinarianLicenseNumber,\r\n hasVetAttestation: visit.hasVetAttestation,\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.Signature })!.rowVersion\r\n };\r\n this.visitBuilder = {\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(enums.VisitNoteType.VisitBuilder),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, enums.VisitNoteType.VisitBuilder)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.VisitBuilder })!.rowVersion\r\n };\r\n this.postVisit = {\r\n followupVisit: {\r\n visitNotes: visit.filterVisitNotesByVisitNoteType(undefined),\r\n followupNote: VisitNoteModel.fromVisit(visit.visitId, undefined)\r\n },\r\n sectionRowVersion: _.find(visit.visitSectionVersions, { visitSectionTypeId: VisitSectionTypes.PostVisit })!.rowVersion\r\n }\r\n this.diagnostics = {\r\n notes: visit.labOrders.map(lo => WellnessExamForm.DiagnosticMarkup(lo)).join(\"\"),\r\n sectionRowVersion: \"\" // Diagnostic section does not have VisitSectionVersions\r\n }\r\n }\r\n\r\n static ToExamVitals(model: VisitWellnessExamModel): IHistoricWellnessExamVitals {\r\n return {\r\n visitDate: model.visitDate,\r\n notes: model.vitalsNotes,\r\n categories: [\r\n { sortOrder: 1, name: \"weight\", required: true, inputType: \"number\", label: \"Weight (lbs)\", value: model.weight, unableToEvaluate: undefined, min: 0, max: 9999.99, valueSuffix: undefined, didNotEvaluate: undefined },\r\n { sortOrder: 2, name: \"temp\", required: false, inputType: \"number\", label: \"Temperature (°F)\", value: model.temperature, unableToEvaluate: model.temperatureUTE, min: 0, max: 1000, valueSuffix: \"°F\", didNotEvaluate: model.temperatureDNE },\r\n { sortOrder: 3, name: \"pulse\", required: false, inputType: \"number\", label: \"Pulse (bpm)\", value: model.pulse, unableToEvaluate: model.pulseUTE, min: 0, max: 1000, valueSuffix: undefined, didNotEvaluate: model.pulseDNE },\r\n { sortOrder: 4, name: \"respiration\", required: false, inputType: \"number\", label: \"Respiration (bpm)\", value: model.respiration, unableToEvaluate: model.respirationUTE, min: 0, max: 1000, valueSuffix: undefined, didNotEvaluate: model.respirationDNE },\r\n { sortOrder: 5, name: \"attitude\", required: false, inputType: \"text\", label: \"Attitude\", value: model.attitude, unableToEvaluate: model.attitudeUTE, min: undefined, max: undefined, valueSuffix: undefined, didNotEvaluate: model.attitudeDNE },\r\n { sortOrder: 6, name: \"pain-score\", required: false, inputType: \"number\", label: \"Pain Score (0-10)\", value: model.painScale, unableToEvaluate: model.painScaleUTE, min: 0, max: 10, valueSuffix: undefined, didNotEvaluate: model.painScaleDNE },\r\n { sortOrder: 7, name: \"mucous-membrane\", required: false, inputType: \"text\", label: \"Mucous Membrane\", value: model.mucousMembrane, unableToEvaluate: model.mucousMembraneUTE, min: undefined, max: undefined, valueSuffix: undefined, didNotEvaluate: model.mucousMembraneDNE },\r\n { sortOrder: 8, name: \"capillary-refill\", required: false, inputType: \"text\", label: \"Capillary Refill\", value: model.capillaryRefill, unableToEvaluate: model.capillaryRefillUTE, min: undefined, max: undefined, valueSuffix: undefined, didNotEvaluate: model.capillaryRefillDNE },\r\n { sortOrder: 9, name: \"body-condition\", required: false, inputType: \"number\", label: \"BCS (1-9)\", value: model.bodyConditionScore, unableToEvaluate: model.bodyConditionScoreUTE, min: 1, max: 9, valueSuffix: undefined, didNotEvaluate: model.bodyConditionScoreDNE },\r\n ]\r\n }\r\n }\r\n\r\n static ParseUpdateModel(model: VisitWellnessExamModel, form: IWellnessExamForm): VisitWellnessExamModel {\r\n return {\r\n ...model,\r\n notes: form.assessment.notes,\r\n weight: convertToNumber(form.vitals.categories[0].value),\r\n temperature: convertToNumber(form.vitals.categories[1].value),\r\n temperatureUTE: form.vitals.categories[1].unableToEvaluate,\r\n temperatureDNE: form.vitals.categories[1].didNotEvaluate,\r\n pulse: convertToNumber(form.vitals.categories[2].value),\r\n pulseUTE: form.vitals.categories[2].unableToEvaluate,\r\n pulseDNE: form.vitals.categories[2].didNotEvaluate,\r\n respiration: convertToNumber(form.vitals.categories[3].value),\r\n respirationUTE: form.vitals.categories[3].unableToEvaluate,\r\n respirationDNE: form.vitals.categories[3].didNotEvaluate,\r\n attitude: form.vitals.categories[4].value?.toString(),\r\n attitudeUTE: form.vitals.categories[4].unableToEvaluate,\r\n attitudeDNE: form.vitals.categories[4].didNotEvaluate,\r\n painScale: convertToNumber(form.vitals.categories[5].value),\r\n painScaleUTE: form.vitals.categories[5].unableToEvaluate,\r\n painScaleDNE: form.vitals.categories[5].didNotEvaluate,\r\n mucousMembrane: form.vitals.categories[6].value?.toString(),\r\n mucousMembraneUTE: form.vitals.categories[6].unableToEvaluate,\r\n mucousMembraneDNE: form.vitals.categories[6].didNotEvaluate,\r\n capillaryRefill: form.vitals.categories[7].value?.toString(),\r\n capillaryRefillUTE: form.vitals.categories[7].unableToEvaluate,\r\n capillaryRefillDNE: form.vitals.categories[7].didNotEvaluate,\r\n bodyConditionScore: convertToNumber(form.vitals.categories[8].value),\r\n bodyConditionScoreUTE: form.vitals.categories[8].unableToEvaluate,\r\n bodyConditionScoreDNE: form.vitals.categories[8].didNotEvaluate,\r\n intakeNotes: form.intake.intakeNotes,\r\n subjectiveNotes: form.subjective.notes,\r\n objectiveNotes: form.objective.notes,\r\n vitalsNotes: form.vitals.notes,\r\n planNotes: form.plan.notes,\r\n prognosisNotes: form.prognosis.notes,\r\n dischargeNotes: form.discharge.notes,\r\n privateNotes: form.privateNotes?.notes,\r\n prognosisScoreId: form.prognosis.score\r\n }\r\n }\r\n\r\n static DiagnosticMarkup = ({ tests, reviewedBy, communicatedBy, notes}: LabOrderModel) => {\r\n const items = [\r\n { title: \"Diagnostic(s) Ordered\", value: _.sortBy(tests, t => t.testName.toLowerCase()).map(t => t.testName).join(\", \") },\r\n { title: \"Reviewed By\", value: reviewedBy },\r\n { title: \"Communicated By\", value: communicatedBy },\r\n { title: \"Notes\", value: notes }\r\n ];\r\n\r\n let markup = \"

\"\r\n markup += items.filter(i => i.value).map(i => `${i.title}: ${i.value} `).join(\"\")\r\n markup += \"

\";\r\n return markup;\r\n }\r\n}\r\n","import { makeObservable, observable } from \"mobx\";\r\nimport { AppointmentListingModel } from \"../AppointmentListingModel\";\r\nexport interface IAppointmentFlowLaneCard {\r\n appointment: AppointmentListingModel\r\n}\r\n\r\nexport class AppointmentFlowLaneCard implements IAppointmentFlowLaneCard {\r\n @observable appointment: AppointmentListingModel;\r\n\r\n constructor(params: Partial) {\r\n const {\r\n appointment = AppointmentListingModel.getDefault(),\r\n } = params;\r\n\r\n this.appointment = appointment;\r\n\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n}\r\n","import { AppointmentFlowLaneCard } from \"./AppointmentFlowLaneCard\";\r\nimport { AppointmentFlowActionOperations, AppointmentFlowSteps } from \"../Enums\";\r\nimport { makeObservable, observable } from \"mobx\";\r\n\r\n\r\nexport interface IFlowLaneDetails {\r\n timeInLane: string,\r\n actions: Array\r\n}\r\nexport interface IAppointmentFlowCompletedLaneDetails extends IFlowLaneDetails {\r\n title: string\r\n}\r\nexport interface IAppointmentFlowLaneDetails extends IFlowLaneDetails {\r\n title: AppointmentFlowSteps\r\n}\r\n\r\nexport interface IAppointmentFlowLaneAction {\r\n status: AppointmentFlowSteps,\r\n operation: AppointmentFlowActionOperations,\r\n requiresConfirm: boolean,\r\n cardLoading?: number\r\n}\r\n\r\nexport interface ISelectedFlowCard {\r\n card?: AppointmentFlowLaneCard\r\n laneIndex: number\r\n cardIndex: number\r\n actionIndex: number\r\n futureStatus?: AppointmentFlowSteps\r\n operation?: AppointmentFlowActionOperations\r\n}\r\n\r\nexport class AppointmentFlowLaneDetails implements IAppointmentFlowLaneDetails {\r\n title: AppointmentFlowSteps;\r\n timeInLane: string;\r\n actions: Array;\r\n\r\n constructor(params: Partial) {\r\n const {\r\n title = AppointmentFlowSteps.Scheduled,\r\n timeInLane = \"\",\r\n actions = []\r\n } = params;\r\n this.title = title;\r\n this.timeInLane = timeInLane;\r\n this.actions = actions;\r\n }\r\n}\r\nexport class AppointmentFlowCompletedLaneDetails implements IAppointmentFlowCompletedLaneDetails {\r\n title: string;\r\n timeInLane: string;\r\n actions: Array;\r\n\r\n constructor(params: Partial) {\r\n const {\r\n title = \"\",\r\n timeInLane = \"\",\r\n actions = []\r\n } = params;\r\n this.title = title;\r\n this.timeInLane = timeInLane;\r\n this.actions = actions;\r\n }\r\n}\r\n\r\nexport class AppointmentFlowLaneAction implements IAppointmentFlowLaneAction {\r\n status: AppointmentFlowSteps;\r\n operation: AppointmentFlowActionOperations;\r\n requiresConfirm: boolean;\r\n cardLoading?: number;\r\n\r\n constructor(params: Partial) {\r\n const {\r\n status = AppointmentFlowSteps.Scheduled,\r\n operation = AppointmentFlowActionOperations.CheckIn,\r\n requiresConfirm = false\r\n } = params;\r\n this.status = status;\r\n this.operation = operation;\r\n this.requiresConfirm = requiresConfirm;\r\n }\r\n}\r\n\r\nexport class SelectedFlowCard implements ISelectedFlowCard {\r\n @observable card?: AppointmentFlowLaneCard\r\n @observable laneIndex: number\r\n @observable cardIndex: number\r\n @observable actionIndex: number\r\n @observable futureStatus?: AppointmentFlowSteps\r\n @observable operation?: AppointmentFlowActionOperations\r\n\r\n constructor(params: Partial) {\r\n const {\r\n card = params.card && new AppointmentFlowLaneCard(params.card),\r\n laneIndex = 0,\r\n cardIndex = 0,\r\n actionIndex = 0,\r\n futureStatus = params.futureStatus,\r\n operation = params.operation\r\n } = params;\r\n\r\n this.card = card;\r\n this.laneIndex = laneIndex;\r\n this.cardIndex = cardIndex;\r\n this.actionIndex = actionIndex;\r\n this.futureStatus = futureStatus;\r\n this.operation = operation;\r\n\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n}\r\n","import { StringUtility } from \"@common/utils\"\r\n\r\nexport interface IMacroKeywords {\r\n \"{{hospitalname}}\": string\r\n \"{{hospitalemail}}\": string\r\n \"{{hospitalphone}}\": string\r\n \"{{hospitalcity}}\": string\r\n \"{{hospitaladdress}}\": string\r\n \"{{hospitalurl}}\": string\r\n \"{{clientfirstname}}\": string\r\n \"{{clientlastname}}\": string\r\n \"{{clientfullname}}\": string\r\n \"{{petname}}\": string\r\n \"{{vetname}}\": string\r\n \"{{todaysdate}}\": string\r\n \"{{petgender}}\": string\r\n \"{{hospitalsms}}\": string\r\n}\r\n\r\nexport class MacroKeywords implements IMacroKeywords {\r\n \"{{hospitalname}}\": string\r\n \"{{hospitalemail}}\": string\r\n \"{{hospitalphone}}\": string\r\n \"{{hospitalcity}}\": string\r\n \"{{hospitaladdress}}\": string\r\n \"{{hospitalurl}}\": string\r\n \"{{clientfirstname}}\": string\r\n \"{{clientlastname}}\": string\r\n \"{{clientfullname}}\": string\r\n \"{{petname}}\": string\r\n \"{{vetname}}\": string\r\n \"{{todaysdate}}\": string\r\n \"{{petgender}}\" : string\r\n \"{{hospitalsms}}\": string\r\n\r\n constructor(params: Partial) {\r\n //updated so empty strings aren't counted as values.\r\n this[\"{{hospitalname}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{hospitalname}}\"]), \"{{hospitalname}}\");\r\n this[\"{{hospitalemail}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{hospitalemail}}\"]), \"{{hospitalemail}}\");\r\n this[\"{{hospitalphone}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{hospitalphone}}\"]), \"{{hospitalphone}}\");\r\n this[\"{{hospitalcity}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{hospitalcity}}\"]), \"{{hospitalcity}}\");\r\n this[\"{{hospitaladdress}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{hospitaladdress}}\"]), \"{{hospitaladdress}}\");\r\n this[\"{{hospitalurl}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{hospitalurl}}\"]), \"{{hospitalurl}}\");\r\n this[\"{{clientfirstname}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{clientfirstname}}\"]), \"{{clientfirstname}}\");\r\n this[\"{{clientlastname}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{clientlastname}}\"]), \"{{clientlastname}}\");\r\n this[\"{{clientfullname}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{clientfullname}}\"]), \"{{clientfullname}}\");\r\n this[\"{{petname}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{petname}}\"]), \"{{petname}}\");\r\n this[\"{{vetname}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{vetname}}\"]), \"{{vetname}}\");\r\n this[\"{{todaysdate}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{todaysdate}}\"]), \"{{todaysdate}}\");\r\n this[\"{{petgender}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{petgender}}\"]), \"{{petgender}}\");\r\n this[\"{{hospitalsms}}\"] = _.defaultTo(StringUtility.SanitizeString(params[\"{{hospitalsms}}\"]), \"{{hospitalsms}}\");\r\n }\r\n\r\n /**\r\n * Replaces all keyword placeholders in text passed in with values from keywords param in one shot.\r\n * @param text The text with placeholders in it that need replaced\r\n * @param keywords The keyword values to replace them with.\r\n * @returns Transformed where any variables have been replaced by keywords that have values, if no value the placeholder will remain.\r\n */\r\n static processTextForMacros(text: string, keywords: MacroKeywords) {\r\n if (text === undefined) return;\r\n const reg = new RegExp(Object.keys(keywords).join(\"|\"), \"g\");\r\n return text.replace(reg, (matched: string) => keywords[matched as keyof MacroKeywords]);\r\n }\r\n}\r\n","import { NotificationStoreInstance } from \"@common/stores\";\r\nimport { ServiceMethodOptions } from \"./types\";\r\n\r\nexport class ServiceHelper {\r\n static showError(defaultMessage: string, options?: ServiceMethodOptions) {\r\n if (!options || options.showError === undefined || options?.showError)\r\n NotificationStoreInstance.error(options && options.errorMessage ? options.errorMessage : defaultMessage);\r\n }\r\n\r\n static showSuccess(defaultMessage: string, options?: ServiceMethodOptions) {\r\n if (options?.showSuccess)\r\n NotificationStoreInstance.success(options.successMessage ? options.successMessage : defaultMessage);\r\n }\r\n\r\n static getTagForOptions(defaultTag: string, options?: ServiceMethodOptions) {\r\n return (options && (options.promiseArea || defaultTag)) || defaultTag;\r\n }\r\n}\r\n","import { AuthApplicationKeys } from \"@common/models/Enums\";\r\nimport { ClientConfigurationModel, IClientConfigurationModel } from \"@common/models/ClientConfigurationModel\";\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { ServiceHelper } from \"./serviceHelper\";\r\nimport { ServiceMethodOptions } from \"./types\";\r\n\r\nexport class ConfigurationService {\r\n private static baseUrl: string = '/api/configuration/';\r\n\r\n static tags = {\r\n getConfiguration: \"getConfiguration\"\r\n }\r\n\r\n static getConfiguration = (authApplicationKey: AuthApplicationKeys, options?: ServiceMethodOptions, isPublic: boolean = false): Promise => {\r\n const vpca = (isPublic) ? '?vpca=351BD313-2C19-442B-BC87-C69356EB59EF' : '';\r\n\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${authApplicationKey}${vpca}`).get()\r\n .then((config) => {\r\n ServiceHelper.showSuccess(\"Configuration Loaded: \" + authApplicationKey.toString(), options);\r\n resolve(new ClientConfigurationModel(config));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to load configuration for: \" + authApplicationKey.toString(), options);\r\n reject(err);\r\n })\r\n }), this.tags.getConfiguration);\r\n };\r\n}\r\n","import { computed, action, makeObservable, observable, runInAction } from \"mobx\";\r\nimport { v4 as uuid } from 'uuid';\r\n\r\nexport enum NotificationType {\r\n SUCCESS = \"Success\",\r\n ERROR = \"Danger\",\r\n INFO = \"Info\"\r\n}\r\n\r\nexport interface INotification {\r\n message: string,\r\n type: NotificationType,\r\n sticky: boolean,\r\n body: React.ReactNode | undefined\r\n}\r\n\r\nexport class NotificationStore {\r\n @observable notificationsMap = observable.map([]);\r\n\r\n constructor() {\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n }); //use decorators \r\n }\r\n\r\n @computed get notifications() {\r\n return Array.from(this.notificationsMap.entries());\r\n }\r\n\r\n @action.bound success(message: string, sticky: boolean = false, body: React.ReactNode | undefined = undefined) {\r\n this.notificationsMap.set(uuid(), { message, type: NotificationType.SUCCESS, sticky, body });\r\n }\r\n\r\n @action.bound onSuccess(message: string, sticky: boolean = false, body: React.ReactNode | undefined = undefined) {\r\n return (result: T) => {\r\n runInAction(() => {\r\n this.notificationsMap.set(uuid(), { message, type: NotificationType.SUCCESS, sticky, body });\r\n })\r\n\r\n return result;\r\n }\r\n }\r\n\r\n @action.bound error(message: string, sticky: boolean = false, body: React.ReactNode | undefined = undefined) {\r\n this.notificationsMap.set(uuid(), { message, type: NotificationType.ERROR, sticky, body });\r\n }\r\n\r\n @action.bound onError(message: string, def: T, sticky: boolean = false, body: string | undefined = undefined) {\r\n return (result: T) => {\r\n runInAction(() => {\r\n this.notificationsMap.set(uuid(), { message: `${message} \\n ${result}`, type: NotificationType.ERROR, sticky, body });\r\n })\r\n\r\n return def;\r\n }\r\n }\r\n\r\n @action.bound info(message: string, sticky: boolean = false, body: React.ReactNode | undefined = undefined) {\r\n this.notificationsMap.set(uuid(), { message, type: NotificationType.INFO, sticky, body });\r\n }\r\n\r\n @action.bound onInfo(message: string, def: T, sticky: boolean = false, body: React.ReactNode | undefined = undefined) {\r\n return (result: T) => {\r\n runInAction(() => {\r\n this.notificationsMap.set(uuid(), { message: `${message} \\n ${result}`, type: NotificationType.INFO, sticky, body });\r\n })\r\n\r\n return def;\r\n }\r\n }\r\n\r\n @action.bound clearNotification(uuid: string) {\r\n this.notificationsMap.delete(uuid);\r\n }\r\n}\r\nexport const NotificationStoreInstance = new NotificationStore();\r\n","import { ClientConfigurationModel } from \"@common/models\";\r\nimport { AuthApplicationKeys } from \"@common/models/Enums\";\r\nimport { ConfigurationService } from \"@common/services/configurationService\";\r\nimport { flow, makeObservable, observable } from \"mobx\";\r\nimport { NotificationStore, NotificationStoreInstance } from \"./NotificationStore\";\r\n\r\nexport class AppStore {\r\n notifications: NotificationStore = NotificationStoreInstance;\r\n authApplicationKey: AuthApplicationKeys;\r\n isPublic: boolean;\r\n @observable isConfigurationLoading: boolean = true;\r\n @observable configuration: ClientConfigurationModel = new ClientConfigurationModel();\r\n\r\n constructor(authApplicationKey: AuthApplicationKeys, isPublic: boolean = false) {\r\n this.authApplicationKey = authApplicationKey;\r\n this.isPublic = isPublic;\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n load = flow(function* (this: AppStore) {\r\n // needs refactor to use PromiseTracker\r\n this.isConfigurationLoading = true;\r\n this.configuration = yield ConfigurationService.getConfiguration(this.authApplicationKey, undefined, this.isPublic);\r\n this.isConfigurationLoading = false;\r\n });\r\n}\r\n","import { AssessmentRecommendationModel, AssessmentReferralModel, BlobSasModel, enums, IAssessmentRecommendationModel, IAssessmentReferralModel, IBlobSasModel, IIntakePetModel, IntakePetModel, SalesItemModel, ISalesItemModel, QuestionModel, IQuestionModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from './serviceHelper';\r\nimport { ServiceMethodOptions } from './types';\r\n\r\nexport class StorageService {\r\n\r\n // #region Private Variables \r\n private static baseUrl: string = '/api/';\r\n\r\n private static publicUserHeader: any = {\r\n 'vpca': '351BD313-2C19-442B-BC87-C69356EB59EF',\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n };\r\n // #endregion\r\n\r\n public static tags = {\r\n getSas: \"getSas\",\r\n assessmentReferrals: \"uploadReferralAttachment\",\r\n uploadRecommendationAttachment: \"uploadRecommendationAttachment\",\r\n uploadHelpPhoto: \"uploadHelpPhoto\",\r\n uploadPetPoto: \"uploadPetPhoto\",\r\n uploadIntakePetPhotoPublic: \"uploadIntakePetPhotoPublic\",\r\n uploadQuestionFile: \"uploadQuestionFile\",\r\n }\r\n\r\n static getSas = (file: File, modelId: number, isPublic: boolean = false, containerName: enums.BlobEntityType, options?: ServiceMethodOptions): Promise => {\r\n const ensureEntityExists = (modelId != 0) ? 'true' : 'false';\r\n const vpca = (isPublic) ? `?vpca=${this.publicUserHeader.vpca}` : '';\r\n\r\n return trackPromise(new Promise((resolve, reject) => {\r\n // CONTAINER NAME -> Enums on AzureBlobStore. ;)\r\n http(`/api/storage/GetSAS/${file.name}/${containerName.toString()}/${modelId}/${ensureEntityExists}${vpca}`).get()\r\n .then((request) => {\r\n ServiceHelper.showSuccess(\"Get Sas Successful\", options);\r\n resolve(new BlobSasModel(request));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to fetch Sas Model.\", options);\r\n reject(err);\r\n });\r\n }), this.tags.getSas);\r\n };\r\n\r\n static uploadReferralAttachment = (sasModel: IBlobSasModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/assessmentReferral/attachment/`).post(sasModel)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Upload Successful\", options);\r\n resolve(new AssessmentReferralModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to upload attachment.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.assessmentReferrals);\r\n }\r\n\r\n static uploadRecommendationAttachment = (sasModel: IBlobSasModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/assessmentrecommendation/attachment/`).post(sasModel)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Upload Successful\", options);\r\n resolve(new AssessmentRecommendationModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to upload attachment.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.uploadRecommendationAttachment);\r\n }\r\n\r\n static uploadIntakePetPhotoPublic = (sasModel: IBlobSasModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/intake/petphoto/`).mergeOptions({ headers: this.publicUserHeader }).post(sasModel)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Upload Successful\", options);\r\n resolve(new IntakePetModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to upload photo.\", options);\r\n reject(err);\r\n });\r\n }), this.tags.uploadIntakePetPhotoPublic);\r\n };\r\n\r\n static uploadQuestionFile = (sasModel: IBlobSasModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/section/questionphoto/`).post(sasModel)\r\n .then((request) => {\r\n resolve(new QuestionModel(request));\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.uploadQuestionFile)\r\n };\r\n\r\n static uploadHelpPhoto = (sasModel: IBlobSasModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/salesItem/photo/${sasModel.modelId}`).post(sasModel)\r\n .then((response) => new SalesItemModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.uploadHelpPhoto);\r\n }\r\n\r\n}\r\n","import { makeObservable, observable, flow } from \"mobx\";\r\nimport { IBlobSasModel } from '@common/models';\r\nimport * as enums from '@common/models/Enums';\r\nimport { guard } from \"@common/utils\";\r\nimport { ContainerClient, newPipeline } from '@azure/storage-blob';\r\nimport { StorageService } from \"@common/services/storageService\";\r\n\r\ninterface IAzureBlobStoreInit {\r\n containerName: enums.BlobEntityType,\r\n}\r\n\r\n/**\r\n * Manage using azure/storage-blog and uploading/downloading to azure blob storage\r\n */\r\nexport class AzureBlobStore implements IAzureBlobStoreInit {\r\n @observable containerName!: enums.BlobEntityType;\r\n @observable uploadingFiles: boolean = true;\r\n\r\n constructor(init: IAzureBlobStoreInit) {\r\n Object.assign(this, init);\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n uploadDataUrl = flow(function* (this: AzureBlobStore, dataUrl: string, fileName: string, type: enums.MimeType, modelId: number = 0, isPublic: boolean = false) {\r\n guard.fromNull(dataUrl, \"dataUrl\");\r\n guard.fromNull(fileName, \"fileName\");\r\n guard.fromNull(type, \"type\");\r\n this.uploadingFiles = true;\r\n const res: Response = yield fetch(dataUrl);\r\n const blob: Blob = yield res.blob();\r\n const file = new File([blob], fileName, { type: type.valueOf() });\r\n const sas: IBlobSasModel = yield this.uploadFileImpl(file, modelId, isPublic);\r\n this.uploadingFiles = false;\r\n return sas;\r\n });\r\n\r\n /**\r\n * Upload the file passed in to azure blob storage and return the IBlobSasModel object, you need this to update files in Photos and StorageContents tables\r\n */\r\n uploadFile = flow(function* (this: AzureBlobStore, file: File, modelId: number = 0, isPublic: boolean = false) {\r\n guard.fromNull(file, \"file\");\r\n this.uploadingFiles = true;\r\n const sas: IBlobSasModel = yield this.uploadFileImpl(file, modelId, isPublic);\r\n this.uploadingFiles = false;\r\n return sas;\r\n });\r\n\r\n /**\r\n * Upload the files in the store to azure blob storage and return their IBlobSasModel object, you need this to update files in Photos and StorageContents tables\r\n */\r\n uploadFiles = flow(function* (this: AzureBlobStore, files: FileList, modelId: number = 0, isPublic: boolean = false) {\r\n guard.fromNull(files, \"files\");\r\n guard.fromEmpty([...files], \"files\");\r\n this.uploadingFiles = true;\r\n const ret: IBlobSasModel[] = [];\r\n for (const file of files) {\r\n const sas = yield this.uploadFileImpl(file, modelId, isPublic)\r\n ret.push(sas);\r\n }\r\n this.uploadingFiles = false;\r\n return ret;\r\n });\r\n\r\n private async uploadFileImpl(file: File, modelId: number, isPublic: boolean = false): Promise {\r\n const sas: IBlobSasModel = await StorageService.getSas(file, modelId, isPublic, this.containerName);\r\n await new ContainerClient(sas.sasUrl.replace(sas.fileName, \"\") + sas.sasToken, newPipeline()).getBlockBlobClient(sas.fileName).uploadData(file);\r\n return sas;\r\n }\r\n}\r\n","import { ISearchParams, SearchResponse } from \"@common/models\";\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { ServiceHelper } from \"./serviceHelper\";\r\nimport { ServiceMethodOptions } from \"./types\";\r\n\r\nexport class SearchService {\r\n private static baseUrl: string = '/api/';\r\n\r\n public static search = <\r\n TSearchResultModelInterface,\r\n TSearchResultModelClass extends Record,\r\n TSearchResult\r\n >(\r\n endPoint: SearchService.SearchEndPoints,\r\n searchParams: ISearchParams,\r\n mapResults: (result: TSearchResult) => SearchResponse,\r\n options?: ServiceMethodOptions\r\n ): Promise> => {\r\n const promise = new Promise>((resolve, reject) => {\r\n http(`${this.baseUrl}${endPoint}`).post(searchParams).then((data) => {\r\n const searchResults = mapResults(data);\r\n ServiceHelper.showSuccess(\"Search Successful\", options);\r\n resolve(searchResults);\r\n }).catch((error) => {\r\n ServiceHelper.showError(`Unable to search stores; ${error.message}`, options);\r\n reject(error);\r\n });\r\n });\r\n return trackPromise(promise, options?.promiseArea ?? SearchService.getSearchTag(endPoint));\r\n }\r\n\r\n}\r\n\r\nexport namespace SearchService {\r\n export enum SearchEndPoints {\r\n // Keep in alphabetical order\r\n additionalInfoLabel = 'search/additionalinfolabels',\r\n assessmentReferrals = 'search/assessmentreferrals',\r\n appointmentTypes = 'search/appointmentTypes',\r\n breeds = 'search/breeds',\r\n callCodes = 'search/callcodes',\r\n callOrigins = 'search/callorigins',\r\n clientcommunications = 'search/clientcommunications',\r\n clients = 'searchclients',\r\n clientsrecentvisits = 'searchclientsrecentvisits',\r\n clinicIncentives = 'search/clinicincentives',\r\n clinictasktypes = 'search/clinictasktypes',\r\n clinicroles = 'search/clinicroles',\r\n clinicincentiveperiods = 'search/clinicincentiveperiods',\r\n diagnosis = 'search/diagnosis',\r\n duplicateClients = 'searchduplicateclients',\r\n examcategories = 'search/examcategories',\r\n featureflags = 'search/featureflags',\r\n hospitals = 'search/hospitals',\r\n hospitalCommunications = 'search/hospitalcommunications',\r\n hospitalOrganizations = 'search/hospitalorganizations',\r\n hospitalScheduleTemplates = 'search/hospitalScheduleTemplates',\r\n hospitalPrescriptionRequests = 'search/hospitalPrescriptionRequests',\r\n invoices = 'search/invoices',\r\n invoiceSummaries = 'search/invoiceSummaries',\r\n macros = 'search/macros',\r\n labOrders = 'search/labOrders',\r\n markets = 'search/markets',\r\n openappointments = 'search/openappointments',\r\n organizations = 'search/organizations',\r\n organizationUsers = 'search/organizationusers',\r\n salesitem = 'search/salesitem',\r\n salesitemoptions = 'search/salesitemoptions',\r\n salespackages = 'search/salespackages',\r\n salesplans = 'search/salesplan',\r\n petAlerts = 'search/petalerts',\r\n petcolors = 'search/petcolors',\r\n petNotPresentVisits = 'search/petnotpresentvisits',\r\n prescriptionlabels = 'search/prescriptionlabels',\r\n rabiesInformations = 'search/rabiesinformations',\r\n referralTypes = 'search/referraltypes',\r\n reportinggroups = 'search/reportinggroups',\r\n restrictedwords = 'search/restrictedwords',\r\n salesCategories = 'search/salescategories',\r\n salesitemresetcategories = 'search/salesitemresetcategories',\r\n salesrequirements = 'search/salesrequirements',\r\n sections = 'search/sections',\r\n states = 'search/states',\r\n stores = 'search/stores',\r\n tasks = 'search/tasks',\r\n tasksCount = 'search/taskscount',\r\n templates = 'search/templates',\r\n trustedApplications = 'search/trustedapplications',\r\n users = 'search/users',\r\n vaccineAdministereds = 'search/vaccineAdministereds',\r\n vaccineManufacturers = 'search/vaccineManufacturers',\r\n vaccineNames = 'search/vaccineNames',\r\n vaccineVirusTypes = 'search/vaccinevirustypes',\r\n zipcodes = 'search/zipcodes',\r\n // Keep in alphabetical order\r\n }\r\n\r\n\r\n\r\n export const getSearchTag = (endPoint: SearchEndPoints) => {\r\n switch (endPoint) {\r\n case SearchEndPoints.additionalInfoLabel:\r\n return 'searchAdditionalInfoLabels';\r\n case SearchEndPoints.appointmentTypes:\r\n return 'searchAppointmentTypes';\r\n case SearchEndPoints.assessmentReferrals:\r\n return 'searchAssessmentReferrals';\r\n case SearchEndPoints.breeds:\r\n return 'searchBreeds';\r\n case SearchEndPoints.clientcommunications:\r\n return 'searchClientCommunications';\r\n case SearchEndPoints.clients:\r\n return 'searchClients';\r\n case SearchEndPoints.clientsrecentvisits:\r\n return 'searchClientsRecentVisits';\r\n case SearchEndPoints.callCodes:\r\n return 'searchCallCodes';\r\n case SearchEndPoints.callOrigins:\r\n return 'searchCallOrigins';\r\n case SearchEndPoints.clinicIncentives:\r\n return 'searchClinicIncentives';\r\n case SearchEndPoints.clinicincentiveperiods:\r\n return 'searchClinicIncentivePeriods';\r\n case SearchEndPoints.clinicroles:\r\n return 'searchClinicRoles';\r\n case SearchEndPoints.clinictasktypes:\r\n return 'searchClinicTaskTypes';\r\n case SearchEndPoints.diagnosis:\r\n return 'diagnosis';\r\n case SearchEndPoints.duplicateClients:\r\n return 'searchDuplicateClients';\r\n case SearchEndPoints.examcategories:\r\n return 'searchExamCategories';\r\n case SearchEndPoints.featureflags:\r\n return 'searchFeatureFlags';\r\n case SearchEndPoints.hospitalCommunications:\r\n return \"searchHospitalCommunications\";\r\n case SearchEndPoints.hospitalScheduleTemplates:\r\n return \"searchHospitalSchduleTemplates\";\r\n case SearchEndPoints.hospitalPrescriptionRequests:\r\n return \"hospitalPrescriptionRequests\";\r\n case SearchEndPoints.hospitalOrganizations:\r\n return \"hospitalOrganizations\";\r\n case SearchEndPoints.hospitals:\r\n return \"searchHospitals\";\r\n case SearchEndPoints.invoices:\r\n return \"searchInvoices\";\r\n case SearchEndPoints.invoiceSummaries:\r\n return \"searchInvoiceSummaries\";\r\n case SearchEndPoints.labOrders:\r\n return \"searchLabOrders\";\r\n case SearchEndPoints.markets:\r\n return 'searchMarkets';\r\n case SearchEndPoints.macros:\r\n return 'searchMacros';\r\n case SearchEndPoints.openappointments:\r\n return 'openappointments'\r\n case SearchEndPoints.organizations:\r\n return \"searchOrganizations\";\r\n case SearchEndPoints.organizationUsers:\r\n return \"searchUsers\";\r\n case SearchEndPoints.salespackages:\r\n return \"searchSalesPackages\";\r\n case SearchEndPoints.salesplans:\r\n return \"searchSalesPlans\";\r\n case SearchEndPoints.salesitem:\r\n return \"searchSalesItem\";\r\n case SearchEndPoints.salesitemoptions:\r\n return \"searchSalesitemoptions\";\r\n case SearchEndPoints.petAlerts:\r\n return 'searchPetAlerts';\r\n case SearchEndPoints.petcolors:\r\n return 'searchPetColors';\r\n case SearchEndPoints.petNotPresentVisits:\r\n return 'petNotPresentVisits';\r\n case SearchEndPoints.prescriptionlabels:\r\n return \"searchPrescriptionLabels\";\r\n case SearchEndPoints.referralTypes:\r\n return \"searchReferralTypes\";\r\n case SearchEndPoints.salesCategories:\r\n return \"searchSalesCategories\";\r\n case SearchEndPoints.salesitemresetcategories:\r\n return \"searchSalesitemresetcategories\";\r\n case SearchEndPoints.salesrequirements:\r\n return \"searchSalesrequirements\";\r\n case SearchEndPoints.sections:\r\n return \"searchSections\";\r\n case SearchEndPoints.states:\r\n return \"searchStates\";\r\n case SearchEndPoints.stores:\r\n return 'searchStores';\r\n case SearchEndPoints.reportinggroups:\r\n return \"searchReportinggroups\";\r\n case SearchEndPoints.tasks:\r\n return \"searchTasks\";\r\n case SearchEndPoints.tasksCount:\r\n return \"searchTasksCount\";\r\n case SearchEndPoints.templates:\r\n return \"searchTemplates\";\r\n case SearchEndPoints.trustedApplications:\r\n return \"searchTrustedApplications\";\r\n case SearchEndPoints.users:\r\n return \"searchUsers\";\r\n case SearchEndPoints.vaccineAdministereds:\r\n return \"vaccineAdministereds\";\r\n case SearchEndPoints.vaccineManufacturers:\r\n return \"vaccineManufacturers\";\r\n case SearchEndPoints.vaccineNames:\r\n return \"vaccineNames\";\r\n case SearchEndPoints.vaccineVirusTypes:\r\n return \"searchVaccineVirusTypes\";\r\n case SearchEndPoints.zipcodes:\r\n return \"searchZipCodes\";\r\n case SearchEndPoints.rabiesInformations:\r\n return \"rabiesInformations\";\r\n case SearchEndPoints.restrictedwords:\r\n return \"restrictedWords\";\r\n default:\r\n throw 'Cannot find search tag for endpoint. If this is a new search endpoint you need to add a case to searchService.getSearchTag.';\r\n }\r\n }\r\n}\r\n","import { QueryClient, QueryFilters } from \"@tanstack/react-query\";\r\n\r\nexport type IQueryCacheStoreInit = {\r\n queryClient?: QueryClient\r\n queryStaleTime?: number\r\n}\r\n\r\nexport class QueryCacheStore {\r\n queryClient?: QueryClient;\r\n queryStaleTime?: number;\r\n\r\n constructor(init?: IQueryCacheStoreInit) {\r\n this.queryClient = init?.queryClient;\r\n this.queryStaleTime = init?.queryStaleTime;\r\n }\r\n\r\n /**\r\n * Clears cached queries that match the queryKey parameter\r\n * @param queryKey QueryFilters object that will be used to find queries to clear, e.g. { queryKey: [HospitalService.tags.getHospitalSchedules, { hospitalId, date: startDateString, range: HospitalScheduleDateRangeType.Day }], exact: true }\r\n */\r\n clearCache(queryKey: QueryFilters) {\r\n this.queryClient?.removeQueries(queryKey);\r\n }\r\n}\r\n","import { makeObservable, observable, computed, action, flow } from \"mobx\";\r\nimport { generateSearchQuery } from \"@common/utils\";\r\nimport { IODataSearchResult, IOrderByParams, ISearchParams, ISearchResponse, SearchResponse } from \"@common/models\";\r\nimport { SearchService } from \"@common/services/searchService\";\r\nimport { SortOrder, TableColumn } from \"react-data-table-component\";\r\nimport { IQueryCacheStoreInit, QueryCacheStore } from \"@common/stores/QueryCacheStore\";\r\n\r\n\r\nexport interface SearchStoreInit {\r\n endpointUrl: SearchService.SearchEndPoints;\r\n defaultSearchParams: Partial,\r\n defaultSearchFilter: TSearchFilter\r\n}\r\n\r\n/**\r\n * A reusable search store, the SearchService uses the same pattern for all searches, this implementation\r\n * is intended to be used anywhere we need to use the SearchService.\r\n */\r\nexport abstract class SearchStore, TSearchResult> extends QueryCacheStore {\r\n endpointUrl: SearchService.SearchEndPoints;\r\n defaultSearchParams!: ISearchParams;\r\n defaultSearchFilter!: TSearchFilter;\r\n mapSearchResults: (results: TSearchResult) => SearchResponse;\r\n @observable searchFilter!: TSearchFilter;\r\n @observable searchParams!: ISearchParams;\r\n @observable isLoading: boolean = false;\r\n @observable searchResults: SearchResponse = new SearchResponse({ results: [], totalRecordCount: 0 });\r\n\r\n /**\r\n * Returns true if the search results indicates there is more than 1 page of results to display for the current filter and params.\r\n */\r\n hasMultiplePagesImpl(): boolean {\r\n return this.searchResults.totalRecordCount > 0 && this.searchResults.totalRecordCount > this.searchParams.top;\r\n }\r\n\r\n protected abstract combinedSearchParamsImpl(): ISearchParams;\r\n\r\n /**\r\n *\r\n * @param entityName The name of the entity you are searching, i.e. stores, organizations, users, zipCode etc, Refer to SearchService.cs in PetPass Solution...\r\n * @param defaultOrderBy An Array indicated the default order in which to sort search results.\r\n * @param defaultSearchFilter The default searchFilter, this is used to reset search, Generic Type SearchFilter indicates the type of defaultSearchFilter\r\n * @param searchFilter A reference to the active searchFilter based on Generic Type SearchFilter.\r\n */\r\n constructor(init: SearchStoreInit, mapSearchResults: (results: TSearchResult) => SearchResponse, queryClientInit?: IQueryCacheStoreInit) {\r\n super(queryClientInit);\r\n\r\n if (!init.endpointUrl)\r\n throw 'SearchStore requires the endpointUrl field to be specified';\r\n if (!init.defaultSearchFilter)\r\n throw 'SearchStore requires the defaultSearchFilter field to be specified';\r\n if (!mapSearchResults)\r\n throw 'SearchStore requires a mapSearchResults callback to be specified in order to know how to instantiate search results';\r\n\r\n this.endpointUrl = init.endpointUrl;\r\n this.mapSearchResults = mapSearchResults;\r\n this.defaultSearchParams = {\r\n skip: 0,\r\n top: 10,\r\n orderby: [],\r\n search: undefined,\r\n ...init.defaultSearchParams\r\n };\r\n\r\n if (this.defaultSearchParams.orderby.length === 0) {\r\n this.defaultSearchParams.orderby = [\r\n { field: \"name\", dir: \"asc\" }\r\n ]\r\n }\r\n\r\n this.searchParams = { ...this.defaultSearchParams };\r\n this.defaultSearchFilter = { ...init.defaultSearchFilter };\r\n this.searchFilter = { ...this.defaultSearchFilter };\r\n\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n @computed get combinedSearchParams(): ISearchParams {\r\n return this.combinedSearchParamsImpl();\r\n }\r\n\r\n /**\r\n * Allows updating the default search filter after the class instantiation to support adding more default after appStore has loaded configuration if the config is needed for a defaultFilter value.\r\n * @param searchParams\r\n */\r\n @action.bound setPartialDefaultSearchFilter(searchFilter: Partial) {\r\n this.defaultSearchFilter = { ...this.defaultSearchFilter, ...searchFilter };\r\n const currentSearchFilter = this.searchFilter;\r\n this.searchFilter = { ...currentSearchFilter, ...this.defaultSearchFilter };\r\n }\r\n\r\n @computed get hasMultiplePages() {\r\n return this.hasMultiplePagesImpl();\r\n }\r\n\r\n /** Use this to get the current page the search store is on */\r\n @computed get currentPage() {\r\n return this.searchParams.skip === 0 ? 1 : Math.ceil(_.defaultTo(this.searchParams.top, this.defaultSearchParams.top) / _.defaultTo(this.searchParams.skip, this.defaultSearchParams.skip)) + 1;\r\n }\r\n\r\n /**\r\n * If there are multiple results, call this to advance to a specific page of results (0 index based)\r\n * @param newPage The page number you wish to show results for.\r\n */\r\n @action.bound changePage(newPage: number) {\r\n this.searchParams = { ...this.searchParams, skip: this.searchParams.top * newPage };\r\n }\r\n\r\n\r\n /**\r\n * designed to be passed to a DataTable components sort prop, handles updating search params for you from DataTable sort.\r\n */\r\n @action.bound updateRemoteDTSort(selectedColumn: TableColumn, sortDirection: SortOrder) {\r\n if (!selectedColumn.sortField)\r\n return;\r\n\r\n let orderby: Array = [{\r\n field: selectedColumn.sortField,\r\n dir: sortDirection\r\n }]\r\n this.updateSearchParams({ orderby });\r\n }\r\n\r\n /**\r\n * Applies your partial search params object to the searchParam object which causes the computed for combinedSearchParams to update.\r\n * to rerun searches use a useEffect with deps on combinedSearchParams, when combinedSearchParams changes rerun calls to search.\r\n */\r\n @action.bound updateSearchParams(searchParams: Partial) {\r\n this.searchParams = { ...this.searchParams, ...searchParams };\r\n }\r\n\r\n /**\r\n * Applies your partial search filter object to the searchFilter object which causes the computed for combinedSearchParams to update.\r\n */\r\n @action.bound updateSearchFilter(searchFilter: Partial) {\r\n this.searchParams = { ...this.searchParams, skip: 0 };\r\n this.searchFilter = { ...this.searchFilter, ...searchFilter };\r\n }\r\n\r\n /**\r\n * Reset the search filter and paging to the defaults from instantiation.\r\n */\r\n @action.bound resetSearchFilter() {\r\n this.searchFilter = { ... this.defaultSearchFilter };\r\n this.searchParams = { ...this.defaultSearchParams }; //spread so we get a new item and not a reference to a default item.\r\n }\r\n\r\n /**\r\n * Reset the search filter and paging to the defaults from instantiation.\r\n */\r\n @action.bound resetSearchResults() {\r\n this.searchResults = new SearchResponse({ results: [], totalRecordCount: 0 });\r\n }\r\n\r\n /**\r\n * Execute the search and populate the results in searchResults\r\n */\r\n search = flow(function* (this: SearchStore) {\r\n this.isLoading = true;\r\n\r\n try {\r\n if (this.queryClient === undefined) {\r\n this.searchResults = yield SearchService.search(\r\n this.endpointUrl, this.combinedSearchParams, this.mapSearchResults\r\n );\r\n }\r\n else {\r\n this.searchResults = yield this.queryClient.fetchQuery({\r\n queryKey: [this.endpointUrl, this.combinedSearchParams],\r\n queryFn: () => SearchService.search(\r\n this.endpointUrl, this.combinedSearchParams, this.mapSearchResults\r\n ),\r\n staleTime: this.queryStaleTime ?? 300000\r\n });\r\n }\r\n } finally { this.isLoading = false; }\r\n });\r\n\r\n fakeSearch = flow(function* (this: SearchStore) {\r\n this.isLoading = true;\r\n this.searchResults = yield {\r\n \"results\": [],\r\n \"totalRecordCount\": 0\r\n };\r\n this.isLoading = false;\r\n });\r\n}\r\n\r\nexport class StandardSearchStore>\r\n extends SearchStore>\r\n{\r\n constructor(init: SearchStoreInit, mapSearchResult: (item: TModelInterface) => TModel, queryClientInit?: IQueryCacheStoreInit) {\r\n super(init, (results: ISearchResponse) => {\r\n return new SearchResponse({ results: results.results.map(mapSearchResult), totalRecordCount: results.totalRecordCount });\r\n }, queryClientInit);\r\n }\r\n\r\n combinedSearchParamsImpl(): ISearchParams {\r\n return { ...this.searchParams, search: generateSearchQuery(this.searchFilter) }\r\n }\r\n}\r\nexport class ODataSearchStore>\r\n extends SearchStore> {\r\n\r\n combinedSearchParamsImpl(): ISearchParams {\r\n return { ...this.searchParams, ...this.searchFilter }\r\n }\r\n}\r\n","import { IAdditionalInfoLabelModel, AdditionalInfoLabelModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class AdditionalInfoLabelService {\r\n\r\n private static baseUrl: string = '/api/additionalinfolabel';\r\n\r\n static tags = {\r\n updateAdditionalInfoLabel: \"updateAdditionalInfoLabel\",\r\n deleteAddtionalInfoLabel: \"deleteAddtionalInfoLabel\"\r\n }\r\n\r\n /**\r\n * Updates AdditionalInfoLabel\r\n * @param data AdditionalInfoLabel Model to update\r\n * @param options Service Method Options\r\n * @returns AdditionalInfoLabel Model\r\n */\r\n static upsertAdditionalInfoLabel = (data: IAdditionalInfoLabelModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Additional Info Label updated\", options);\r\n resolve(new AdditionalInfoLabelModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Additional Info Label.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.updateAdditionalInfoLabel);\r\n }\r\n\r\n static deleteAdditionalInfoLabel = (id: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${id}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Additional Info Label has been deleted\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Additional Info Label.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteAddtionalInfoLabel);\r\n }\r\n}\r\n","import { IAssessmentReferralModel, AssessmentReferralModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class AssessmentReferralService {\r\n\r\n private static baseUrl: string = '/api/assessmentreferral';\r\n\r\n static tags = {\r\n assessmentReferrals: \"assessmentReferrals\",\r\n getAssessmentReferral: \"getAssessmentReferral\",\r\n updateAssessmentReferral: \"updateAssessmentReferral\",\r\n deleteAssessmentReferral: \"deleteAssessmentReferral\"\r\n }\r\n\r\n /**\r\n * Get an Assessment Referral by Id\r\n * @param id AssessmentReferralId\r\n * @param options \r\n * @returns Returns requested Assessment Referral\r\n */\r\n static getAssessmentReferralById = (id: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${id}`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Assessment Referral fetched\", options);\r\n resolve(new AssessmentReferralModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get Assessment Referral.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getAssessmentReferral)\r\n }\r\n\r\n /**\r\n * Updates Assessment Referral\r\n * @param data AssessmentReferralModel to update\r\n * @param options Service Method Options\r\n * @returns AssessmentReferralModel\r\n */\r\n static upsertAssessmentReferral = (data: IAssessmentReferralModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Assessment Referral updated\", options);\r\n resolve(new AssessmentReferralModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Assessment Referral.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.updateAssessmentReferral);\r\n }\r\n\r\n /**\r\n * Deletes Assessment Referral by Id\r\n * @param id Assessment Referral Id\r\n * @param options Service Method Options\r\n * @returns boolean on success\r\n */\r\n static deleteAssessmentReferral = (id: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${id}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Assessment Referral has been deleted\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Assessment Referral.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteAssessmentReferral);\r\n }\r\n}\r\n","import { BreedModel, IBreedModel } from '@common/models/BreedModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class BreedService {\r\n private static baseUrl: string = '/api/breed';\r\n\r\n static tags = {\r\n upsertBreed: \"upsertBreed\",\r\n deleteBreed: \"deleteBreed\"\r\n }\r\n\r\n static upsertBreed = (data: IBreedModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Breed updated.\", options);\r\n resolve(new BreedModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Breed.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertBreed);\r\n }\r\n\r\n static deleteBreed = (breedId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${breedId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Breed has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Breed.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteBreed);\r\n }\r\n}\r\n","import { CallCodeModel, ICallCodeModel } from '@common/models/CallCodeModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class CallCodeService {\r\n private static baseUrl: string = '/api/callcode';\r\n\r\n static tags = {\r\n upsertCallCode: \"upsertCallCode\",\r\n deleteCallCode: \"deleteCallCode\"\r\n }\r\n\r\n static upsertCallCode = (data: ICallCodeModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Call Code updated\", options);\r\n resolve(new CallCodeModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Call Code\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertCallCode);\r\n }\r\n\r\n static deleteCallCode = (callCodeId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${callCodeId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Call Code has been deleted\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Call Code\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteCallCode);\r\n }\r\n}\r\n","import { CallOriginModel, ICallOriginModel } from '@common/models/CallOriginModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class CallOriginService {\r\n private static baseUrl: string = '/api/callorigin';\r\n\r\n static tags = {\r\n upsertCallOrigin: \"upsertCallOrigins\",\r\n deleteCallOrigin: \"deleteCallOrigin\"\r\n }\r\n\r\n static upsertCallOrigin = (data: ICallOriginModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Call Origin updated.\", options);\r\n resolve(new CallOriginModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Call Origin.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertCallOrigin);\r\n }\r\n\r\n static deleteCallOrigin = (callOriginId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${callOriginId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Call Origin has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Call Origin.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteCallOrigin);\r\n }\r\n}\r\n","import { IClinicIncentiveModel, ClinicIncentiveModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class ClinicIncentiveService {\r\n\r\n private static baseUrl: string = '/api/clinicincentive';\r\n\r\n static tags = {\r\n updateClinicIncentive: \"updateClinicIncentive\",\r\n deleteClinicIncentive: \"deleteClinicIncentive\",\r\n importClinicIncentives: \"importClinicIncentives\",\r\n }\r\n\r\n\r\n /**\r\n * Sends a file to Incentive Api to upload a list of new Clinic Incentives.\r\n * @param data FormData that needs to have a File object appended to FormData prior to calling this service method\r\n * i.e. formData.append('File', *file*);\r\n * @param options Service Method Options\r\n * @returns Promise\r\n */\r\n static importClinicIncentives = (data: FormData, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n fetch(`${this.baseUrl}/import`, {\r\n method: 'POST',\r\n body: data\r\n }).then((response) => {\r\n if (!response.ok)\r\n throw response;\r\n\r\n ServiceHelper.showSuccess(\"Import successful\", options);\r\n resolve();\r\n\r\n }).catch((err) => {\r\n ServiceHelper.showError(\"Failed to import incentives.\");\r\n reject(err);\r\n })\r\n\r\n }), this.tags.importClinicIncentives)\r\n }\r\n\r\n /**\r\n * Adds or Updates Clinic Incentives\r\n * @param data Clinic Incentive to update\r\n * @param options Service Method Options\r\n * @returns ClinicIncentiveModel\r\n */\r\n static upsertClinicIncentive = (data: ClinicIncentiveModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Clinic Incentive updated\", options);\r\n resolve(new ClinicIncentiveModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Clinic Incentive.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.updateClinicIncentive);\r\n }\r\n\r\n /**\r\n * Deletes Clinic Incentive by Id\r\n * @param id Clinic Incentive Id\r\n * @param options Service Method Options\r\n * @returns boolean on success\r\n */\r\n static deleteClinicIncentive = (id: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${id}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Clinic Incentive has been deleted\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Clinic Incentive.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteClinicIncentive);\r\n }\r\n}\r\n","import { ClinicIncentivePeriodModel, IClinicIncentivePeriodModel } from '@common/models/ClinicIncentivePeriodModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class ClinicIncentivePeriodService {\r\n private static baseUrl: string = '/api/clinicincentiveperiod';\r\n static tags = {\r\n addClinicIncentivePeriod: \"addClinicIncentivePeriod\", \r\n getClinicIncentivePeriods: \"getClinicIncentivePeriods\", \r\n }\r\n\r\n static getClinicIncentivePeriods = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Clinic Incentive Period fetched\", options);\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get Clinic Incentive Period.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getClinicIncentivePeriods)\r\n } \r\n\r\n static addClinicIncentivePeriod = (data: IClinicIncentivePeriodModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Clinic Incentive Period updated.\", options);\r\n resolve(new ClinicIncentivePeriodModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Clinic Incentive Period.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.addClinicIncentivePeriod);\r\n } \r\n}\r\n","import { ClinicRoleModel, IClinicRoleModel } from '@common/models/ClinicRoleModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\n\r\nexport class ClinicRoleService {\r\n private static baseUrl: string = '/api/clinicrole/';\r\n static tags = {\r\n upsertClinicRole: \"upsertClinicRole\",\r\n deleteClinicRole: \"deleteClinicRole\" \r\n } \r\n \r\n static upsertClinicRole = (data: IClinicRoleModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => { \r\n resolve(new ClinicRoleModel(response));\r\n })\r\n .catch(reject)\r\n }), this.tags.upsertClinicRole);\r\n }\r\n \r\n static deleteClinicRole = (clinicRoleId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${clinicRoleId}`).delete()\r\n .then(() => {\r\n resolve(true);\r\n })\r\n .catch(reject)\r\n }), this.tags.deleteClinicRole);\r\n } \r\n}\r\n","import { ClinicTaskTypeModel, IClinicTaskTypeModel } from '@common/models/ClinicTaskTypeModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class ClinicTaskTypeService {\r\n private static baseUrl: string = '/api/clinictasktype';\r\n\r\n static tags = {\r\n upsertClinicTaskType: \"upsertClinicTaskType\",\r\n deleteClinicTaskType: \"deleteClinicTaskType\"\r\n }\r\n\r\n static upsertClinicTaskType = (data: IClinicTaskTypeModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Task Type updated.\", options);\r\n resolve(new ClinicTaskTypeModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Task Type.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertClinicTaskType);\r\n }\r\n\r\n static deleteClinicTaskType = (clinicTaskTypeId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${clinicTaskTypeId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Task Type has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Task Type.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteClinicTaskType);\r\n }\r\n}\r\n","import { DiagnosisModel, IDiagnosisModel } from '@common/models/DiagnosisModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class DiagnosisService {\r\n private static baseUrl: string = '/api/diagnosis';\r\n\r\n static tags = {\r\n upsertDiagnosis: \"upsertDiagnosis\",\r\n deleteDiagnosis: \"deleteDiagnosis\"\r\n }\r\n\r\n static upsertDiagnosis = (data: IDiagnosisModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Diagnosis updated\", options);\r\n resolve(new DiagnosisModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Diagnosis\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertDiagnosis);\r\n }\r\n\r\n static deleteDiagnosis = (diagnosisId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${diagnosisId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Diagnosis has been deleted\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Diagnosis\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteDiagnosis);\r\n }\r\n}\r\n","import { IExamCategoryModel, ExamCategoryModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class ExamCategoryService {\r\n\r\n private static baseUrl: string = '/api/examCategory';\r\n\r\n static tags = {\r\n examCategories: \"examCategories\",\r\n getExamCategory: \"getExamCategory\",\r\n upsertExamCategory: \"upsertExamCategory\",\r\n deleteExamCategory: \"deleteExamCategory\"\r\n }\r\n\r\n static getExamCategoryById = (id: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${id}`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Exam Category fetched.\", options);\r\n resolve(new ExamCategoryModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get Exam Category.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getExamCategory)\r\n }\r\n\r\n static upsertExamCategory = (data: IExamCategoryModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Exam Category updated.\", options);\r\n resolve(new ExamCategoryModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Exam Category.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertExamCategory);\r\n }\r\n\r\n static deleteExamCategory = (id: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${id}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Exam Category has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Exam Category.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteExamCategory);\r\n }\r\n}\r\n","import { SectionListingModel, SectionModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\n\r\nexport class SectionService {\r\n private static baseUrl: string = '/api/section';\r\n static tags = {\r\n getSections: \"getSections\",\r\n getSection: \"getSection\",\r\n updateSection: \"updateSection\",\r\n deleteSection: \"deleteSection\"\r\n }\r\n\r\n static getSectionListings = (): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/listing`).get()\r\n .then((response) => response.map(sc => new SectionListingModel(sc)))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getSections);\r\n };\r\n\r\n static getSection = (salesCategoryId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${salesCategoryId}`).get()\r\n .then((response) => new SectionModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getSection);\r\n };\r\n\r\n static upsertSection = (data: SectionModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n resolve(new SectionModel(response));\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.updateSection);\r\n }\r\n\r\n static deleteSection = (id: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${id}`).delete()\r\n .then(() => {\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.deleteSection);\r\n }\r\n}\r\n","import { FeatureFlagModel, IFeatureFlagModel } from '@common/models/FeatureFlagModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class FeatureFlagService {\r\n private static baseUrl: string = '/api/featureFlag';\r\n\r\n static tags = {\r\n upsertFeatureFlag: \"upsertFeatureFlag\",\r\n deleteFeatureFlag: \"deleteFeatureFlag\"\r\n }\r\n\r\n static upsertFeatureFlag = (data: IFeatureFlagModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Feature Flag updated.\", options);\r\n resolve(new FeatureFlagModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Feature Flag.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertFeatureFlag);\r\n }\r\n\r\n static deleteFeatureFlag = (featureFlagId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${featureFlagId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Feature Flag has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Feature Flag.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteFeatureFlag);\r\n }\r\n}\r\n","import { IdexxBreedModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class IdexxService {\r\n private static baseUrl: string = '/api/idexx';\r\n static tags = {\r\n getIdexxBreeds: \"getIdexxBreeds\", \r\n }\r\n \r\n static getIdexxBreeds = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/breeds`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Idexx Breeds fetched.\", options);\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get Idexx Breeds.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getIdexxBreeds)\r\n } \r\n \r\n}\r\n","import { MarketModel, IMarketModel } from '@common/models/MarketModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class MarketService {\r\n private static baseUrl: string = '/api/market';\r\n\r\n static tags = {\r\n market: \"market\",\r\n getMarkets: \"getMarkets\"\r\n }\r\n\r\n static getMarketById = (marketId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${marketId}`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Market fetched\", options);\r\n resolve(new MarketModel(response[0]));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get Market.\", options);\r\n reject(err);\r\n })\r\n }))\r\n }\r\n\r\n static getMarkets = (): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).get()\r\n .then((response) => response.map(mm => new MarketModel(mm)))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getMarkets);\r\n }\r\n \r\n static upsertMarket = (data: IMarketModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Market updated.\", options);\r\n resolve(new MarketModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Market.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.market);\r\n }\r\n\r\n static deleteMarket = (marketId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${marketId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Market has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Market.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.market);\r\n }\r\n}\r\n","import { IPetAlertModel, PetAlertModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class PetAlertService {\r\n\r\n private static baseUrl: string = '/api/petalert';\r\n\r\n static tags = {\r\n updatePetAlert: \"updatePetAlert\",\r\n deletePetAlert: \"deletePetAlert\"\r\n }\r\n\r\n /**\r\n * Updates PetAlert\r\n * @param data PetAlert Model to update\r\n * @param options Service Method Options\r\n * @returns PetAlert Model\r\n */\r\n static upsertPetAlert = (data: IPetAlertModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Pet Alert updated\", options);\r\n resolve(new PetAlertModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Pet Alert.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.updatePetAlert);\r\n }\r\n\r\n static deletePetAlert = (petAlertId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petAlertId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Pet Alert has been deleted\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Pet Alert.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deletePetAlert);\r\n }\r\n}\r\n","import { PetColorModel, IPetColorModel } from '@common/models/PetColorModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class PetColorService {\r\n private static baseUrl: string = '/api/petcolor';\r\n\r\n static tags = {\r\n upsertPetColor: \"upsertPetColor\",\r\n deletePetColor: \"deletePetColor\"\r\n }\r\n\r\n static upsertPetColor = (data: IPetColorModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Pet Color updated.\", options);\r\n resolve(new PetColorModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Pet Color.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertPetColor);\r\n }\r\n\r\n static deletePetColor = (petColorId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petColorId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Pet Color has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Pet Color.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deletePetColor);\r\n }\r\n}\r\n","import { PGRColorModel,PGRBreedModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class PGRService {\r\n private static baseUrl: string = '/api/pgr';\r\n static tags = {\r\n getColors: \"getColors\", \r\n getBreeds: \"getBreeds\", \r\n }\r\n\r\n static getColors = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/colors`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"PGR Colors fetched.\", options);\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get PGR Colors.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getColors)\r\n } \r\n static getBreeds = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/breeds`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"PGR Breeds fetched.\", options);\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get PGR Breeds.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getBreeds)\r\n } \r\n \r\n}\r\n","import { IPrescriptionLabelModel, PrescriptionLabelModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class PrescriptionLabelService {\r\n\r\n private static baseUrl: string = '/api/prescriptionlabel';\r\n\r\n static tags = {\r\n upsertPrescriptionLabel: \"upsertPrescriptionLabel\",\r\n deletePrescriptionLabel: \"deletePrescriptionLabel\"\r\n }\r\n\r\n static upsertPrescriptionLabel = (data: IPrescriptionLabelModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Instruction Label updated.\", options);\r\n resolve(new PrescriptionLabelModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Instruction Label.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertPrescriptionLabel);\r\n }\r\n\r\n static deletePrescriptionLabel = (prescriptionlabelId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${prescriptionlabelId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Instruction Label has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Instruction Label.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deletePrescriptionLabel);\r\n }\r\n}\r\n","import { ReferralTypeModel, IReferralTypeModel } from '@common/models/ReferralTypeModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class ReferralTypeService {\r\n private static baseUrl: string = '/api/referraltype';\r\n\r\n static tags = {\r\n referralType: \"referralType\"\r\n }\r\n\r\n static upsertReferralType = (data: IReferralTypeModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Referral Type updated.\", options);\r\n resolve(new ReferralTypeModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Referral Type.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.referralType);\r\n }\r\n\r\n static deleteReferralType = (referralTypeId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${referralTypeId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Referral Type has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Referral Type.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.referralType);\r\n }\r\n}\r\n","import { ReportingGroupModel, IReportingGroupModel} from '@common/models/ReportingGroupModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class ReportingGroupService {\r\n private static baseUrl: string = '/api/reportinggroup';\r\n\r\n static tags = {\r\n upsertReportingGroup: \"upsertReportingGroup\",\r\n deleteReportingGroup: \"deleteReportingGroup\",\r\n getReportingGroups: \"getReportingGroups\"\r\n }\r\n\r\n static getReportingGroups = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Medical History Categories fetched.\", options);\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get Medical History Categories.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getReportingGroups)\r\n } \r\n static upsertReportingGroup = (data: IReportingGroupModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Medical History Category updated.\", options);\r\n resolve(new ReportingGroupModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Medical History Category.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertReportingGroup);\r\n }\r\n\r\n static deleteReportingGroup = (reportingGroupId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${reportingGroupId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Medical History Category has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Medical History Category.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteReportingGroup);\r\n }\r\n}\r\n","import { ISalesCategoryModel, SalesCategoryModel } from '@common/models/SalesCategoryModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceMethodOptions } from '@common/services';\r\n\r\nexport class SalesCategoryService {\r\n\r\n private static baseUrl: string = '/api/salescategory';\r\n\r\n static tags = {\r\n getSalesCategories: \"getSalesCategories\",\r\n getSalesCategory: \"getSalesCategory\",\r\n updateSalesCategory: \"updateSalesCategory\",\r\n deleteSalesCategory: \"deleteSalesCategory\"\r\n }\r\n\r\n static getSalesCategories = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/listing`).get()\r\n .then((response) => response.map(sc => new SalesCategoryModel(sc)))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getSalesCategories);\r\n };\r\n\r\n static getSalesCategory = (salesCategoryId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${salesCategoryId}`).get()\r\n .then((response) => new SalesCategoryModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getSalesCategory);\r\n };\r\n\r\n static upsertSalesCategory = (data: ISalesCategoryModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => new SalesCategoryModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.updateSalesCategory);\r\n }\r\n\r\n static deleteSalesCategory = (SalesCategoryId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${SalesCategoryId}`).delete()\r\n .then(() => { resolve(true) })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.deleteSalesCategory);\r\n }\r\n}\r\n","import { SalesItemResetCategoryModel, ISalesItemResetCategoryModel } from '@common/models/SalesItemResetCategoryModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class SalesItemResetCategoryService {\r\n private static baseUrl: string = '/api/salesitemresetcategory';\r\n static tags = {\r\n upsertSalesItemResetCategory: \"upsertSalesItemResetCategory\", \r\n getSalesItemResetCategories: \"getSalesItemResetCategories\", \r\n deleteSalesItemResetCategory:\"deleteSalesItemResetCategory\" \r\n }\r\n\r\n static getSalesItemResetCategories = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Sales Item Reset Category fetched.\", options);\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get Sales Item Reset Category.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getSalesItemResetCategories)\r\n } \r\n\r\n static upsertSalesItemResetCategory = (data: ISalesItemResetCategoryModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Sales Item Reset Category updated.\", options);\r\n resolve(new SalesItemResetCategoryModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Sales Item Reset Category.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertSalesItemResetCategory);\r\n } \r\n static deleteSalesItemResetCategory = (salesItemResetCategoryId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${salesItemResetCategoryId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Sales Item Reset Category has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Sales Item Reset Category.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteSalesItemResetCategory);\r\n } \r\n}\r\n","import { SalesRequirementModel, ISalesRequirementModel } from '@common/models/SalesRequirementModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class SalesRequirementService {\r\n private static baseUrl: string = '/api/salesrequirement';\r\n static tags = {\r\n upsertSalesRequirement: \"upsertSalesRequirement\", \r\n getSalesRequirements: \"getSalesRequirements\", \r\n deleteSalesRequirement:\"deleteSalesRequirement\" \r\n }\r\n\r\n static getSalesRequirements = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Sales Requirement fetched.\", options);\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get Sales Requirement.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getSalesRequirements)\r\n } \r\n\r\n static upsertSalesRequirement = (data: ISalesRequirementModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Sales Requirement updated.\", options);\r\n resolve(new SalesRequirementModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Sales Requirement.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertSalesRequirement);\r\n } \r\n static deleteSalesRequirement = (salesRequirementId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${salesRequirementId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Sales Requirement has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Sales Requirement.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteSalesRequirement);\r\n } \r\n}\r\n","import { ISalesSubCategoryModel, SalesSubCategoryModel } from '@common/models/SalesSubCategoryModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceMethodOptions } from '@common/services';\r\n\r\nexport class SalesSubCategoryService {\r\n\r\n private static baseUrl: string = '/api/salessubcategory';\r\n\r\n static tags = {\r\n getSalesSubCategories: \"getSalesSubCategories\",\r\n getSalesSubCategory: \"getSalesSubCategory\",\r\n updateSalesSubCategory: \"updateSalesSubCategory\",\r\n deleteSalesSubCategory: \"deleteSalesSubCategory\"\r\n }\r\n\r\n static getSalesSubCategories = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/listing`).get()\r\n .then((response) => response.map(d => new SalesSubCategoryModel(d)))\r\n .then(resolve)\r\n .catch((err) => reject(err))\r\n }), this.tags.getSalesSubCategories);\r\n }\r\n\r\n static getSalesSubCategory = (salesSubCategoryId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${salesSubCategoryId}`).get()\r\n .then((response) => new SalesSubCategoryModel(response))\r\n .then(resolve)\r\n .catch((err) => reject(err))\r\n }), this.tags.getSalesSubCategories);\r\n }\r\n\r\n static upsertSalesSubCategory = (data: ISalesSubCategoryModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => new SalesSubCategoryModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.updateSalesSubCategory);\r\n }\r\n\r\n static deleteSalesSubCategory = (SalesSubCategoryId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${SalesSubCategoryId}`).delete()\r\n .then(() => { resolve(true) })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.deleteSalesSubCategory);\r\n }\r\n}\r\n","import { StateModel, IStateModel } from '@common/models/StateModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class StateService {\r\n private static baseUrl: string = '/api/state';\r\n static tags = {\r\n upsertState: \"upsertState\", \r\n getStates: \"getStates\", \r\n }\r\n\r\n static getStates = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"State fetched.\", options);\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get State.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getStates)\r\n } \r\n\r\n static upsertState = (data: IStateModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"State updated.\", options);\r\n resolve(new StateModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update State.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertState);\r\n } \r\n}\r\n","import { TemplateModel, ITemplateModel } from '@common/models/TemplateModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\n\r\nexport class TemplateService {\r\n private static baseUrl: string = '/api/template';\r\n static tags = {\r\n upsertTemplate: \"upsertTemplate\"\r\n }\r\n\r\n static upsertTemplate = (data: ITemplateModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n resolve(new TemplateModel(response));\r\n })\r\n .catch(reject)\r\n }), this.tags.upsertTemplate);\r\n }\r\n}\r\n","import { ZipCode, IZipCode } from '@common/models/ZipCode';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class ZipCodeService {\r\n private static baseUrl: string = '/api/zipcode/';\r\n static tags = {\r\n upsertZipCode: \"upsertZipCode\", \r\n deleteZipCode: \"deleteZipCode\", \r\n }\r\n\r\n static getZipCodeByZipcode = (zipCode: string): Promise => {\r\n return !zipCode || zipCode.length < 5 \r\n ? Promise.resolve(undefined)\r\n : trackPromise(http(`${this.baseUrl}${zipCode}?vpca=351BD313-2C19-442B-BC87-C69356EB59EF`).get());\r\n }; \r\n\r\n static upsertZipCode = (data: IZipCode, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Zip Code updated.\", options);\r\n resolve(new ZipCode(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Zip Code.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.upsertZipCode);\r\n }\r\n static deleteZipCode = (zipCodeId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${zipCodeId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Zip Code has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Zip Code.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.deleteZipCode);\r\n } \r\n}\r\n","import { ITrustedApplicationModel, TrustedApplicationModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class TrustedApplicationService {\r\n\r\n private static baseUrl: string = '/api/trustedapplication';\r\n\r\n static tags = {\r\n getNewTrustedApplication: \"getTrustedApplication\",\r\n getNewApplicationKey: \"getNewApplicationKey\",\r\n updateTrustedApplication: \"updateTrustedApplication\",\r\n deleteTrustedApplication: \"deleteTrustedApplication\"\r\n }\r\n\r\n /**\r\n * Get a new Trusted Application\r\n * @param options\r\n * @returns Returns requested Trusted Application\r\n */\r\n static getNewTrustedApplication = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/new`).get()\r\n .then((response) => {\r\n resolve(new TrustedApplicationModel(response));\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getNewTrustedApplication)\r\n }\r\n\r\n /**\r\n * Get a new Application Key\r\n * @param options\r\n * @returns Returns new Application Key\r\n */\r\n static getNewApplicationKey = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/newapplicationkey`).get()\r\n .then((response) => {\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getNewApplicationKey)\r\n }\r\n\r\n /**\r\n * Updates Trusted Application\r\n * @param data TrustedApplicationModel to update\r\n * @param options Service Method Options\r\n * @returns TrustedApplicationModel\r\n */\r\n static upsertTrustedApplication = (data: TrustedApplicationModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n resolve(new TrustedApplicationModel(response));\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.updateTrustedApplication);\r\n }\r\n\r\n /**\r\n * Deletes Trusted Application by Id\r\n * @param id Trusted Application Id\r\n * @param options Service Method Options\r\n * @returns boolean on success\r\n */\r\n static deleteTrustedApplication = (id: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${id}`).delete()\r\n .then(() => {\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.deleteTrustedApplication);\r\n }\r\n}\r\n","import { VaccineAdministeredModel, IVaccineAdministeredModel } from '@common/models/VaccineAdministeredModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\n\r\nexport class VaccineAdministeredService {\r\n private static baseUrl: string = '/api/vaccineadministered/';\r\n static tags = {\r\n upsertVaccineAdministered: \"upsertVaccineAdministered\",\r\n deleteVaccineAdministered: \"deleteVaccineAdministered\" \r\n } \r\n \r\n static upsertVaccineAdministered = (data: IVaccineAdministeredModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => { \r\n resolve(new VaccineAdministeredModel(response));\r\n })\r\n .catch(reject)\r\n }), this.tags.upsertVaccineAdministered);\r\n }\r\n \r\n static deleteVaccineAdministered = (vaccineAdministeredId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${vaccineAdministeredId}`).delete()\r\n .then(() => {\r\n resolve(true);\r\n })\r\n .catch(reject)\r\n }), this.tags.deleteVaccineAdministered);\r\n } \r\n}\r\n","import { VaccineVirusTypeModel, IVaccineVirusTypeModel } from '@common/models/VaccineVirusTypeModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class VaccineVirusTypeService {\r\n private static baseUrl: string = '/api/vaccinevirustype';\r\n\r\n static tags = {\r\n vaccineVirusType: \"vaccineVirusType\"\r\n }\r\n\r\n static upsertVaccineVirusType = (data: IVaccineVirusTypeModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Vaccine Virus Type updated.\", options);\r\n resolve(new VaccineVirusTypeModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Vaccine Virus Type.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.vaccineVirusType);\r\n }\r\n\r\n static deleteVaccineVirusType = (vaccineVirusTypeId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${vaccineVirusTypeId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Vaccine Virus Type has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Vaccine Virus Type.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.vaccineVirusType);\r\n }\r\n}\r\n","import { VaccineNameModel, IVaccineNameModel } from '@common/models/VaccineNameModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from '../serviceHelper';\r\nimport { ServiceMethodOptions } from '../types';\r\n\r\nexport class VaccineNameService {\r\n private static baseUrl: string = '/api/vaccinename';\r\n\r\n static tags = {\r\n vaccineName: \"vaccineName\"\r\n }\r\n\r\n static upsertVaccineName = (data: IVaccineNameModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Vaccine Name updated.\", options);\r\n resolve(new VaccineNameModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Vaccine Name.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.vaccineName);\r\n }\r\n\r\n static deleteVaccineName = (vaccineNameId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${vaccineNameId}`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Vaccine Name has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Vaccine Name.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.vaccineName);\r\n }\r\n}\r\n","import { VaccineManufacturerModel, IVaccineManufacturerModel } from '@common/models/VaccineManufacturerModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\n\r\nexport class VaccineManufacturerService {\r\n private static baseUrl: string = '/api/vaccinemanufacturer/';\r\n static tags = {\r\n upsertVaccineManufacturer: \"upsertVaccineManufacturer\",\r\n deleteVaccineManufacturer: \"deleteVaccineManufacturer\" \r\n } \r\n \r\n static upsertVaccineManufacturer = (data: IVaccineManufacturerModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => { \r\n resolve(new VaccineManufacturerModel(response));\r\n })\r\n .catch(reject)\r\n }), this.tags.upsertVaccineManufacturer);\r\n }\r\n \r\n static deleteVaccineManufacturer = (vaccineManufacturerId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${vaccineManufacturerId}`).delete()\r\n .then(() => {\r\n resolve(true);\r\n })\r\n .catch(reject)\r\n }), this.tags.deleteVaccineManufacturer);\r\n } \r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { IModel, Model } from \"./Model\";\r\nimport { ISalesPackageModel, SalesPackageModel } from \"./SalesPackageModel\";\r\n\r\nexport interface IClinicSalesPackages extends IModel {\r\n clinicId: number;\r\n salesDate: string;\r\n salesPackages: ISalesPackageModel[];\r\n}\r\n\r\nexport class ClinicSalesPackages extends Model implements Record{\r\n clinicId: number;\r\n salesDate: DateTime;\r\n salesPackages: ISalesPackageModel[];\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n this.clinicId = defaultTo(params.clinicId, 0);\r\n this.salesDate = DateTime.fromISO(defaultTo(params.salesDate, \"2000-01-01\"), { zone: \"utc\" })\r\n this.salesPackages = (params.salesPackages ?? []).map(si => new SalesPackageModel(si));\r\n }\r\n}\r\n","import { ClinicSalesPackages, IClinicSalesPackages } from '@common/models/ClinicSalesPackages';\r\nimport { SalesPackageModel, ISalesPackageModel } from '@common/models/SalesPackageModel';\r\nimport { http } from '@common/utils';\r\nimport { DateTime } from 'luxon';\r\nimport { trackPromise } from 'react-promise-tracker';\r\n\r\nexport class SalesPackageService {\r\n private static baseUrl: string = '/api/salesPackage';\r\n static tags = {\r\n deleteSalesPackages: \"deleteSalesPackages\",\r\n getSalesPackage: \"getSalesPackage\",\r\n upsertSalesPackage: \"upsertSalesPackage\",\r\n getClinicSalesPackages: \"getClinicSalesPackages\"\r\n }\r\n\r\n static deleteSalesPackages = (salesPackageId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/delete/${salesPackageId}`).delete()\r\n .then(() => {\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.deleteSalesPackages);\r\n }\r\n static getSalesPackage = (salesPackageId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${salesPackageId}`).get()\r\n .then((response) => new SalesPackageModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getSalesPackage);\r\n };\r\n static upsertSalesPackage = (data: ISalesPackageModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/update/`).post(data)\r\n .then((response) => new SalesPackageModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.upsertSalesPackage);\r\n }\r\n static getClinicSalesPackages = (clinicId: number, clinicDate: DateTime): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${clinicDate.toISODate()}/clinic/${clinicId}`)\r\n .getVersioned(`sales-packages-${clinicDate.toISODate()}-${clinicId}`)\r\n .then(json => new ClinicSalesPackages(json))\r\n .then(csp => resolve(csp.salesPackages))\r\n .catch(reject)\r\n }), this.tags.getClinicSalesPackages);\r\n}\r\n","import { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { SalesPlanModel, ISalesPlanModel } from '@common/models/SalesPlanModel';\r\nimport { ClinicSalesPlans } from '@common/models/ClinicSalesPlans';\r\n\r\nexport class SalesPlanService {\r\n private static baseUrl: string = '/api/salesPlan';\r\n static tags = {\r\n getAllSalesPlans: \"getAllSalesPlans\",\r\n getSalesPlan: \"getSalesPlan\",\r\n upsertSalesPlan: \"upsertSalesPlan\",\r\n deleteSalesPlan: \"deleteSalesPlan\"\r\n };\r\n\r\n static getAllSalesPlans = (): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`)\r\n .getVersioned(\"sales-plans\")\r\n .then(resp => resp.salesPlans.map(r => new SalesPlanModel(r)))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.getAllSalesPlans);\r\n };\r\n\r\n static getSalesPlan = (salesPlanId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${salesPlanId}`).get()\r\n .then((response) => new SalesPlanModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getSalesPlan);\r\n };\r\n\r\n static upsertSalesPlan = (data: ISalesPlanModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/update/`).post(data)\r\n .then((response) => new SalesPlanModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.upsertSalesPlan);\r\n };\r\n\r\n static deleteSalesPlans = (salesPlanId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/delete/${salesPlanId}`).delete()\r\n .then(() => {\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.deleteSalesPlan);\r\n };\r\n}\r\n","import { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\n\r\nexport class PingService {\r\n\r\n private static baseUrl: string = '/api';\r\n\r\n public static tags = {\r\n ping: \"ping\",\r\n }\r\n\r\n static ping = (): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/ping?hitDb=false`)\r\n .get()\r\n .then(json => resolve(json))\r\n .catch(reject)\r\n }), this.tags.ping);\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { RXServiceDispensingHistoryCustomerDetailModel } from \"@common/models/RXServiceDispensingHistoryCustomerDetailModel\";\r\nimport { RXServiceDispensingHistoryPetDetailModel } from \"@common/models/RXServiceDispensingHistoryPetDetailModel\";\r\nimport { StringUtility } from \"@common/utils\";\r\n\r\nexport interface IRXServiceDispensingHistoryItemModel {\r\n order_number: string;\r\n sku: string;\r\n sku_name: string;\r\n tracking_number: string;\r\n shipped_date: string | undefined;\r\n ordered_date: string | undefined;\r\n shipping_url: string;\r\n fulfillment_quantity: number;\r\n prescription_number: string;\r\n prescription_type: string;\r\n prescribing_vet_name: string;\r\n pet_details: RXServiceDispensingHistoryPetDetailModel | undefined;\r\n customer_details: RXServiceDispensingHistoryCustomerDetailModel | undefined;\r\n}\r\n\r\nexport class RXServiceDispensingHistoryItemModel implements Record {\r\n order_number: string;\r\n sku: string;\r\n sku_name: string;\r\n tracking_number: string;\r\n shipped_date: DateTime | undefined;\r\n ordered_date: DateTime | undefined;\r\n shipping_url: string;\r\n fulfillment_quantity: number;\r\n prescription_number: string;\r\n prescription_type: string;\r\n prescribing_vet_name: string;\r\n pet_details: RXServiceDispensingHistoryPetDetailModel | undefined;\r\n customer_details: RXServiceDispensingHistoryCustomerDetailModel | undefined;\r\n\r\n constructor(params?: Partial) {\r\n this.order_number = _.defaultTo(params?.order_number, \"\");\r\n this.sku = _.defaultTo(params?.sku, \"\");\r\n this.sku_name = _.defaultTo(params?.sku_name, \"\");\r\n this.tracking_number = _.defaultTo(params?.tracking_number, \"\");\r\n this.shipping_url = _.defaultTo(params?.shipping_url, \"\");\r\n this.shipped_date = StringUtility.SanitizeDateTimeISO(params?.shipped_date)\r\n this.ordered_date = StringUtility.SanitizeDateTimeISO(params?.ordered_date)\r\n this.fulfillment_quantity = _.defaultTo(params?.fulfillment_quantity, 0);\r\n this.prescription_number = _.defaultTo(params?.prescription_number, \"\");\r\n this.prescription_type = _.defaultTo(params?.prescription_type, \"\");\r\n this.prescribing_vet_name = _.defaultTo(params?.prescribing_vet_name, \"\");\r\n this.pet_details = _.defaultTo(params?.pet_details, undefined);\r\n this.customer_details = _.defaultTo(params?.customer_details, undefined);\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IModel, Model, ModelRecord } from \"@common/models/Model\";\r\n\r\nexport interface IRxSKUItemQuantityModel extends IModel {\r\n rxSKUItemQuantityId: number;\r\n rxSKUItemId: number;\r\n quantity: number;\r\n sku: string;\r\n}\r\n\r\nexport class RxSKUItemQuantityModel extends Model implements ModelRecord {\r\n rxSKUItemQuantityId: number;\r\n rxSKUItemId: number;\r\n quantity: number;\r\n sku: string;\r\n\r\n constructor(params?: Partial) {\r\n super(params);\r\n this.rxSKUItemQuantityId = defaultTo(params?.rxSKUItemQuantityId, 0);\r\n this.rxSKUItemId = defaultTo(params?.rxSKUItemId, 0);\r\n this.quantity = defaultTo(params?.quantity, 0);\r\n this.sku = defaultTo(params?.sku, \"\");\r\n }\r\n}\r\n","import { defaultTo } from \"lodash\";\r\nimport { IRxSKUItemQuantityModel, RxSKUItemQuantityModel } from \"@common/models/RxSKUItemQuantityModel\";\r\n\r\nexport interface IRxSKUItemModel {\r\n rxSKUItemId: number;\r\n sourceSystemId: number;\r\n sourceSystemKey: string;\r\n packageName: string;\r\n sourceSystemName: string;\r\n quantities: IRxSKUItemQuantityModel[];\r\n}\r\n\r\nexport class RxSKUItemModel {\r\n rxSKUItemId: number;\r\n sourceSystemId: number;\r\n sourceSystemKey: string;\r\n packageName: string;\r\n sourceSystemName: string;\r\n quantities: IRxSKUItemQuantityModel[];\r\n\r\n constructor(params?: Partial) {\r\n this.rxSKUItemId = defaultTo(params?.rxSKUItemId, 0);\r\n this.sourceSystemId = defaultTo(params?.sourceSystemId, 0);\r\n this.sourceSystemKey = defaultTo(params?.sourceSystemKey, \"\");\r\n this.packageName = defaultTo(params?.packageName, \"\");\r\n this.sourceSystemName = defaultTo(params?.sourceSystemName, \"\");\r\n\r\n this.quantities = defaultTo(params?.quantities, []).map(q => new RxSKUItemQuantityModel(q))\r\n }\r\n}\r\n","import { trackPromise } from \"react-promise-tracker\";\r\nimport { IHospitalPrescriptionModel, HospitalPrescriptionModel } from \"@common/models/HospitalPrescriptionModel\";\r\nimport { http } from \"@common/utils\";\r\nimport { IRXServiceDispensingHistoryItemModel, RXServiceDispensingHistoryItemModel } from \"@common/models/RXServiceDispensingHistoryItemModel\";\r\nimport { IRxSKUItemModel, RxSKUItemModel } from \"@common/models/RxSKUItemModel\";\r\nimport { IDispensingHistoryRequest } from \"@common/models/requests/DispensingHistoryRequest\";\r\n\r\nexport class PrescriptionService {\r\n private static baseUrl: string = '/api/prescription';\r\n\r\n public static tags = {\r\n getByHospitalPrescriptionId: \"getByHospitalPrescriptionId\",\r\n getRXDispensingHistory: \"getRXDispensingHistory\",\r\n getRXSKUQuantities: \"getRXSKUQuantities\",\r\n recallHospitalPrescription: \"recallHospitalPrescription\",\r\n transferHospitalPrescription: \"transferHospitalPrescription\"\r\n }\r\n\r\n static getHospitalPrescription = (hospitalPrescriptionId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/hospital/${hospitalPrescriptionId}`)\r\n .get()\r\n .then(json => resolve(new HospitalPrescriptionModel(json)))\r\n .catch(reject)\r\n }), this.tags.getByHospitalPrescriptionId);\r\n\r\n static getRXDispensingHistory = (request: IDispensingHistoryRequest): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/hospital/dispensinghistory`)\r\n .post(request)\r\n .then(response => resolve(response.map(d => new RXServiceDispensingHistoryItemModel(d))))\r\n .catch(reject)\r\n }), this.tags.getRXDispensingHistory)\r\n\r\n static getRXSKUQuantities = (): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/hospital/skuquantities`)\r\n .get()\r\n .then(response => resolve(response.map(d => new RxSKUItemModel(d))))\r\n .catch(reject)\r\n }), this.tags.getRXSKUQuantities);\r\n\r\n static recallHospitalPrescription = (hospitalPrescriptionId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/hospital/recall/${hospitalPrescriptionId}`)\r\n .post({})\r\n .then(json => resolve(new HospitalPrescriptionModel(json)))\r\n .catch(reject)\r\n }), this.tags.recallHospitalPrescription);\r\n\r\n static transferHospitalPrescription = (hospitalPrescriptionId: number, note: string): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/hospital/transferpermanent`)\r\n .post({ hospitalPrescriptionId, note })\r\n .then(json => resolve(new HospitalPrescriptionModel(json)))\r\n .catch(reject)\r\n }), this.tags.transferHospitalPrescription);\r\n}\r\n","import { AuthApplicationModel, IAuthApplicationModel } from '@common/models/Security';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from './serviceHelper';\r\nimport { ServiceMethodOptions } from './types';\r\n\r\nexport class AuthApplicationService {\r\n private static baseUrl: string = '/api/authapplication';\r\n\r\n static getAuthApplications = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).get()\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Pet Alert updated\", options);\r\n const apps = response.map((app) => new AuthApplicationModel(app));\r\n resolve(apps);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Pet Alert.\", options);\r\n reject(err);\r\n })\r\n }));\r\n }\r\n}\r\n","import { CallCodeModel, CallOriginModel, ICallCodeModel, ICallOriginModel, IModel, Model } from \"@common/models\";\r\nimport { StringUtility } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { AuthUserModel, IAuthUserModel } from \"./Security\";\r\n\r\n\r\nexport const defaultCustomerInteraction: ICustomerInteractionModel = {\r\n callDate: '2022-08-19T15:39:23.64',\r\n clientInteractionId: 0,\r\n callOriginId: 0,\r\n callCodeId: 0,\r\n petId: '0',\r\n clientId: '0',\r\n notes: '',\r\n user: new AuthUserModel({}),\r\n rowVersion: '',\r\n callOrigin: {\r\n callOriginId: 0,\r\n isSystemGenerated: false,\r\n name: \"\",\r\n rowVersion: \"\"\r\n },\r\n callCode: {\r\n callCodeId: 0,\r\n isSystemGenerated: false,\r\n name: \"\",\r\n rowVersion: \"\"\r\n },\r\n followUp: false,\r\n followUpTypeId: 1,\r\n}\r\n\r\nexport class CustomerInteractionModel extends Model implements Record {\r\n clientInteractionId: number | undefined;\r\n callOriginId: number;\r\n callCodeId: number;\r\n notes: string;\r\n user: AuthUserModel;\r\n petId: number;\r\n clientId: number;\r\n callOrigin: CallOriginModel;\r\n callCode: CallCodeModel;\r\n callDate: DateTime;\r\n followUp: boolean;\r\n followUpTypeId: number;\r\n callOriginName: string;\r\n callCodeName: string;\r\n fullName: string;\r\n\r\n constructor(params: ICustomerInteractionModel = defaultCustomerInteraction) {\r\n super();\r\n const {\r\n clientInteractionId, callOriginId, callCodeId, notes, user, rowVersion,\r\n petId, clientId, callOrigin, callCode, callDate, followUp, followUpTypeId,\r\n } = params\r\n const { user: actualUser } = user;\r\n const { firstName, lastName } = actualUser;\r\n this.clientInteractionId = clientInteractionId;\r\n this.callOriginId = callOriginId;\r\n this.callCodeId = callCodeId;\r\n this.notes = notes;\r\n this.user = new AuthUserModel(user);\r\n this.rowVersion = rowVersion;\r\n this.petId = Number(petId);\r\n this.clientId = Number(clientId);\r\n this.callOrigin = new CallOriginModel(callOrigin);\r\n this.callCode = new CallCodeModel(callCode);\r\n this.callDate = DateTime.fromISO(callDate, { zone: 'UTC' });\r\n this.followUp = followUp;\r\n this.followUpTypeId = followUpTypeId;\r\n this.callOriginName = callOrigin.name;\r\n this.callCodeName = callCode.name;\r\n this.fullName = StringUtility.getFullName({ firstName, lastName });\r\n }\r\n}\r\nexport interface ICustomerInteractionModel extends IModel {\r\n callDate: string,\r\n clientInteractionId?: number,\r\n callOriginId: number,\r\n callCodeId: number,\r\n notes: string,\r\n petId: string,\r\n clientId: string,\r\n user: IAuthUserModel,\r\n callOrigin: ICallOriginModel,\r\n callCode: ICallCodeModel,\r\n followUp: boolean,\r\n followUpTypeId: number,\r\n}\r\n","import {\r\n AppointmentListingModel,\r\n AppointmentManagementListModel,\r\n ClientModel,\r\n ClientVerificationRequest,\r\n CommunicationPreferenceModel,\r\n IAppointmentListingModel,\r\n IAppointmentManagementListModel,\r\n IClientModel,\r\n IClientVerificationRequest,\r\n IMedicalHistoryModel,\r\n MedicalHistoryModel,\r\n\tIClinicAddNewClientRequest,\r\n ClientCommunicationStatModel\r\n} from '@common/models';\r\nimport { IAddClientEmailRequest } from '@common/models/requests';\r\nimport { http } from '@common/utils';\r\nimport { DateTime } from 'luxon';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from './serviceHelper';\r\nimport { ServiceMethodOptions } from './types';\r\nimport { CustomerInteractionModel, ICustomerInteractionModel } from \"@common/models/CustomerInteractionModel\";\r\nimport { AppointmentStatus, VisitCompletionType } from '@common/models/Enums';\r\n\r\nexport class ClientService {\r\n\r\n // #region Private Variables\r\n private static baseUrl: string = '/api/client';\r\n private static publicUserHeader: any = {\r\n 'vpca': '351BD313-2C19-442B-BC87-C69356EB59EF',\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n };\r\n // #endregion\r\n\r\n public static tags = {\r\n getClient: \"getClient\",\r\n addClient: \"addClient\",\r\n updateClient: \"updateClient\",\r\n validateCustomer: \"validateCustomer\",\r\n getClientMedicalHistoryForPet: \"getClientMedicalHistoryForPet\",\r\n getAppointmentAndVisitData: \"getAppointmentAndVisitData\",\r\n getAppointments: \"getAppointments\",\r\n addEmailCommunication: \"addEmailCommunication\",\r\n getInteractions: \"getInteractions\",\r\n addInteraction: \"addInteraction\",\r\n updateInteraction: \"updateInteraction\",\r\n deleteInteraction: \"deleteVisitAttachment\",\r\n saveCommunicationPreference: \"saveCommunicationPreference\",\r\n\t\taddNewClientFromClinic: \"addNewClientFromClinic\",\r\n getCommunicationStat: \"getCommunicationStat\"\r\n };\r\n\r\n static getClient = (clientId: string, options?: ServiceMethodOptions): Promise =>\r\n trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${clientId}`)\r\n .get()\r\n .then((data) => resolve(new ClientModel(data)))\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.getClient, options));\r\n\r\n\r\n static addClient = (client: ClientModel, options?: ServiceMethodOptions): Promise =>\r\n trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/hospital/add`)\r\n .post(client)\r\n .then((data) => resolve(new ClientModel(data)))\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.addClient, options));\r\n\r\n\r\n static updateClient = (client: ClientModel, options?: ServiceMethodOptions): Promise =>\r\n trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/hospital/update`)\r\n .post(client)\r\n .then((data) => resolve(new ClientModel(data)))\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.updateClient, options));\r\n\r\n\r\n /**\r\n * Validates User that supplys email or phone number\r\n * @param data Contains Email and/or Phone\r\n * @returns\r\n */\r\n static validateCustomer = (data: IClientVerificationRequest, options?: ServiceMethodOptions): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/verify/`).mergeOptions({ headers: this.publicUserHeader }).post(data)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Verification Sent\", options);\r\n resolve(new ClientVerificationRequest(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to validate.\", options);\r\n reject(err);\r\n })\r\n }), ServiceHelper.getTagForOptions(this.tags.validateCustomer, options));\r\n\r\n\r\n static getClientMedicalHistoryForPet = (clientId: number, petId: number, options?: ServiceMethodOptions): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/medicalhistory/${clientId}?includeFinalizedAndPaidVisits=true`)\r\n .get()\r\n .then((medicalHistories) => {\r\n const medicalHistoryClasses = medicalHistories\r\n .filter(x => x.petId == petId)\r\n .filter(x => x.isComplete || x.isFinalized || x.isPaid || VisitCompletionType.visitIsAborted(x.visitCompletionTypeId))\r\n .map((medicalHistory) => new MedicalHistoryModel(medicalHistory));\r\n resolve(medicalHistoryClasses)\r\n })\r\n .catch(() => {\r\n ServiceHelper.showError(\"Failed to fetch medical history\", options);\r\n reject();\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getClientMedicalHistoryForPet, options));\r\n\r\n\r\n /**\r\n * Gets appointment and visit data\r\n * @param publicId Public Id\r\n * @returns\r\n */\r\n static getAppointmentAndVisitData = (publicId: String, options?: ServiceMethodOptions): Promise =>\r\n trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/getappointmentandvisitdata/${publicId}`).mergeOptions({ headers: this.publicUserHeader }).post({})\r\n .then((response) => {\r\n const apptMgtLstArray = response.map((apptMgtLst) => new AppointmentManagementListModel(apptMgtLst));\r\n resolve(apptMgtLstArray);\r\n })\r\n .catch((err) => { reject(err); })\r\n }), ServiceHelper.getTagForOptions(this.tags.getAppointmentAndVisitData, options));\r\n\r\n\r\n static getAppointments = (clientId: number, options?: ServiceMethodOptions, startOfDayAtHospitalInUTCShift?: DateTime): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n const url = startOfDayAtHospitalInUTCShift !== undefined ?\r\n `${this.baseUrl}/${clientId}/appointments` :\r\n `${this.baseUrl}/${clientId}/appointments?startDate=${DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).toISODate()}`;\r\n http(url).get().then((appts) => {\r\n ServiceHelper.showSuccess(\"Appointments Loaded!\", options);\r\n const appointments = appts.map((apt) => new AppointmentListingModel(apt));\r\n resolve(startOfDayAtHospitalInUTCShift ? ClientService.filterAppointments(appointments, startOfDayAtHospitalInUTCShift) : appointments);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to load client appointments.\", options);\r\n reject(err);\r\n })\r\n }), ServiceHelper.getTagForOptions(this.tags.getAppointments, options));\r\n\r\n\r\n static addEmailCommunication = (emailRequest: IAddClientEmailRequest, options?: ServiceMethodOptions): Promise =>\r\n trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/addEmailCommunication`)\r\n .post(emailRequest)\r\n .then((data) => resolve(new ClientModel(data)))\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.addEmailCommunication, options));\r\n\r\n static getClientInteractions = (clientId?: number) => {\r\n return trackPromise(\r\n http(`${this.baseUrl}/interactions/${clientId}`).get()\r\n .then(json =>\r\n json.map(\r\n customerInteraction => new CustomerInteractionModel(customerInteraction)\r\n )\r\n )\r\n , this.tags.getInteractions\r\n );\r\n };\r\n\r\n static addCustomerInteraction = (customerInteraction: Partial, options?: ServiceMethodOptions) =>\r\n trackPromise(\r\n http(`${this.baseUrl}/interactions/add`)\r\n .post(customerInteraction)\r\n , ServiceHelper.getTagForOptions(this.tags.addInteraction, options)\r\n );\r\n\r\n static updateCustomerInteraction = (customerInteraction: Partial, options?: ServiceMethodOptions) =>\r\n trackPromise(\r\n http(`${this.baseUrl}/interactions/update`)\r\n .post(customerInteraction)\r\n , ServiceHelper.getTagForOptions(this.tags.updateInteraction, options)\r\n );\r\n\r\n static deleteCustomerInteraction = (customerInteractionId: number, options?: ServiceMethodOptions) =>\r\n trackPromise(\r\n http(`${this.baseUrl}/interactions/delete/${customerInteractionId}`)\r\n .delete()\r\n , ServiceHelper.getTagForOptions(this.tags.deleteInteraction, options)\r\n );\r\n\r\n static saveCommunicationPreference = (publicId: String, data: CommunicationPreferenceModel, options?: ServiceMethodOptions): Promise =>\r\n trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/saveCommunicationPreference/${publicId}`)\r\n .mergeOptions({ headers: this.publicUserHeader })\r\n .post({ canSMS: data.canSMS, canCall: data.canCall, phoneNumber: data.phoneNumber })\r\n .then(() => resolve())\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.saveCommunicationPreference, options));\r\n\r\n static filterAppointments = (appointments: AppointmentListingModel[], startOfDayAtHospitalInUTCShift: DateTime) =>\r\n appointments.filter(apt => apt.appointmentStatusId === AppointmentStatus.NoShow || (DateTime.fromISO(apt.startDate, { zone: 'UTC' }) > startOfDayAtHospitalInUTCShift))\r\n\r\n\tstatic addNewClientFromClinic = (client: IClinicAddNewClientRequest, options?: ServiceMethodOptions): Promise =>\r\n trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/addfromclinic`)\r\n .post(client)\r\n .then((data) => resolve(new ClientModel(data)))\r\n\t\t\t\t\t.then(() => ServiceHelper.showSuccess(`New Client Added!`, options))\r\n .catch((err) => {\r\n\t\t\t\t\t\tServiceHelper.showError(\"Failed to Add Client.\", options);\r\n\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t});\r\n }), ServiceHelper.getTagForOptions(this.tags.addNewClientFromClinic, options));\r\n\r\n static getCommunicationStats = (clientId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject)=>{\r\n http(`${this.baseUrl}/${clientId}/communicationstats`)\r\n .get()\r\n .then((data) => resolve(new ClientCommunicationStatModel(data)))\r\n .catch(() => reject())\r\n }), this.tags.getCommunicationStat);\r\n }\r\n}\r\n","import { IMacroModel } from \"../MacroModel\";\r\n\r\nexport interface IMacroRequest {\r\n macroId: number\r\n name: string\r\n macroTypeId: number\r\n content: string\r\n hospitalId: number\r\n userId: number\r\n isActive: boolean\r\n rowVersion: string\r\n macroTargetTypeId: number\r\n}\r\n\r\nexport class MacroRequest implements IMacroRequest {\r\n macroId: number\r\n name: string\r\n macroTypeId: number\r\n content: string\r\n hospitalId: number\r\n userId: number\r\n isActive: boolean\r\n rowVersion: string\r\n macroTargetTypeId: number\r\n\r\n constructor(params: IMacroRequest) {\r\n this.macroId = params.macroId;\r\n this.name = params.name;\r\n this.macroTypeId = params.macroTypeId;\r\n this.content = params.content;\r\n this.hospitalId = params.hospitalId;\r\n this.userId = params.userId;\r\n this.isActive = params.isActive;\r\n this.rowVersion = params.rowVersion;\r\n this.macroTargetTypeId = params.macroTargetTypeId;\r\n }\r\n\r\n static ParseMacroRequest(macro: IMacroModel): MacroRequest {\r\n return {\r\n macroId: macro.macroId,\r\n name: macro.name,\r\n macroTypeId: macro.macroTypeId,\r\n content: macro.content,\r\n hospitalId: macro.hospitalId,\r\n userId: macro.userId,\r\n isActive: macro.isActive,\r\n rowVersion: macro.rowVersion,\r\n macroTargetTypeId: macro.macroTargetTypeId\r\n }\r\n }\r\n}\r\n","import {\r\n AppointmentListingModel,\r\n HospitalModel,\r\n HospitalScheduleModel,\r\n HospitalScheduleTemplateModel,\r\n IAppointmentListingModel,\r\n IHospitalModel,\r\n IHospitalScheduleModel,\r\n IHospitalScheduleTemplateModel,\r\n IVeterinarianModel,\r\n VeterinarianModel,\r\n schedule,\r\n InvoiceModel,\r\n IInvoiceModel,\r\n IMacroModel,\r\n MacroModel,\r\n IIvlsDeviceModel,\r\n IvlsDeviceModel\r\n} from \"@common/models\";\r\n\r\nimport { HospitalScheduleDateRangeType } from \"@common/models/Enums/HospitalScheduleDateRangeType\";\r\nimport { HospitalScheduleRequestModel, HospitalScheduleTemplateRequest, IAppointmentCheckInRequest, EntityScheduleOverridePreferenceRequest, IVisitCheckoutRequest } from \"@common/models/requests\";\r\nimport { IAppointmentStatusRequest } from \"@common/models/requests/AppointmentStatusRequest\";\r\nimport { IAppointmentRequest } from \"@common/models/requests/AppointmentRequest\";\r\nimport { http } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { ServiceHelper } from \"./serviceHelper\";\r\nimport { ServiceMethodOptions } from \"./types\";\r\nimport { HospitalPrescriptionRefillModel, IHospitalPrescriptionRefillModel } from \"@common/models/HospitalPrescriptionRefillModel\";\r\nimport { IAddHospitalPrescriptionRefillRequest } from \"@common/models/requests/AddHospitalPrescriptionRefillRequest\";\r\nimport { IUpdateHospitalPrescriptionRefillRequest } from \"@common/models/requests/UpdateHospitalPrescriptionRefillRequest\";\r\nimport { ICheckOutHospitalPrescriptionRefillRequest } from \"@common/models/requests/CheckOutHospitalPrescriptionRefillRequest\";\r\nimport { MacroRequest } from \"@common/models/requests/MacroRequest\";\r\nimport { HospitalPrescriptionModel, IHospitalPrescriptionModel } from \"@common/models/HospitalPrescriptionModel\";\r\nimport { PetNotPresentVisitRequest } from \"@common/models/requests/PetNotPresentVisitRequest\";\r\nimport { CheckoutPetNotPresentVisitRequest } from \"@common/models/requests/CheckoutPetNotPresentVisitRequest\";\r\nimport { HospitalPrescriptionCancelModel } from \"@common/models/HospitalPrescriptionCancelModel\";\r\n\r\nexport class HospitalService {\r\n private static baseUrl: string = '/api/hospital/';\r\n\r\n public static tags = {\r\n loadScheduledVets: \"loadScheduledVets\",\r\n getAppointment: \"getAppointment\",\r\n getAppointments: \"getAppointments\",\r\n getLastModifiedAppointmentDate: \"getLastModifiedAppointmentDate\",\r\n createAppointment: \"createAppointment\",\r\n updateAppointment: \"updateAppointment\",\r\n checkInAppointment: \"checkInAppointment\",\r\n setNoShowAppointment: \"setNoShowAppointment\",\r\n setInProgressAppointment: \"setInProgressAppointment\",\r\n getHospital: \"getHospital\",\r\n convertStoreToHospital: \"convertStoreToHospital\",\r\n getAllHospitals: \"getAllHospitals\",\r\n updateHospital: \"updateHospital\",\r\n getHospitalVeterinarians: \"getHospitalVeterinarians\",\r\n getHospitalSchedules: \"getHospitalSchedules\",\r\n updateHospitalSchedules: \"updateHospitalSchedules\",\r\n setAdmittedAppointment: \"setAdmittedAppointment\",\r\n setBookedAppointment: \"setBookedAppointment\",\r\n setConfirmedAppointment: \"setConfirmedAppointment\",\r\n setCancelledAppointment: \"setCancelledAppointment\",\r\n setFinalizedAppointment: \"setFinalizedAppointment\",\r\n setPaidAppointment: \"setPaidAppointment\",\r\n addAdhocHospitalSchedule: \"addAdhocHospitalSchedule\",\r\n getHospitalScheduleTemplate: \"getHospitalScheduleTemplate\",\r\n getHospitalScheduleTemplateList: \"getHospitalScheduleTemplateList\",\r\n createHospitalSchedulePreferenceOverrides: \"createHospitalSchedulePreferenceOverrides\",\r\n updateHospitalSchedulePreferenceOverrides: \"updateHospitalSchedulePreferenceOverrides\",\r\n reopenVisit: \"reopenVisit\",\r\n createHospitalPrescriptionRefill: \"createHospitalPrescriptionRefill\",\r\n updateHospitalPrescriptionRefill: \"updateHospitalPrescriptionRefill\",\r\n checkOutHospitalPrescriptionRefill: \"checkOutHospitalPrescriptionRefill\",\r\n getMacro: \"getMacro\",\r\n updateMacro: \"updateMacro\",\r\n createMacro: \"createMacro\",\r\n deleteMacro: \"deleteMacro\",\r\n upsertHospitalPrescription: \"upsertHospitalPrescription\",\r\n upsertHospitalPrescriptions: \"upsertHospitalPrescriptions\",\r\n deleteHospitalPrescription: \"deleteHospitalPrescription\",\r\n refreshHospitalIvlsDevices: \"refreshHospitalIvlsDevices\",\r\n setAbortedAppointment: \"setAbortedAppointment\",\r\n createPetNotPresentVisit: \"createPetNotPresentVisit\",\r\n checkOutPetNotPresentVisit: \"checkOutPetNotPresentVisit\",\r\n cancelPetNotPresentVisit: \"cancelPetNotPresentVisit\",\r\n cancelPetNotPresentInvoice: \"cancelPetNotPresentInvoice\",\r\n cancelHospitalPrescription: \"cancelHospitalPrescription\"\r\n }\r\n\r\n // #region Get Appointment/s\r\n public static getAppointment = (hospitalId: number, reservationId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/appointments/${reservationId}`)\r\n .get()\r\n .then((appointment) => {\r\n try {\r\n const appointmentClass = new AppointmentListingModel(appointment);\r\n resolve(appointmentClass)\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getAppointment, options));\r\n }\r\n\r\n public static getAppointments = (hospitalId: number, startDateTime: DateTime, endDateTime: DateTime, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/appointments?startDate=${startDateTime.toISO({ includeOffset: false })}&endDate=${endDateTime.toISO({ includeOffset: false })}`)\r\n .get()\r\n .then((appointments) => {\r\n const appointmentClasses = appointments.map((apt) => new AppointmentListingModel(apt));\r\n ServiceHelper.showSuccess(\"Appointments Loaded!\", options);\r\n resolve(appointmentClasses)\r\n })\r\n .catch((error) => {\r\n ServiceHelper.showError(`Appointments failed to load! ${error.message}`, options);\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getAppointments, options));\r\n }\r\n\r\n public static getLastModifiedAppointmentDate = (hospitalId: number, startDateTime: DateTime, endDateTime: DateTime, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/appointments/lastmodifieddate?startDate=${startDateTime.toISO({ includeOffset: false })}&endDate=${endDateTime.toISO({ includeOffset: false })}`)\r\n .get()\r\n .then((lastModifiedDate) => {\r\n resolve(lastModifiedDate);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getLastModifiedAppointmentDate, options));\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Create/Update Appointment\r\n\r\n public static createAppointment = (hospitalId: number, appointment: IAppointmentRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments`)\r\n .post(body).then((apt) => {\r\n const appointment = new AppointmentListingModel(apt);\r\n ServiceHelper.showSuccess(\"Appointment Created!\", options);\r\n resolve(appointment);\r\n }).catch((error) => {\r\n ServiceHelper.showError(`Failed to create appointment. ${error.message}`, options);\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.createAppointment, options));\r\n }\r\n\r\n public static updateAppointment = (hospitalId: number, reservationId: number, appointment: IAppointmentRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${reservationId}`)\r\n .put(body).then((apt) => {\r\n const appointment = new AppointmentListingModel(apt);\r\n ServiceHelper.showSuccess(\"Appointment Updated!\", options);\r\n resolve(appointment);\r\n }).catch((error) => {\r\n ServiceHelper.showError(`Failed to update appointment. ${error.message}`, options);\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.updateAppointment, options));\r\n }\r\n\r\n public static checkInAppointment = (hospitalId: number, appointment: IAppointmentCheckInRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${appointment.reservationId}/checkin`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.checkInAppointment, options));\r\n }\r\n\r\n public static setNoShowAppointment = (hospitalId: number, appointment: IAppointmentStatusRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${appointment.reservationId}/noshow`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.setNoShowAppointment, options));\r\n }\r\n\r\n public static setInProgressAppointment = (hospitalId: number, appointment: IAppointmentStatusRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${appointment.visitId}/movetoinprogress`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.setInProgressAppointment, options));\r\n }\r\n\r\n public static setAdmittedAppointment = (hospitalId: number, appointment: IAppointmentStatusRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${appointment.visitId}/movetoadmitted`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.setAdmittedAppointment, options));\r\n }\r\n\r\n public static setBookedAppointment = (hospitalId: number, appointment: IAppointmentStatusRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${appointment.reservationId}/movetobooked`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.setBookedAppointment, options));\r\n }\r\n\r\n public static setConfirmedAppointment = (hospitalId: number, appointment: IAppointmentStatusRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${appointment.reservationId}/movetoconfirmed`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.setConfirmedAppointment, options));\r\n }\r\n\r\n public static setCancelledAppointment = (hospitalId: number, appointment: IAppointmentStatusRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${appointment.reservationId}/movetocancelled`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.setCancelledAppointment, options));\r\n }\r\n\r\n public static setFinalizedAppointment = (hospitalId: number, appointment: IAppointmentStatusRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${appointment.visitId}/movetofinalized`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.setFinalizedAppointment, options));\r\n }\r\n\r\n public static setCompletedAppointment = (hospitalId: number, appointment: IAppointmentStatusRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${appointment.visitId}/movetocomplete`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.setFinalizedAppointment, options));\r\n }\r\n\r\n public static setAbortedAppointment = (hospitalId: number, request: IVisitCheckoutRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(request));\r\n http(`${this.baseUrl}${hospitalId}/appointments/${request.visitId}/checkout`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), ServiceHelper.getTagForOptions(this.tags.setAbortedAppointment, options));\r\n }\r\n // #endregion\r\n\r\n //#region Get Hospital/s\r\n\r\n public static getHospital = (hospitalId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}`)\r\n .get().then((data) => {\r\n try {\r\n const hospital = new HospitalModel(data)\r\n resolve(hospital);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getHospital, options));\r\n }\r\n\r\n public static getHospitalForUser = (hospitalId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/user`)\r\n .get().then((data) => {\r\n try {\r\n const hospital = new HospitalModel(data)\r\n resolve(hospital);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getHospital, options));\r\n }\r\n\r\n public static getAllHospitals = (options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}getall`)\r\n .get().then((data) => {\r\n try {\r\n const hospitals = data.map(h => new HospitalModel(h));\r\n resolve(hospitals);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getAllHospitals, options));\r\n }\r\n\r\n public static getHospitalVeterinarians = (hospitalId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/veterinarians`).get().then((data) => {\r\n try {\r\n const vets = data.map(d => new VeterinarianModel(d));\r\n ServiceHelper.showSuccess(\"Hospital Loaded!\", options);\r\n resolve(vets);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n ServiceHelper.showError(`Unable to get vets for hospital: ${hospitalId} - ${error.message}`, options);\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getHospitalVeterinarians, options));\r\n }\r\n\r\n /**\r\n * New an improved Get Schedule end point, returned a ProcessedHospitalScheduleModel include the entire payload for a schedule.\r\n * @param hospitalId\r\n * @param date\r\n * @param range\r\n * @param options\r\n * @returns\r\n */\r\n public static getHospitalSchedules = (hospitalId: number, date: DateTime, range: HospitalScheduleDateRangeType, options?: ServiceMethodOptions): Promise => {\r\n const endPoint = `${this.baseUrl}${hospitalId}/schedule/${date.toISODate()}/${range.toString()}`;\r\n\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(endPoint).get().then((data) => {\r\n try {\r\n const scheduleItem = new schedule.ProcessedHospitalScheduleModel(data);\r\n\r\n ServiceHelper.showSuccess(\"Hospital Loaded!\", options);\r\n resolve(scheduleItem);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n ServiceHelper.showError(`Unable to get schedule for hospital: ${hospitalId} - ${error.message}`, options);\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getHospitalSchedules, options));\r\n }\r\n\r\n public static getHospitalScheduleTemplate = (hospitalScheduleTemplateId: number, options?: ServiceMethodOptions): Promise => {\r\n const endPoint = `${this.baseUrl}schedule/template/${hospitalScheduleTemplateId}`;\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(endPoint).get().then((data) => {\r\n try {\r\n const template = new HospitalScheduleTemplateModel(data);\r\n ServiceHelper.showSuccess(\"Hospital Loaded!\", options);\r\n resolve(template);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n ServiceHelper.showError(`Unable to get hospital schdule template: ${hospitalScheduleTemplateId} - ${error.message}`, options);\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getHospitalScheduleTemplate, options));\r\n }\r\n\r\n\r\n public static getHospitalScheduleTemplateList = (hospitalId: number, isActive?: boolean, options?: ServiceMethodOptions): Promise => {\r\n let endPoint = `${this.baseUrl}${hospitalId}/schedule/templates?isActive=${isActive != null ? isActive : null}`;\r\n\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(endPoint).get().then((data) => {\r\n try {\r\n const ret = data.map(d => new HospitalScheduleTemplateModel(d))\r\n resolve(ret);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getHospitalScheduleTemplateList, options));\r\n }\r\n\r\n public static updateHospitalScheduleTemplate = (request: HospitalScheduleTemplateRequest, options?: ServiceMethodOptions) => {\r\n const endPoint = `${this.baseUrl}schedule/template/${request.hospitalScheduleTemplateId}`;\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(endPoint).put(request).then((data) => {\r\n try {\r\n const template = new HospitalScheduleTemplateModel(data);\r\n resolve(template);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.getHospitalScheduleTemplate, options));\r\n }\r\n // #endregion\r\n\r\n //#region Update Hospital/s\r\n public static updateHospitalSchedules = (hospitalId: number, date: DateTime, schedule: HospitalScheduleRequestModel[], options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/schedule/${date.year}/${date.month}`)\r\n .put(schedule)\r\n .then(data => {\r\n ServiceHelper.showSuccess(\"Schedule Updated!\", options);\r\n resolve(data);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(`Unable to update hospital schedules for hospital: ${hospitalId} - ${err ? err.message : ''}`)\r\n reject(err);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.updateHospitalSchedules, options));\r\n }\r\n\r\n public static addAdhocHospitalSchedule = (hospitalId: number, schedule: HospitalScheduleRequestModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/schedule/add/adhoc`)\r\n .post(schedule)\r\n .then(data => {\r\n const schedule = new HospitalScheduleModel(data);\r\n ServiceHelper.showSuccess(\"Schedule Created!\", options);\r\n resolve(schedule);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(`Failed to create schedule for hospital: ${hospitalId} - ${err ? err.message : ''}`)\r\n reject(err);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.addAdhocHospitalSchedule, options));\r\n }\r\n\r\n public static updateHospital = (hospitalId: number, hospital: HospitalModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`/api/hospital/${hospitalId}`).put(hospital).then((data) => {\r\n try {\r\n const updatedHospital = new HospitalModel(data);\r\n resolve(updatedHospital);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.updateHospital, options));\r\n }\r\n\r\n public static convertStoreToHospital = (storeId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`/api/hospital/${storeId}`).post({}).then((data) => {\r\n try {\r\n const hospital = new HospitalModel(data);\r\n resolve(hospital);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.convertStoreToHospital, options));\r\n }\r\n\r\n public static createHospitalSchedulePreferenceOverrides = (hospitalId: number, date: string, request: EntityScheduleOverridePreferenceRequest[], options?: ServiceMethodOptions) => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/preferenceOverrides?date=${date}`)\r\n .post(request)\r\n .then(() => {\r\n try {\r\n resolve(null);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.createHospitalSchedulePreferenceOverrides, options));\r\n }\r\n\r\n public static updateHospitalSchedulePreferenceOverrides = (hospitalId: number, date: DateTime, request: EntityScheduleOverridePreferenceRequest[], options?: ServiceMethodOptions) => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/preferenceOverrides?date=${date.toISO()}`)\r\n .put(request)\r\n .then(() => {\r\n try {\r\n resolve(null);\r\n }\r\n catch (err) {\r\n reject(err)\r\n }\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.updateHospitalSchedulePreferenceOverrides, options));\r\n }\r\n\r\n public static reopenVisit = (hospitalId: number, appointment: IAppointmentStatusRequest) => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(appointment));\r\n http(`${this.baseUrl}${hospitalId}/reopenvisit/${appointment.visitId}`)\r\n .post(body)\r\n .then(apt => new AppointmentListingModel(apt))\r\n .then(resolve)\r\n .catch(reject);\r\n }), this.tags.reopenVisit);\r\n }\r\n\r\n //#endregion\r\n\r\n // #region Hospital Prescription Refills\r\n\r\n public static createHospitalPrescriptionRefill = (hospitalId: number, request: IAddHospitalPrescriptionRefillRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(request));\r\n http(`${this.baseUrl}${hospitalId}/hospitalprescriptionrefill`)\r\n .post(body).then((apt) => {\r\n const appointment = new HospitalPrescriptionRefillModel(apt);\r\n resolve(appointment);\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.createHospitalPrescriptionRefill, options));\r\n }\r\n\r\n public static updateHospitalPrescriptionRefill = (hospitalId: number, request: IUpdateHospitalPrescriptionRefillRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(request));\r\n http(`${this.baseUrl}${hospitalId}/hospitalprescriptionrefill/${request.hospitalPrescriptionRefillId}`)\r\n .post(body).then((apt) => {\r\n const appointment = new HospitalPrescriptionRefillModel(apt);\r\n resolve(appointment);\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.updateHospitalPrescriptionRefill, options));\r\n }\r\n\r\n public static checkOutHospitalPrescriptionRefill = (hospitalId: number, request: ICheckOutHospitalPrescriptionRefillRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(request));\r\n http(`${this.baseUrl}${hospitalId}/hospitalprescriptionrefill/${request.hospitalPrescriptionRefillId}/checkout`)\r\n .post(body).then((apt) => {\r\n const invoice = new InvoiceModel(apt);\r\n resolve(invoice);\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), ServiceHelper.getTagForOptions(this.tags.checkOutHospitalPrescriptionRefill, options));\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Macros\r\n\r\n static getMacro = (macroId: number, macroTargetTypeId?: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}macros/${macroId}/${macroTargetTypeId}`).get()\r\n .then(json => new MacroModel(json))\r\n .then(resolve)\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to fetch macro.\");\r\n reject(err);\r\n })\r\n }), ServiceHelper.getTagForOptions(this.tags.getMacro, options));\r\n };\r\n\r\n static createMacro = (macro: IMacroModel, options?: ServiceMethodOptions): Promise => {\r\n const request = MacroRequest.ParseMacroRequest(macro);\r\n\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}macros`)\r\n .post(request)\r\n .then(json => new MacroModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), ServiceHelper.getTagForOptions(this.tags.createMacro, options));\r\n }\r\n\r\n static updateMacro = (macro: IMacroModel, options?: ServiceMethodOptions): Promise => {\r\n const request = MacroRequest.ParseMacroRequest(macro);\r\n\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}macros/${macro.macroId}`)\r\n .post(request)\r\n .then(json => new MacroModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), ServiceHelper.getTagForOptions(this.tags.createMacro, options));\r\n }\r\n\r\n static deleteMacro = (macroId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}macros/${macroId}`)\r\n .delete()\r\n .then(() => resolve())\r\n .catch(reject)\r\n }), this.tags.deleteMacro);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Hospital Prescription\r\n\r\n static upsertHospitalPrescription = (request: HospitalPrescriptionModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}hospitalprescription`)\r\n .post(request)\r\n .then(json => resolve(new HospitalPrescriptionModel(json)))\r\n .catch(reject)\r\n }), this.tags.upsertHospitalPrescription);\r\n\r\n static upsertHospitalPrescriptions = (hospitalId: number, request: HospitalPrescriptionModel[]): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/hospitalprescriptions`)\r\n .post(request)\r\n .then(json => resolve(new HospitalPrescriptionModel(json)))\r\n .catch(reject)\r\n }), this.tags.upsertHospitalPrescriptions);\r\n\r\n static deleteHospitalPrescription = (hospitalPrescriptionId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}hospitalprescriptions/${hospitalPrescriptionId}`)\r\n .delete()\r\n .then(() => resolve())\r\n .catch(reject)\r\n }), this.tags.deleteHospitalPrescription);\r\n }\r\n\r\n static cancelHospitalPrescription = (hospitalPrescriptionId: number, cancelNotes: HospitalPrescriptionCancelModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/hospitalprescriptions/${hospitalPrescriptionId}/cancel`)\r\n .post(cancelNotes)\r\n .then(() => resolve())\r\n .catch(reject)\r\n }), this.tags.cancelHospitalPrescription)\r\n }\r\n\r\n //#endregion\r\n\r\n static refreshHospitalIvlsDevices = (hospitalId: number, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${hospitalId}/refreshivlsdevices`).get()\r\n .then((response) => {\r\n const ivlsDevices = response.map((iv) => new IvlsDeviceModel(iv));\r\n ServiceHelper.showSuccess(\"Ivls Devices refreshed.\", options);\r\n resolve(ivlsDevices);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to refresh Ivls Devices.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.refreshHospitalIvlsDevices)\r\n }\r\n\r\n static createPetNotPresentVisit = (request: PetNotPresentVisitRequest): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(request));\r\n http(`${this.baseUrl}createPetNotPresentVisit`)\r\n .post(body)\r\n .then((visitId) => {\r\n resolve(visitId);\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), this.tags.createPetNotPresentVisit);\r\n }\r\n\r\n static checkOutPetNotPresentVisit = (request: CheckoutPetNotPresentVisitRequest): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(request));\r\n http(`${this.baseUrl}checkOutPetNotPresentVisit/checkout`)\r\n .post(body)\r\n .then((apt) => {\r\n const invoice = new InvoiceModel(apt);\r\n resolve(invoice);\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), this.tags.checkOutPetNotPresentVisit);\r\n }\r\n\r\n static cancelPetNotPresentVisit = (visitId: number): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}cancelPetNotPresentVisit/${visitId}`)\r\n .post(visitId)\r\n .then(() => {\r\n resolve();\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), this.tags.cancelPetNotPresentVisit);\r\n }\r\n\r\n static cancelPetNotPresentInvoice = (visitId: number): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}cancelPetNotPresentInvoice/${visitId}`)\r\n .post(visitId)\r\n .then(() => {\r\n resolve();\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), this.tags.cancelPetNotPresentInvoice);\r\n }\r\n}\r\n","import { AppointmentListingModel } from \"@common/models/AppointmentListingModel\";\r\nimport { HospitalScheduleDayEntityModel } from \"@common/models/Schedule/HospitalScheduleDayEntityModel\";\r\nimport { computed, extendObservable, observable, runInAction } from \"mobx\";\r\nimport { HospitalService } from \"./hospitalService\";\r\nimport { EntityScheduleType } from \"@common/models/Enums\";\r\nimport { useLocalObservable } from \"mobx-react\";\r\nimport { DateTime } from \"luxon\";\r\n\r\n/**\r\n * These are observable hooks to work with service results, current pattern\r\n * they return a condensed area of concern observable. For example the appointments for a specific day at a hospital.\r\n * The hook immediately returns with an empty array and an error and isLoading boolean as an observable object that will work in observers\r\n * You don't even have to store the hook results in state, useLocalObservable internally already does that.\r\n * You an just call this hook and put a useEffect on it's results and then you can handle when error is populated, or when the observable \r\n * values change and do useful stuff.\r\n * \r\n * No need to call fetch's in useEffect or mnaully put results in state with this pattern, just call the hook.\r\n */\r\nexport class HospitalServiceHooks {\r\n static useScheduleDayAppointments = (hospitalId: number, dayDate: DateTime) => {\r\n const localObservable = useLocalObservable(() => {\r\n const appointmentsForDay = observable([]);\r\n const isLoading = observable.box(true);\r\n const error = observable.box(undefined);\r\n HospitalService.getAppointments(hospitalId, dayDate.startOf('day'), dayDate.startOf('day')).then((data) => {\r\n data.forEach(d => {\r\n runInAction(() => {\r\n appointmentsForDay.push(d);\r\n });\r\n });\r\n }).catch((err) => {\r\n runInAction(() => {\r\n appointmentsForDay.clear();\r\n error.set(err);\r\n });\r\n }).finally(() => {\r\n runInAction(() => {\r\n isLoading.set(false);\r\n });\r\n });\r\n\r\n return observable({\r\n get appointmentsForDay() {\r\n return appointmentsForDay;\r\n },\r\n get isLoading() {\r\n return isLoading.get();\r\n },\r\n get error() {\r\n return error.get();\r\n }\r\n });\r\n });\r\n\r\n return localObservable;\r\n }\r\n\r\n static useScheduleEntityAppointments = (hospitalId: number, scheduleEntity: HospitalScheduleDayEntityModel) => {\r\n const apptResult = HospitalServiceHooks.useScheduleDayAppointments(hospitalId, scheduleEntity.day);\r\n const obs = useLocalObservable(() => {\r\n const scheduleDayEntityAppointments = computed(() => {\r\n return apptResult.appointmentsForDay.filter(a => {\r\n if (scheduleEntity.entityType === EntityScheduleType.Veterinarian)\r\n return a.veterinarianId === scheduleEntity.entityId;\r\n if (scheduleEntity.entityType === EntityScheduleType.Template)\r\n return a.hospitalScheduleTemplateId === scheduleEntity.entityId;\r\n return false;\r\n });\r\n });\r\n\r\n extendObservable(apptResult, {\r\n get scheduleDayEntityAppointments() {\r\n return scheduleDayEntityAppointments.get();\r\n }\r\n });\r\n return apptResult as typeof apptResult & { scheduleDayEntityAppointments: Array };\r\n });\r\n return obs;\r\n }\r\n}\r\n","import { IBlobSasModel, IIntakePetModel, IntakePetModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from './serviceHelper';\r\nimport { ServiceMethodOptions } from './types';\r\n\r\nexport class ImageService {\r\n\r\n // #region Private Variables \r\n private static baseUrl: string = '/api/';\r\n private static publicUserHeader: any = {\r\n 'vpca': '351BD313-2C19-442B-BC87-C69356EB59EF',\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n };\r\n // #endregion\r\n\r\n static tags = {\r\n uploadIntakePetPhotoPublic: \"uploadIntakePetPhotoPublic\"\r\n }\r\n\r\n static uploadIntakePetPhotoPublic = (sasModel: IBlobSasModel, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/intake/petphoto/`).mergeOptions({ headers: this.publicUserHeader }).post(sasModel)\r\n .then((request) => {\r\n ServiceHelper.showSuccess(\"Upload Successful\", options);\r\n resolve(new IntakePetModel(request));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to upload photo.\", options);\r\n reject(err);\r\n })\r\n }), this.tags.uploadIntakePetPhotoPublic);\r\n };\r\n}\r\n","import { IWellnessExamCategory } from \"@common/models/forms\";\r\nimport { IAddSignatureRequest, ISendConsentSMSRequest, SetVisitSalesItemQuantityRequest, VisitVetUpdateRequest, AddSalesItemRequest, SetVisitSalesPackageRequest, UpdateVisitSalesItemAttributesRequest, SetVisitSalesItemBooleanRequest, SignAndStoreConsentRequest, VisitStatusUpdateEndpoint, IVisitChangeStatusRequest } from \"@common/models/requests\";\r\nimport { VisitUpdateRequest } from \"@common/models/requests/VisitUpdateRequest\";\r\nimport { IVisitModel, VisitModel } from \"@common/models/VisitModel\";\r\nimport { http } from \"@common/utils\";\r\nimport { isUndefined } from \"lodash\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { ServiceHelper } from \"./serviceHelper\";\r\nimport { IPhotoModel, IVisitPublicModel, PhotoModel, VisitNoteModel, VisitPublicModel, IVisitSalesItemModel, VisitSalesItemModel, ISalesItemAttributeListValueModel, VisitSalesItemAttributeListValueModel } from \"@common/models\";\r\nimport { BlobEntityType, SalesItemAttributeType } from \"@common/models/Enums\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { IConsentForm } from \"@common/models/forms/ConsentForm\";\r\nimport { VisitSectionVersionModel } from \"@common/models/VisitSectionVersionModel\";\r\nimport { IVisitSectionTypeModel } from \"@common/models/VisitSectionTypeModel\";\r\nimport { IRabiesNewLotNumberRequest } from \"@common/models/requests/RabiesNewLotNumberRequest\";\r\n\r\nexport class VisitService {\r\n\tprivate static baseUrl: string = \"/api/visit\";\r\n\tprivate static publicUserHeader: any = {\r\n\t\tvpca: \"351BD313-2C19-442B-BC87-C69356EB59EF\",\r\n\t\t\"Content-Type\": \"application/json\",\r\n\t\t\"Cache-Control\": \"no-cache\",\r\n\t};\r\n\r\n\t/**\r\n\t * Fetches a visit by ID\r\n\t * @param visitId A visit ID\r\n\t * @returns\r\n\t */\r\n\tpublic static tags = {\r\n\t\tgetVisit: \"getVisit\",\r\n\t\tgetPublicVisit: \"getPublicVisit\",\r\n\t\tupdateVisit: \"updateVisit\",\r\n\t\tupdateVisitExamResult: \"updateVisitExamResult\",\r\n\t\tsaveSignature: \"saveSignature\",\r\n\t\tsaveVisitFollowupNote: \"saveVisitFollowupNote\",\r\n\t\tsaveVisitFollowupNotes: \"saveVisitFollowupNotes\",\r\n\t\tdeleteVisitAttachment: \"deleteVisitAttachment\",\r\n\t\tresendVisitCompletionEmail: \"resendVisitCompletionEmail\",\r\n\t\tsignAndStoreConsent: \"signAndStoreConsent\",\r\n\t\tgetVisitSectionVersions: \"getVisitSectionVersions\",\r\n\t\taddNewRabiesLotNumber: \"addNewRabiesLotNumber\",\r\n\t\tcancelPrescriptionPickup: \"cancelPrescriptionPickup\",\r\n\t\tupdateVisitSalesItemOption: \"updateVisitSalesItemOption\",\r\n\t\tsaveClientSignature: \"saveClientSignature\",\r\n\t\tdeclineConsentVisit: \"declineConsentVisit\",\r\n\t\tupdateVisitStatus: \"updateVisitStatus\",\r\n\t\tabortVisit: \"abortVisit\"\r\n\t};\r\n\r\n\tstatic getVisit = (visitId: number): Promise => {\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/${visitId}`)\r\n\t\t\t\t\t.get()\r\n\t\t\t\t\t.then(json => new VisitModel(json))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(err => {\r\n\t\t\t\t\t\tServiceHelper.showError(\"Failed to fetch visit.\");\r\n\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t});\r\n\t\t\t}),\r\n\t\t\tthis.tags.getVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic getPublicVisit = (visitPublicId: string): Promise => {\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/public/${visitPublicId}?vpca=351BD313-2C19-442B-BC87-C69356EB59EF`)\r\n\t\t\t\t\t.get()\r\n\t\t\t\t\t.then(json => new VisitPublicModel(json))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.getVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic saveFollowupVisitNote = (followupVisitNote: VisitNoteModel): Promise => {\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/addvisitnote`)\r\n\t\t\t\t\t.post(followupVisitNote)\r\n\t\t\t\t\t.then(json => new VisitModel(json))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(err => reject(err));\r\n\t\t\t}),\r\n\t\t\tthis.tags.saveVisitFollowupNote\r\n\t\t);\r\n\t};\r\n\r\n\tstatic updateVisit = (visit: VisitUpdateRequest): Promise => {\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/update`)\r\n\t\t\t\t\t.post(visit)\r\n\t\t\t\t\t.then(json => new VisitModel(json))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic updateVisitExamResult = (visitId: number, category: IWellnessExamCategory) => {\r\n\t\tconst req = {\r\n\t\t\tvisitId,\r\n\t\t\tvisitExamResultId: category.visitExamResultId,\r\n\t\t\texamResultTypeId: category.resultType,\r\n\t\t\tvisitExamResultNotes: category.notes,\r\n\t\t\texamObservationIds: category.observationIds,\r\n\t\t};\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/ensureexamresultobservations`)\r\n\t\t\t\t\t.post(req)\r\n\t\t\t\t\t.then(data => new VisitModel(data))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(err => {\r\n\t\t\t\t\t\tServiceHelper.showError(\"Failed to update visit objective observation.\");\r\n\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t});\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisitExamResult\r\n\t\t);\r\n\t};\r\n\r\n\tstatic setAllResultsToNormal = (visitId: number) => {\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/setallexamresultstonormal/${visitId}`)\r\n\t\t\t\t\t.post({})\r\n\t\t\t\t\t.then(data => new VisitModel(data))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(err => {\r\n\t\t\t\t\t\tServiceHelper.showError(\"Failed to set all visit observations to normal.\");\r\n\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t});\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisitExamResult\r\n\t\t);\r\n\t};\r\n\r\n\tstatic saveVisitSignature = (visitId: number, photoImage: string): Promise => {\r\n\t\tconst encodedImage = photoImage.split(\",\")[1];\r\n\t\tconst filename = `visit-${visitId}-${uuid()}.png`;\r\n\t\tconst photoRequest: IAddSignatureRequest = {\r\n\t\t\tvisitId: visitId,\r\n\t\t\tcontainer: BlobEntityType.Signatures,\r\n\t\t\tfileName: filename,\r\n\t\t\tsignatureBase64Encoded: encodedImage,\r\n\t\t};\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/savesignature/${visitId}`)\r\n\t\t\t\t\t.post(photoRequest)\r\n\t\t\t\t\t.then(json => new PhotoModel(json))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(err => {\r\n\t\t\t\t\t\tServiceHelper.showError(\"Failed to save signature.\");\r\n\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t});\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic saveClientSignature = (visitId: number, photoImage: string): Promise => {\r\n\t\tconst signatureBase64Encoded = photoImage.split(\",\")[1]\r\n\t\tconst fileName = `visit-${visitId}-client.png`\r\n\t\tconst photoRequest: IAddSignatureRequest = {\r\n\t\t\tvisitId,\r\n\t\t\tfileName,\r\n\t\t\tsignatureBase64Encoded,\r\n\t\t\tcontainer: BlobEntityType.Signatures,\r\n\t\t}\r\n\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/savesignature/${visitId}`)\r\n\t\t\t\t\t.post(photoRequest)\r\n\t\t\t\t\t.then(json => new PhotoModel(json))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(err => {\r\n\t\t\t\t\t\treject(err)\r\n\t\t\t\t\t})\r\n\t\t\t}),\r\n\t\t\tthis.tags.saveClientSignature\r\n\t\t)\r\n\r\n\t}\r\n\r\n\tstatic updateVisitVet = (visitId: number, vetId: number | undefined,visitStatusId?: number | undefined): Promise => {\r\n\t\tconst req: VisitVetUpdateRequest = {\r\n\t\t\tvisitId: visitId,\r\n\t\t\tvetId: vetId,\r\n\t\t\tvetNotInList: isUndefined(vetId),\r\n\t\t\tvetLicense: vetId ? \"UseVetIdRecord\" : \"VetNotSelected\",\r\n\t\t\tvetName: vetId ? \"UseVetIdRecord\" : \"VetNotSelected\",\r\n\t\t\tvisitStatusId:visitStatusId\r\n\t\t};\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/updatevisitvet`)\r\n\t\t\t\t\t.post(req)\r\n\t\t\t\t\t.then(json => new VisitModel(json))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic addSalesItem = (visitId: number, salesItemOptionId: number, salesItemOptionIdBeingReplaced: number | undefined): Promise => {\r\n\t\tconst req = new AddSalesItemRequest({ visitId, salesItemOptionId, salesItemOptionIdBeingReplaced });\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/addsalesitem/${visitId}`)\r\n\t\t\t\t\t.post(req)\r\n\t\t\t\t\t.then(json => resolve(new VisitModel(json)))\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic deleteSalesItem = (visitId: number, salesItemId: number): Promise => {\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/visitsalesitem/${visitId}/${salesItemId}`)\r\n\t\t\t\t\t.delete()\r\n\t\t\t\t\t.then(() => resolve(true))\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic setSalesPackage = (visitId: number, salesPackageId: number | undefined): Promise => {\r\n\t\tconst req: SetVisitSalesPackageRequest = { visitId, salesPackageId, isFromDI: false };\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/setsalespackage/${visitId}`)\r\n\t\t\t\t\t.post(req)\r\n\t\t\t\t\t.then(json => resolve(new VisitModel(json)))\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic addSalesPlan = (visitId: number, salesPlanId: number): Promise => {\r\n\t\tconst req = { visitId, salesPlanId };\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/addsalesplan`)\r\n\t\t\t\t\t.post(req)\r\n\t\t\t\t\t.then(json => resolve(new VisitModel(json)))\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic deleteVisitAttachment = (visitId: number, visitAttachmentId: number): Promise => {\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/${visitId}/attachment/${visitAttachmentId}`)\r\n\t\t\t\t\t.delete()\r\n\t\t\t\t\t.then(() => resolve(true))\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.deleteVisitAttachment\r\n\t\t);\r\n\t};\r\n\r\n\tstatic updateVisitSalesItemAttributes = (visitSalesItem: VisitSalesItemModel, bypassVisitTotalsRecalc: boolean): Promise => {\r\n\t\t// assume all attributes are filled out. the server won't set the flag if they're not.\r\n\t\tvisitSalesItem.given = true;\r\n\t\t// only require all attributes if this is a rabies sales item.\r\n\t\tconst isRabiesSalesItem = visitSalesItem.visitSalesItemAttributes.some(vsia => vsia.salesItemAttributeTypeId === SalesItemAttributeType.Rabies);\r\n\t\tconst req: UpdateVisitSalesItemAttributesRequest = { visitSalesItem, evaluateGivenStatus: isRabiesSalesItem, bypassVisitTotalsRecalc: bypassVisitTotalsRecalc };\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/updateattributes`)\r\n\t\t\t\t\t.post(req)\r\n\t\t\t\t\t.then(json => resolve(new VisitSalesItemModel(json)))\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic setVisitSalesItemAsGiven = (visitId: number, visitSalesItemId: number): Promise => {\r\n\t\tconst req: SetVisitSalesItemBooleanRequest = { visitId, visitSalesItemId, value: true };\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/setgivenstatus`).post(req).then(resolve).catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic setVisitSalesItemAsDeclined = (visitId: number, visitSalesItemId: number): Promise => {\r\n\t\tconst req: SetVisitSalesItemBooleanRequest = { visitId, visitSalesItemId, value: true };\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/setdeclinedstatus`).post(req).then(resolve).catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic setVisitSalesItemAsNotGiven = (visitId: number, visitSalesItemId: number): Promise => {\r\n\t\tconst req: SetVisitSalesItemBooleanRequest = { visitId, visitSalesItemId, value: true };\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/setnotgivenstatus`).post(req).then(resolve).catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic setVisitSalesItemAsPending = (visitId: number, visitSalesItemId: number): Promise => {\r\n\t\tconst req: SetVisitSalesItemBooleanRequest = { visitId, visitSalesItemId, value: true };\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/setpendingstatus`).post(req).then(resolve).catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic setVisitSalesItemQuantity = ({ visitSalesItemId, quantity, estimateQuantityHigh, estimateQuantityLow, salesItemUnitPrice }: VisitSalesItemModel): Promise => {\r\n\t\tconst req: SetVisitSalesItemQuantityRequest = {\r\n\t\t\tvisitSalesItemId,\r\n\t\t\tquantity,\r\n\t\t\testimateQuantityHigh,\r\n\t\t\testimateQuantityLow,\r\n\t\t\tsalesItemUnitPrice,\r\n\t\t};\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/setvisitsalesitemquantity`).post(req).then(resolve).catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic signAndStoreConsent = (signatureBase64Encoded: string, visitPublicId: string, consentTypePublicId: string, isPublic: boolean = false, formData?: IConsentForm): Promise => {\r\n\t\tconst req = SignAndStoreConsentRequest.ParseSignAndStoreConsentRequest(visitPublicId, consentTypePublicId, signatureBase64Encoded, formData);\r\n\r\n\t\tconst authHeader = isPublic ? { headers: this.publicUserHeader } : {};\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/signandstoreconsent`).mergeOptions(authHeader).post(req).then(resolve).catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.signAndStoreConsent\r\n\t\t);\r\n\t};\r\n\r\n\tstatic sendConsentSms = (visitId: number, consentTypeId: number, mobileNumber: string): Promise => {\r\n\t\tconst req: ISendConsentSMSRequest = {\r\n\t\t\tvisitId,\r\n\t\t\tconsentTypeId,\r\n\t\t\tcellPhone: mobileNumber,\r\n\t\t};\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/sendconsentsms`).post(req).then(resolve).catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\t};\r\n\r\n\tstatic resendVisitCompletionEmail = (visitPublicIds: string[]): Promise => {\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/sendvisitcompletionbulk`).mergeOptions({ headers: this.publicUserHeader }).post(visitPublicIds).then(resolve).catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.resendVisitCompletionEmail\r\n\t\t);\r\n\t};\r\n\r\n\tstatic getVisitSectionVersions = (visitId: number): Promise =>\r\n\t\ttrackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/visitsectionversions/${visitId}`)\r\n\t\t\t\t\t.get()\r\n\t\t\t\t\t.then(data => data.map(d => new VisitSectionVersionModel(d)))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.getVisitSectionVersions\r\n\t\t);\r\n\r\n\tstatic addVisitDiagnosis = (visitId: number, diagnosisId: number): Promise =>\r\n\t\ttrackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/${visitId}/diagnosis`)\r\n\t\t\t\t\t.post({ visitId, diagnosisId })\r\n\t\t\t\t\t.then(data => new VisitModel(data))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\r\n\tstatic deleteVisitDiagnosis = (visitId: number, diagnosisId: number): Promise =>\r\n\t\ttrackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/${visitId}/diagnosis/${diagnosisId}`)\r\n\t\t\t\t\t.deleteWithResponse()\r\n\t\t\t\t\t.then(data => new VisitModel(data))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisit\r\n\t\t);\r\n\r\n\tstatic addNewRabiesLotNumber = (visitSalesItemId: number, salesItemId: number, lotNumber: IRabiesNewLotNumberRequest): Promise =>\r\n\t\ttrackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/addNewRabiesSerial/${visitSalesItemId}/${salesItemId}`)\r\n\t\t\t\t\t.post(lotNumber)\r\n\t\t\t\t\t.then(data => new VisitSalesItemAttributeListValueModel(data))\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.addNewRabiesLotNumber\r\n\t\t);\r\n\r\n\tstatic validateVisitWithSoftWarnings = (visit: VisitModel): boolean => {\r\n\t\tvar idexxTests = visit.labOrders.map(l => l.tests.flatMap(t => t.testCode)).flat();\r\n\t\tvar testSalesItems = visit.visitSalesItems.filter(vsi => vsi.given && vsi.salesItemSupplierProductCode).map(vsi => vsi.salesItemSupplierProductCode);\r\n\r\n\t\t//var idexxTestsNotInSalesItems = idexxTests.filter(t => !testSalesItems.includes(t));\r\n\t\tvar salesItemsNotInIdexxTests = testSalesItems.filter(t => !idexxTests.includes(t));\r\n\r\n\t\treturn !(salesItemsNotInIdexxTests.length > 0);\r\n\t};\r\n\r\n\tstatic cancelPrescriptionPickup = (visitId: number): Promise => {\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/cancelPrescriptionPickup/${visitId}`).post({}).then(resolve).catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.cancelPrescriptionPickup\r\n\t\t);\r\n\t};\r\n\r\n\tstatic updateVisitSalesItemOption = (visitId: number, oldSalesItemOptionId: number, newSalesItemOptionId: number, reminderDays: number = 0): Promise => {\r\n\t\tconst req = new AddSalesItemRequest({ visitId, salesItemOptionId: newSalesItemOptionId, salesItemOptionIdBeingReplaced: oldSalesItemOptionId, reminderDays: reminderDays });\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/updateVisitSalesItemOption/${visitId}`)\r\n\t\t\t\t\t.post(req)\r\n\t\t\t\t\t.then(json => resolve(new VisitModel(json)))\r\n\t\t\t\t\t.catch(reject);\r\n\t\t\t}),\r\n\t\t\tthis.tags.updateVisitSalesItemOption\r\n\t\t);\r\n\t};\r\n\r\n\tstatic declineConsentVisit = (visitId: number): Promise => {\r\n\t\treturn trackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/declineconsent/${visitId}`)\r\n\t\t\t\t\t.post({})\r\n\t\t\t\t\t.then(resolve)\r\n\t\t\t\t\t.catch(reject)\r\n\t\t\t}),\r\n\t\t\tthis.tags.declineConsentVisit\r\n\t\t)\r\n\t}\r\n\r\n\tstatic updateVisitStatus = (visitId: number, endpointName: VisitStatusUpdateEndpoint): Promise => {\r\n\t\treturn trackPromise(new Promise((resolve, reject) => {\r\n\t\t\thttp(`${this.baseUrl}/${endpointName}/${visitId}/false`)\r\n\t\t\t\t.get()\r\n\t\t\t\t.then(resolve)\r\n\t\t\t\t.catch(reject)\r\n\t\t}), this.tags.updateVisitStatus);\r\n\t}\r\n\r\n\tstatic abortVisit = (abortVisitRequest: IVisitChangeStatusRequest): Promise => {\r\n\t\treturn trackPromise(new Promise((resolve, reject) => {\r\n\t\t\thttp(`${this.baseUrl}/abort`)\r\n\t\t\t\t.post(abortVisitRequest)\r\n\t\t\t\t.then(json => resolve(new VisitModel(json)))\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\treject(err)\r\n\t\t\t\t})\r\n\t\t}), this.tags.abortVisit)\r\n\t}\r\n\r\n}\r\n","import { StringUtility } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport interface IPetWeightHistoryModel {\r\n birthDate?: string;\r\n visitDate: string;\r\n visitId: number;\r\n weight?: number;\r\n appointmentTypeName: string;\r\n appointmentColor: string;\r\n}\r\n\r\nexport class PetWeightHistoryModel implements IPetWeightHistoryModel {\r\n birthDate?: string;\r\n visitDate: string;\r\n visitId: number;\r\n weight?: number;\r\n appointmentTypeName: string;\r\n appointmentColor: string;\r\n constructor(params: Partial = {}) {\r\n const {\r\n birthDate = undefined,\r\n visitDate = '',\r\n visitId = 0,\r\n weight = 0,\r\n appointmentTypeName = '',\r\n appointmentColor = ''\r\n } = params;\r\n\r\n const sanitizedBirthDate = StringUtility.SanitizeString(birthDate);\r\n const sanitizedVisitDate = StringUtility.SanitizeString(visitDate);\r\n this.birthDate = sanitizedBirthDate ? DateTime.fromISO(sanitizedBirthDate).toISODate() : undefined;\r\n this.visitDate = sanitizedVisitDate ? DateTime.fromISO(sanitizedVisitDate).toISODate() : '';\r\n this.visitId = visitId;\r\n this.weight = weight;\r\n this.appointmentTypeName = appointmentTypeName;\r\n this.appointmentColor = appointmentColor;\r\n\r\n }\r\n}\r\n","import { IModel, Model } from \"@common/models/Model\";\r\n\r\nexport interface IPetCustomReminderModel extends IModel {\r\n petId: number;\r\n salesItemName: string;\r\n reminded: boolean;\r\n dueDate: string;\r\n dateGiven: string;\r\n salesItemOptionId: number;\r\n reminderSourceId: number;\r\n reminderDays: number;\r\n //UI Prop\r\n reminderSourceName: string;\r\n attachmentStorageContent: FileList;\r\n notes: string;\r\n}\r\n\r\nexport class PetCustomReminderModel extends Model implements IPetCustomReminderModel {\r\n petId: number;\r\n salesItemName: string;\r\n reminded: boolean;\r\n dueDate: string;\r\n dateGiven: string;\r\n salesItemOptionId: number;\r\n reminderSourceId: number;\r\n reminderDays: number;\r\n reminderSourceName: string;\r\n attachmentStorageContent: FileList;\r\n notes: string;\r\n\r\n constructor(params: IPetCustomReminderModel) {\r\n super(params);\r\n\r\n this.petId = _.defaultTo(params.petId, 0);\r\n this.salesItemName = _.defaultTo(params.salesItemName, \"\");\r\n this.reminded = _.defaultTo(params.reminded, false);\r\n this.dueDate = _.defaultTo(params.dueDate, \"\");\r\n this.dateGiven = _.defaultTo(params.dateGiven, \"\");\r\n this.salesItemOptionId = _.defaultTo(params.salesItemOptionId, 0);\r\n this.reminderSourceId = _.defaultTo(params.reminderSourceId, 0);\r\n this.reminderDays = _.defaultTo(params.reminderDays, 0);\r\n this.reminderSourceName = _.defaultTo(params.reminderSourceName, '');\r\n this.attachmentStorageContent = _.defaultTo(params.attachmentStorageContent, [] as unknown as FileList);\r\n this.notes = _.defaultTo(params.notes, \"\");\r\n }\r\n}\r\n","import {\r\n EnsurePetAlertsRequest, EstimateModel, EstimateSalesItemModel, IBlobSasModel, IEstimateModel,\r\n IEstimateSalesItemModel, IPetAttachmentModel, IPetModel, IPetVisitRemindersModel, IPhotoModel,\r\n PetAttachmentModel, PetModel, PetVisitReminderModel, PhotoModel, IClinicAddNewPetRequestExistingClient,\r\n IMedicalHistoryModel, MedicalHistoryModel\r\n} from \"@common/models\";\r\nimport { HospitalPrescriptionListingModel, IHospitalPrescriptionListingModel } from \"@common/models/HospitalPrescriptionListingModel\";\r\nimport { SetEstimateSalesPackageRequest } from \"@common/models/requests\";\r\nimport { AddEstimateSalesItemRequest } from \"@common/models/requests/AddEstimateSalesItemRequest\";\r\nimport { EstimateRequest } from \"@common/models/requests/EstimateRequest\";\r\nimport { UpdateEstimateSalesItemRequest } from \"@common/models/requests/UpdateEstimateSalesItemRequest\";\r\nimport { http } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { ServiceHelper } from \"./serviceHelper\";\r\nimport { ServiceMethodOptions } from \"./types\";\r\nimport { VisitService } from \"./visitService\";\r\nimport { IPetWeightHistoryModel, PetWeightHistoryModel } from \"@common/models/PetWeightHistoryModel\";\r\nimport { PetCustomReminderModel } from \"@common/models/PetCustomReminders\";\r\nexport class PetService {\r\n private static baseUrl: string = '/api/pet';\r\n\r\n public static tags = {\r\n fetchPet: \"fetchPet\",\r\n addPet: \"addPet\",\r\n updatePet: \"updatePet\",\r\n getVisitReminders: \"getVisitReminders\",\r\n getHospitalPrescriptions: \"getHospitalPrescriptions\",\r\n ensurepetalerts: \"ensurepetalerts\",\r\n estimateIO: \"estimateIO\",\r\n addPetAttachment: \"addPetAttachment\",\r\n updateAttachment: \"updateAttachment\",\r\n getPetAttachments: \"getPetAttachments\",\r\n deletePetAttachments: \"deletePetAttachments\",\r\n deleteEstimate: \"deleteEstimate\",\r\n\t\taddNewPetFromClinic: \"addNewPetFromClinic\",\r\n getMedicalHistory: \"getMedicalHistory\",\r\n getPetWeightHistory: \"weighthistory\",\r\n createPetcustomReminders: \"createPetcustomReminders\",\r\n }\r\n\r\n static fetchPet = (petId: number, options?: ServiceMethodOptions): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petId}`)\r\n .get()\r\n .then((pet) => {\r\n const petModel = new PetModel(pet);\r\n resolve(petModel)\r\n })\r\n .catch(() => {\r\n ServiceHelper.showError(\"Failed to fetch pet info.\", options);\r\n reject();\r\n });\r\n }), this.tags.fetchPet);\r\n\r\n static addPet = (request: PetModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`)\r\n .post(request)\r\n .then(json => resolve(new PetModel(json)))\r\n .catch(reject)\r\n }), this.tags.addPet);\r\n\r\n static updatePet = (request: PetModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${request.petId}`)\r\n .post(request)\r\n .then(json => resolve(new PetModel(json)))\r\n .catch(reject)\r\n }), this.tags.addPet);\r\n\r\n static getVisitReminders = (petId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/visitreminders/${petId}?includeFinalizedAndPaidVisits=true`)\r\n .get()\r\n .then((json) => {\r\n const reminders = json.map((reminder) => new PetVisitReminderModel(reminder));\r\n resolve(reminders)\r\n })\r\n .catch(reject)\r\n }), this.tags.getVisitReminders);\r\n\r\n static getHospitalPrescriptions = (petId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/hospitalprescriptions/${petId}`)\r\n .get()\r\n .then((json) => {\r\n const hospitalPrescriptions = json.map((r) => new HospitalPrescriptionListingModel(r));\r\n resolve(hospitalPrescriptions)\r\n })\r\n .catch(reject)\r\n }), this.tags.getHospitalPrescriptions);\r\n\r\n static ensurepetalerts = (petId: number, request: EnsurePetAlertsRequest): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`/api/ensurepetalerts/${petId}`) // This endpoint doesn't follow the /pet pattern but exists on the PetController\r\n .post(request)\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.ensurepetalerts);\r\n\r\n static updatePetPhoto = (petId: number, request: IBlobSasModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/photo/${petId}`)\r\n .post(request)\r\n .then(json => resolve(new PhotoModel(json)))\r\n .catch(reject)\r\n }), this.tags.addPet);\r\n\r\n static fetchEstimates = (petId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petId}/estimate`)\r\n .get()\r\n .then(json => json.map(em => new EstimateModel(em)))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.estimateIO);\r\n\r\n static createEstimate = (clinicId: number, petId: number, petName: string, timezone: string): Promise => {\r\n const req: EstimateRequest = { clinicId, petId, name: `${petName} estimate ${DateTime.now().setZone(timezone).toLocaleString(DateTime.DATETIME_SHORT_WITH_SECONDS)}`, rowVersion: \"\" }\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petId}/estimate`)\r\n .post(req)\r\n .then(json => new EstimateModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.estimateIO);\r\n }\r\n\r\n static updateEstimate = (clinicId: number, estimate: EstimateModel): Promise => {\r\n const req: EstimateRequest = { clinicId, petId: estimate.petId, name: estimate.name, rowVersion: estimate.rowVersion }\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${estimate.petId}/estimate/${estimate.estimateId}`)\r\n .post(req)\r\n .then(json => new EstimateModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.estimateIO);\r\n }\r\n\r\n static addEstimateSalesItem = (petId: number, estimateId: number, visitId: number, salesItemOptionId: number): Promise => {\r\n const req: AddEstimateSalesItemRequest = {\r\n estimateId,\r\n visitId,\r\n salesItemOptionId\r\n }\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petId}/estimate/${estimateId}/item`)\r\n .post(req)\r\n .then(json => new EstimateSalesItemModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.estimateIO);\r\n }\r\n\r\n static updateEstimateSalesItem = (petId: number, estimateSalesItem: EstimateSalesItemModel): Promise => {\r\n const req: UpdateEstimateSalesItemRequest = {\r\n estimateSalesItemId: estimateSalesItem.estimateSalesItemId,\r\n quantity: estimateSalesItem.quantity,\r\n estimateQuantityLow: estimateSalesItem.estimateQuantityLow,\r\n estimateQuantityHigh: estimateSalesItem.estimateQuantityHigh,\r\n salesItemUnitPrice: estimateSalesItem.salesItemUnitPrice,\r\n }\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petId}/estimate/${estimateSalesItem.estimateId}/item/${estimateSalesItem.estimateSalesItemId}`)\r\n .put(req)\r\n .then(json => new EstimateSalesItemModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.estimateIO);\r\n }\r\n\r\n static deleteEstimateSalesItem = (petId: number, estimateId: number, salesItemId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petId}/estimate/${estimateId}/item/${salesItemId}`)\r\n .delete()\r\n .then(() => resolve())\r\n .catch(reject)\r\n }), this.tags.estimateIO);\r\n }\r\n\r\n static addEstimateSalesPackage = (petId: number, estimateId: number, visitId: number, salesPackageId: number): Promise => {\r\n const req: SetEstimateSalesPackageRequest = { visitId, salesPackageId };\r\n return trackPromise(\r\n http(`${this.baseUrl}/${petId}/estimate/${estimateId}/setsalespackage`)\r\n .post(req)\r\n .then(json => new EstimateModel(json))\r\n , this.tags.estimateIO);\r\n }\r\n\r\n static deleteEstimateSalesPackage = (petId: number, estimateId: number): Promise => {\r\n const req: SetEstimateSalesPackageRequest = { visitId: undefined, salesPackageId: undefined };\r\n return trackPromise(\r\n http(`${this.baseUrl}/${petId}/estimate/${estimateId}/setsalespackage`)\r\n .post(req)\r\n .then(json => new EstimateModel(json))\r\n , this.tags.estimateIO);\r\n }\r\n\r\n static addEstimateSalesPlan = (petId: number, estimateId: number, visitId: number, salesPlanId: number): Promise => {\r\n const req = { visitId, salesPlanId };\r\n return trackPromise(\r\n http(`${this.baseUrl}/${petId}/estimate/${estimateId}/addsalesplan`)\r\n .post(req)\r\n .then(json => new EstimateModel(json))\r\n , this.tags.estimateIO);\r\n }\r\n\r\n static addEstimateToVisit = (estimate: EstimateModel, visitId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${estimate.petId}/estimate/${estimate.estimateId}/addtovisit/${visitId}`)\r\n .post({})\r\n .then(json => json.map(e => new EstimateSalesItemModel(e)))\r\n .then(resolve)\r\n .catch(reject)\r\n }), VisitService.tags.updateVisit);\r\n\r\n static addAttachment = (petId: number, hospitalId: number, blobSasModel: IBlobSasModel, documentTypeId: number, notes: string | undefined): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petId}/attachments`)\r\n .post({ petId, hospitalId, blobSasModel, documentTypeId, notes })\r\n .then(json => new PetAttachmentModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.addPetAttachment);\r\n\r\n static updateAttachment = (petId: number, hospitalId: number, notes: string,petAttachmentId:number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petId}/attachments`)\r\n .post({ petId, hospitalId, petAttachmentId, notes })\r\n .then(json => new PetAttachmentModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.updateAttachment);\r\n\r\n static getAttachments = (petId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petId}/attachments`)\r\n .get()\r\n .then(json => json.map(pa => new PetAttachmentModel(pa)))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.getPetAttachments);\r\n\r\n static deleteAttachment = (petId: number, petAttachmentId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${petId}/attachments/${petAttachmentId}`)\r\n .delete()\r\n .then(() => resolve())\r\n .catch(reject)\r\n }), this.tags.deletePetAttachments);\r\n\r\n static deleteEstimate = (estimateId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/estimate/delete/${estimateId}`)\r\n .delete()\r\n .then(() => resolve())\r\n .catch(reject)\r\n }), this.tags.deleteEstimate);\r\n\r\n\tstatic addNewPetFromClinic = (pet: IClinicAddNewPetRequestExistingClient, options?: ServiceMethodOptions): Promise =>\r\n\t\ttrackPromise(\r\n\t\t\tnew Promise((resolve, reject) => {\r\n\t\t\t\thttp(`${this.baseUrl}/addfromclinic`)\r\n\t\t\t\t\t.post(pet)\r\n\t\t\t\t\t.then((data) => resolve(new PetModel(data)))\r\n\t\t\t\t\t.then(() => ServiceHelper.showSuccess(\"Pet Added!\", options))\r\n\t\t\t\t\t.catch((err) => {\r\n\t\t\t\t\t\tServiceHelper.showError(\"Failed to Add Pet.\", options);\r\n\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t});\r\n\t\t\t}), ServiceHelper.getTagForOptions(this.tags.addNewPetFromClinic, options));\r\n\r\n static getMedicalHistory = (petId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/medicalhistory/${petId}`)\r\n .get()\r\n .then((json) => {\r\n const history = json.map((medicalHistory: IMedicalHistoryModel) => new MedicalHistoryModel(medicalHistory))\r\n resolve(history)\r\n })\r\n .catch(reject)\r\n }), this.tags.getMedicalHistory)\r\n\r\n static getPetWeightHistory = (petId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/weighthistory/${petId}`)\r\n .get()\r\n .then((petWeightHistoryJson) => {\r\n const sortedPetWeightHistory = petWeightHistoryJson.sort((a, b) =>\r\n new Date(b.visitDate).getTime() -\r\n new Date(a.visitDate).getTime()\r\n );\r\n const sortedHistory = sortedPetWeightHistory.map(\r\n (petWeightHistoryModel: IPetWeightHistoryModel) =>\r\n new PetWeightHistoryModel(petWeightHistoryModel)\r\n );\r\n resolve(sortedHistory);\r\n })\r\n .catch(reject)\r\n }), this.tags.getPetWeightHistory)\r\n \r\n static savePetCustomReminders = ( reminders: PetCustomReminderModel[]): Promise => \r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/customreminders`)\r\n .post(reminders)\r\n .then(json => json.map(pcr => new PetCustomReminderModel(pcr)))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.createPetcustomReminders);\r\n}\r\n","import { IReservationCancelRequest, ReservationCancelResponse } from '@common/models';\r\nimport { AppointmentAuditLogModel, IAppointmentAuditLogModel } from '@common/models/AppointmentAuditLogModel';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from './serviceHelper';\r\nimport { ServiceMethodOptions } from './types';\r\n\r\nexport class ReservationService {\r\n\r\n // #region Private Variables \r\n private static baseUrl: string = '/api/reservation/';\r\n private static publicUserHeader: any = {\r\n 'vpca': '351BD313-2C19-442B-BC87-C69356EB59EF',\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n };\r\n // #endregion\r\n\r\n static tags = {\r\n getAppointmentAuditLogs: \"getAppointmentAuditLogs\"\r\n }\r\n\r\n /**\r\n * Confirms an appointment list\r\n * @param reservationPublicIds List of public reservation ids\r\n * @returns\r\n */\r\n static confirmBulk = (reservationPublicIds: string[], options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}confirmbulk/`).mergeOptions({ headers: this.publicUserHeader }).post(reservationPublicIds)\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Appointments confirmed\", options);\r\n resolve(null);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to confirm appointments\", options);\r\n reject(err);\r\n })\r\n }));\r\n };\r\n\r\n /**\r\n * Cancels an appointment list\r\n * @param reservationPublicIds List of public reservation ids \r\n * @param isReschedule Is Reservation list to be rescheduled\r\n * @param isRebook Is Reservation being rebooked\r\n * @returns\r\n */\r\n static cancelBulk = (request: IReservationCancelRequest, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}cancelBulk/`).mergeOptions({ headers: this.publicUserHeader }).post(request)\r\n .then((response) => {\r\n ServiceHelper.showSuccess(\"Appointments cancelled\", options);\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to cancel appointments\", options);\r\n reject(err);\r\n })\r\n }));\r\n };\r\n\r\n static getAppointmentAuditLogs = (reservationId: number, timezone?: string, options?: ServiceMethodOptions) =>\r\n trackPromise(new Promise((resolve, reject) =>\r\n http(`${this.baseUrl}${reservationId}/auditLogs`).get()\r\n .then(data => data.map(d => new AppointmentAuditLogModel(d, timezone ?? \"utc\")))\r\n .then(resolve)\r\n .catch(reject)\r\n ), options?.promiseArea ?? this.tags.getAppointmentAuditLogs);\r\n}\r\n","\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { ServiceHelper } from \"./serviceHelper\";\r\nimport { IPhotoRequest, IVeterinarianModel, VeterinarianModel } from \"@common/models\";\r\nimport { ServiceMethodOptions } from \"./types\";\r\nimport { VetScheduleRequest } from \"@common/models/requests\";\r\n\r\nexport class VeterinarianService {\r\n private static baseUrl: string = '/api/veterinarian';\r\n\r\n public static tags = {\r\n getVeterinarianByVetId: \"getVeterinarianByVetId\",\r\n getVeterinarianByUserId: \"getVeterinarianByUserId\",\r\n getVeterinarianByStateId: \"getVeterinarianByStateId\",\r\n saveSchedulePreferences: \"saveSchedulePreferences\",\r\n addVeterinarianClinicSignature: \"addVeterinarianClinicSignature\",\r\n deleteVeterinarianClinicSignature: \"deleteVeterinarianClinicSignature\",\r\n saveVeterinarianSignature: \"saveVeterinarianSignature\",\r\n deleteVeterinarianSignature: \"deleteVeterinarianSignature\"\r\n }\r\n\r\n static getVeterinarianByVetId = (vetId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/vet/${vetId}`)\r\n .get()\r\n .then(json => resolve(new VeterinarianModel(json)))\r\n .catch(reject)\r\n }), this.tags.getVeterinarianByVetId);\r\n\r\n static getVeterinarianByUserId = (userId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/user/${userId}`)\r\n .get()\r\n .then(json => resolve(new VeterinarianModel(json)))\r\n .catch(reject)\r\n }), this.tags.getVeterinarianByUserId);\r\n\r\n static getVeterinarianByStateId = (stateId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${stateId}`)\r\n .get()\r\n .then((response) => response.map(mm => new VeterinarianModel(mm)))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.getVeterinarianByStateId);\r\n\r\n static saveSchedulePreferences = (veterinarianId: number, scheduleRequest: VetScheduleRequest): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${veterinarianId}/schedulePreferences`)\r\n .put(scheduleRequest)\r\n .then(json => resolve(new VeterinarianModel(json)))\r\n .catch(reject)\r\n }), this.tags.saveSchedulePreferences);\r\n\r\n // #region Veterinarian Signatures\r\n\r\n static addVeterinarianClinicSignature = (veterinarianId: number, clinicId: number, photoModel: IPhotoRequest) =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${veterinarianId}/clinic/${clinicId}/signature`).post(photoModel)\r\n .then(resolve)\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to add signature to clinic.\");\r\n reject(err);\r\n })\r\n }), this.tags.addVeterinarianClinicSignature);\r\n\r\n\r\n static deleteVeterinarianClinicSignature = (veterinarianId: number, clinicId: number, options?: ServiceMethodOptions) =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${veterinarianId}/clinic/${clinicId}/signature`).delete()\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Signature has been removed from the clinic\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed remove signature attached to clinic.\");\r\n reject(err);\r\n })\r\n }), this.tags.deleteVeterinarianClinicSignature);\r\n\r\n static saveVeterinarianSignature = (veterinarianId: number, photoRequest: IPhotoRequest): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${veterinarianId}/signature`)\r\n .put(photoRequest)\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.saveVeterinarianSignature);\r\n\r\n static deleteVeterinarianSignature = (veterinarianId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${veterinarianId}/signature`)\r\n .delete()\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.deleteVeterinarianSignature);\r\n\r\n // #endregion\r\n}\r\n","import { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { IClinicSalesItems, ClinicSalesItems, ISalesItemModel, SalesItemModel, SalesItemSimpleListingModel, ISalesItemSimpleListingModel, ISalesItemUpgradeListingModel, SalesItemUpgradeListingModel } from \"@common/models\";\r\nimport { DateTime } from \"luxon\";\r\nexport class SalesItemService {\r\n private static baseUrl: string = '/api/salesItem';\r\n\r\n public static tags = {\r\n fetchSalesItems: \"fetchSalesItems\",\r\n getSalesItemOptions: \"getSalesItemOptions\",\r\n getSalesItem: \"getSalesItem\",\r\n upsertSalesItem: \"upsertSalesItem\",\r\n deleteSalesItem: \"deleteSalesItem\",\r\n getSalesItemsAvailableForUpgradeSelection: \"getSalesItemsAvailableForUpgradeSelection\"\r\n }\r\n\r\n static fetchSalesItems = (clinicId: number, clinicDate: DateTime): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${clinicDate.toISODate()}/clinic/${clinicId}`)\r\n .getVersioned(`sales-items-${clinicDate.toISODate()}-${clinicId}`)\r\n .then((response) => resolve(new ClinicSalesItems(response)))\r\n .catch(reject)\r\n }), this.tags.fetchSalesItems);\r\n }\r\n\r\n static getSalesItemOptions = (businessLineId?: number): Promise => {\r\n const optionUrl = (businessLineId === null ? `${this.baseUrl}/options` : `${this.baseUrl}/options/${businessLineId}`)\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(optionUrl).get()\r\n .then((response) => response.map(mm => new SalesItemSimpleListingModel(mm)))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getSalesItemOptions);\r\n }\r\n\r\n static getSalesItemById = (salesItemId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${salesItemId}`).get()\r\n .then((response) => new SalesItemModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getSalesItem);\r\n };\r\n\r\n static upsertSalesItem = (data: ISalesItemModel): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`).post(data)\r\n .then((response) => new SalesItemModel(response))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.upsertSalesItem);\r\n }\r\n\r\n static deleteSalesItem = (salesItemId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${salesItemId}`).delete()\r\n .then(() => {\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.deleteSalesItem);\r\n }\r\n\r\n static getSalesItemsAvailableForUpgradeSelection = (salesItemId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/getsalesitemsavailableforupgradeselection/${salesItemId}`).get()\r\n .then((response) => response.map(mm => new SalesItemUpgradeListingModel(mm)))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getSalesItemsAvailableForUpgradeSelection);\r\n };\r\n\r\n\r\n}\r\n","import { IInvoiceModel, IInvoiceNoteModel, InvoiceModel, InvoiceNoteModel } from \"@common/models\";\r\nimport { InvoiceUpdateRequest } from \"@common/models/requests\";\r\nimport { InvoiceDiscountsRequest } from \"@common/models/requests/InvoiceDiscountsRequest\";\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\n\r\nexport class InvoiceService {\r\n private static baseUrl: string = '/api/invoice';\r\n\r\n public static tags = {\r\n getInvoiceById: \"getInvoiceById\",\r\n updateInvoice: \"updateInvoice\",\r\n exportSummaries: \"exportSummaries\",\r\n upsertInvoiceNote: \"upsertInvoiceNote\",\r\n upsertInvoiceDiscrepancyReason: \"upsertInvoiceDiscrepancyReason\",\r\n applyInvoiceDiscounts: \"applyInvoiceDiscounts\"\r\n }\r\n\r\n public static getInvoiceById = (invoiceId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${invoiceId}`)\r\n .get()\r\n .then(json => {\r\n resolve(new InvoiceModel(json))\r\n })\r\n .catch(reject)\r\n }), this.tags.getInvoiceById);\r\n\r\n static updateInvoice = (invoiceId: number, request: InvoiceUpdateRequest): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${invoiceId}`).put(request)\r\n .then(json => new InvoiceModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.updateInvoice);\r\n };\r\n\r\n static upsertInvoiceNote = (request: IInvoiceNoteModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/addnote`)\r\n .post(request)\r\n .then(json => resolve(new InvoiceNoteModel(json)))\r\n .catch(reject)\r\n }), this.tags.upsertInvoiceNote);\r\n\r\n static upsertInvoiceDiscrepancyReason = (invoiceId: number, request: InvoiceUpdateRequest): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${invoiceId}/adddiscrepancy`).post(request)\r\n .then(json => new InvoiceModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.upsertInvoiceDiscrepancyReason);\r\n };\r\n\r\n static applyInvoiceDiscounts = (request: InvoiceDiscountsRequest): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n const body = JSON.parse(JSON.stringify(request));\r\n http(`${this.baseUrl}/${request.invoiceId}/applyInvoiceDiscounts`)\r\n .post(body).then((apt) => {\r\n const invoice = new InvoiceModel(apt);\r\n resolve(invoice);\r\n }).catch((error) => {\r\n reject(error);\r\n });\r\n }), this.tags.applyInvoiceDiscounts);\r\n }\r\n}\r\n","import { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { AppointmentTypeModel, IAppointmentTypeModel } from \"@common/models\";\r\n\r\nexport class AppointmentTypeService {\r\n private static baseUrl: string = '/api/appointmentTypes';\r\n\r\n public static tags = {\r\n getAppointmentType: \"getAppointmentType\",\r\n addAppointmentType: \"addAppointmentType\",\r\n updateAppointmentType: \"updateAppointmentType\",\r\n }\r\n\r\n static getAppointmentType = (appointmentTypeId: string): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${appointmentTypeId}`)\r\n .get()\r\n .then(json => resolve(new AppointmentTypeModel(json)))\r\n .catch(reject)\r\n }), this.tags.getAppointmentType);\r\n\r\n static addAppointmentType = (appointmentType: IAppointmentTypeModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`)\r\n .post(appointmentType)\r\n .then(json => resolve(new AppointmentTypeModel(json)))\r\n .catch(reject)\r\n }), this.tags.addAppointmentType);\r\n\r\n static updateAppointmentType = (appointmentType: IAppointmentTypeModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${appointmentType.appointmentTypeId}`)\r\n .put(appointmentType)\r\n .then(json => resolve(new AppointmentTypeModel(json)))\r\n .catch(reject)\r\n }), this.tags.updateAppointmentType);\r\n}\r\n","import { ILicenseModel, LicenseModel } from \"@common/models\";\r\nimport { ILicenseRequestModel } from \"@common/models/requests\";\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\n\r\nexport class LicenseService {\r\n\r\n private static baseUrl: string = '/api/license';\r\n\r\n public static tags = {\r\n addLicense: \"addLicense\",\r\n updateLicense: \"updateLicense\",\r\n deleteLicense: \"deleteLicense\"\r\n }\r\n\r\n static addLicense = (request: ILicenseRequestModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`)\r\n .post(request)\r\n .then(json => resolve(new LicenseModel(json)))\r\n .catch(reject)\r\n }), this.tags.addLicense);\r\n\r\n static updateLicense = (licenseId: number, updateRequest: Partial): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${licenseId}`)\r\n .put(updateRequest)\r\n .then(json => resolve(new LicenseModel(json)))\r\n .catch(reject)\r\n }), this.tags.updateLicense);\r\n\r\n static deleteLicense = (licenseId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${licenseId}`)\r\n .delete()\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.deleteLicense);\r\n}\r\n","import { IIntakeModel, IIntakePetModel, IntakeModel, IntakePetModel } from '@common/models';\r\nimport { http } from '@common/utils';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { ServiceHelper } from './serviceHelper';\r\nimport { ServiceMethodOptions } from './types';\r\n\r\nexport class IntakeService {\r\n private static baseUrl: string = '/api/intake/';\r\n private static publicUserHeader: any = {\r\n 'vpca': '351BD313-2C19-442B-BC87-C69356EB59EF',\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n };\r\n\r\n static tags = {\r\n getIntake: \"getIntake\",\r\n openIntake: \"openIntake\",\r\n updateIntake: \"updateIntake\",\r\n updateIntakePet: \"updateIntakePet\",\r\n\r\n }\r\n\r\n /**\r\n * Validates User that supplys email or phone number\r\n * @param data Contains Email and/or Phone\r\n * @returns\r\n */\r\n static getIntake = (intakePublicId: string, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}publicId/${intakePublicId}`).mergeOptions({ headers: this.publicUserHeader }).get()\r\n .then((intake) => {\r\n ServiceHelper.showSuccess(\"Intake Loaded\", options);\r\n resolve(new IntakeModel(intake));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to load intake\", options);\r\n reject(err);\r\n })\r\n }), this.tags.getIntake);\r\n };\r\n\r\n\r\n /**\r\n * Sets intake as opened to track who opened the intake and from what source\r\n * @param intakeId Intake Id\r\n * @param linkSource Source from where the intake was opened\r\n */\r\n static openIntake = (intakeId: number, linkSource: string, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}open/${intakeId}/${linkSource}`).mergeOptions({ headers: this.publicUserHeader }).post({})\r\n .then(() => {\r\n ServiceHelper.showSuccess(\"Intake Opened\", options);\r\n resolve(null);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to open Intake\", options);\r\n reject(err);\r\n })\r\n }), this.tags.openIntake);\r\n };\r\n\r\n /**\r\n * Updates Intakes\r\n * @param intakeModel Intake Model to update\r\n * @param linkSource Link source used to determine what source the user came from\r\n * @returns Intake Model\r\n */\r\n static updateIntake = (intakeModel: IIntakeModel, linkSource: string, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}${linkSource}`).mergeOptions({ headers: this.publicUserHeader }).post(intakeModel)\r\n .then((intake) => {\r\n ServiceHelper.showSuccess(\"Intake Updated\", options);\r\n resolve(new IntakeModel(intake));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Intake\", options);\r\n reject(err);\r\n })\r\n }), this.tags.updateIntake);\r\n };\r\n\r\n /**\r\n * Updates Intake pets\r\n * @param intakePetModel Intake Pet Model to update\r\n * @param linkSource Link source used to determine what source the user came from\r\n * @returns Intake Pet Model\r\n */\r\n static updateIntakePet = (intakePetModel: IIntakePetModel, linkSource: string, options?: ServiceMethodOptions): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}pet/${linkSource}`).mergeOptions({ headers: this.publicUserHeader }).post(intakePetModel)\r\n .then((intakePet) => {\r\n ServiceHelper.showSuccess(\"Intake Pet Updated\", options);\r\n resolve(new IntakePetModel(intakePet));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Intake Pet\", options);\r\n reject(err);\r\n })\r\n }), this.tags.updateIntakePet);\r\n };\r\n}\r\n","import { AddPetsToClinicRequest, ClinicModel, IClinicModel, IOpenClinicRequest, IUpdateClinicUserRoleRequest } from \"@common/models\";\r\nimport { IClinicCancelRequest } from \"@common/models/requests/ClinicCancelRequest\";\r\nimport { IRebookReservationResponse, RebookReservationResponse } from \"@common/models/responses\";\r\nimport { ServiceHelper } from \"@common/services/serviceHelper\";\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\n\r\nexport class ClinicService {\r\n private static baseUrl: string = '/api/clinic';\r\n private static publicUserHeader: any = {\r\n 'vpca': '351BD313-2C19-442B-BC87-C69356EB59EF',\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n };\r\n\r\n private static isDIClinic: boolean = false;\r\n\r\n public static tags = {\r\n getReservationForRebooking: \"getReservationForRebooking\",\r\n getClinicIdByHospitalId: \"getClinicIdByHospitalId\",\r\n getClinicById: \"getClinicById\",\r\n openClinic: \"openClinic\",\r\n joinClinic: \"joinClinic\",\r\n viewClinic: \"viewClinic\",\r\n cancelClinic: \"cancelClinic\",\r\n addPetsToClinic: \"addPetsToClinic\",\r\n logOut: \"logOut\",\r\n updateClinicUserRole: \"updateClinicUseRole\",\r\n }\r\n\r\n static getReservationForRebooking = (clinicId: number, reservationpublicId: string): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/reservation/rebook/${clinicId}/${reservationpublicId}`)\r\n .mergeOptions({ headers: this.publicUserHeader })\r\n .get()\r\n .then(json => resolve(new RebookReservationResponse(json)))\r\n .catch(reject)\r\n }), this.tags.getReservationForRebooking);\r\n\r\n static getClinicIdByHospitalId = (hospitalId: number,): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/hospital/${hospitalId}`)\r\n .mergeOptions({ headers: this.publicUserHeader })\r\n .get()\r\n .then(json => resolve(json))\r\n .catch(reject)\r\n }), this.tags.getClinicIdByHospitalId);\r\n\r\n static getClinicById = (clinicId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${clinicId}`).get()\r\n .then((response) => {\r\n resolve(new ClinicModel(response));\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.getClinicById)\r\n }\r\n\r\n static openClinic = (clinicRequest: IOpenClinicRequest): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/open/${clinicRequest.clinicId}`)\r\n .post(clinicRequest)\r\n .then(json => new ClinicModel(json))\r\n .then(resolve)\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to open clinic.\");\r\n reject(err);\r\n })\r\n }), this.tags.openClinic);\r\n }\r\n\r\n static joinClinic = (clinicRequest: IOpenClinicRequest): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/join/${clinicRequest.clinicId}/${this.isDIClinic}/${clinicRequest.clinicRoleId}`)\r\n .get()\r\n .then(json => new ClinicModel(json))\r\n .then(resolve)\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to join clinic.\");\r\n reject(err);\r\n })\r\n }), this.tags.joinClinic);\r\n }\r\n\r\n static viewClinic = (clinicRequest: IOpenClinicRequest): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/view/${clinicRequest.clinicId}`)\r\n .get()\r\n .then(json => new ClinicModel(json))\r\n .then(resolve)\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to join clinic.\");\r\n reject(err);\r\n })\r\n }), this.tags.viewClinic);\r\n }\r\n\r\n static cancelClinic = (cancelClinicRequest: IClinicCancelRequest): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/cancel`)\r\n .post(cancelClinicRequest)\r\n .then((json => new ClinicModel(json)))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err)\r\n })\r\n }), this.tags.cancelClinic)\r\n }\r\n\r\n static addPetsToClinic = (request: AddPetsToClinicRequest): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/addpets/${request.clinicId}`)\r\n .post(request)\r\n .then(json => new ClinicModel(json))\r\n .then(resolve)\r\n .catch(err => {\r\n reject(err);\r\n });\r\n }), this.tags.addPetsToClinic)\r\n }\r\n\r\n static updateClinicUserRole = (request: IUpdateClinicUserRoleRequest): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/updateClinicUserRole`)\r\n .post(request)\r\n .then(json => new ClinicModel(json))\r\n .then(resolve)\r\n .catch(err => reject(err))\r\n }), this.tags.updateClinicUserRole)\r\n }\r\n}\r\n","import { LabOrderModel } from \"@common/models/LabOrderModel\";\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { ServiceHelper } from \"./serviceHelper\";\r\n\r\nexport class LabOrderService {\r\n private static baseUrl: string = '/api/laborder';\r\n private static publicUserHeader: any = {\r\n 'vpca': '351BD313-2C19-442B-BC87-C69356EB59EF',\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n };\r\n\r\n public static tags = {\r\n createLabOrder: \"createLabOrder\",\r\n getLabOrder: \"getLabOrder\",\r\n getPublicLabOrder: \"getPublicLabOrder\",\r\n cancelLabOrder: \"cancelLabOrder\",\r\n reviewLabOrder: \"reviewLabOrder\",\r\n updateNotesLabOrders: \"updateLabOrders\",\r\n };\r\n\r\n static updateNotesLabOrders = (labOrderModel: LabOrderModel): Promise =>{\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/updatenoteslaborder/${labOrderModel.labOrderId}`).post(labOrderModel)\r\n .then(json => {\r\n return new LabOrderModel(json);\r\n })\r\n .then(resolve)\r\n .catch((error) => {\r\n ServiceHelper.showError('Failed to saved notes to lab order.', undefined);\r\n reject(error);\r\n })\r\n }), this.tags.updateNotesLabOrders);\r\n } \r\n\r\n static getLabOrder = (labOrderId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${labOrderId}`).get()\r\n .then(json => {\r\n return new LabOrderModel(json)\r\n })\r\n .then(resolve)\r\n .catch((error) => {\r\n ServiceHelper.showError(\"Failed to open lab order.\", undefined)\r\n reject(error);\r\n });\r\n }), this.tags.createLabOrder);\r\n }\r\n\r\n static createLabOrder = (visitId: number, ihd: boolean, selectedIvlsDevice: string | null): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n const url = selectedIvlsDevice ? `${this.baseUrl}/createrequest/${visitId}/${ihd}/${selectedIvlsDevice}` : `${this.baseUrl}/createrequest/${visitId}/${ihd}`;\r\n http(url).post({})\r\n .then(json => {\r\n return new LabOrderModel(json);\r\n })\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.createLabOrder);\r\n }\r\n\r\n static updateLabOrder = (labOrderId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/updatelaborderfromidexx/${labOrderId}`).post({})\r\n .then(json => new LabOrderModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.createLabOrder);\r\n }\r\n\r\n static cancelLabOrder = (labOrderId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/cancellaborder/${labOrderId}`).deleteWithResponse()\r\n .then(json => new LabOrderModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.cancelLabOrder);\r\n }\r\n\r\n static reviewLabOrder = (labOrderId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/reviewlaborder/${labOrderId}`).post({})\r\n .then(json => new LabOrderModel(json))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.reviewLabOrder);\r\n }\r\n}\r\n","import { VisitAnesthesiaFormModel, IVisitAnesthesiaFormModel, IVisitAnesthesiaFormPreOpModel, IVisitAnesthesiaFormSurgeryModel, IVisitAnesthesiaFormPostSurgeryModel, VisitAnesthesiaFormSurgeryVitalModel, VisitAnesthesiaFormPostSurgeryVitalModel } from \"@common/models\";\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { ServiceHelper } from \"./serviceHelper\";\r\n\r\nexport class VisitAnesthesiaFormService {\r\n private static baseUrl: string = '/api/anesthesiamonitoringform';\r\n\r\n public static tags = {\r\n getVisitAnesthesiaForm: \"getVisitAnesthesiaForm\",\r\n upsertVisitAnesthesiaForm: \"upsertVisitAnesthesiaForm\",\r\n upsertVisitAnesthesiaFormPreOp: \"getVisitAnesthesiaFormPreOp\",\r\n upsertVisitAnesthesiaFormSurgery: \"getVisitAnesthesiaFormSurgery\",\r\n upsertVisitAnesthesiaFormPostSurgery: \"getVisitAnesthesiaFormPostSurgery\",\r\n upsertVisitAnesthesiaFormSurgeryVital: \"getVisitAnesthesiaFormSurgeryVital\",\r\n upsertVisitAnesthesiaFormPostSurgeryVital: \"getVisitAnesthesiaFormPostSurgeryVital\",\r\n deleteMedication: \"deleteMedication\",\r\n };\r\n\r\n static getVisitAnesthesiaFormById = (visitId: number, anesthesiaMonitoringFormId: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${visitId}/${anesthesiaMonitoringFormId}`)\r\n .get()\r\n .then(data => { return new VisitAnesthesiaFormModel(data) })\r\n .then(resolve)\r\n .catch((error) => {\r\n ServiceHelper.showError(\"Failed to get Anesthesia Form.\", undefined)\r\n reject(error);\r\n });\r\n }), this.tags.getVisitAnesthesiaForm);\r\n }\r\n\r\n\r\n static getVisitAnesthesiaFormByVisitId = (visitId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/visit/${visitId}`)\r\n .get()\r\n .then(data => data.map(d => new VisitAnesthesiaFormModel(d)))\r\n .then(resolve)\r\n .catch((error) => {\r\n ServiceHelper.showError(\"Failed to get Anesthesia Form.\", undefined)\r\n reject(error);\r\n });\r\n }), this.tags.getVisitAnesthesiaForm)\r\n\r\n static upsertVisitAnesthesiaForm = (anesthesiaForm: VisitAnesthesiaFormModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/`)\r\n .post(anesthesiaForm)\r\n .then(data => new VisitAnesthesiaFormModel(data))\r\n .then(resolve)\r\n .catch((error) => {\r\n ServiceHelper.showError(\"Failed to update Anesthesia Form.\", undefined)\r\n reject(error);\r\n });\r\n }), this.tags.upsertVisitAnesthesiaForm)\r\n\r\n static upsertVisitAnesthesiaFormPreOp = (visitId: number, anesthesiaMonitoringFormId: number, preOp: IVisitAnesthesiaFormPreOpModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${visitId}/${anesthesiaMonitoringFormId}/preop`)\r\n .post(preOp)\r\n .then(data => new VisitAnesthesiaFormModel(data))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.upsertVisitAnesthesiaFormPreOp)\r\n\r\n static upsertVisitAnesthesiaFormSurgery = (visitId: number, anesthesiaMonitoringFormId: number, surgery: IVisitAnesthesiaFormSurgeryModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${visitId}/${anesthesiaMonitoringFormId}/surgery`)\r\n .post(surgery)\r\n .then(data => new VisitAnesthesiaFormModel(data))\r\n .then(resolve)\r\n .catch((error) => {\r\n ServiceHelper.showError(\"Failed to update Surgery.\", undefined)\r\n reject(error);\r\n });\r\n }), this.tags.upsertVisitAnesthesiaFormSurgery)\r\n\r\n static upsertVisitAnesthesiaFormPostSurgery = (visitId: number, anesthesiaMonitoringFormId: number, postSurgery: IVisitAnesthesiaFormPostSurgeryModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${visitId}/${anesthesiaMonitoringFormId}/postsurgery`)\r\n .post(postSurgery)\r\n .then(data => new VisitAnesthesiaFormModel(data))\r\n .then(resolve)\r\n .catch((error) => {\r\n ServiceHelper.showError(\"Failed to update Post Surgery.\", undefined)\r\n reject(error);\r\n });\r\n }), this.tags.upsertVisitAnesthesiaFormPostSurgery)\r\n\r\n static upsertVisitAnesthesiaFormSurgeryVital = (visitId: number, anesthesiaMonitoringFormId: number, surgeryVital: VisitAnesthesiaFormSurgeryVitalModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${visitId}/${anesthesiaMonitoringFormId}/surgeryvital`)\r\n .post(surgeryVital)\r\n .then((data: IVisitAnesthesiaFormModel) => new VisitAnesthesiaFormModel(data))\r\n .then(resolve)\r\n .catch((error) => {\r\n ServiceHelper.showError(\"Failed to update Surgery Vital.\", undefined)\r\n reject(error);\r\n });\r\n }), this.tags.upsertVisitAnesthesiaFormSurgeryVital)\r\n\r\n static upsertVisitAnesthesiaFormPostSurgeryVital = (visitId: number, anesthesiaMonitoringFormId: number, postSurgeryVital: VisitAnesthesiaFormPostSurgeryVitalModel): Promise =>\r\n trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${visitId}/${anesthesiaMonitoringFormId}/postsurgeryvital`)\r\n .post(postSurgeryVital)\r\n .then((data: IVisitAnesthesiaFormModel) => new VisitAnesthesiaFormModel(data))\r\n .then(resolve)\r\n .catch((error) => {\r\n ServiceHelper.showError(\"Failed to update Post Surgery Vital.\", undefined)\r\n reject(error);\r\n });\r\n }), this.tags.upsertVisitAnesthesiaFormPostSurgeryVital)\r\n\r\n static deleteAnesthesiaMedication = (visitId: number, anesthesiaMonitoringFormId: number, medicationId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${visitId}/${anesthesiaMonitoringFormId}/${medicationId}/preop`)\r\n .deleteWithResponse()\r\n .then(data => new VisitAnesthesiaFormModel(data))\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.deleteMedication)\r\n\r\n\r\n\r\n\r\n}\r\n","import { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { IPetNoteModel, PetNoteModel } from \"@common/models/PetNoteModel\";\r\n\r\nexport class PetNoteService {\r\n private static baseUrl: string = '/api/petNote';\r\n\r\n public static tags = {\r\n upsertPetNote: \"upsertPetNote\",\r\n }\r\n\r\n static upsertPetNote = (request: IPetNoteModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`)\r\n .post(request)\r\n .then(json => resolve(new PetNoteModel(json)))\r\n .catch(reject)\r\n }), this.tags.upsertPetNote);\r\n}\r\n","import { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { IClientNoteModel, ClientNoteModel } from \"@common/models/ClientNoteModel\";\r\n\r\nexport class ClientNoteService {\r\n private static baseUrl: string = '/api/clientNote';\r\n\r\n public static tags = {\r\n upsertClientNote: \"upsertClientNote\",\r\n }\r\n\r\n static upsertClientNote = (request: IClientNoteModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}`)\r\n .post(request)\r\n .then(json => resolve(new ClientNoteModel(json)))\r\n .catch(reject)\r\n }), this.tags.upsertClientNote);\r\n}\r\n","import { ClinicListingModel, IClinicListingModel } from \"@common/models\";\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\n\r\nexport class ClinicListingService {\r\n private static baseUrl: string = '/api/cliniclist';\r\n\r\n public static tags = {\r\n getClinicListing: \"getClinicListing\"\r\n }\r\n\r\n\r\n static search = (clinicDate: string, marketId?: number, stateId?: number, storeName?: string, businessLineId?: number): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}?clinicDate=${clinicDate}&marketId=${marketId}&stateId=${stateId}&storeName=${storeName ? storeName : \"\"}&businessLineId=${businessLineId}`).get()\r\n .then((response) => response.map(mm => new ClinicListingModel(mm)))\r\n .then(resolve)\r\n .catch((err) => {\r\n reject(err);\r\n });\r\n }), this.tags.getClinicListing);\r\n }\r\n}\r\n","import { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\n\r\nexport class EntityPersistenceService {\r\n private static baseUrl: string = '/api/entity';\r\n\r\n static tags = {\r\n update: \"update\",\r\n }\r\n\r\n static updateField = (entityName: string, entityId: string, fieldName: string, fieldValue: any): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${entityName}/${entityId}/${fieldName}`).put(fieldValue)\r\n .then((result) => {\r\n resolve(result);\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n })\r\n }), this.tags.update);\r\n };\r\n\r\n static updateFieldEntity = (payload: any): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/batch`)\r\n .post(payload)\r\n .then(result => resolve(result))\r\n .catch((err => reject(err)))\r\n }))\r\n }\r\n\r\n}\r\n\r\n// const batchDelay: number = 150;\r\n\r\n// interface IRequest {\r\n// entityKey?: any;\r\n// entityName: string;\r\n// data: any;\r\n// }\r\n\r\n// interface IQueueItem {\r\n// [key: string]: any;\r\n// }\r\n\r\n// interface IFieldUpdateService {\r\n// withDisabled(action: () => void): void;\r\n// update(requestBody: IRequest): Promise;\r\n// insert(requestBody: IRequest): Promise;\r\n// delete(requestBody: IRequest): Promise;\r\n// }\r\n\r\n// class FieldUpdateService implements IFieldUpdateService {\r\n// private serviceBase: string = '/api/entity';\r\n// private disabled: boolean = false;\r\n\r\n// withDisabled(action: () => void): void {\r\n// this.disabled = true;\r\n// action();\r\n// this.disabled = false;\r\n// }\r\n\r\n// private async persistenceRequest(type: string, requestBody: IRequest): Promise {\r\n// if (this.disabled) return;\r\n\r\n// const payload = this.preparePayload(type, requestBody);\r\n// if (!payload) return;\r\n\r\n// try {\r\n// const response = await fetch(`${this.serviceBase}/batch`, {\r\n// method: 'POST',\r\n// headers: {\r\n// 'Content-Type': 'application/json',\r\n// },\r\n// body: JSON.stringify(payload),\r\n// });\r\n// return response;\r\n// } catch (error) {\r\n// console.error('Error making persistence request:', error);\r\n// throw error;\r\n// }\r\n// }\r\n\r\n// update(requestBody: IRequest): Promise {\r\n// return this.persistenceRequest('update', requestBody);\r\n// }\r\n\r\n// insert(requestBody: IRequest): Promise {\r\n// return this.persistenceRequest('insert', requestBody);\r\n// }\r\n\r\n// delete(requestBody: IRequest): Promise {\r\n// return this.persistenceRequest('delete', requestBody);\r\n// }\r\n\r\n// private preparePayload(type: string, requestBody: IRequest): any | null {\r\n// let payload: any = {};\r\n\r\n// const entityKey = requestBody.entityKey;\r\n// const entityName = requestBody.entityName;\r\n\r\n// if (!_.isArray(entityKey)) {\r\n// console.error('Entity key is not an array');\r\n// return null;\r\n// }\r\n\r\n// let node: any = payload;\r\n\r\n// node = node[type] = node[type] || {};\r\n// node = node[entityName] = node[entityName] || (entityKey ? {} : []);\r\n\r\n// if (entityKey) {\r\n// node = node[entityKey] = node[entityKey] || {};\r\n// }\r\n\r\n// const data = requestBody.data;\r\n\r\n// if (_.isEmpty(data)) {\r\n// return null;\r\n// }\r\n\r\n// if (_.isArray(node)) {\r\n// node.push(data);\r\n// } else {\r\n// _.extend(node, data);\r\n// }\r\n\r\n// return payload;\r\n// }\r\n// }\r\n\r\n// export default FieldUpdateService;\r\n","import { makeObservable, observable, flow, action } from \"mobx\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\nimport { IClientModel, AppointmentListingModel, HospitalModel, ReferralTypeModel, ClientModel } from \"@common/models\";\r\nimport { ClientService } from \"@common/services\";\r\nimport { IAddClientEmailRequest } from \"@common/models/requests\";\r\nimport { AppointmentStatus } from \"@common/models/Enums\";\r\nimport { includes, chain, first, isEmpty } from \"lodash\";\r\n\r\nconst defaultRefferalType: ReferralTypeModel = { referralTypeId: 0, name: \"\", rowVersion: \"\" }\r\n\r\nconst defaultClient: IClientModel = {\r\n clientId: 0,\r\n firstName: \"\",\r\n lastName: \"\",\r\n emailAddress: \"\",\r\n emailAddressNotAvailable: false,\r\n cellPhone: \"\",\r\n homePhone: \"\",\r\n alternatePhone: \"\",\r\n address: \"\",\r\n address2: \"\",\r\n city: \"\",\r\n stateId: undefined,\r\n state: undefined,\r\n pronoun: undefined,\r\n primaryHospital: undefined,\r\n relationshipType: undefined,\r\n county: \"\",\r\n zipCode: \"\",\r\n isOKToSMS: false,\r\n palsNumber: \"\",\r\n dateCreated: \"\",\r\n dateUpdated: \"\",\r\n lastVisitDate: \"\",\r\n firstVisitDate: \"\",\r\n alternatePetParentName: \"\",\r\n pets: [],\r\n referralTypeId: undefined,\r\n referralType: defaultRefferalType,\r\n isDeleted: false,\r\n pgrMasterId: \"\",\r\n businessName: \"\",\r\n isActive: true,\r\n hospitalId: 1203,\r\n pronounId: undefined,\r\n relationshipTypeId: undefined,\r\n canCall: undefined,\r\n canCallDateUpdated: undefined,\r\n canCallUpdatedUserFirstName: undefined,\r\n canCallUpdatedUserLastName: undefined,\r\n canCallUpdatedUserTitle: undefined,\r\n canSMS: undefined,\r\n canSMSDateUpdated: undefined,\r\n canSMSUpdatedUserFirstName: undefined,\r\n canSMSUpdatedUserLastName: undefined,\r\n canSMSUpdatedUserTitle: undefined,\r\n rowVersion: \"\",\r\n nationwideId: undefined,\r\n notes: [],\r\n nationwideIdNotAvailable: undefined,\r\n}\r\n\r\nexport class ClientStore {\r\n @observable client: ClientModel | undefined = undefined;\r\n @observable loading: boolean = false;\r\n @observable appointments = observable.array([]);\r\n\r\n\r\n constructor() {\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n load = flow(function* (this: ClientStore, clientId: string | undefined, loadAppointments?: boolean) {\r\n this.loading = true;\r\n\r\n this.client = clientId == \"0\" || clientId === undefined\r\n ? new ClientModel(defaultClient)\r\n : yield ClientService.getClient(clientId)\r\n .catch(NotificationStoreInstance.onError('Failed to fetch client info.', defaultClient));\r\n\r\n if (loadAppointments)\r\n yield this.loadAppointments();\r\n\r\n this.loading = false;\r\n });\r\n\r\n /**\r\n * Queues email communication request\r\n */\r\n sendEmailCommunication = flow(function* (this: ClientStore, emailRequest: IAddClientEmailRequest) {\r\n yield ClientService.addEmailCommunication(emailRequest)\r\n .then(NotificationStoreInstance.onSuccess(\"Email was successfully queued\"))\r\n .catch(NotificationStoreInstance.onError('Failed to fetch client info.', defaultClient));\r\n });\r\n\r\n /**\r\n * Adds or update a client\r\n * @param this current ClientStore reference\r\n * @param client client model to create or update\r\n */\r\n upsertClient = flow(function* (this: ClientStore, client: ClientModel) {\r\n this.loading = true;\r\n\r\n this.client = client.clientId === 0\r\n ? yield ClientService.addClient(client)\r\n .then(NotificationStoreInstance.onSuccess(\"Client added\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to add client.\", client))\r\n : yield ClientService.updateClient(client)\r\n .then(NotificationStoreInstance.onSuccess(\"Client updated\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to update client.\", client))\r\n\r\n this.loading = false;\r\n });\r\n\r\n /**\r\n * Sets the primary hospital for the current client\r\n */\r\n @action.bound setPrimaryHospital(hospital: HospitalModel | undefined) {\r\n if (this.client === undefined) return;\r\n this.client.primaryHospital = hospital;\r\n this.client.hospitalId = hospital == null ? 0 : hospital.hospitalId\r\n }\r\n\r\n @action.bound clearClient() {\r\n this.client = undefined;\r\n }\r\n\r\n @action.bound resetClient() {\r\n this.client = new ClientModel(defaultClient);\r\n }\r\n\r\n /**\r\n * Finds the earliest started visit and returns the visitId\r\n */\r\n activeVisitId(petId: number): number | undefined {\r\n if (this.appointments === null) return;\r\n\r\n // In Progress appointments take precedence here\r\n const inProgressVisits = chain(this.appointments)\r\n .filter(a => a.petId === petId && a.appointmentStatusId == AppointmentStatus.In_Progress)\r\n .orderBy(['inprogressstart']).value();\r\n\r\n if (!isEmpty(inProgressVisits)) {\r\n return first(inProgressVisits)?.visitId;\r\n }\r\n\r\n // If no In Progress appointments exist, grab the earliest started appointment in Admitted, Finalized, or Paid\r\n const activeVisits = chain(this.appointments)\r\n .filter(a => a.petId === petId\r\n && includes([AppointmentStatus.Admitted,\r\n AppointmentStatus.Finalized,\r\n AppointmentStatus.Paid], a.appointmentStatusId))\r\n .orderBy(['visitStarted']).value();\r\n\r\n return first(activeVisits)?.visitId;\r\n }\r\n\r\n public loadAppointments = flow(function* (this: ClientStore) {\r\n this.appointments = yield ClientService.getAppointments(this.client!.clientId, { showError: true });\r\n });\r\n}\r\n","import { ContextWrapper } from \"@common/contexts\";\r\nimport { HospitalAppStore } from \"@hospital/stores/rootStores\";\r\n\r\nexport const HospitalAppStoreContextWrapper = new ContextWrapper();\r\n","import { ContextWrapper } from '@common/contexts/ContextWrapper';\r\nimport { UserStore } from '@hospital/views/_shared/userprofile/UserStore';\r\n\r\nexport const UserStoreContextWrapper = new ContextWrapper();\r\n","import { ContextWrapper } from '@common/contexts/ContextWrapper';\r\nimport { LocationStore } from '@hospital/views/admin/locations/LocationStore';\r\n\r\n\r\nexport const LocationStoreContextWrapper = new ContextWrapper();\r\n","import { ContextWrapper } from '@common/contexts/ContextWrapper';\r\nimport { ClientStore } from '@hospital/views/clients/ClientStore';\r\n\r\n\r\nexport const ClientStoreContextWrapper = new ContextWrapper();\r\n","import { ContextWrapper } from \"@common/contexts\";\r\nimport { ExamStore } from \"@hospital/views/exam\";\r\n\r\nexport const ExamStoreContentWrapper = new ContextWrapper();\r\n","import { makeObservable, observable, flow, action, IObservableArray } from \"mobx\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\nimport { IClientModel, AppointmentListingModel, HospitalModel, ReferralTypeModel, ClientModel, IClientNoteModel, PetModel } from \"@common/models\";\r\nimport { ClientNoteService, ClientService } from \"@common/services\";\r\nimport { IAddClientEmailRequest } from \"@common/models/requests\";\r\nimport { AppointmentStatus } from \"@common/models/Enums\";\r\nimport { includes, chain, first, isEmpty } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nconst defaultRefferalType: ReferralTypeModel = { referralTypeId: 0, name: \"\", rowVersion: \"\" }\r\n\r\nconst defaultClient: IClientModel = {\r\n clientId: 0,\r\n firstName: \"\",\r\n lastName: \"\",\r\n emailAddress: \"\",\r\n emailAddressNotAvailable: false,\r\n cellPhone: \"\",\r\n homePhone: \"\",\r\n alternatePhone: \"\",\r\n address: \"\",\r\n address2: \"\",\r\n city: \"\",\r\n stateId: undefined,\r\n state: undefined,\r\n pronoun: undefined,\r\n primaryHospital: undefined,\r\n relationshipType: undefined,\r\n county: \"\",\r\n zipCode: \"\",\r\n isOKToSMS: false,\r\n palsNumber: \"\",\r\n dateCreated: \"\",\r\n dateUpdated: \"\",\r\n lastVisitDate: \"\",\r\n firstVisitDate: \"\",\r\n alternatePetParentName: \"\",\r\n pets: [],\r\n referralTypeId: undefined,\r\n referralType: defaultRefferalType,\r\n isDeleted: false,\r\n pgrMasterId: \"\",\r\n businessName: \"\",\r\n isActive: true,\r\n hospitalId: 1203,\r\n pronounId: undefined,\r\n relationshipTypeId: undefined,\r\n rowVersion: \"\",\r\n canSMS: undefined,\r\n canSMSDateUpdated: undefined,\r\n canSMSUpdatedUserTitle: undefined,\r\n canSMSUpdatedUserFirstName: undefined,\r\n canSMSUpdatedUserLastName: undefined,\r\n canCall: undefined,\r\n canCallDateUpdated: undefined,\r\n canCallUpdatedUserTitle: undefined,\r\n canCallUpdatedUserFirstName: undefined,\r\n canCallUpdatedUserLastName: undefined,\r\n nationwideId: undefined,\r\n notes: [],\r\n nationwideIdNotAvailable: undefined\r\n}\r\n\r\nexport class ClientStore {\r\n @observable client: ClientModel | undefined = undefined;\r\n @observable loading: boolean = false;\r\n @observable appointments = observable.array([]);\r\n\r\n\r\n constructor() {\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n load = flow(function* (this: ClientStore, clientId: string | undefined, loadAppointments?: boolean, startOfDayAtHospitalInUTCShift?: DateTime) {\r\n this.loading = true;\r\n this.client = clientId == \"0\" || clientId === undefined\r\n ? new ClientModel(defaultClient)\r\n : yield ClientService.getClient(clientId)\r\n .catch(NotificationStoreInstance.onError('Failed to fetch client info.', defaultClient));\r\n\r\n if (loadAppointments)\r\n yield this.loadAppointments(startOfDayAtHospitalInUTCShift);\r\n\r\n this.loading = false;\r\n });\r\n\r\n /**\r\n * Queues email communication request\r\n */\r\n sendEmailCommunication = flow(function* (this: ClientStore, emailRequest: IAddClientEmailRequest) {\r\n yield ClientService.addEmailCommunication(emailRequest)\r\n .then(NotificationStoreInstance.onSuccess(\"Email was successfully queued\"))\r\n .catch(NotificationStoreInstance.onError('Failed to fetch client info.', defaultClient));\r\n });\r\n\r\n /**\r\n * Adds or update a client\r\n * @param this current ClientStore reference\r\n * @param client client model to create or update\r\n */\r\n upsertClient = flow(function* (this: ClientStore, client: ClientModel) {\r\n this.loading = true;\r\n\r\n this.client = client.clientId === 0\r\n ? yield ClientService.addClient(client)\r\n .then(NotificationStoreInstance.onSuccess(\"Client added\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to add client.\", client))\r\n : yield ClientService.updateClient(client)\r\n .then(NotificationStoreInstance.onSuccess(\"Client updated\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to update client.\", client))\r\n\r\n this.loading = false;\r\n });\r\n\r\n /**\r\n * Sets the primary hospital for the current client\r\n */\r\n @action.bound setPrimaryHospital(hospital: HospitalModel | undefined) {\r\n if (this.client === undefined) return;\r\n this.client.primaryHospital = hospital;\r\n this.client.hospitalId = hospital == null ? 0 : hospital.hospitalId\r\n }\r\n\r\n @action.bound clearClient() {\r\n this.client = undefined;\r\n }\r\n\r\n @action.bound resetClient() {\r\n this.client = new ClientModel(defaultClient);\r\n }\r\n\r\n @action.bound patchClientPets(pet: PetModel) {\r\n if (this.client === undefined) return;\r\n\r\n this.loading = true;\r\n // Remove current Pet from Client Pets\r\n const filteredItems = _.filter(this.client.pets, (currentPet) => { return currentPet.petId !== pet.petId });\r\n // Push updated pet into Client Pets\r\n filteredItems.push(pet);\r\n // Refresh Client\r\n this.client.pets = filteredItems;\r\n\r\n this.loading = false;\r\n }\r\n\r\n /**\r\n * Finds the earliest started visit and returns the visitId\r\n */\r\n activeVisitId(petId: number): number | undefined {\r\n if (this.appointments === null) return;\r\n\r\n // In Progress appointments take precedence here\r\n const inProgressVisits = chain(this.appointments)\r\n .filter(a => a.petId === petId && a.appointmentStatusId == AppointmentStatus.In_Progress)\r\n .orderBy(['inprogressstart']).value();\r\n\r\n if (!isEmpty(inProgressVisits)) {\r\n return first(inProgressVisits)?.visitId;\r\n }\r\n\r\n // If no In Progress appointments exist, grab the earliest started appointment in Admitted, Finalized, or Paid\r\n const activeVisits = chain(this.appointments)\r\n .filter(a => a.petId === petId\r\n && includes([AppointmentStatus.Admitted,\r\n AppointmentStatus.Finalized,\r\n AppointmentStatus.Paid], a.appointmentStatusId))\r\n .orderBy(['visitStarted']).value();\r\n\r\n return first(activeVisits)?.visitId;\r\n }\r\n\r\n public loadAppointments = flow(function* (this: ClientStore, startOfDayAtHospitalInUTCShift?: DateTime) {\r\n this.appointments = yield ClientService.getAppointments(this.client!.clientId, { showError: true }, startOfDayAtHospitalInUTCShift);\r\n });\r\n\r\n public upsertClientNote = flow(function* (this: ClientStore, note: IClientNoteModel) {\r\n yield ClientNoteService.upsertClientNote(note)\r\n .catch(NotificationStoreInstance.onError(\"Failed to upsert Client Note\", note));\r\n\r\n yield this.load(note.clientId.toString(), true);\r\n });\r\n\r\n /**\r\n * Triggered when an appointment has been modified\r\n */\r\n @action.bound syncAppointmentUpdates(this: ClientStore, appointment: AppointmentListingModel) {\r\n //update the current appointments array with the new appointment\r\n this.appointments = this.appointments.map(\r\n item => item.reservationId === appointment.reservationId ? appointment : item\r\n ) as IObservableArray;\r\n }\r\n}\r\n","import { ClientStoreContextWrapper } from \"@hospital/contexts\";\r\nimport { ClientStore } from \"@hospital/views/clients/ClientStore\";\r\n\r\nimport React, { useContext, useEffect, useMemo, useState } from \"react\";\r\n\r\n/**\r\n * Create a ClientStore while optionally setting it in the ClientStore Context Wrapper. You might want to set it in context so child components can access the same instance of the ClientStore\r\n * @param options \r\n * @returns \r\n */\r\nexport const useCreateClientStore = (options?: { shouldSetContext?: boolean,shouldUpdateContext?: boolean }) => {\r\n const [shouldSetContext, setShouldSetContext] = useState(Boolean(options?.shouldSetContext));\r\n const [shouldUpdateContext, setShouldUpdateContext] = useState(Boolean(options?.shouldUpdateContext));\r\n\r\n useEffect(() => {\r\n if (options)\r\n setShouldSetContext(Boolean(options.shouldSetContext));\r\n setShouldUpdateContext(Boolean(options?.shouldUpdateContext));\r\n }, [options])\r\n\r\n const [clientStore] = useMemo(() => {\r\n const store = new ClientStore();\r\n if (shouldSetContext || shouldUpdateContext)\r\n ClientStoreContextWrapper.set(store);\r\n return [store];\r\n }, [shouldSetContext,shouldUpdateContext]);\r\n return clientStore;\r\n}\r\n\r\n//Will return a new client store if ClientStoreContextWrapper has not been set\r\nexport const useClientStore = () => {\r\n const [context] = useState>(ClientStoreContextWrapper.get() ?? React.createContext(new ClientStore()));\r\n return useContext(context);\r\n}\r\n","import { ISearchParams, IStoreListingModel, StoreListingModel } from \"@common/models\";\r\nimport { SearchService } from \"@common/services/searchService\";\r\nimport { StandardSearchStore } from \"@common/stores\";\r\n\r\nexport interface IStoreSearchFilter {\r\n name: string\r\n city: string\r\n state: string\r\n zipCode: string,\r\n isHospital?: boolean\r\n onlyHCL:boolean\r\n}\r\n\r\n\r\nexport const defaultStoreSearchFilter: IStoreSearchFilter = {\r\n name: \"\",\r\n city: \"\",\r\n state: \"\",\r\n zipCode: \"\",\r\n isHospital: undefined,\r\n onlyHCL:true\r\n}\r\n\r\nconst defaultSearchParams: ISearchParams = {\r\n skip: 0,\r\n top: 20,\r\n orderby: [\r\n { field: \"storeId\", dir: \"asc\" },\r\n { field: \"marketId\", dir: \"asc\" }\r\n ],\r\n search: undefined\r\n}\r\n\r\nexport class StoreSearchStore extends StandardSearchStore {\r\n constructor() {\r\n super({\r\n endpointUrl: SearchService.SearchEndPoints.stores,\r\n defaultSearchParams: { ...defaultSearchParams },\r\n defaultSearchFilter: { ...defaultStoreSearchFilter }\r\n }, (result: IStoreListingModel) => {\r\n return new StoreListingModel(result)\r\n });\r\n }\r\n}\r\n","import { action, makeObservable, observable } from \"mobx\";\r\nimport { ODataSearchStore } from \"@common/stores\";\r\nimport { IClientListingModel, IODataSearchResult, ClientListingModel, SearchResponse } from \"@common/models\";\r\nimport { SearchService } from \"@common/services/searchService\";\r\n\r\nexport interface IClientSearchFilter {\r\n\temailAddress?: string;\r\n\tfirstName?: string;\r\n\tlastName?: string;\r\n\tstate?: string;\r\n\tmicrochip?: string;\r\n\tpalsNumber?: string;\r\n\tpetName?: string;\r\n\tphone?: string;\r\n\trabiesTag?: string;\r\n\tcellPhone?: string;\r\n\thomePhone?: string;\r\n\talternatePhone?: string;\r\n\thospitalId?: number | undefined;\r\n\tclientId?: number | undefined;\r\n}\r\n\r\nexport const defaultClientSearchFilter: IClientSearchFilter = {\r\n\tphone: \"\",\r\n\tfirstName: \"\",\r\n\tlastName: \"\",\r\n\tstate: \"\",\r\n\tpetName: \"\",\r\n\temailAddress: \"\",\r\n\tmicrochip: \"\",\r\n\trabiesTag: \"\",\r\n\tpalsNumber: \"\",\r\n\thospitalId: undefined,\r\n\tclientId: undefined,\r\n};\r\n\r\nexport class ClientSearchStore extends ODataSearchStore {\r\n\t@observable noRecordDisclaimer: boolean = true;\r\n\r\n\tconstructor(hospitalId?: number | undefined, searchType: string = \"clients\") {\r\n\t\tdefaultClientSearchFilter.hospitalId = hospitalId;\r\n\t\tsuper(\r\n\t\t\t{\r\n\t\t\t\tendpointUrl: searchType === \"recentvisits\" ? SearchService.SearchEndPoints.clientsrecentvisits : SearchService.SearchEndPoints.clients,\r\n\t\t\t\tdefaultSearchFilter: { ...defaultClientSearchFilter },\r\n\t\t\t\tdefaultSearchParams: {\r\n\t\t\t\t\ttop: 20,\r\n\t\t\t\t\torderby: searchType === \"recentvisits\" ? [{ field: \"LastVisitDate\", dir: \"desc\" }] : [{ field: \"FullName\", dir: \"asc\" }],\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t(results: IODataSearchResult) => {\r\n\t\t\t\tconst classes = results.value?.map(m => new ClientListingModel(m));\r\n\t\t\t\tconst count = results[\"@odata.count\"];\r\n\t\t\t\treturn new SearchResponse({ results: classes, totalRecordCount: count });\r\n\t\t\t}\r\n\t\t);\r\n\t\tmakeObservable(this, undefined);\r\n\t}\r\n\r\n\t@action.bound triggerDisclaimer() {\r\n\t\tif (this.noRecordDisclaimer === true && this.searchResults.totalRecordCount === 0) {\r\n\t\t\tthis.noRecordDisclaimer = !this.noRecordDisclaimer;\r\n\t\t}\r\n\t}\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { IOrganizationListingModel, IOrderByParams, ClientConfigurationModel, OrganizationListingModel } from '@common/models';\r\nimport * as enums from '@common/models/Enums';\r\nimport { StandardSearchStore } from '@common/stores';\r\nimport { SearchService } from '@common/services/searchService';\r\n\r\nconst defaultOrgSearchOrder: Array = [\r\n { field: \"name\", dir: \"asc\" }\r\n]\r\n\r\nexport interface IOrganizationSearchFilter {\r\n searchTerm?: string,\r\n organizationVersionId: number,\r\n relatedKey?: string,\r\n notRelatedKey?: string,\r\n typeId?: number\r\n}\r\n\r\nconst defaultOrgSearchFilter: IOrganizationSearchFilter = {\r\n searchTerm: undefined,\r\n organizationVersionId: 1,\r\n relatedKey: undefined,\r\n notRelatedKey: undefined,\r\n typeId: enums.OrganizationTypes.Hospital\r\n}\r\n\r\nexport interface OrganizationSearchStoreInit {\r\n configuration: ClientConfigurationModel,\r\n organizationTypeId?: enums.OrganizationTypes,\r\n notRelatedKey?: string,\r\n relatedKey?: string\r\n}\r\n\r\n/**\r\n * Extend the SearchStore to setup for Organization Search with necessary default filters and searchParams and entityName.\r\n * We can follow a similar pattern for any store that needs to use the SearchService\r\n */\r\nexport class OrganizationSearchStore extends StandardSearchStore {\r\n @observable configuration: ClientConfigurationModel;\r\n constructor(init: OrganizationSearchStoreInit) {\r\n super({\r\n endpointUrl: SearchService.SearchEndPoints.organizations,\r\n defaultSearchParams: {\r\n orderby: defaultOrgSearchOrder,\r\n top: 10\r\n },\r\n defaultSearchFilter: {\r\n ...defaultOrgSearchFilter, typeId: init.organizationTypeId, notRelatedKey: init.notRelatedKey, relatedKey: init.relatedKey\r\n },\r\n }, (result: IOrganizationListingModel) => new OrganizationListingModel(result));\r\n\r\n this.configuration = init.configuration;\r\n this.setPartialDefaultSearchFilter({ organizationVersionId: this.configuration.currentCorpOrganization.organizationVersionId });\r\n makeObservable(this, undefined); //can't use autoBind in derrived class if already called in sub class.\r\n }\r\n}\r\n","import { MacroListingModel, IMacroListingModel, IOrderByParams } from '@common/models';\r\nimport { MacroTargetType, MacroType } from '@common/models/Enums/MacroType';\r\nimport { SearchService } from '@common/services/searchService';\r\nimport { StandardSearchStore } from '@common/stores';\r\nimport { IQueryCacheStoreInit } from '@common/stores/QueryCacheStore';\r\nimport { makeObservable } from \"mobx\";\r\n\r\n\r\nexport interface ICommunicationTemplateFilter {\r\n name?: string\r\n macroTypeId?: number\r\n hospitalId?: number\r\n userId?: number\r\n userName?: string\r\n isActive?: boolean\r\n createdBy?: string\r\n lastModifiedBy?: string\r\n macroScope?: MacroType,\r\n macroTargetTypeId?: MacroTargetType\r\n}\r\n\r\nconst defaultCommunicationTemplateSortOrder = (macroScope?: MacroType): IOrderByParams[] =>\r\n macroScope == MacroType.Provider\r\n ? [{ field: \"name\", dir: \"asc\" }]\r\n : [{ field: \"datecreated\", dir: \"desc\" }]\r\n\r\nexport class CommunicationTemplateSearchStore extends StandardSearchStore {\r\n constructor(macroScope?: MacroType, hospitalId?: number, userId?: number, top: number = 10, macroTargetTypeId?: MacroTargetType, queryClient?: IQueryCacheStoreInit) {\r\n super({\r\n endpointUrl: SearchService.SearchEndPoints.macros,\r\n defaultSearchParams: {\r\n orderby: defaultCommunicationTemplateSortOrder(macroScope), top: top\r\n },\r\n defaultSearchFilter: {\r\n macroScope: macroScope, hospitalId: hospitalId, userId: userId, macroTargetTypeId: macroTargetTypeId\r\n } \r\n }, (result: IMacroListingModel) => new MacroListingModel(result),queryClient)\r\n makeObservable(this, undefined);\r\n }\r\n}\r\n","import { makeObservable, action, observable, computed } from \"mobx\";\r\nexport interface IPaginationStore {\r\n\tpageSize: number;\r\n\tsourceData: Array;\r\n\thasMultiplePages: boolean;\r\n\tchangePage: (newPage: number) => void;\r\n}\r\n\r\nexport interface IPaginationStoreInit {\r\n\tsourceData: TDataSource;\r\n}\r\n/**\r\n * Provides base class for generic pagination\r\n */\r\nexport abstract class PaginationStore implements IPaginationStore {\r\n\tsourceData: Array = this.getDefaultRecentResults();\r\n\t@observable pageSize: number = 10;\r\n\titemOffset: number = 0;\r\n\tpageCount: number = 0;\r\n\ttopResults: number = 10;\r\n\r\n\tconstructor() {\r\n\t\tmakeObservable(this, undefined, {\r\n\t\t\tautoBind: true,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * The default (empty) source\r\n\t */\r\n\tprotected abstract getDefaultRecentResults(): Array;\r\n\r\n\t/**\r\n\t * Returns boolean if data source has multiple pages\r\n\t */\r\n\t@computed get hasMultiplePages() {\r\n\t\treturn this.hasMultiplePagesImpl();\r\n\t}\r\n\r\n\t/**\r\n\t * If there are multiple results, call this to advance to a specific page of results (0 index based)\r\n\t * @param newPage The page number you wish to show results for.\r\n\t */\r\n\t@action.bound changePage(newPage: number) {\r\n\t\tif (this.sourceData && this.sourceData.length > 0) {\r\n\t\t\tthis.itemOffset = (newPage * this.pageSize) % this.sourceData.length;\r\n\t\t\tconst endOffset = this.itemOffset + this.pageSize;\r\n\r\n\t\t\tthis.sourceData = this.sourceData.slice(this.itemOffset, endOffset);\r\n\t\t\tthis.pageCount = Math.ceil(this.sourceData.length / this.pageSize);\r\n\t\t\tthis.topResults *= this.pageCount;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if data source has multiple pages\r\n\t * @returns whether data source contains multiple pages\r\n\t */\r\n\thasMultiplePagesImpl(): boolean {\r\n\t\tif (this.sourceData && this.sourceData.length > 0) {\r\n\t\t\treturn this.sourceData.length > this.topResults;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n","import {\r\n IAppUserModel,\r\n IImportUserModel,\r\n IRecentClientListingModel,\r\n IUserModel,\r\n RecentClientListingModel,\r\n UserModel\r\n} from \"@common/models\";\r\nimport { IGetUserRecordModel } from \"@common/models/IGetUserRecordModel\";\r\nimport { IRecentUserClientRequestModel } from \"@common/models/requests/RecentUserClientRequestModel\";\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\n\r\nexport class UserService {\r\n\r\n private static baseUrl: string = '/api/user';\r\n\r\n public static tags = {\r\n getUser: \"getUser\",\r\n getUserIdByUsername: \"getUserIdByUsername\",\r\n updateUser: \"updateUser\",\r\n addRecentClient: \"addRecentClient\",\r\n getRecentClients: \"getRecentClients\",\r\n importUser: \"importUser\",\r\n getUserRecordByObjectIdentifier: \"getUserRecordByObjectIdentifier\"\r\n }\r\n\r\n static getUser = (userId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${userId}`)\r\n .get()\r\n .then(json => resolve(new UserModel(json)))\r\n .catch(reject)\r\n }), this.tags.getUser);\r\n\r\n static getUserIdByUsername = (username: string): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/username/${username}`)\r\n .get()\r\n .then(userId => resolve(userId))\r\n .catch(reject)\r\n }), this.tags.getUserIdByUsername);\r\n\r\n static updateUser = (userId: number, user: Partial): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${userId}`).get().then(data => {\r\n const currentUser = new UserModel(data);\r\n http(`${this.baseUrl}`)\r\n .post(new UserModel({ ...currentUser, ...user }))\r\n .then(resolve)\r\n }).catch(reject)\r\n }), this.tags.updateUser);\r\n\r\n static addRecentClient = (request: IRecentUserClientRequestModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/addrecentclient`)\r\n .post(request)\r\n .then(resolve)\r\n .catch(reject)\r\n }), this.tags.addRecentClient);\r\n\r\n static getRecentClients = (userId: number): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/getrecentclients/${userId}`)\r\n .get()\r\n .then((json) => {\r\n const recentClients = json.map((client) => new RecentClientListingModel(client));\r\n resolve(recentClients)\r\n })\r\n .catch(reject)\r\n }), this.tags.getRecentClients);\r\n\r\n static importUser = (request: IImportUserModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/import`)\r\n .post(request)\r\n .then(data => {\r\n resolve(data);\r\n })\r\n .catch(data => {\r\n reject(data)\r\n })\r\n }), this.tags.importUser);\r\n\r\n static getUserRecordByObjectIdentifier = (request: IGetUserRecordModel): Promise =>\r\n trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/record`)\r\n .post(request)\r\n .then(data => {\r\n resolve(data);\r\n })\r\n .catch(data => {\r\n reject(data)\r\n })\r\n }), this.tags.getUserRecordByObjectIdentifier);\r\n}\r\n","import { makeObservable, observable, flow } from \"mobx\";\r\nimport { NotificationStore, PaginationStore } from \"@common/stores\";\r\nimport { IRecentUserClientRequestModel } from \"@common/models/requests/RecentUserClientRequestModel\";\r\nimport { ClientConfigurationModel, ClientListingModel, IClientListingModel, IClientModel } from \"@common/models\";\r\nimport { UserService } from \"@common/services/userService\";\r\n\r\nexport interface IClientRecentResultsStoreInit {\r\n\tconfiguration: ClientConfigurationModel;\r\n\tnotificationStore: NotificationStore;\r\n}\r\nexport class ClientRecentResultsStore extends PaginationStore {\r\n\tnotificationStore: NotificationStore;\r\n\t@observable configuration: ClientConfigurationModel;\r\n\t@observable client?: IClientModel = undefined;\r\n\t@observable loading: boolean = false;\r\n\t@observable recentClients: Array = [];\r\n\r\n\tconstructor(init: IClientRecentResultsStoreInit) {\r\n\t\tsuper();\r\n\r\n\t\tconst { configuration, notificationStore } = init;\r\n\r\n\t\tthis.configuration = configuration;\r\n\t\tthis.notificationStore = notificationStore;\r\n\r\n\t\tmakeObservable(this, undefined);\r\n\t}\r\n\r\n\t/**\r\n\t * Provides implementation for providing a list of recently viewed clients to pagination store\r\n\t * @returns list of recently viewed clients\r\n\t */\r\n\tprotected getDefaultRecentResults(): IClientListingModel[] {\r\n\t\treturn this.recentClients;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a client to the recently viewed for that userId\r\n\t */\r\n\taddRecentlyViewed = flow(function* (this: ClientRecentResultsStore, clientId: any) {\r\n\t\tconst request: IRecentUserClientRequestModel = {\r\n\t\t\tuserId: this.configuration.userId,\r\n\t\t\tclientId: clientId,\r\n\t\t};\r\n\r\n\t\tyield UserService.addRecentClient(request).catch(() => this.notificationStore.error(\"Failed to add to recently viewed clients\"));\r\n\t});\r\n\r\n\t/**\r\n\t * Get top 50 recently viewed clients for the currently logged in userId\r\n\t */\r\n\tgetRecentlyViewedClients = flow(function* (this: ClientRecentResultsStore) {\r\n\t\tconst userId = this.configuration.userId;\r\n\t\tthis.recentClients = yield UserService.getRecentClients(userId)\r\n\t\t\t.then(recentClients => recentClients.map(element => element.toClientListingModel()))\r\n\t\t\t.catch(() => this.notificationStore.error(\"Failed to retrieve recently viewed clients\"));\r\n\t});\r\n}\r\n","import { ISelectOption } from \"@common/components/forms\";\r\nimport { StateModel } from \"@common/models\";\r\nimport { StateService } from \"@common/services\";\r\nimport { orderBy } from \"lodash\";\r\nimport { computed, flow, makeObservable, observable } from \"mobx\";\r\n\r\nexport class StateStore {\r\n\r\n\r\n @observable states: StateModel[] = [] as Array;\r\n @computed get stateSelectOptions() {\r\n return orderBy(this.states, []).map(u => ({ label: `${u.name}`, value: u.stateId })) as ISelectOption[]\r\n }\r\n constructor() {\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n getStates = flow(function* (this: StateStore) {\r\n this.states = yield StateService.getStates({ showError: true, errorMessage: \"Failed to get State.\" });\r\n });\r\n\r\n saveState = flow(function* (this: StateStore, state: StateModel) {\r\n const options = {\r\n showSuccess: true,\r\n successMessage: state.stateId !== 0 ? \"State successfully updated.\" : \"State successfully created.\",\r\n showError: true,\r\n errorMessage: \"Failed to update State.\"\r\n\r\n };\r\n\r\n yield StateService.upsertState(state, options);\r\n });\r\n}\r\n","import React, { useMemo } from 'react';\r\nimport { observer } from \"mobx-react\";\r\nimport { Button, Stack } from \"react-bootstrap\";\r\nimport { SuspenseButton } from '@common/components/utility';\r\n\r\ninterface ICancelNextActionsProps {\r\n cancelText?: string\r\n nextText?: string,\r\n nextVisible?: boolean,\r\n cancelAction: () => void,\r\n nextAction?: () => void,\r\n tag?: string,\r\n isSubmit?: boolean\r\n}\r\n\r\n\r\nexport const CancelNextActions = observer((props: ICancelNextActionsProps) => {\r\n\r\n const nextText = useMemo(() => props.nextText ? props.nextText : 'Next', [props.nextText]);\r\n const cancelText = useMemo(() => props.cancelText ? props.cancelText : 'Cancel', [props.cancelText])\r\n const defaultType = props.isSubmit ?? false;\r\n return (\r\n \r\n \r\n {nextText}\r\n \r\n );\r\n});\r\n","import classNames from 'classnames';\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useContext, useEffect, useState } from \"react\";\r\n\r\nexport type FieldSetProps = React.HTMLAttributes & {\r\n disabled?: boolean,\r\n supportDisabledBackdrop?: boolean\r\n}\r\n\r\ntype FieldSetActions = {\r\n disabled: boolean,\r\n setIsDisabled: (disabled: boolean) => void\r\n}\r\n\r\n//todo you can nest field sets, so using these contexts\r\n//we could enable them to all share the same disabled state\r\n//or to let a field set be configurable to do either\r\n//but for now each field set will have it's own disable/enabled state.\r\nexport type useFieldSetContextReturn = {\r\n isInFieldSet: boolean,\r\n /** If the component is in a field set context this will contain the disabled/setDisabled fields so a child can see if it's parent field set is disabled or optionally disable it. */\r\n fieldSetActions?: FieldSetActions\r\n}\r\n\r\nconst FieldSetContext = React.createContext({ isInFieldSet: false, fieldSetActions: undefined });\r\n\r\nexport const useFieldSetContext = () => {\r\n const context = useContext(FieldSetContext);\r\n return context;\r\n}\r\n\r\n/**\r\n * This is a Managed FieldSet that will updated a context with it's disabled value\r\n * This allows child components to use this useFieldSetContext hook to determine if they are in a disabled\r\n * field set.\r\n */\r\nexport const FieldSet = observer(({ disabled: fieldSetDisabled, children, supportDisabledBackdrop, className, ...attrs }: FieldSetProps) => {\r\n const [disabled, setIsDisabled] = useState(fieldSetDisabled ?? false);\r\n\r\n useEffect(() => {\r\n setIsDisabled(fieldSetDisabled ?? false);\r\n }, [fieldSetDisabled]);\r\n\r\n return (\r\n \r\n
\r\n {supportDisabledBackdrop &&\r\n
\r\n }\r\n {\r\n children\r\n }\r\n
\r\n
\r\n )\r\n\r\n})\r\n","import React from 'react';\r\nimport { BaseEditor, BaseRange, Descendant, Text as SlateText } from 'slate';\r\nimport { ReactEditor } from 'slate-react';\r\nimport { EditableProps } from 'slate-react/dist/components/editable';\r\n\r\nexport type RichTextBoxToolbarButtonBaseProps = {\r\n icon?: JSX.Element | JSX.Element[] | string[] | string | null,\r\n label?: JSX.Element | string | null,\r\n attrs?: React.HTMLAttributes & { disable?: boolean | undefined };\r\n}\r\n\r\nexport type SerializeRichTextValueToStringResult = {\r\n isPlainText: boolean,\r\n value: string | null,\r\n}\r\n\r\n/**\r\n * This is a bit field enum, each value is a separate bit\r\n */\r\nexport enum RichTextBoxFormatValue {\r\n none = 0,\r\n bold = 1,\r\n italic = 2,\r\n underline = 4,\r\n //todo add more bit flags for more formats\r\n}\r\n\r\n\r\nexport type RichTextBoxElementListType = \"numbered-list\" | \"bulleted-list\";\r\nexport type RichTextBoxElementType = \"paragraph\" | \"list-item\" | RichTextBoxElementListType;\r\n\r\nexport type RichTextBoxProps = {\r\n value?: string | undefined,\r\n disabled?: boolean,\r\n rows?: number,\r\n onChange?: ((value: string | undefined | null) => void) | undefined;\r\n onBlur?: React.FocusEventHandler | undefined,\r\n placeholder?: string | undefined\r\n className?: string | undefined,\r\n toolbarProps?: React.HTMLAttributes,\r\n editableProps?: EditableProps,\r\n\t/** This property accepts a callback that operates with an HTMLElement (like RHF RefCallback), or a generic React ref that can reference any type of element,\r\n\t\tor a specific React ref that references a div element.\r\n\t*/\r\n\tinputRef?: ((el: HTMLElement) => void) | React.Ref | React.RefObject,\r\n isSMSText?:boolean | undefined;\r\n isToolbarDisabled?: boolean | undefined;\r\n isTrasientKeywords?: boolean | undefined;\r\n}\r\n\r\nexport type RichTextBoxEditorKeyDownEvent = (event: React.KeyboardEvent) => void;\r\n\r\nexport type FocusedTextNode = {\r\n textNode: SlateText,\r\n cursorOffset: number\r\n}\r\n\r\nexport interface RichTextBoxEditor extends BaseEditor, ReactEditor {\r\n uid: string;\r\n onSelect: () => void;\r\n isSelectionSingleCursor: (selection: BaseRange) => boolean;\r\n isSelectionAtEndOfTextNode: (selection: BaseRange) => boolean;\r\n closeMacros: (deleteSlash?: boolean) => void;\r\n getFocusedTextNodeAtCursor: () => FocusedTextNode | null;\r\n onKeyDown: RichTextBoxEditorKeyDownEvent;\r\n changeBlockIndent: (decrease?: boolean, indentationLevel?: number) => void;\r\n insertMacro: (html: string) => boolean;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-redeclare\r\nexport const RichTextBoxEditor = {\r\n ...ReactEditor\r\n}\r\n\r\nexport type RichTextBoxText = {\r\n isMacroSearch?: boolean,\r\n format?: RichTextBoxFormatValue | null,\r\n color?: string | undefined,\r\n text: string\r\n}\r\n\r\n//these are interfaces because only interfaces can merge declarations for discriminating unions\r\n//create a common base element where type can be any of the element types we support\r\nexport interface RichTextBoxBaseElement {\r\n type: RichTextBoxElementType,\r\n inline?: boolean,\r\n indentationLevel?: number,\r\n attrs?: Omit, \"children\">,\r\n children?: Descendant[] | undefined\r\n}\r\n\r\nexport interface RichTextBoxParagraphElement extends RichTextBoxBaseElement {\r\n type: \"paragraph\",\r\n attrs?: Omit, \"children\">\r\n}\r\n\r\nexport interface RichTextBoxBulletedListElement extends RichTextBoxBaseElement {\r\n type: \"bulleted-list\",\r\n attrs?: Omit, \"children\">\r\n}\r\n\r\nexport interface RichTextBoxNumberedListElement extends RichTextBoxBaseElement {\r\n type: \"numbered-list\",\r\n attrs?: Omit, \"children\">\r\n}\r\n\r\nexport interface RichTextBoxListItemElement extends RichTextBoxBaseElement {\r\n type: \"list-item\",\r\n attrs?: Omit, \"children\">\r\n}\r\n\r\n//combine all the RichTextEditorElements we support users creating in the rich text editor\r\nexport type RichTextBoxElement =\r\n RichTextBoxParagraphElement |\r\n RichTextBoxBulletedListElement |\r\n RichTextBoxListItemElement |\r\n RichTextBoxNumberedListElement\r\n//declare all our custom types in a way that slate can see them (this is in the slate-react documentation)\r\ndeclare module 'slate' {\r\n interface CustomTypes {\r\n Editor: RichTextBoxEditor,\r\n Element: RichTextBoxElement,\r\n Text: RichTextBoxText\r\n }\r\n}\r\n","import {\r\n Descendant,\r\n Editor,\r\n Element as SlateElement,\r\n Node as SlateNode,\r\n Transforms,\r\n Text as SlateText\r\n} from \"slate\";\r\nimport { ReactEditor } from \"slate-react\";\r\n\r\nimport {\r\n RichTextBoxEditor,\r\n RichTextBoxBaseElement,\r\n RichTextBoxBulletedListElement,\r\n RichTextBoxElement,\r\n RichTextBoxElementListType,\r\n RichTextBoxElementType,\r\n RichTextBoxFormatValue,\r\n RichTextBoxListItemElement,\r\n RichTextBoxNumberedListElement,\r\n RichTextBoxText\r\n} from \"./richTextEditorTypes\";\r\n\r\nexport namespace RichTextBoxUtils {\r\n /**\r\n * Runs through our Descendant Schema and converts the whole document to a plaintext string\r\n * @param descendant \r\n * @returns \r\n */\r\n export const serializeRichTextToPlainText = (descendant: Descendant[]) => {\r\n const plainText = descendant.map(n => {\r\n return SlateNode.string(n);\r\n }).map(str => {\r\n if (str)\r\n return `

${str.trim()}

`\r\n return '


'\r\n }).join('') ?? '';\r\n return `${plainText ?? ''}`;\r\n }\r\n\r\n export const serializeRichTextToPlainTextNoHtml = (descendant: Descendant[]) => {\r\n return descendant.map(n => SlateNode.string(n)).join('\\n');\r\n }\r\n\r\n /**\r\n * Determine if the descenant tree is convertible to plain text.\r\n * If any format, alignment, color etc exists anywhere in the tree this will return false\r\n * if nothing has formatting and it's just div's with text it will return true.\r\n * @param node \r\n * @returns \r\n */\r\n export const canConvertDescendantToPlainText = (nodes: Descendant[]): boolean => {\r\n const plainText = serializeRichTextToPlainText(nodes);\r\n if (!plainText || plainText === '') { //this is so if the user pressed toolbar buttons we don't save empty html.\r\n return true;\r\n }\r\n const topLevelResults = nodes.map((node) => {\r\n if (SlateElement.isElement(node)) {\r\n //nothing other than a div can be considered to be convertible to plain text\r\n if (node.type !== 'paragraph')\r\n return false;\r\n if (node.attrs || node.indentationLevel)\r\n return false;\r\n }\r\n if (SlateText.isText(node)) {\r\n if (node.color || node.format) {\r\n return false;\r\n }\r\n }\r\n const children = Array.from((node as unknown as any).children ?? []).map(childNode => canConvertDescendantToPlainText([childNode as Descendant])).flat();\r\n return children.filter(a => !a).length == 0; //<- no child returned false \r\n });\r\n return topLevelResults.filter(a => !a).length == 0; //<- no top level child returned false;\r\n }\r\n\r\n\r\n export const isListElementType = (type: RichTextBoxElementType): type is RichTextBoxElementListType => {\r\n if (type === \"numbered-list\" || type === \"bulleted-list\")\r\n return true;\r\n return false;\r\n }\r\n\r\n export const isListElement = (node: SlateNode | undefined): node is RichTextBoxBulletedListElement | RichTextBoxNumberedListElement => {\r\n if (SlateElement.isElement(node))\r\n return isListElementType(node.type);\r\n return false;\r\n }\r\n\r\n /**\r\n * Returns true if the node is a Numbered List Item or Bulleted List Item\r\n * @param node \r\n * @returns \r\n */\r\n export const isListItemElement = (node: Descendant | undefined): node is RichTextBoxListItemElement => {\r\n if (SlateElement.isElement(node))\r\n if (node.type === \"list-item\") {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Get's the currently selected focused block element from Slate's editor.\r\n * @param editor \r\n * @returns \r\n */\r\n export const getSelectedFocusedElement = (editor: RichTextBoxEditor): RichTextBoxElement | undefined => {\r\n const { selection } = editor;\r\n let selectedNode: RichTextBoxElement | RichTextBoxText | undefined = undefined;\r\n if (selection) {\r\n if (selection !== null && selection.anchor !== null && selection.anchor.path.length) {\r\n selectedNode = editor.children[selection.anchor.path[0]];\r\n }\r\n }\r\n if (SlateElement.isElement(selectedNode)) {\r\n return selectedNode;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Will break out of a currently focused list if the last item is empty.\r\n * @param editor \r\n * @returns \r\n */\r\n export const tryRemoveEmptyListItemAndBreak = (editor: RichTextBoxEditor) => {\r\n const { selection } = editor;\r\n if (selection && selection.focus.path.length) {\r\n const selectedElement = SlateNode.descendant(editor, [selection.focus.path[0]]);\r\n if (SlateElement.isElement(selectedElement)) {\r\n if (isListElement(selectedElement)) {\r\n const lastListItem = _.last(selectedElement.children ?? []);\r\n if (lastListItem && isListItemElement(lastListItem)) {\r\n const onlyItem = (selectedElement.children ?? []).length === 1;\r\n var textChildren = lastListItem.children?.filter((v): v is RichTextBoxText => SlateText.isText(v));\r\n if (textChildren && textChildren.length > 0 && textChildren[0].text === '') {\r\n const lastListItemPath = ReactEditor.findPath(editor, lastListItem);\r\n\r\n if (onlyItem) {\r\n const listPath = ReactEditor.findPath(editor, selectedElement);\r\n Transforms.delete(editor, { at: listPath });\r\n Transforms.insertNodes(editor, { type: 'paragraph', children: [{ text: '' }] }, { at: listPath });\r\n Transforms.select(editor, listPath);\r\n } else {\r\n Transforms.splitNodes(editor, { at: lastListItemPath });\r\n Transforms.unwrapNodes(editor);\r\n Transforms.setNodes(editor, { type: 'paragraph' });\r\n }\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n //#region Format/Align/Block\r\n export const getActiveColor = (editor: RichTextBoxEditor) => {\r\n const currentMarks = Editor.marks(editor) ?? {};\r\n return currentMarks.color;\r\n }\r\n export const setActiveColor = (editor: ReactEditor, color: string | undefined) => {\r\n editor.addMark('color', color);\r\n ReactEditor.focus(editor);\r\n }\r\n export const isFormatActive = (editor: RichTextBoxEditor, format: RichTextBoxFormatValue) => {\r\n const currentMarks = Editor.marks(editor) ?? { format: RichTextBoxFormatValue.none } as RichTextBoxText;\r\n return ((currentMarks.format ?? RichTextBoxFormatValue.none) & format) === format;\r\n }\r\n export const toggleFormat = (editor: RichTextBoxEditor, format: RichTextBoxFormatValue) => {\r\n const currentMarks = Editor.marks(editor) ?? { format: RichTextBoxFormatValue.none } as RichTextBoxText;\r\n let currentFormat = currentMarks.format ?? RichTextBoxFormatValue.none;\r\n\r\n if ((currentFormat & format) === format) {\r\n currentFormat = currentFormat - format;\r\n editor.removeMark('format');\r\n editor.addMark('format', currentFormat);\r\n } else {\r\n currentFormat = currentFormat | format;\r\n editor.removeMark('format');\r\n editor.addMark('format', currentFormat);\r\n }\r\n ReactEditor.focus(editor);\r\n };\r\n\r\n export const isBlockActive = (editor: RichTextBoxEditor, elementType: RichTextBoxElementType) => {\r\n const { selection } = editor\r\n if (selection) {\r\n const [match] = Array.from(\r\n Editor.nodes(editor, {\r\n at: Editor.unhangRange(editor, selection),\r\n match: (n: SlateNode) =>\r\n !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) &&\r\n n.type === elementType\r\n }));\r\n return match && match.length > 0;\r\n }\r\n return false;\r\n }\r\n\r\n export const toggleBlock = (editor: RichTextBoxEditor, elementType: RichTextBoxElementType, active: boolean) => {\r\n const isListButton = elementType === \"numbered-list\" || elementType === \"bulleted-list\";\r\n\r\n const selectedBlockElement = getSelectedFocusedElement(editor);\r\n if (isListButton || isListElement(selectedBlockElement)) {\r\n Transforms.unwrapNodes(editor, {\r\n match: (n) => {\r\n return !Editor.isEditor(n) &&\r\n SlateElement.isElement(n) && isListElement(n)\r\n },\r\n split: true,\r\n })\r\n }\r\n\r\n let newProperties: Partial = {\r\n type: active ? 'paragraph' : isListButton ? 'list-item' : elementType\r\n }\r\n if (newProperties.type === 'list-item')\r\n newProperties.indentationLevel = undefined;\r\n\r\n Transforms.setNodes(editor, newProperties);\r\n if (isListButton) {\r\n //only rewrap the list item if it's being made active.\r\n if (!active) {\r\n const block: RichTextBoxBaseElement = { type: (elementType as RichTextBoxElementType) }\r\n Transforms.wrapNodes(editor, block as RichTextBoxElement)\r\n }\r\n }\r\n ReactEditor.focus(editor);\r\n }\r\n //#endregion\r\n}\r\n","import { ColorUtils } from '@common/utils';\r\nimport escapeHtml from 'escape-html';\r\nimport { CSSProperties } from 'react';\r\nimport { Descendant, Element as SlateElement, Text } from 'slate';\r\nimport { jsx } from 'slate-hyperscript';\r\nimport styleToCss from 'style-object-to-css-string';\r\nimport { RichTextBoxUtils as _rtb } from './RichTextBoxUtils';\r\nimport { RichTextBoxElement, RichTextBoxFormatValue, RichTextBoxText, SerializeRichTextValueToStringResult } from './richTextEditorTypes';\r\n\r\nexport namespace RichTextBoxSerialization {\r\n /**\r\n * This helper method's purpose is to join raw html attribute string in such a way that they won't introduce rogue spaces in our html element\r\n * tags if they are empty. i.e. to prevent
from happening and make sure we get
or
\r\n * Html Element nodes behave funky if they have spaces and might not properly match an alement name case.\r\n * @param rawAttributes\r\n * @returns\r\n */\r\n const spaceAttributes = (rawAttributes: string[]) => {\r\n const joinedAttributes = rawAttributes.filter(str => str != null && str.length > 0).join(' ').trim();\r\n return joinedAttributes && joinedAttributes.length > 0 ? ` ${joinedAttributes}` : '';\r\n }\r\n\r\n /**\r\n * This takes a CSSProperties object and converts it into a string for a raw html styles tag\r\n * which is useful for manually building html in string manipulation and is used in serializeRichTextToHtml\r\n * @param css\r\n * @returns\r\n */\r\n const getStyleAttribute = (css: CSSProperties) => {\r\n let styleString = styleToCss(css);\r\n return styleString && styleString.length > 0 ? `style=\"${styleString}\"` : '';\r\n }\r\n\r\n /**\r\n * Takes a JSX HtmlElement and serializes it into the custom Slate Schema for the RichTextBoxComponent\r\n * The raw html strings must first be parsed into a JSX Object Tree which happens in parseHtmlToRichText\r\n * and is why this method is not exported.\r\n * @param el\r\n * @param markAttributes\r\n * @returns\r\n */\r\n const deserializeRichTextFromHtml = (el: HTMLElement | ChildNode, previousDescendant: Descendant[] | null, blockMarks: Partial = {}, textMarks: Partial = {}): Descendant[] | null => {\r\n if (el.nodeType === Node.TEXT_NODE) {\r\n let text = el.textContent ?? '';\r\n text = text.replace(/\\u200B/g, ''); //<- clean text\r\n return [jsx('text', textMarks, text)];\r\n\r\n } else if (el.nodeType !== Node.ELEMENT_NODE) {\r\n return null;\r\n }\r\n\r\n //el will be an HTMLElement past this point because it returns above if it's not an Element or text node\r\n const element = el as HTMLElement;\r\n\r\n if (el.nodeType === Node.ELEMENT_NODE && element.style) {\r\n if (element.style.marginLeft) {\r\n const indentationLevel = parseInt(element.style.marginLeft);\r\n if (indentationLevel)\r\n blockMarks.indentationLevel = indentationLevel;\r\n }\r\n if (element.style.color) {\r\n textMarks.color = element.style.color.indexOf('rgb') > -1 ? ColorUtils.rgbToHex(element.style.color) : element.style.color;\r\n }\r\n }\r\n\r\n //bold, italic etc is handled with native html elements instead of styles to be better compliant to email/pdf\r\n //this will process the node name and set the format bit for it and then return from the recursion to finish\r\n //building the previous element object\r\n switch (element.nodeName.toUpperCase()) {\r\n case 'BR':\r\n if (previousDescendant !== null && previousDescendant.length) {\r\n //if there was a previous element and it was a text node then we'll add a new line to the end of it\r\n //so it matches how the editor builds the live schema.\r\n const lastDescendant = _.last(previousDescendant);\r\n if (lastDescendant && Text.isText(lastDescendant)) {\r\n lastDescendant.text = `${lastDescendant.text}\\n`;\r\n return null; //<- this element should be a void element, we added it to the previous element.\r\n }\r\n }\r\n return [jsx('text', {}, '\\n')]; //<- don't need any marks on a newline break\r\n case 'STRONG':\r\n textMarks.format = (textMarks.format ?? 0) | RichTextBoxFormatValue.bold;\r\n break;\r\n case 'I':\r\n textMarks.format = (textMarks.format ?? 0) | RichTextBoxFormatValue.italic;\r\n break;\r\n case 'U':\r\n textMarks.format = (textMarks.format ?? 0) | RichTextBoxFormatValue.underline;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n //deduces all the children of this element if any and returns here, recursive, no recursion will get past this point unless it didn't have children, and the child will be an element at\r\n //that point\r\n const children = Array.from(element.childNodes).filter(a => a !== null).map(node => {\r\n previousDescendant = deserializeRichTextFromHtml(node, previousDescendant, blockMarks, textMarks);\r\n return previousDescendant;\r\n }).filter(a => a !== null).flat() as Descendant[];\r\n\r\n //if there are no children then we set an empty text element, slate requires that any element in the dom have at least 1 child with empty text.\r\n //i.e. if there are 5 block level elements in the dom each one must have a child with empty text and cannot have a null or undefined child, everything\r\n //must have at least 1 child text node, and text nodes do not have children, but an eleemnt can have multiple child text nodes.\r\n if (children.length === 0) {\r\n children.push(jsx('text', textMarks, ''))\r\n }\r\n\r\n let blockElement: Descendant[] = children;\r\n //recursion made it past children loops and is processing the block level element now\r\n switch (element.nodeName) {\r\n case 'BODY':\r\n return jsx('fragment', {}, children);\r\n case 'OL':\r\n blockElement = [jsx('element', { type: 'numbered-list', ...blockMarks }, children)];\r\n break;\r\n case 'UL': {\r\n blockElement = [jsx('element', { type: 'bulleted-list', ...blockMarks }, children)];\r\n break;\r\n }\r\n case 'LI': {\r\n blockElement = [jsx('element', { type: 'list-item', ...blockMarks }, children)];\r\n break;\r\n }\r\n case \"P\":\r\n blockElement = [jsx('element', { type: 'paragraph', ...blockMarks }, children)];\r\n break;\r\n default: {\r\n blockElement = children;\r\n break;\r\n }\r\n }\r\n //clear text marks, done rendering those children\r\n if (textMarks.format)\r\n delete textMarks.format;\r\n if (textMarks.color)\r\n delete textMarks.color;\r\n return blockElement;\r\n }\r\n\r\n /**\r\n * Serializes our custom Slate Schema into raw HTML\r\n * @param node You can pass the value attribute from RichTextBox's onChange handler to this. Node is a merged ts type from slate\r\n * that uses declaration merging with our types.\r\n * @returns A serialized Slate Tree to HTML\r\n * TODO: Can we generate this as JSX instead and then convert the JSX to html via some react utility? React obviously already does this.\r\n * Also TODO: When/if/where should we consider DOMPurify to purify our HTML? Incoming third party notes etc could be dangerous for certain attacks.\r\n */\r\n const serializeRichTextToHtml = (node: Descendant): string => {\r\n //The node is text\r\n if (Text.isText(node)) {\r\n let string = escapeHtml(node.text) ?? '';\r\n string = string.replace(/\\u200B/g, ''); //<- remove unicode zero width space\r\n string = node.text.replace(/\\r?\\n|\\r/g, '
');\r\n string = string ?? '
';\r\n\r\n const format = node.format ?? RichTextBoxFormatValue.none;\r\n const styles: CSSProperties = {};\r\n\r\n if (node.color) //we need to ensure attributes are omitted, not undefined\r\n styles.color = node.color;\r\n\r\n //convert any styles to a string, this includes the attribute tag itself so we don't introduce rogue spaces in our elements\r\n const styleString = getStyleAttribute(styles);\r\n\r\n //if we have attribute tags, this properly spaces them\r\n const attributeString = spaceAttributes([styleString]);\r\n\r\n //this processes format bit flags, if set it will concatenate the string with the relevant\r\n //native element for bold, italics, etc.\r\n if ((format & RichTextBoxFormatValue.bold) === RichTextBoxFormatValue.bold) {\r\n string = `${string}`\r\n }\r\n if ((format & RichTextBoxFormatValue.italic) === RichTextBoxFormatValue.italic) {\r\n string = `${string}`\r\n }\r\n if ((format & RichTextBoxFormatValue.underline) === RichTextBoxFormatValue.underline) {\r\n string = `${string}`\r\n }\r\n return `${string}`;\r\n }\r\n\r\n //similar to children in the deserialize loop, but backwards, we are serializing all the children\r\n //just building am html string representing the whole json schema.\r\n const children = node.children == null ? null : node.children.map(n => serializeRichTextToHtml(n)).join('');\r\n\r\n //we need to generate html for all of our Rich Text Box elements\r\n if (SlateElement.isElement(node)) {\r\n const styles: CSSProperties = {};\r\n\r\n //using a custom attribute to determine indentation since styling could be inconsistent and produce false positives\r\n if (node.indentationLevel)\r\n styles.marginLeft = `${node.indentationLevel}rem`;\r\n\r\n const styleString = getStyleAttribute(styles);\r\n const sharedAttributes = spaceAttributes([styleString]);\r\n\r\n switch (node.type) {\r\n case \"bulleted-list\": {\r\n return `${children}`;\r\n }\r\n case \"numbered-list\": {\r\n return `${children}`;\r\n }\r\n case \"list-item\": {\r\n return `${children}`;\r\n }\r\n case \"paragraph\":\r\n return `${children}

`;\r\n default:\r\n return children ?? '';\r\n\r\n }\r\n }\r\n //ensure any schema we don't support generates an empty html string\r\n return '';\r\n }\r\n\r\n /**\r\n * Internal function, Use DOMParser to load a dom from the html\r\n * this is what allows us to walk through it in the deserializer.\r\n * @param htmlString An html or plain text string, text/html is tolerant of both\r\n * @returns A ChildNode from the DomParser, could be text or element etc.\r\n */\r\n const parseHtml = (htmlString: string | undefined | null) => {\r\n let parser = new DOMParser();\r\n let doc = parser.parseFromString(htmlString ?? '', \"text/html\");\r\n\r\n const elements: ChildNode[] = [];\r\n\r\n if (doc.body.childNodes.length > 0) {\r\n doc.body.childNodes.forEach(node => {\r\n if (node.nodeType === Node.TEXT_NODE && node.textContent != null && !_.isEmpty(_.trim(node.textContent))) {\r\n const ret = doc.createElement('p');\r\n ret.appendChild(node);\r\n elements.push(ret);\r\n }\r\n else\r\n elements.push(node);\r\n });\r\n }\r\n else {\r\n //there was no html to load, this will ensure we have an empty text node via a span\r\n const ret = doc.createElement('p');\r\n elements.push(ret);\r\n }\r\n return elements;\r\n }\r\n\r\n /**\r\n * Basically what the parseHtml internal function does but will handle creating a default node if the html doesn't parse or is empty.\r\n * Slate requires that the editor always have at least 1 block level element with empty text in it in order to function and not break.\r\n * @param html\r\n * @returns\r\n */\r\n export const parseHtmlToRichText = (html: string | undefined | null) => {\r\n const htmlElements = parseHtml(html);\r\n const ret: Descendant[] = [];\r\n if (htmlElements.length > 0) {\r\n //there are multiple block level elements possible so we need to deserialize each one.\r\n htmlElements.forEach(element => {\r\n const descendant = deserializeRichTextFromHtml(element, null);\r\n if (descendant)\r\n ret.push(...descendant); //descontruct the children flatly, there will only be one per loop.\r\n });\r\n }\r\n if (ret.length === 0)\r\n ret.push({ type: 'paragraph', children: [{ text: '' }] });\r\n\r\n return ret;\r\n }\r\n\r\n /**\r\n * This will serialize our Schema into html if it needs to be html and plain text if it can be plain text\r\n * This allows us to prevent causing RHF isDirty to break on existing plain text notes.\r\n * @param nodes\r\n * @returns An object with a value string and a bollean indicating if it's plain text or not.\r\n */\r\n export const serializeRichTextValueToString = (nodes: Descendant[], forceHtml?: boolean,isSMStext?:boolean): SerializeRichTextValueToStringResult => {\r\n if (!forceHtml && _rtb.canConvertDescendantToPlainText(nodes))\r\n return {\r\n isPlainText: true,\r\n value: isSMStext?_rtb.serializeRichTextToPlainTextNoHtml(nodes):_rtb.serializeRichTextToPlainText(nodes)\r\n }\r\n let richHtmlStringNodes = nodes.map(node => serializeRichTextToHtml(node))?.join('') ?? '';\r\n return {\r\n isPlainText: false,\r\n value: richHtmlStringNodes\r\n }\r\n }\r\n}\r\n","import { htmlFrom } from '@common/utils';\r\nimport classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { RichTextBoxSerialization } from './RichTextBoxSerialization';\r\nimport { RichTextBoxUtils } from './RichTextBoxUtils';\r\n\r\ntype RichTextDisplayProps = {\r\n value?: string | null | undefined;\r\n asPlainText?: boolean\r\n} & React.HtmlHTMLAttributes\r\n\r\nexport const RichTextDisplay = observer(({ asPlainText, value, ...attrs }: RichTextDisplayProps) => {\r\n const { className, ...remainingAttrs } = attrs;\r\n const text = React.useMemo(() => {\r\n if (value == null)\r\n return null;\r\n\r\n const richTextNodes = RichTextBoxSerialization.parseHtmlToRichText(value);\r\n const serializeResult = RichTextBoxSerialization.serializeRichTextValueToString(richTextNodes);\r\n if (asPlainText) {\r\n if (serializeResult.isPlainText)\r\n return serializeResult.value;\r\n return RichTextBoxUtils.serializeRichTextToPlainText(richTextNodes);\r\n } else {\r\n return serializeResult.value;\r\n }\r\n\r\n\r\n }, [value, asPlainText]);\r\n\r\n if (text == null)\r\n return (-);\r\n return (\r\n {htmlFrom(text ?? '')}\r\n )\r\n});\r\n","import { DateTimeUtils } from '@common/utils/datetimeUtils';\r\nimport { HospitalAppStoreContextWrapper } from \"@hospital/contexts/HospitalAppStoreContextWrapper\";\r\nimport { HospitalAppStore } from \"@hospital/stores/rootStores\";\r\nimport { DateTime } from 'luxon';\r\nimport React from \"react\";\r\nexport const useHospitalApp = () => React.useContext(HospitalAppStoreContextWrapper.get());\r\n\r\nexport function GetHospitalOpenCloseTimeForToday() {\r\n const hospitalApp = useHospitalApp();\r\n const hospitalHours = hospitalApp.currentHospital?.hospitalHours;\r\n const today = DateTime.now();\r\n const dayOfWeek = DateTimeUtils.getDayOfWeek(today);\r\n const openTime = hospitalHours && hospitalHours[dayOfWeek].openTime;\r\n const closeTime = hospitalHours && hospitalHours[dayOfWeek].closeTime;\r\n return { openTime, closeTime };\r\n}\r\n","import { DateTime } from \"luxon\";\r\nimport { useHospitalApp } from \"./useHospitalApp\";\r\n\r\n/**\r\n * Date functions that act on the current hospitals time zone\r\n */\r\nexport type useHospitalTimeReturn = {\r\n /**\r\n * Convert a date to the current hospitals time zone\r\n * Example Input: DateTime in UTC\r\n * @returns DateTime in hospitals time zone with time changed to hospital time\r\n */\r\n getHospitalDate: (date: DateTime) => DateTime;\r\n /**\r\n * Convert a date to the current hospitals time zone and convert it to a short date string\r\n * Example Input: DateTime on 9/27/2022 at 12:30 AM UTC\r\n * @returns 9/26/2022 (hospital time zone still on previous day)\r\n */\r\n getHospitalShortDate: (date: DateTime) => string;\r\n /**\r\n * Convert a date to the current hospitals time zone and convert it to a simple time string\r\n * Example Input: DateTime on 9/26/2022 at 2:32 PM UTC\r\n * @returns 9:26, time shift to hospitals time zone is 5 hours before utc here\r\n */\r\n getHospitalSimpleTime: (date: DateTime) => string;\r\n}\r\n\r\nfunction internalGetDate(date: DateTime, timeZone: string) {\r\n return date.setZone(timeZone);\r\n}\r\n\r\nfunction internalSimpleTime(date: DateTime, timeZone: string) {\r\n const lDate = internalGetDate(date, timeZone);\r\n return lDate.toLocaleString(DateTime.TIME_SIMPLE);\r\n}\r\n\r\nfunction internalShortDate(date: DateTime, timeZone: string) {\r\n const lDate = internalGetDate(date, timeZone);\r\n return lDate.toLocaleString(DateTime.DATE_SHORT);\r\n}\r\n\r\n/**\r\n * A hook that uses the hospitalApp hook to get the current hospitals timeZone\r\n * and returns helper date functions to get Date's, display dates, and display time\r\n * that has been converted to the hospitals timezone.\r\n * @returns a useHospitalTimeReturn object that contains all the date functions currently encapsulated.\r\n */\r\nexport const useHospitalTime = (): useHospitalTimeReturn => {\r\n const hospitalApp = useHospitalApp();\r\n const timeZone = hospitalApp.currentHospital?.store?.timezoneName ?? 'UTC';\r\n return {\r\n getHospitalDate: (date: DateTime) => internalGetDate(date, timeZone),\r\n getHospitalShortDate: (date: DateTime) => internalShortDate(date, timeZone),\r\n getHospitalSimpleTime: (date: DateTime) => internalSimpleTime(date, timeZone)\r\n }\r\n}\r\n","import classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\n\r\nexport interface IYesNoConfirmModal {\r\n visible: boolean;\r\n backdrop?: 'static';\r\n busy: boolean;\r\n title: string;\r\n description: React.ReactNode | string | JSX.Element;\r\n confirmButtonText?: string;\r\n cancelButtonText?: string;\r\n onConfirm: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport const YesNoConfirmModal = observer(({ visible, backdrop = \"static\", title, description, busy, confirmButtonText = \"Yes\", cancelButtonText = \"Cancel\", onConfirm, onCancel }: IYesNoConfirmModal) => {\r\n React.useEffect(() => {\r\n if (visible) {\r\n const el = document.getElementsByClassName('fade modal-backdrop show')\r\n requestAnimationFrame(() => {\r\n if (el.length > 0 && (el[1] as HTMLElement)?.style) {\r\n (el[1] as HTMLElement).style.zIndex = '1070';\r\n }\r\n });\r\n }\r\n }, [visible])\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n
{description}
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n});\r\n","import React from 'react'\r\n\r\ninterface TabTitleArgs { title: string, count: number, color: \"green\" | \"gray\" }\r\n\r\nconst TabTitleWithPills = ({ title, count, color }: TabTitleArgs) => (\r\n
\r\n {title}\r\n
\r\n {count}\r\n
\r\n
\r\n)\r\n\r\nconst TabTitle = ({ title }: { title: string }) => (\r\n
\r\n {title}\r\n
\r\n)\r\nexport { TabTitle, TabTitleWithPills }\r\n","import { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\n\r\nexport interface INotificationModal {\r\n visible: boolean;\r\n title: string;\r\n description: string;\r\n onClose: () => void;\r\n}\r\n\r\nexport const NotificationModal = observer(({ visible, title, description, onClose }: INotificationModal) => {\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n
{description}
\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n});\r\n","import { SuspenseButton } from '@common/components/utility';\r\nimport { anyPromiseTrackerTagsInProgress } from '@common/utils';\r\nimport classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\n\r\n\r\nexport interface ISuspenseConfirmModalProps {\r\n visible: boolean;\r\n tags: string[];\r\n hideSpinner?: boolean\r\n title: string;\r\n description: React.ReactNode | string | JSX.Element;\r\n confirmButtonText?: string;\r\n cancelButtonText?: string;\r\n onConfirm: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\n/**\r\n * Yes/No Confirmation Model with built in support for multiple promise tags to watch for\r\n */\r\nexport const SuspenseConfirmationModal = observer(({ visible, title, description, tags, hideSpinner, confirmButtonText = \"Yes\", cancelButtonText = \"Cancel\", onConfirm, onCancel }: ISuspenseConfirmModalProps) => {\r\n React.useEffect(() => {\r\n if (visible) {\r\n const el = document.getElementsByClassName('fade modal-backdrop show')\r\n requestAnimationFrame(() => {\r\n if (el.length > 0 && (el[1] as HTMLElement)?.style) {\r\n (el[1] as HTMLElement).style.zIndex = '1070';\r\n }\r\n });\r\n }\r\n }, [visible])\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n

{description}

\r\n
\r\n \r\n \r\n \r\n {confirmButtonText}\r\n \r\n \r\n
\r\n )\r\n});\r\n","import { observer } from \"mobx-react\";\r\nimport React, { useState } from 'react';\r\nimport { Button, Col, Form, InputGroup, InputGroupProps, Row } from \"react-bootstrap\";\r\n\r\nexport type QuerySearchButtonSetQuery = (param: string) => void;\r\ninterface IQuerySearchButtonProps {\r\n inputGroupProps?: InputGroupProps\r\n setQuery: QuerySearchButtonSetQuery;\r\n placeholderText: string;\r\n clearButtonText?: string;\r\n /**\r\n * If undefined, no live search occurs, if numeric setQuery will be called as soon as this amount in milliseconds has elapsed without a new input. Input within this delay debounces and resets this delay so only one call\r\n * to setQuery will happen withing this elapsed milliseconds. Leave undefined to not use liveSearch.\r\n */\r\n liveSearchDelay?: number;\r\n omitWrapperMarkup?: boolean;\r\n}\r\n\r\nconst QuerySearchButton = observer(({ setQuery, placeholderText, clearButtonText = \"Clear Filter\", liveSearchDelay, omitWrapperMarkup = false, inputGroupProps = undefined }: IQuerySearchButtonProps) => {\r\n const bounce = React.useRef<(() => void) | undefined>(undefined);\r\n const [keyword, setKeyword] = useState(\"\");\r\n const [doLiveSearch, setDoLiveSearch] = useState(false);\r\n\r\n const reset = () => {\r\n setKeyword(\"\");\r\n setQuery(\"\")\r\n }\r\n\r\n //keyword could still be undefined when liveSearchSetQuery is called because state was updated by onChange and react hasn't\r\n //finished the rendering loop yet, so it'll call this FC again with the keyword on the 2nd pass, so instead of reading keyword here, we'll setState to execute the live\r\n //search so the useEffect will handle actually calling setQuery\r\n const liveSearchSetQuery = React.useCallback(() => {\r\n if (!bounce.current) {\r\n bounce.current = _.debounce(() => {\r\n bounce.current = undefined;\r\n setDoLiveSearch(true);\r\n }, liveSearchDelay !== undefined ? liveSearchDelay : 500, { leading: false, trailing: true });\r\n bounce.current();\r\n } else\r\n bounce.current();\r\n }, [liveSearchDelay, setDoLiveSearch]);\r\n\r\n React.useEffect(() => {\r\n if (doLiveSearch) {\r\n setQuery(keyword);\r\n setDoLiveSearch(false);\r\n }\r\n }, [doLiveSearch, setQuery, keyword])\r\n\r\n const onChangeHandler: React.ChangeEventHandler = React.useCallback((e) => {\r\n setKeyword(e.target.value);\r\n if (liveSearchDelay !== undefined)\r\n liveSearchSetQuery();\r\n }, [liveSearchDelay, liveSearchSetQuery]);\r\n\r\n const handleKeypress = (e: React.KeyboardEvent) => {\r\n //it triggers by pressing the enter key\r\n if (e.key === \"Enter\" && liveSearchDelay == null) {\r\n e.preventDefault();\r\n setQuery(keyword);\r\n }\r\n };\r\n\r\n if (!omitWrapperMarkup) {\r\n return (\r\n \r\n \r\n \r\n setQuery(keyword)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n setQuery(keyword)} />\r\n \r\n );\r\n\r\n\r\n});\r\n\r\nexport default QuerySearchButton;\r\n","import { makeObservable, observable, flow, computed } from \"mobx\";\r\nimport { AzureBlobStore, NotificationStoreInstance } from \"@common/stores\";\r\nimport { BlobEntityType, MimeType } from \"@common/models/Enums\";\r\nimport { UserStore } from '@hospital/views/shared/userprofile';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { IPhotoRequest, IBlobSasModel } from \"@common/models\";\r\nimport { VeterinarianService } from \"@common/services\";\r\n\r\nexport interface ISignatureStoreInit {\r\n userStore: UserStore\r\n}\r\n\r\nexport interface ISignatureStore {\r\n userStore: UserStore | undefined,\r\n signatureIsBeingUpdated: boolean;\r\n hasSignature: boolean;\r\n signatureUrl: string | undefined;\r\n signatureName: string | undefined;\r\n saveVetSignature(this: ISignatureStore, image: string): any;\r\n deleteVetSignature(this: ISignatureStore): any;\r\n}\r\n\r\n\r\nexport class SignatureStore implements ISignatureStore {\r\n userStore!: UserStore;\r\n @observable signatureIsBeingUpdated: boolean = false;\r\n\r\n constructor(init: ISignatureStoreInit) {\r\n Object.assign(this, init);\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n }); //use decorators \r\n }\r\n\r\n @computed get hasSignature() {\r\n return this.userStore.vet?.activeSignature != null;\r\n }\r\n\r\n @computed get signatureUrl() {\r\n return this.userStore?.vet?.activeSignature?.signature?.photoUrl;\r\n }\r\n\r\n @computed get signatureName() {\r\n return this.userStore?.vet?.activeSignature?.signature?.fileName;\r\n }\r\n\r\n saveVetSignature = flow(function* (this: SignatureStore, imageUrl: string): Generator, void, any> {\r\n this.signatureIsBeingUpdated = true;\r\n\r\n const blobStore = new AzureBlobStore({ containerName: BlobEntityType.Signatures });\r\n const filename = `signaturePhoto-${uuid()}.png`;\r\n const blobSas: IBlobSasModel = yield blobStore.uploadDataUrl(imageUrl, filename, MimeType.PNG);\r\n\r\n if (blobSas) {\r\n const photoRequest: IPhotoRequest = {\r\n container: blobSas.container,\r\n fileName: blobSas.fileName,\r\n photoUrl: blobSas.sasUrl\r\n };\r\n\r\n yield VeterinarianService.saveVeterinarianSignature(this.userStore.vet.veterinarianId, photoRequest)\r\n .then(NotificationStoreInstance.onSuccess(\"Signature Added\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to add signature\", null));\r\n\r\n this.signatureIsBeingUpdated = false;\r\n yield this.userStore.refreshUser(this.userStore.user.userId);\r\n\r\n }\r\n else {\r\n throw \"There was a failure saving signature to azure blog storage\";\r\n }\r\n });\r\n\r\n deleteVetSignature = flow(function* (this: SignatureStore): Generator, void, any> {\r\n this.signatureIsBeingUpdated = true;\r\n\r\n yield VeterinarianService.deleteVeterinarianSignature(this.userStore.vet.veterinarianId)\r\n .then(NotificationStoreInstance.onSuccess(\"Signature Deleted\"))\r\n .catch(NotificationStoreInstance.onError(`Failed to delete signature`, null));\r\n\r\n this.signatureIsBeingUpdated = false;\r\n\r\n yield this.userStore.refreshUser(this.userStore.user.userId);\r\n });\r\n\r\n}\r\n","import { AppointmentListingModel, HospitalModel } from \"@common/models\";\r\nimport { AppointmentFlowActionOperations, AppointmentStatus } from \"@common/models/Enums\";\r\nimport { IAppointmentCheckInRequest, IVisitCheckoutRequest } from \"@common/models/requests\";\r\nimport { IAppointmentStatusRequest } from \"@common/models/requests/AppointmentStatusRequest\";\r\nimport { HospitalService } from \"@common/services\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\nimport { ICheckInModel } from \"@models/forms/ICheckInModel\";\r\nimport { isUndefined } from \"lodash\";\r\nimport { action, flow, makeObservable, observable } from \"mobx\";\r\n\r\nexport class AppointmentStore {\r\n @observable currentHospital: HospitalModel;\r\n @observable selectedOperation?: AppointmentFlowActionOperations;\r\n @observable selectedOperationFields: ICheckInModel | undefined;\r\n @observable shouldNavigate: boolean = true;\r\n @observable currentAppointment: AppointmentListingModel | undefined;\r\n\r\n constructor(init: { currentHospital: HospitalModel }) {\r\n this.currentHospital = init.currentHospital;\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n /**\r\n * Triggered when one of the action buttons are clicked on an event modal or flow card\r\n * Stores the selected operation\r\n * @param operation current operation\r\n */\r\n @action.bound setCurrentAction(this: AppointmentStore, operation: AppointmentFlowActionOperations, shouldNavigate?: boolean) {\r\n this.selectedOperation = operation;\r\n this.shouldNavigate = !isUndefined(shouldNavigate) ? shouldNavigate : true;\r\n }\r\n\r\n /**\r\n * Triggered when the Yes button is clicked in the confirm modal\r\n * Takes the currently selected appointment and operation and triggers the request\r\n */\r\n triggerCurrentAction = flow(function* (this: AppointmentStore, appointment: AppointmentListingModel) {\r\n return yield this.triggerRequest(appointment, this.selectedOperation).then((appointment: AppointmentListingModel) => {\r\n return appointment;\r\n });\r\n });\r\n\r\n /**\r\n * Called when one of the current actions has been triggered\r\n * Maps the current appointment status to its correlating service request\r\n * @param appointment current appointment\r\n */\r\n triggerRequest = flow(function* (this: AppointmentStore, appointment: AppointmentListingModel, operation?: AppointmentFlowActionOperations) {\r\n this.currentAppointment = appointment;\r\n switch (appointment.appointmentStatusId) {\r\n case AppointmentStatus.Booked:\r\n case AppointmentStatus.Confirmed:\r\n case AppointmentStatus.Showed:\r\n if (operation == AppointmentFlowActionOperations.CheckIn) {\r\n const checkInRequest = appointment.toCheckInRequest(this.selectedOperationFields!);\r\n const response = yield this.checkInAppointment(checkInRequest);\r\n\r\n if (!response) {\r\n throw new Error('Unable to set Appointment as Checked In')\r\n }\r\n break;\r\n }\r\n else if (operation === AppointmentFlowActionOperations.StartVisit) {\r\n const checkInRequest = appointment.toCheckInRequest(this.selectedOperationFields!, true);\r\n const response = yield this.checkInAppointment(checkInRequest);\r\n\r\n if (!response) {\r\n throw new Error('Unable to set Appointment as In Progress')\r\n }\r\n break;\r\n }\r\n else if (operation == AppointmentFlowActionOperations.NoShow) {\r\n const statusRequest = appointment.toStatusRequest();\r\n yield this.setNoShowAppointment(statusRequest);\r\n break;\r\n }\r\n else if (operation == AppointmentFlowActionOperations.Book) {\r\n const statusRequest = appointment.toStatusRequest();\r\n yield this.setBookedAppointment(statusRequest);\r\n break;\r\n }\r\n else if (operation == AppointmentFlowActionOperations.Confirm) {\r\n const statusRequest = appointment.toStatusRequest();\r\n yield this.setConfirmedAppointment(statusRequest);\r\n break;\r\n }\r\n else if (operation == AppointmentFlowActionOperations.Cancel) {\r\n const statusRequest = appointment.toStatusRequest();\r\n yield this.setCancelledAppointment(statusRequest);\r\n break;\r\n }\r\n\r\n throw new Error('Not Implemented')\r\n case AppointmentStatus.ClinicCancelled:\r\n throw new Error('Not Implemented')\r\n case AppointmentStatus.NoShow:\r\n if (operation == AppointmentFlowActionOperations.CheckIn) {\r\n const checkInRequest = appointment.toCheckInRequest(this.selectedOperationFields!);\r\n const response = yield this.checkInAppointment(checkInRequest);\r\n\r\n if (!response) {\r\n throw new Error('Unable to set Appointment as Checked In')\r\n }\r\n break;\r\n }\r\n\r\n throw new Error('Not Implemented')\r\n case AppointmentStatus.In_Progress:\r\n if (operation == AppointmentFlowActionOperations.Admit) {\r\n const statusRequest = appointment.toStatusRequest();\r\n const response = yield this.setAdmittedAppointment(statusRequest);\r\n\r\n if (!response) {\r\n throw new Error('Unable to set Appointment as Admitted')\r\n }\r\n break;\r\n }\r\n\r\n throw new Error('Not Implemented')\r\n case AppointmentStatus.Check_In:\r\n if (operation == AppointmentFlowActionOperations.StartVisit) {\r\n const statusRequest = appointment.toStatusRequest();\r\n const response = yield this.setInProgressAppointment(statusRequest);\r\n\r\n if (!response) {\r\n throw new Error('Unable to set Appointment as In Progress')\r\n }\r\n break;\r\n }\r\n else if (operation == AppointmentFlowActionOperations.Admit) {\r\n const statusRequest = appointment.toStatusRequest();\r\n const response = yield this.setAdmittedAppointment(statusRequest);\r\n\r\n if (!response) {\r\n throw new Error('Unable to set Appointment as Admitted')\r\n }\r\n break;\r\n }\r\n\r\n throw new Error('Not Implemented')\r\n case AppointmentStatus.Admitted:\r\n throw new Error('Not Implemented')\r\n case AppointmentStatus.Finalized:\r\n if (operation == AppointmentFlowActionOperations.CheckOut) {\r\n yield this.setPaidAppointment(appointment.visitId!);\r\n return appointment; // **Placeholder until checkout functionality is added**\r\n }\r\n\r\n throw new Error('Not Implemented')\r\n case AppointmentStatus.Paid:\r\n throw new Error('Not Implemented')\r\n case AppointmentStatus.Cancelled:\r\n if (operation == AppointmentFlowActionOperations.Cancel) {\r\n const statusRequest = appointment.toStatusRequest();\r\n yield this.setCancelledAppointment(statusRequest);\r\n break;\r\n }\r\n else if (operation == AppointmentFlowActionOperations.Book) {\r\n const statusRequest = appointment.toStatusRequest();\r\n yield this.setBookedAppointment(statusRequest);\r\n break;\r\n }\r\n else if (operation == AppointmentFlowActionOperations.Confirm) {\r\n const statusRequest = appointment.toStatusRequest();\r\n yield this.setConfirmedAppointment(statusRequest);\r\n break;\r\n }\r\n\r\n throw new Error('Not Implemented')\r\n default:\r\n throw new Error('Error: Unexpected Appointment Status');\r\n }\r\n\r\n return this.currentAppointment;\r\n });\r\n\r\n /**\r\n * Triggered when the current action requires additional field changes\r\n * Stores the selected operation object - ICheckInModel | IxxxModel | undefined\r\n * @param operation current operation\r\n */\r\n @action.bound setSelectedOperationFields(selectedOperationFields: ICheckInModel | undefined) {\r\n this.selectedOperationFields = selectedOperationFields\r\n }\r\n\r\n /**\r\n * Triggers the checkInAppointment hospital service method\r\n * @param appointment check in request object\r\n */\r\n checkInAppointment = flow(function* (this: AppointmentStore, appointment: IAppointmentCheckInRequest) {\r\n let success = false;\r\n this.currentAppointment = yield HospitalService.checkInAppointment(\r\n this.currentHospital!.hospitalId,\r\n appointment)\r\n .then((data) => {\r\n NotificationStoreInstance.onSuccess(\"Appointment Checked In\");\r\n success = true;\r\n return data;\r\n })\r\n .catch(NotificationStoreInstance.onError(\"Failed check in appointment.\", this.currentAppointment));\r\n return success;\r\n });\r\n\r\n /**\r\n * Triggers the SetNoShow hospital service method\r\n * @param appointment current appointment\r\n */\r\n setNoShowAppointment = flow(function* (this: AppointmentStore, appointment: IAppointmentStatusRequest) {\r\n this.currentAppointment = yield HospitalService.setNoShowAppointment(\r\n this.currentHospital!.hospitalId,\r\n appointment)\r\n .then(NotificationStoreInstance.onSuccess(\"Appointment Marked as No Show\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to mark appointment as No Show.\", this.currentAppointment));\r\n });\r\n\r\n /**\r\n * Triggers the InProgress hospital service method\r\n * @param appointment current appointment\r\n */\r\n setInProgressAppointment = flow(function* (this: AppointmentStore, appointment: IAppointmentStatusRequest) {\r\n let success = false;\r\n this.currentAppointment = yield HospitalService.setInProgressAppointment(\r\n this.currentHospital!.hospitalId,\r\n appointment)\r\n .then((data) => {\r\n NotificationStoreInstance.onSuccess(\"Appointment Marked as In Progress\");\r\n success = true;\r\n return data;\r\n })\r\n .catch(NotificationStoreInstance.onError(\"Failed to mark appointment as In Progress.\", this.currentAppointment));\r\n return success;\r\n });\r\n\r\n /**\r\n * Triggers the setAdmittedAppointment hospital service method\r\n * @param appointment current appointment\r\n */\r\n setAdmittedAppointment = flow(function* (this: AppointmentStore, appointment: IAppointmentStatusRequest) {\r\n let success = false;\r\n this.currentAppointment = yield HospitalService.setAdmittedAppointment(\r\n this.currentHospital!.hospitalId,\r\n appointment\r\n )\r\n .then((data) => {\r\n NotificationStoreInstance.success(\"Appointment Marked as Admitted\")\r\n success = true;\r\n return data\r\n })\r\n .catch(NotificationStoreInstance.onError(\"Failed to mark appointment as Admitted.\", this.currentAppointment));\r\n\r\n return success;\r\n });\r\n\r\n /**\r\n * Triggers the SetBooked hospital service method\r\n * @param appointment current appointment\r\n */\r\n setBookedAppointment = flow(function* (this: AppointmentStore, appointment: IAppointmentStatusRequest) {\r\n this.currentAppointment = yield HospitalService.setBookedAppointment(\r\n this.currentHospital!.hospitalId,\r\n appointment)\r\n .then(NotificationStoreInstance.onSuccess(\"Appointment Marked as booked\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to mark appointment as Booked.\", this.currentAppointment));\r\n });\r\n\r\n /**\r\n * Triggers the SetConfirmed hospital service method\r\n * @param appointment current appointment\r\n */\r\n setConfirmedAppointment = flow(function* (this: AppointmentStore, appointment: IAppointmentStatusRequest) {\r\n this.currentAppointment = yield HospitalService.setConfirmedAppointment(\r\n this.currentHospital!.hospitalId,\r\n appointment)\r\n .then(NotificationStoreInstance.onSuccess(\"Appointment Marked as confirmed\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to mark appointment as Confirmed.\", this.currentAppointment));\r\n });\r\n\r\n /**\r\n * Triggers the SetCancelled hospital service method\r\n * @param appointment current appointment\r\n */\r\n setCancelledAppointment = flow(function* (this: AppointmentStore, appointment: IAppointmentStatusRequest) {\r\n this.currentAppointment = yield HospitalService.setCancelledAppointment(\r\n this.currentHospital!.hospitalId,\r\n appointment)\r\n .then(NotificationStoreInstance.onSuccess(\"Appointment Marked as Cancelled\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to mark appointment as Cancelled.\", this.currentAppointment));\r\n });\r\n\r\n /**\r\n * Triggers the setFinalizedAppointment hospital service method\r\n * @param appointment current appointment\r\n */\r\n setFinalizedAppointment = flow(function* (this: AppointmentStore, appointment: IAppointmentStatusRequest) {\r\n let success = false;\r\n this.currentAppointment = yield HospitalService.setFinalizedAppointment(\r\n this.currentHospital!.hospitalId,\r\n appointment\r\n )\r\n .then((data) => {\r\n NotificationStoreInstance.success(\"Appointment Marked as Finalized\")\r\n success = true;\r\n return data\r\n })\r\n .catch(NotificationStoreInstance.onError(\"Failed to mark appointment as Finalized.\", this.currentAppointment));\r\n\r\n return success;\r\n });\r\n\r\n setCompletedAppointment = flow(function* (this: AppointmentStore, appointment: IAppointmentStatusRequest) {\r\n let success = false;\r\n this.currentAppointment = yield HospitalService.setCompletedAppointment(\r\n this.currentHospital!.hospitalId,\r\n appointment\r\n )\r\n .then((data) => {\r\n NotificationStoreInstance.success(\"Appointment Marked as Complete\")\r\n success = true;\r\n return data\r\n })\r\n .catch(NotificationStoreInstance.onError(\"Failed to mark appointment as Complete.\", this.currentAppointment));\r\n\r\n return success;\r\n });\r\n\r\n setAbortedAppointment = flow(function* (this: AppointmentStore, request: IVisitCheckoutRequest) {\r\n let success = false;\r\n this.currentAppointment = yield HospitalService.setAbortedAppointment(\r\n this.currentHospital!.hospitalId,\r\n request\r\n )\r\n .then((data) => {\r\n NotificationStoreInstance.success(\"Appointment Marked as Aborted\")\r\n success = true;\r\n return data\r\n })\r\n .catch(NotificationStoreInstance.onError(\"Failed to mark appointment as Aborted.\", this.currentAppointment));\r\n\r\n return success;\r\n });\r\n\r\n /**\r\n * Triggers the setPaidAppointment hospital service method\r\n * @param appointment current appointment\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n setPaidAppointment = flow(function* (this: AppointmentStore, visitId: number) {\r\n\r\n //**Placeholder until checkout functionality is added**\r\n // const updatedAppointment = yield HospitalService.setPaidAppointment(\r\n // this.currentHospital!.hospitalId,\r\n // visitId,\r\n // { showSuccess: true, showError: true });\r\n\r\n return yield;\r\n });\r\n\r\n reopenVisit = flow(function* (this: AppointmentStore, appointment: IAppointmentStatusRequest) {\r\n return yield HospitalService.reopenVisit(this.currentHospital!.hospitalId, appointment)\r\n .then(NotificationStoreInstance.onSuccess(\"Visit successfully reopened\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to reopen Visit\", undefined));\r\n });\r\n}\r\n","import { NotificationStoreInstance } from '@common/stores';\r\nimport { IAppointmentTypeModel, ClientConfigurationModel } from '@common/models';\r\nimport { computed, flow, makeObservable, observable } from \"mobx\";\r\nimport { AppointmentTypeService } from '@common/services/appointmentTypeService';\r\nimport { petcoPhilippineBronze } from '@common/_assets/color-constants.js';\r\nimport { IQueryCacheStoreInit, QueryCacheStore } from '@common/stores/QueryCacheStore';\r\nimport { SearchService } from '@common/services';\r\n\r\nconst defaultAppointmentType: IAppointmentTypeModel = {\r\n authApplicationId: 2, // SWIFT\r\n appointmentTypeId: 0,\r\n name: \"New Appointment Type\",\r\n description: \"\",\r\n color: petcoPhilippineBronze,\r\n defaultDurationSeconds: 1800,\r\n species: [{ speciesId: 1, name: \"Canine\", rowVersion: \"\" }, { speciesId: 2, name: \"Feline\", rowVersion: \"\" }],\r\n isActive: false,\r\n onlineBooking: false,\r\n isDropoff: false,\r\n isSurgery: false,\r\n rowVersion: \"\",\r\n isLocked: false\r\n}\r\n\r\nexport interface IAppointmentTypesStoreInit extends IQueryCacheStoreInit {\r\n configuration: ClientConfigurationModel;\r\n}\r\n\r\nexport class AppointmentTypesStore extends QueryCacheStore {\r\n configuration: ClientConfigurationModel;\r\n @observable loading: boolean = false;\r\n @observable redirectToUrl: string | undefined = undefined;\r\n @observable appointmentType: IAppointmentTypeModel = defaultAppointmentType;\r\n\r\n constructor(init: IAppointmentTypesStoreInit) {\r\n super(init)\r\n\r\n this.configuration = init.configuration;\r\n\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n }); //use decorators\r\n }\r\n\r\n @computed get species() {\r\n return this.configuration.species;\r\n }\r\n\r\n refreshAppointmentType = flow(function* (this: AppointmentTypesStore, appointmentTypeId?: string) {\r\n if (appointmentTypeId === undefined) return;\r\n const id = parseInt(appointmentTypeId);\r\n if (isNaN(id)) return;\r\n\r\n this.loading = true;\r\n\r\n this.appointmentType = id === 0\r\n ? defaultAppointmentType\r\n : yield AppointmentTypeService.getAppointmentType(appointmentTypeId)\r\n .catch((error) => NotificationStoreInstance.onError(`Failed to fetch Appointment Type. ${error.message}`, defaultAppointmentType));\r\n\r\n this.loading = false;\r\n });\r\n\r\n /**\r\n * Adds or update an appointment type\r\n * @param this current AppointmentTypesStore reference\r\n * @param appointmentTypeToAdd appointment type model to create\r\n */\r\n upsertAppointmentType = flow(function* (this: AppointmentTypesStore, appointmentType: IAppointmentTypeModel) {\r\n this.loading = true;\r\n\r\n this.appointmentType = appointmentType.appointmentTypeId === 0\r\n ? yield AppointmentTypeService.addAppointmentType(appointmentType)\r\n .then(NotificationStoreInstance.onSuccess(\"Appointment type added\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to add appointment type\", appointmentType))\r\n : yield AppointmentTypeService.updateAppointmentType(appointmentType)\r\n .then(NotificationStoreInstance.onSuccess(\"Appointment type updated\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to update appointment type\", appointmentType));\r\n\r\n this.clearCache({ queryKey: [SearchService.SearchEndPoints.appointmentTypes] })\r\n this.loading = false;\r\n });\r\n}\r\n","import { action, makeObservable, observable, flow } from 'mobx';\r\nimport { ClientStore } from '@hospital/views/clients'\r\nimport { ClientModel } from '@common/models'\r\nimport { NotificationStore, NotificationStoreInstance } from \"@common/stores\";\r\nimport { ClientService } from '@common/services';\r\n\r\nexport interface IDuplicateClientStore extends Partial {\r\n notificationStore: NotificationStore;\r\n clientStore: ClientStore;\r\n}\r\n\r\nexport class DuplicateClientStore {\r\n notificationStore!: NotificationStore;\r\n clientStore!: ClientStore;\r\n @observable newClient?: ClientModel | undefined;\r\n @observable pendingClient?: ClientModel;\r\n @observable targetClient: ClientModel | undefined = undefined;\r\n @observable loading: boolean = false;\r\n @observable visible: boolean = false;\r\n @observable continueWithCreation: boolean = false;\r\n\r\n @action.bound show(): void {\r\n this.visible = true;\r\n }\r\n\r\n @action.bound close(): void {\r\n this.visible = false;\r\n }\r\n\r\n /**\r\n * Sets the client that's pending creation\r\n */\r\n @action.bound setPendingClient(pendingClient: ClientModel) {\r\n if (pendingClient === undefined) return;\r\n this.pendingClient = pendingClient;\r\n }\r\n\r\n /**\r\n * Sets the client to be added, without duplicate matches\r\n */\r\n @action.bound setNewClient(newClient: ClientModel | undefined) {\r\n this.newClient = newClient;\r\n }\r\n\r\n /**\r\n * Upserts the pending client model.\r\n * This action is triggered if a matching record is found but the user still wants to create the new client. \r\n */\r\n confirm = flow(function* (this: DuplicateClientStore) {\r\n if (this.pendingClient !== undefined) {\r\n yield this.clientStore.upsertClient(this.pendingClient)\r\n .then(() => { this.close(); })\r\n .catch(() => this.notificationStore.error(\"Failed to upsert client.\"));\r\n }\r\n });\r\n\r\n /**\r\n * This fetch client implementation is specific to the duplicate client workflow and sets the client that's being drilled into on the ClientTable.\r\n */\r\n fetchClient = flow(function* (this: DuplicateClientStore, clientId: string) {\r\n this.loading = true;\r\n\r\n this.targetClient = yield ClientService.getClient(clientId)\r\n .catch(NotificationStoreInstance.onError('Failed to fetch client.', null));\r\n\r\n this.loading = false;\r\n });\r\n\r\n constructor(init?: IDuplicateClientStore) {\r\n Object.assign(this, init);\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n}\r\n","import { makeObservable } from 'mobx';\r\nimport { ClientConfigurationModel, HospitalOrganizationListingModel, IHospitalOrganizationListingModel, IOrderByParams } from '@common/models';\r\nimport { StandardSearchStore } from '@common/stores';\r\nimport { SearchService } from '@common/services/searchService';\r\n\r\nconst defaultHospitalSortOrder: Array = [\r\n {\r\n field: \"ot.ParentOrganizationId\",\r\n dir: \"asc\"\r\n },\r\n {\r\n field: \"ot.Name\",\r\n dir: \"asc\"\r\n }\r\n]\r\nexport interface IHospitalOrganizationsSearchFilter {\r\n searchterm?: string,\r\n uid?: number,\r\n dropCorpId?: number,\r\n unrelated: 0 | 1 | undefined;\r\n}\r\n\r\nconst defaultHospitalSearchFilter: IHospitalOrganizationsSearchFilter = {\r\n searchterm: undefined,\r\n dropCorpId: undefined,\r\n unrelated: undefined\r\n}\r\nexport class HospitalOrganizationsSearchStore extends StandardSearchStore {\r\n\r\n constructor(configuration: ClientConfigurationModel, defaultSearchFilterOverrides?: Partial) {\r\n super({\r\n endpointUrl: SearchService.SearchEndPoints.hospitalOrganizations,\r\n defaultSearchParams: {\r\n orderby: defaultHospitalSortOrder, top: 10\r\n },\r\n defaultSearchFilter: {\r\n ...defaultHospitalSearchFilter,\r\n dropCorpId: configuration.currentCorpOrganization.organizationId,\r\n ...defaultSearchFilterOverrides\r\n },\r\n }, (result: IHospitalOrganizationListingModel) => new HospitalOrganizationListingModel(result));\r\n makeObservable(this, undefined);\r\n }\r\n}\r\n","import { computed, makeObservable } from \"mobx\";\r\nimport { IUserListingModel, ISearchParams, UserListingModel } from '@common/models';\r\nimport { StandardSearchStore } from \"@common/stores\";\r\nimport { SearchService } from \"@common/services/searchService\";\r\nimport { ISelectOption, ISelectOptionString } from \"@common/components/forms\";\r\nimport { IQueryCacheStoreInit } from \"@common/stores/QueryCacheStore\";\r\nimport { StringUtility } from \"@common/utils\";\r\n\r\nexport interface IUserSearchAllFilter {\r\n emailAddress?: string\r\n firstName?: string\r\n lastName?: string\r\n authRoleID?: number\r\n employmentstatusactive?: boolean\r\n}\r\n\r\nexport interface IUserSearchOrgFilter extends IUserSearchAllFilter {\r\n ovid?: number\r\n osid?: number\r\n ocode?: string\r\n otid?: number\r\n uid?: number\r\n}\r\n\r\n\r\nconst defaultUserAllSearchFilter: IUserSearchAllFilter = {\r\n emailAddress: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n authRoleID: undefined,\r\n employmentstatusactive: undefined\r\n}\r\n\r\nconst defaultUserOrgSearchFilter: IUserSearchOrgFilter = {\r\n emailAddress: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n authRoleID: undefined,\r\n employmentstatusactive: undefined,\r\n ovid: 1,\r\n osid: 1,\r\n ocode: undefined,\r\n otid: undefined,\r\n uid: undefined\r\n}\r\n\r\nconst defaultSearchParams: ISearchParams = {\r\n skip: 0,\r\n top: 20,\r\n orderby: [{ field: \"lastName\", dir: \"asc\" }],\r\n search: undefined\r\n}\r\n\r\nexport type UserSearchStoreAllInit = {\r\n scope: 'all'\r\n};\r\n\r\nexport type UserSearchStoreOrgInit = {\r\n scope: 'org',\r\n organizationVersionId?: number\r\n organizationSourceId?: number\r\n organizationRelationKey?: string\r\n organizationTypeId?: number\r\n}\r\n\r\nexport type UserSearchStoreInit = UserSearchStoreAllInit | UserSearchStoreOrgInit;\r\n\r\nexport interface IUserSearchStoreInit {\r\n\r\n}\r\n\r\nexport class UserSearchStore extends StandardSearchStore {\r\n\r\n @computed get userSelectOptions() {\r\n return _.orderBy(this.searchResults.results, 'lastName')\r\n .map(u => ({\r\n label: StringUtility.formattedUserName(u.firstName, u.lastName, u.title),\r\n value: u.userId\r\n })) as ISelectOption[];\r\n }\r\n\r\n @computed get userSelectOptionsStrings() {\r\n return _.orderBy(this.searchResults.results.filter(u => u.isProfileActive), 'lastName')\r\n .map(({ firstName, lastName, title }) => ({\r\n label: StringUtility.formattedUserName(firstName, lastName, title),\r\n value: StringUtility.formattedUserName(firstName, lastName, title)\r\n })) as ISelectOptionString[];\r\n }\r\n\r\n constructor(init?: UserSearchStoreAllInit | UserSearchStoreOrgInit, overrides?: Partial, queryClientInit?: IQueryCacheStoreInit) {\r\n super({\r\n endpointUrl: (!init || init.scope === 'all' ? SearchService.SearchEndPoints.users : (init.scope === 'org' ? SearchService.SearchEndPoints.organizationUsers : SearchService.SearchEndPoints.users)),\r\n defaultSearchParams: { ...defaultSearchParams, ...overrides?.defaultSearchParams },\r\n defaultSearchFilter: !init || init.scope === 'all' ? {\r\n ...defaultUserAllSearchFilter\r\n } : (init.scope === 'org' ? {\r\n ...defaultUserOrgSearchFilter,\r\n ovid: init?.organizationVersionId,\r\n osid: init?.organizationSourceId,\r\n ocode: init?.organizationRelationKey,\r\n otid: init?.organizationTypeId,\r\n } : {}),\r\n },\r\n (result: IUserListingModel) => new UserListingModel(result),\r\n queryClientInit\r\n );\r\n Object.assign(this, overrides);\r\n makeObservable(this, undefined); //can't use autoBind in derrived class if already called in sub class.\r\n }\r\n}\r\n","import { flow, makeObservable, observable } from \"mobx\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\nimport { VetScheduleRequest } from \"@common/models/requests/VetScheduleRequest\";\r\nimport { VeterinarianModel } from \"@common/models\";\r\nimport { VeterinarianService } from \"@common/services\";\r\n\r\n\r\nexport class VeterinarianStore {\r\n @observable veterinarian?: VeterinarianModel = undefined;\r\n @observable loading: boolean = false;\r\n\r\n constructor() {\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n fetchVeterinarianByVetId = flow(function* (this: VeterinarianStore, vetId: number): Generator, void, any> {\r\n this.loading = true;\r\n\r\n this.veterinarian = yield VeterinarianService.getVeterinarianByVetId(vetId)\r\n .catch(NotificationStoreInstance.onError(\"Failed to fetch vet record.\", undefined));\r\n\r\n this.loading = false;\r\n });\r\n\r\n fetchVeterinarianByUserId = flow(function* (this: VeterinarianStore, userId: number): Generator, void, any> {\r\n this.loading = true;\r\n\r\n this.veterinarian = yield VeterinarianService.getVeterinarianByUserId(userId)\r\n .catch(NotificationStoreInstance.onError(\"Failed to fetch vet record.\", undefined));\r\n\r\n this.loading = false;\r\n });\r\n\r\n saveSchedulePreferences = flow(function* (this: VeterinarianStore, request: VetScheduleRequest): Generator, void, any> {\r\n if (!this.veterinarian) return;\r\n this.loading = true;\r\n\r\n this.veterinarian = yield VeterinarianService.saveSchedulePreferences(this.veterinarian.veterinarianId, request)\r\n .catch(NotificationStoreInstance.onError(\"Failed to update schedule preferences.\", this.veterinarian));\r\n\r\n this.loading = false;\r\n });\r\n}\r\n","import { makeObservable } from 'mobx';\r\nimport { ClientConfigurationModel, HospitalScheduleTemplateListingModel, IHospitalScheduleTemplateListingModel, IOrderByParams } from '@common/models';\r\nimport { StandardSearchStore } from '@common/stores';\r\nimport { SearchService } from '@common/services/searchService';\r\n\r\nconst defaultScheduleTemplateSearchOrder: Array = [\r\n {\r\n field: \"name\",\r\n dir: \"asc\"\r\n }\r\n]\r\n// var searchTerm = searchRequest.GetFilterValueAsString(\"searchTerm\");\r\n// var hospitalId = searchRequest.GetFilterValueAsInt(\"hospitalId\");\r\n// var isActive = searchRequest.GetFilterValueAsBool(\"isActive\");\r\n// var isDefault = searchRequest.GetFilterValueAsBool(\"isDefault\");\r\nexport interface IHospitalScheduleTemplatSearchFilter {\r\n searchTerm?: string,\r\n hospitalId?: number,\r\n isActive?: boolean,\r\n isDefault?: boolean\r\n}\r\n\r\nconst defaultHospitalScheduleTemplateSearchFilter: IHospitalScheduleTemplatSearchFilter = {\r\n searchTerm: undefined,\r\n hospitalId: undefined,\r\n isActive: undefined,\r\n isDefault: undefined\r\n}\r\n\r\nexport class HospitalScheduleTemplateSearchStore extends StandardSearchStore {\r\n\r\n constructor(configuration: ClientConfigurationModel, defaultSearchFilterOverrides?: Partial) {\r\n super({\r\n endpointUrl: SearchService.SearchEndPoints.hospitalScheduleTemplates,\r\n defaultSearchParams: {\r\n orderby: defaultScheduleTemplateSearchOrder, top: 10\r\n },\r\n defaultSearchFilter: {\r\n ...defaultHospitalScheduleTemplateSearchFilter,\r\n ...defaultSearchFilterOverrides\r\n },\r\n }, (result: IHospitalScheduleTemplateListingModel) => new HospitalScheduleTemplateListingModel(result));\r\n makeObservable(this, undefined);\r\n }\r\n}\r\n","import { HospitalScheduleTemplateModel } from \"@common/models\";\r\nimport { HospitalScheduleTemplateRequest } from \"@common/models/requests\";\r\nimport { HospitalService } from \"@common/services\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\nimport { flow, makeAutoObservable } from \"mobx\";\r\n\r\n\r\nexport class HospitalScheduleTemplateStore {\r\n private _hospitalScheduleTemplate: HospitalScheduleTemplateModel | undefined;\r\n isHospitalScheduleTemplateLoading: boolean = false;\r\n isSaving: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n get hospitalScheduleTemplate() {\r\n return this._hospitalScheduleTemplate;\r\n }\r\n\r\n set hospitalScheduleTemplate(value: HospitalScheduleTemplateModel | undefined) {\r\n this._hospitalScheduleTemplate = value;\r\n }\r\n\r\n clearHospitalScheduleTemplate() {\r\n this.isHospitalScheduleTemplateLoading = true;\r\n this.isSaving = false;\r\n this.hospitalScheduleTemplate = undefined;\r\n this.isHospitalScheduleTemplateLoading = false;\r\n }\r\n\r\n loadHospitalScheduleTemplate = flow(function* (this: HospitalScheduleTemplateStore, hospitalScheduleTemplateId: number) {\r\n this.isHospitalScheduleTemplateLoading = true;\r\n this._hospitalScheduleTemplate = undefined;\r\n this._hospitalScheduleTemplate = yield HospitalService.getHospitalScheduleTemplate(hospitalScheduleTemplateId);\r\n this.isSaving = false;\r\n this.isHospitalScheduleTemplateLoading = false;\r\n });\r\n\r\n saveHospitalScheduleTemplate = flow(function* (this: HospitalScheduleTemplateStore, templateRequest: HospitalScheduleTemplateRequest) {\r\n this.isSaving = true;\r\n this._hospitalScheduleTemplate = undefined;\r\n const successMessage = `Successfully ${templateRequest.hospitalScheduleTemplateId === 0 ? 'created' : 'updated'} schedule template: ${templateRequest.name}`;\r\n const errorMessage = `Failed to ${templateRequest.hospitalScheduleTemplateId === 0 ? 'create' : 'update'} schedule template: ${templateRequest.name}`;\r\n\r\n this._hospitalScheduleTemplate = yield HospitalService.updateHospitalScheduleTemplate(templateRequest)\r\n .then(NotificationStoreInstance.onSuccess(successMessage))\r\n .catch(NotificationStoreInstance.onError(errorMessage, undefined));\r\n this.isSaving = false;\r\n });\r\n}\r\n","import { ClinicTaskListingModel, IClinicTaskListingModel, IOrderByParams } from \"@common/models\";\r\nimport { SearchService } from \"@common/services/searchService\";\r\nimport { StandardSearchStore } from \"@common/stores\";\r\nimport { isUndefined } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { makeObservable } from \"mobx\";\r\n\r\nexport interface IClinicTaskUserFilterable {\r\n\ttaskTypeId?: number;\r\n\tcreatorUserId?: number;\r\n\tassignedUserId?: number;\r\n\tassignedRoleId?: number;\r\n\tdateCreated?: DateTime;\r\n\tdateDue?: DateTime;\r\n\tdateResolved?: DateTime;\r\n\tisUrgent?: boolean;\r\n\tstartDate?: string;\r\n\tendDate?: string;\r\n\tresolvedByUserId?: number;\r\n\tresolvedBy?: string;\r\n}\r\nexport interface IClinicTaskFilter extends IClinicTaskUserFilterable {\r\n\thospitalId?: number;\r\n\topenTasks?: boolean;\r\n\tcurrentUserId?: number;\r\n}\r\n\r\nexport const defaultClinicTaskSearchFilter: IClinicTaskFilter = {};\r\n\r\nconst defaultClinicTaskSortOrder = (openTasks?: boolean): IOrderByParams[] => (isUndefined(openTasks) || openTasks ? [{ field: \"datecreated\", dir: \"desc\" }] : [{ field: \"closeddate\", dir: \"desc\" }]);\r\n\r\ninterface ClinicTaskSearchStoreArgs {\r\n\thospitalId: number;\r\n\topenTasks?: boolean;\r\n\tcurrentUserId?: number;\r\n\ttop?: number;\r\n\texplicitLoad?: boolean;\r\n\tstartDate?: string;\r\n\tendDate?: string;\r\n}\r\nexport class ClinicTaskSearchStore extends StandardSearchStore {\r\n\tconstructor({ hospitalId, openTasks, currentUserId, top = 10, explicitLoad = true, endDate, startDate }: ClinicTaskSearchStoreArgs) {\r\n\t\tsuper(\r\n\t\t\t{\t\t\t\t\r\n\t\t\t\tendpointUrl: explicitLoad ? SearchService.SearchEndPoints.tasks : SearchService.SearchEndPoints.tasksCount,\r\n\t\t\t\tdefaultSearchParams: {\r\n\t\t\t\t\torderby: explicitLoad ? defaultClinicTaskSortOrder(openTasks) : [],\r\n\t\t\t\t\ttop: top,\r\n\t\t\t\t},\r\n\t\t\t\tdefaultSearchFilter: {\r\n\t\t\t\t\t...defaultClinicTaskSearchFilter,\r\n\t\t\t\t\thospitalId,\r\n\t\t\t\t\topenTasks,\r\n\t\t\t\t\tcurrentUserId,\r\n\t\t\t\t\tstartDate,\r\n\t\t\t\t\tendDate,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tresult => new ClinicTaskListingModel(result)\r\n\t\t);\r\n\t\tmakeObservable(this, undefined);\r\n\t}\r\n}\r\n","import React from 'react';\r\nexport class componentUtility {\r\n static findByType(children: any, component: any): JSX.Element {\r\n const result: any = [];\r\n const type = component.displayName || component.name;\r\n React.Children.forEach(children, (child) => {\r\n const childType = child && child.type && (child.type.displayName || child.type.name);\r\n if (type.includes(childType)) {\r\n result.push(child);\r\n }\r\n });\r\n return result[0];\r\n }\r\n\r\n static createNewComponent(name: string, constructor: Function, render: Function) {\r\n let newComponent = function(this: any, props: React.PropsWithChildren): React.ReactElement {\r\n this.state = null;\r\n this.displayName = name;\r\n constructor.call(this, props);\r\n //return this because react calls the function with the new keyword, not returning this means typescript will complain that the component isn't a valid jsx element etc.\r\n return this;\r\n }\r\n\r\n newComponent.prototype.render = function() {\r\n return render();\r\n }\r\n\r\n Object.setPrototypeOf(newComponent.prototype, React.Component.prototype);\r\n return newComponent;\r\n }\r\n}\r\n\r\nexport default componentUtility;\r\n","export enum AppointmentTypes {\r\n \"Surgical Procedure\" = \"Surgical Procedure\",\r\n \"Dental Procedure\" = \"Dental Procedure\",\r\n \"Emergency\" = \"Emergency\",\r\n \"Euthanasia\" = \"Euthanasia\",\r\n \"Recheck / Follow Up\" = \"Recheck / Follow Up\",\r\n \"Injury / Illness / Specialty\" = \"Injury / Illness / Specialty\",\r\n \"Wellness\" = \"Wellness\",\r\n \"Vaccines + Preventative Services\" = \"Vaccines + Preventative Services\"\r\n}\r\n","import { AppointmentListingModel, HospitalModel, HospitalScheduleModel, schedule } from \"@common/models\";\r\nimport { AppointmentStatus, EntityScheduleType, WeekDay } from \"@common/models/Enums\";\r\nimport { HospitalScheduleDateRangeType } from \"@common/models/Enums/HospitalScheduleDateRangeType\";\r\nimport { HospitalScheduleRequestModel, EntityScheduleOverridePreferenceRequest } from \"@common/models/requests\";\r\nimport { HospitalService } from \"@common/services\";\r\nimport { NotificationStoreInstance } from \"@common/stores/NotificationStore\";\r\nimport { allDaysBetween, DateTimeUtils, fallsOnDayOfWeek } from \"@common/utils/datetimeUtils\";\r\nimport { hideSameDayReservationFromSameDay } from \"@hospital/utils\";\r\nimport { OverrideForm } from \"@models/forms/OverrideForm\";\r\nimport { DateTime } from \"luxon\";\r\nimport { computed, flow, IObservableArray, makeObservable, observable, runInAction } from \"mobx\";\r\n\r\nexport class HospitalScheduleStore {\r\n @observable _currentHospital: HospitalModel;\r\n @observable _schedule: schedule.ProcessedHospitalScheduleModel = schedule.ProcessedHospitalScheduleModel.getDefault();\r\n @observable _appointments: IObservableArray = observable.array([]);\r\n @observable _loadedDate?: DateTime;\r\n @observable _dateRange?: HospitalScheduleDateRangeType;\r\n\r\n constructor(currentHospital: HospitalModel) {\r\n this._currentHospital = currentHospital;\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n @computed get hospitalId() {\r\n return this._currentHospital.hospitalId;\r\n }\r\n\r\n @computed get schedule() {\r\n return this._schedule;\r\n }\r\n\r\n @computed get scheduleDay() {\r\n return _.first(_.first(this._schedule.hospitalSchedules)!.schedule)!;\r\n }\r\n\r\n @computed get scheduledEntities() {\r\n return this.scheduleDay.scheduledEntities;\r\n }\r\n\r\n @computed get allVets() {\r\n return this._schedule.veterinarians;\r\n }\r\n\r\n @computed get licensedVetsWithAccess() {\r\n return this._schedule.getVeterinarians(this._currentHospital.hospitalId, { day: this.scheduleDay.day, hasLicense: true });\r\n }\r\n\r\n @computed get unscheduledLicensedVetsWithAccess() {\r\n return this._schedule.getVeterinarians(this._currentHospital.hospitalId, { day: this.scheduleDay.day, isScheduled: false, hasLicense: true, hasAccess: true });\r\n }\r\n\r\n @computed get allTemplates() {\r\n return this._schedule.templates;\r\n }\r\n\r\n @computed get activeTemplates() {\r\n return this._schedule.getTemplates(this._currentHospital.hospitalId, { day: this.scheduleDay.day, isActive: true });\r\n }\r\n\r\n @computed get activeScheduleTemplates() {\r\n return this._schedule.getTemplates(this._currentHospital.hospitalId, { day: this.scheduleDay.day, isActive: true, isScheduled: true });\r\n }\r\n\r\n @computed get scheduledVeterinarians() {\r\n return this._schedule.veterinarians.filter(v => _.some(this.scheduleDay.scheduledEntities.filter(e => e.entityType === EntityScheduleType.Veterinarian && e.entityId === v.veterinarianId)));\r\n\r\n }\r\n @computed get allScheduledTemplates() {\r\n return this._schedule.getTemplates(this._currentHospital.hospitalId, { day: this.scheduleDay.day, isScheduled: true });\r\n }\r\n\r\n @computed get appointments() {\r\n return this._appointments;\r\n }\r\n\r\n\r\n /**\r\n * Filters all appointments that require no further action\r\n */\r\n @computed get completedAppointments(): Array {\r\n return _.filter(this._appointments, (appointment) => {\r\n return this.isCompletedAppointment(appointment);\r\n });\r\n }\r\n\r\n /**\r\n * Filters all applicable appointments today, hides completed appointments\r\n */\r\n @computed get todayAppointments(): Array {\r\n return _.reject(this._appointments, (appointment) => {\r\n return this.isCompletedAppointment(appointment);\r\n });\r\n }\r\n\r\n load = flow(function* (this: HospitalScheduleStore, date: DateTime, range: HospitalScheduleDateRangeType) {\r\n yield Promise.all([\r\n HospitalService.getHospitalSchedules(this._currentHospital.hospitalId, date, range),\r\n HospitalService.getAppointments(this._currentHospital.hospitalId, date, date.endOf('day'))\r\n ]).then(([schedule, appointments]) => {\r\n runInAction(() => {\r\n this._loadedDate = date;\r\n this._dateRange = range;\r\n this._schedule = schedule;\r\n this._appointments.clear();\r\n this._appointments = observable(appointments.filter(appt => hideSameDayReservationFromSameDay(appt, appointments)));\r\n })\r\n });\r\n });\r\n\r\n refresh = flow(function* (this: HospitalScheduleStore) {\r\n if (this._loadedDate && this._dateRange)\r\n yield this.load(this._loadedDate, this._dateRange);\r\n else\r\n throw 'refresh was called on HospitalScheduleStore in an invalid state, loadedDate or dateRange was never loaded. The schedule store should be loaded before using refresh.';\r\n });\r\n\r\n addAppointment(value: AppointmentListingModel) {\r\n this._appointments.push(value);\r\n }\r\n\r\n /**\r\n * Determines if the current appointment list is stale and should be refetched\r\n */\r\n checkForAppointmentUpdates = flow(function* (this: HospitalScheduleStore, date: DateTime) {\r\n const lastModifiedAppointmentTime = yield HospitalService.getLastModifiedAppointmentDate(\r\n this._currentHospital!.hospitalId, date, date.endOf('day'))\r\n .catch(NotificationStoreInstance.onError(\"Failed to sync Appointments\", undefined));\r\n\r\n if (lastModifiedAppointmentTime == null) return false;\r\n\r\n // Find the last modified appointment\r\n const sortedDates = this._appointments.map(x => DateTime.fromISO(x.lastModifiedDate, { zone: \"UTC\" }))\r\n .sort((a: DateTime, b: DateTime) => DateTimeUtils.sortDescDateTimes(a, b))\r\n\r\n const lastModified = _.first(sortedDates);\r\n\r\n // Check if an appointment for the current day/hospital has been updated since our last load\r\n return (lastModified === undefined || lastModified < DateTime.fromISO(lastModifiedAppointmentTime, { zone: \"UTC\" }));\r\n })\r\n\r\n addAdhocHospitalSchedule = flow(function* (this: HospitalScheduleStore, hospitalId: number, schedule: HospitalScheduleRequestModel) {\r\n yield HospitalService.addAdhocHospitalSchedule(hospitalId, schedule).catch(NotificationStoreInstance.onError('The Doctor failed to be added to the schedule.', undefined));\r\n });\r\n\r\n updateHospitalSchedule = flow(function* (this: HospitalScheduleStore, hospitalId: number, date: DateTime, schedule: HospitalScheduleRequestModel[]): Generator, HospitalScheduleModel[], any> {\r\n return yield HospitalService.updateHospitalSchedules(hospitalId, date, schedule, { showSuccess: true });\r\n });\r\n\r\n private isCompletedAppointment(appointment: AppointmentListingModel): boolean {\r\n return _.includes([AppointmentStatus.Cancelled, AppointmentStatus.Rescheduled, AppointmentStatus.NoShow, AppointmentStatus.Check_Out], appointment.appointmentStatusId);\r\n }\r\n\r\n public updateSchedulePreferenceOverrides = flow(function* (this: HospitalScheduleStore, overrides: EntityScheduleOverridePreferenceRequest[], date: DateTime) {\r\n return yield HospitalService.updateHospitalSchedulePreferenceOverrides(this._currentHospital.hospitalId, date, overrides)\r\n .then(() => NotificationStoreInstance.success(\"Overrides Updated!\"))\r\n .catch((error) => NotificationStoreInstance.error(`Failed to update overrides. ${error.message}`));\r\n });\r\n\r\n public createSchedulePreferenceOverrides = flow(function* (this: HospitalScheduleStore, data: OverrideForm, startDate: string) {\r\n const startTime = data.startTime && DateTime.fromJSDate(data.startTime!).set({ millisecond: 0 }).toISOTime({ includeOffset: false, suppressMilliseconds: true });\r\n const endTime = data.endTime && DateTime.fromJSDate(data.endTime!).set({ millisecond: 0 }).toISOTime({ includeOffset: false, suppressMilliseconds: true });\r\n const selectedDays = data.repeatDays.filter(e => e.selected).map(a => a.day);\r\n const dataVets = data.vets.filter(e => e.selected);\r\n const dataTemplates = data.templates.filter(e => e.selected);\r\n const dataStaticEntities = data.staticEntities.filter(e => e.selected);\r\n const recurrenceDates = this.getRecurrenceDates(startDate, data.repeatUntil!, selectedDays).filter(rd => rd !== DateTime.fromISO(startDate, { zone: 'UTC' }).toFormat('yyyy-LL-dd'));\r\n\r\n //Create override requests for every selected schedule entity on the override form\r\n const initialRequests = [...dataVets, ...dataTemplates, ...dataStaticEntities].map((entity) => {\r\n return new EntityScheduleOverridePreferenceRequest({\r\n storeId: this.hospitalId,\r\n entityType: entity.entityType,\r\n entityId: entity.entityId as EntityScheduleType,\r\n overrideDate: DateTime.fromISO(startDate, { zone: 'UTC' }).toFormat('yyyy-LL-dd'),\r\n startTime: startTime,\r\n endTime: endTime,\r\n dayOfWeek: WeekDay.fromDateTime(DateTime.fromISO(startDate, { zone: 'UTC' })),\r\n scheduleBlockTypeId: data.scheduleBlockTypeId,\r\n notes: data.notes\r\n });\r\n });\r\n\r\n\r\n //For each selected recurring date, copy all the initialRequests created from selected entities but with the recurring overrideDate/dayOfWeek updated\r\n const recurringRequests = _.flatMap(initialRequests.map(req => {\r\n return recurrenceDates.map(overrideDate => {\r\n return { ...req, ...{ overrideDate }, dayOfWeek: WeekDay.fromDateTime(DateTime.fromFormat(overrideDate, 'yyyy-LL-dd', { zone: 'UTC' })) }\r\n });\r\n }));\r\n\r\n return yield HospitalService.createHospitalSchedulePreferenceOverrides(this._currentHospital.hospitalId, startDate, _.concat(initialRequests, recurringRequests))\r\n .then(() => NotificationStoreInstance.success(\"Override Created!\"))\r\n .catch((error) => NotificationStoreInstance.error(`Failed to create override. ${error.message}`));\r\n });\r\n\r\n /**\r\n * Get all the days that match the current recurrence parameters\r\n * @param startDate \r\n * @param endDate \r\n * @param daysOfTheWeek \r\n */\r\n getRecurrenceDates = (startDate: string, endDate: string, daysOfTheWeek: WeekDay.Day[]) => {\r\n const requestedDates = Array.from(allDaysBetween(DateTime.fromISO(startDate, { zone: 'UTC' }), DateTime.fromISO(endDate, { zone: 'UTC' })));\r\n return requestedDates.filter(rd => daysOfTheWeek.some(ad => fallsOnDayOfWeek(ad, rd))).map(d => d.toISODate());\r\n }\r\n\r\n}\r\n","import { petcoBrightGray2, petcoText, petcoWhite } from \"@common/_assets/color-constants.js\";\r\nimport { AppointmentListingModel, IHospitalHoursModel, ScheduleBlockTypeModel, schedule } from \"@common/models\";\r\nimport { AppointmentStatus, EntityScheduleType, ReservationAssignmentStatuses, ScheduleBlockType } from \"@common/models/Enums\";\r\nimport { AppointmentTypes } from \"@common/models/Enums/AppointmentTypes\";\r\nimport { BaseEntitySchedulePreference, HospitalScheduleVeterinarianModel, ScheduleHospitalScheduleTemplateListingModel } from \"@common/models/Schedule\";\r\nimport { EventInput } from \"@fullcalendar/react\";\r\nimport { ResourceInput } from '@fullcalendar/resource-common';\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport const fullCalendarHoursOfOperationConverter = (hospitalHours: IHospitalHoursModel[] | undefined) => {\r\n const fullCalendarHospitalFormat = hospitalHours?.map((hospitalDay) => {\r\n const {\r\n openTime: startTime,\r\n closeTime: endTime,\r\n dayOfWeek,\r\n isOpen\r\n } = hospitalDay;\r\n if (isOpen) return {\r\n daysOfWeek: [dayOfWeek],\r\n startTime,\r\n endTime\r\n }\r\n return undefined;\r\n }).filter(x => x);\r\n return fullCalendarHospitalFormat;\r\n}\r\n\r\nexport const hideSameDayReservationFromSameDay = (appointment: AppointmentListingModel, appointments: AppointmentListingModel[]) => {\r\n const foundRescheduledSameDay = appointments.find(appointmentSelf => {\r\n // 1) reschedule\r\n // a) appointment changes status to rescheduled status\r\n // b) appointment gets a rescheduleReservationId\r\n // c) if appointments rescheduleReservationId matches another reservationId\r\n // d) remove the item that had that rescheduledReservationId.\r\n return appointment.rescheduledReservationId === appointmentSelf.reservationId\r\n })\r\n const notSameDayReservation = (foundRescheduledSameDay) ? false : true;\r\n return notSameDayReservation;\r\n}\r\n\r\nexport const hideSameDayReservationFromAllAppointments = (\r\n { appointment, appointments }:\r\n { appointment: AppointmentListingModel, appointments: AppointmentListingModel[] }\r\n) => {\r\n const foundRescheduledSameDay = appointments.find(appointmentSelf => {\r\n // 1) reschedule\r\n // a) appointment changes status to rescheduled status\r\n // b) appointment gets a rescheduleReservationId\r\n // c) if appointments rescheduleReservationId matches another reservationId\r\n // d) remove the item that had that rescheduledReservationId.\r\n const rescheduleFound = appointment.rescheduledReservationId === appointmentSelf.reservationId\r\n const sameDay = appointment.startDate === appointmentSelf.startDate\r\n return rescheduleFound && sameDay ? true : false\r\n })\r\n\r\n const notSameDayReservation = (foundRescheduledSameDay) ? false : true;\r\n return notSameDayReservation;\r\n}\r\n\r\nexport const makeBookingResource = (schedule: schedule.ProcessedHospitalScheduleModel, entity: schedule.HospitalScheduleDayEntityModel): ResourceInput | undefined => {\r\n const props: any = {}\r\n props.resourceType = entity.entityType;\r\n\r\n const vetOrTemplate = schedule.getScheduledEntity(entity);\r\n if (vetOrTemplate === undefined) return undefined;\r\n\r\n if (entity.entityType === EntityScheduleType.Veterinarian) {\r\n const vet = vetOrTemplate as HospitalScheduleVeterinarianModel;\r\n props.veterinarian = vet;\r\n props.sortText = vet.lastName + ',' + vet.firstName;\r\n } else if (entity.entityType === EntityScheduleType.Template) {\r\n const template = vetOrTemplate as ScheduleHospitalScheduleTemplateListingModel;\r\n props.template = template;\r\n props.sortText = template.name;\r\n } else {\r\n props.entityType = entity.entityType;\r\n props.sortText = entity.entityType === EntityScheduleType.Technician ? \"Technician\" : (entity.entityType === EntityScheduleType.Unassigned ? 'Unassigned' : 'Unknown');\r\n }\r\n\r\n const ret = {\r\n id: entity.uniqueId,\r\n title: entity.entityTitle,\r\n extendedProps: {\r\n ...props,\r\n resourceType: entity.entityType,\r\n entityType: entity.entityType,\r\n isAdHoc: entity.isAdhoc,\r\n order: entity.sortOrder,\r\n scheduleEntity: entity\r\n }\r\n }\r\n return ret;\r\n}\r\n\r\nexport const createBackgroundSchedulePreferenceEvent = (selectedDate: DateTime, entity: schedule.HospitalScheduleDayEntityModel, pref: schedule.ComputedSchedulePreference, blockType: ScheduleBlockTypeModel | null | undefined): EventInput => {\r\n const dateString = selectedDate.toFormat('yyyy-LL-dd');\r\n const startTime = DateTime.fromFormat(`${dateString} ${pref.startTime}`, 'yyyy-LL-dd TT', { zone: 'UTC' });\r\n const endTime = DateTime.fromFormat(`${dateString} ${pref.endTime}`, 'yyyy-LL-dd TT', { zone: 'UTC' });\r\n const blocking = isSchedulePrefBlocking(pref);\r\n\r\n return {\r\n id: 'background_' + pref.entityPreferenceId,\r\n resourceId: entity.uniqueId.toString(),\r\n title: pref.scheduleBlockTypeName ?? \"Unknown\",\r\n allDay: false,\r\n textColor: petcoText,\r\n backgroundColor: \"transparent\",\r\n className: !blocking ? 'backgroundUnblocked' : 'backgroundBlocked',\r\n start: startTime.toISO(),\r\n end: endTime.toISO(),\r\n editable: false,\r\n startEditable: false,\r\n display: 'background',\r\n resourceEditable: false,\r\n overlap: !blocking,\r\n extendedProps: {\r\n eventType: 'background',\r\n schedulePreference: pref,\r\n scheduleBlockType: blockType\r\n }\r\n }\r\n}\r\n\r\nexport const createAppointmentEvent = (appointment: AppointmentListingModel): EventInput => {\r\n let resourceId = \"0\";\r\n let unassignedResourceId = `0_${EntityScheduleType.Unassigned}`;\r\n let technicianResourceId = `-1_${EntityScheduleType.Technician}`;\r\n if (appointment.assignmentStatus !== undefined)\r\n switch (appointment.assignmentStatus) {\r\n case ReservationAssignmentStatuses.Unassigned:\r\n resourceId = unassignedResourceId;\r\n break;\r\n case ReservationAssignmentStatuses.Unassigned_Technician:\r\n case ReservationAssignmentStatuses.Assigned_Technician:\r\n resourceId = technicianResourceId;\r\n break;\r\n case ReservationAssignmentStatuses.Assigned:\r\n //resource id is entityId_entityTypeId, so need to add the type here, there can be resources with the same entity id, need type to make them unique.\r\n resourceId = appointment.veterinarianId ? appointment.veterinarianId.toString() + \"_\" + EntityScheduleType.Veterinarian.toString() : unassignedResourceId;\r\n break;\r\n case ReservationAssignmentStatuses.Assigned_Template:\r\n resourceId = appointment.hospitalScheduleTemplateId ? appointment.hospitalScheduleTemplateId.toString() + \"_\" + EntityScheduleType.Template.toString() : unassignedResourceId;\r\n break;\r\n default:\r\n throw 'Unknown assignment status';\r\n }\r\n\r\n return {\r\n id: `${appointment.reservationId}`,\r\n extendedProps: {\r\n eventType: 'appointment',\r\n appointment: appointment\r\n },\r\n resourceId: resourceId,\r\n title: appointment.appointmentTypeName,\r\n allDay: false,\r\n textColor: petcoText,\r\n editable: appointment.isBlockedFromReschedule(),\r\n display: appointment.shouldHide() ? \"none\" : \"block\",\r\n startEditable: appointment.isBlockedFromReschedule(),\r\n durationEditable: appointment.appointmentTypeName === AppointmentTypes[\"Vaccines + Preventative Services\"] ? false : true,\r\n resourceEditable: appointment.isBlockedFromReschedule(),\r\n backgroundColor: AppointmentStatus.showAsDormant(appointment.appointmentStatusId) ? petcoBrightGray2 : petcoWhite,\r\n className: \"appointmentEvent\",\r\n borderColor: appointment.appointmentTypeColor,\r\n start: DateTime.fromISO(appointment.startTime, { zone: 'UTC' }).toISO(),\r\n end: DateTime.fromISO(appointment.endTime, { zone: 'UTC' }).toISO()\r\n }\r\n}\r\n\r\nexport const isSchedulePrefBlocking = (schedulePref: schedule.ComputedSchedulePreference | BaseEntitySchedulePreference): boolean => {\r\n return schedulePref.scheduleBlockTypeId === ScheduleBlockType.Lunch ||\r\n schedulePref.scheduleBlockTypeId === ScheduleBlockType.Meeting ||\r\n schedulePref.scheduleBlockTypeId === ScheduleBlockType.Notes ||\r\n schedulePref.scheduleBlockTypeId === ScheduleBlockType.Event ||\r\n schedulePref.scheduleBlockTypeId === ScheduleBlockType.HolidayPTO ||\r\n schedulePref.scheduleBlockTypeId === ScheduleBlockType.Training;\r\n}\r\n","import { HospitalModel } from \"@common/models\";\r\nimport { HospitalPrescriptionRefillStatus } from \"@common/models/Enums\";\r\nimport { AddHospitalPrescriptionRefillRequest } from \"@common/models/requests/AddHospitalPrescriptionRefillRequest\";\r\nimport { CheckOutHospitalPrescriptionRefillRequest } from \"@common/models/requests/CheckOutHospitalPrescriptionRefillRequest\";\r\nimport { UpdateHospitalPrescriptionRefillRequest } from \"@common/models/requests/UpdateHospitalPrescriptionRefillRequest\";\r\nimport { HospitalService } from \"@common/services\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\nimport { flow, makeObservable, observable } from \"mobx\";\r\n\r\nexport class HospitalPrescriptionRefillStore {\r\n @observable currentHospital: HospitalModel;\r\n\r\n constructor(init: { currentHospital: HospitalModel }) {\r\n this.currentHospital = init.currentHospital;\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n createHospitalPrescriptionRefill = flow(function* (this: HospitalPrescriptionRefillStore, hospitalPrescriptionId: number, hospitalPrescriptionRefillStatusId: number, hospitalPrescriptionRowVersion: string) {\r\n var request = AddHospitalPrescriptionRefillRequest.ParseAddHospitalPrescriptionRefillRequest(hospitalPrescriptionId, hospitalPrescriptionRefillStatusId, this.currentHospital!.hospitalId, hospitalPrescriptionRowVersion);\r\n\r\n return yield HospitalService.createHospitalPrescriptionRefill(\r\n this.currentHospital!.hospitalId,\r\n request)\r\n .then(NotificationStoreInstance.onSuccess(request.hospitalPrescriptionRefillStatusId == HospitalPrescriptionRefillStatus.PendingPickup ? \"Prescription is pending pick up\" : \"Prescription is ready for pick up\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to create Prescription Refill.\", undefined));\r\n });\r\n\r\n checkoutHospitalPrescriptionRefill = flow(function* (this: HospitalPrescriptionRefillStore, hospitalPrescriptionRefillId: number, hospitalPrescriptionRefillRowVersion: string, hospitalPrescriptionRowVersion: string) {\r\n var request = CheckOutHospitalPrescriptionRefillRequest.ParseCheckOutHospitalPrescriptionRefillRequest(hospitalPrescriptionRefillId, hospitalPrescriptionRefillRowVersion, hospitalPrescriptionRowVersion);\r\n\r\n return yield HospitalService.checkOutHospitalPrescriptionRefill(\r\n this.currentHospital!.hospitalId,\r\n request)\r\n .then(NotificationStoreInstance.onSuccess(\"Prescription checked out\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to check out Prescription.\", undefined));\r\n });\r\n\r\n updateHospitalPrescriptionRefill = flow(function* (this: HospitalPrescriptionRefillStore, hospitalPrescriptionRefillId: number, hospitalPrescriptionId: number, hospitalPrescriptionRefillStatusId: number, hospitalPrescriptionRowVersion: string, rowVersion: string) {\r\n var request = UpdateHospitalPrescriptionRefillRequest.ParseUpdateHospitalPrescriptionRefillRequest(hospitalPrescriptionRefillId, hospitalPrescriptionId, hospitalPrescriptionRefillStatusId, hospitalPrescriptionRowVersion, rowVersion);\r\n\r\n return yield HospitalService.updateHospitalPrescriptionRefill(\r\n this.currentHospital!.hospitalId,\r\n request)\r\n .then(NotificationStoreInstance.onSuccess(\"Prescription updated\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to update Prescription.\", undefined));\r\n });\r\n}\r\n","\r\nexport interface IAddHospitalPrescriptionRefillRequest {\r\n hospitalPrescriptionId: number;\r\n hospitalPrescriptionRefillStatusId: number;\r\n hospitalId: number;\r\n hospitalPrescriptionRowVersion: string;\r\n}\r\n\r\nexport class AddHospitalPrescriptionRefillRequest implements IAddHospitalPrescriptionRefillRequest {\r\n hospitalPrescriptionId: number;\r\n hospitalPrescriptionRefillStatusId: number;\r\n hospitalId: number;\r\n hospitalPrescriptionRowVersion: string;\r\n\r\n constructor(params: IAddHospitalPrescriptionRefillRequest) {\r\n this.hospitalPrescriptionId = params.hospitalPrescriptionId;\r\n this.hospitalPrescriptionRefillStatusId = params.hospitalPrescriptionRefillStatusId;\r\n this.hospitalId = params.hospitalId;\r\n this.hospitalPrescriptionRowVersion = params.hospitalPrescriptionRowVersion;\r\n }\r\n\r\n static ParseAddHospitalPrescriptionRefillRequest(hospitalPrescriptionId: number, hospitalPrescriptionRefillStatusId: number, hospitalId: number, hospitalPrescriptionRowVersion: string): IAddHospitalPrescriptionRefillRequest {\r\n return {\r\n hospitalPrescriptionId,\r\n hospitalPrescriptionRefillStatusId,\r\n hospitalId,\r\n hospitalPrescriptionRowVersion\r\n }\r\n }\r\n}\r\n","\r\nexport interface ICheckOutHospitalPrescriptionRefillRequest {\r\n hospitalPrescriptionRefillId: number;\r\n hospitalPrescriptionRefillRowVersion: string;\r\n hospitalPrescriptionRowVersion: string;\r\n}\r\n\r\nexport class CheckOutHospitalPrescriptionRefillRequest implements ICheckOutHospitalPrescriptionRefillRequest {\r\n hospitalPrescriptionRefillId: number;\r\n hospitalPrescriptionRefillRowVersion: string;\r\n hospitalPrescriptionRowVersion: string;\r\n\r\n constructor(params: ICheckOutHospitalPrescriptionRefillRequest) {\r\n this.hospitalPrescriptionRefillId = params.hospitalPrescriptionRefillId;\r\n this.hospitalPrescriptionRefillRowVersion = params.hospitalPrescriptionRefillRowVersion;\r\n this.hospitalPrescriptionRowVersion = params.hospitalPrescriptionRowVersion;\r\n }\r\n\r\n static ParseCheckOutHospitalPrescriptionRefillRequest(hospitalPrescriptionRefillId: number, hospitalPrescriptionRefillRowVersion: string, hospitalPrescriptionRowVersion: string): ICheckOutHospitalPrescriptionRefillRequest {\r\n return {\r\n hospitalPrescriptionRefillId,\r\n hospitalPrescriptionRefillRowVersion,\r\n hospitalPrescriptionRowVersion\r\n }\r\n }\r\n}\r\n","\r\nexport interface IUpdateHospitalPrescriptionRefillRequest {\r\n hospitalPrescriptionRefillId: number;\r\n hospitalPrescriptionId: number;\r\n hospitalPrescriptionRefillStatusId: number;\r\n hospitalPrescriptionRowVersion: string;\r\n rowVersion: string;\r\n}\r\n\r\nexport class UpdateHospitalPrescriptionRefillRequest implements IUpdateHospitalPrescriptionRefillRequest {\r\n hospitalPrescriptionRefillId: number;\r\n hospitalPrescriptionId: number;\r\n hospitalPrescriptionRefillStatusId: number;\r\n hospitalPrescriptionRowVersion: string;\r\n rowVersion: string;\r\n\r\n constructor(params: IUpdateHospitalPrescriptionRefillRequest) {\r\n this.hospitalPrescriptionRefillId = params.hospitalPrescriptionRefillId;\r\n this.hospitalPrescriptionId = params.hospitalPrescriptionId;\r\n this.hospitalPrescriptionRefillStatusId = params.hospitalPrescriptionRefillStatusId;\r\n this.hospitalPrescriptionRowVersion = params.hospitalPrescriptionRowVersion;\r\n this.rowVersion = params.rowVersion;\r\n }\r\n\r\n static ParseUpdateHospitalPrescriptionRefillRequest(hospitalPrescriptionRefillId: number, hospitalPrescriptionId: number, hospitalPrescriptionRefillStatusId: number, hospitalPrescriptionRowVersion: string, rowVersion: string): IUpdateHospitalPrescriptionRefillRequest {\r\n return {\r\n hospitalPrescriptionRefillId,\r\n hospitalPrescriptionId,\r\n hospitalPrescriptionRefillStatusId,\r\n hospitalPrescriptionRowVersion,\r\n rowVersion\r\n }\r\n }\r\n}\r\n","import { VisitModel } from \"@common/models/VisitModel\";\r\nimport { VisitService } from \"@common/services/visitService\";\r\nimport { flow, makeObservable, observable } from \"mobx\";\r\n\r\nexport class VisitStore {\r\n @observable visit: VisitModel | undefined = undefined;\r\n\r\n constructor() {\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n public getVisit = flow(function* (this: VisitStore, visitId: number) {\r\n this.visit = yield VisitService.getVisit(visitId);\r\n });\r\n}\r\n","import { IMacroModel, MacroModel } from \"@common/models\";\r\nimport { HospitalService } from \"@common/services\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\nimport { flow, makeObservable, observable } from \"mobx\";\r\n\r\nexport class MacroStore {\r\n @observable macro: MacroModel | undefined;\r\n\r\n constructor() {\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n getMacro = flow(function* (this: MacroStore, macroId: number, macroTargetTypeId?: number) {\r\n this.macro = yield HospitalService.getMacro(macroId, macroTargetTypeId);\r\n });\r\n\r\n /**\r\n * Adds or update a macro\r\n * @param this current MacroStore reference\r\n * @param macro macro model to create\r\n */\r\n upsertMacro = flow(function* (this: MacroStore, macro: IMacroModel) {\r\n this.macro = macro.macroId === 0\r\n ? yield HospitalService.createMacro(macro)\r\n .then(NotificationStoreInstance.onSuccess(\"Communication Template added\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to add Communication Template\", macro))\r\n : yield HospitalService.updateMacro(macro)\r\n .then(NotificationStoreInstance.onSuccess(\"Communication Template updated\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to update Communication Template\", macro));\r\n });\r\n\r\n deleteMacro = flow(function* (this: MacroStore, macroId: number) {\r\n this.macro = yield HospitalService.deleteMacro(macroId);\r\n });\r\n}\r\n","import { ClientConfigurationModel, IBlobSasModel, IPhotoRequest } from \"@common/models\";\r\nimport { BlobEntityType, HospitalPrescriptionStatus, MimeType } from \"@common/models/Enums\";\r\nimport { HospitalPrescriptionCancelModel } from \"@common/models/HospitalPrescriptionCancelModel\";\r\nimport { HospitalPrescriptionModel } from \"@common/models/HospitalPrescriptionModel\";\r\nimport { RXServiceDispensingHistoryItemModel } from \"@common/models/RXServiceDispensingHistoryItemModel\";\r\nimport { RxSKUItemModel } from \"@common/models/RxSKUItemModel\";\r\nimport { DispensingHistoryRequest } from \"@common/models/requests/DispensingHistoryRequest\";\r\nimport { HospitalService, PrescriptionService } from \"@common/services\";\r\nimport { AzureBlobStore, NotificationStoreInstance } from \"@common/stores\";\r\nimport { QueryClient } from \"@tanstack/react-query\";\r\nimport { flow, makeObservable, observable } from \"mobx\";\r\nimport { v4 as uuid } from 'uuid';\r\n\r\nexport type HospitalPrescriptionStoreInit = {\r\n configuration?: ClientConfigurationModel,\r\n queryClient?: QueryClient\r\n}\r\n\r\nexport class HospitalPrescriptionStore {\r\n @observable hospitalPrescriptions: HospitalPrescriptionModel[] | undefined;\r\n @observable hospitalPrescription: HospitalPrescriptionModel | undefined;\r\n @observable rxSKUItem: RxSKUItemModel[] | undefined;\r\n @observable dispensingHistory: RXServiceDispensingHistoryItemModel[] = [];\r\n @observable dispensingServiceUnavailable: boolean | undefined;\r\n configuration: ClientConfigurationModel | undefined;\r\n queryClient: QueryClient | undefined;\r\n\r\n constructor(init?: HospitalPrescriptionStoreInit) {\r\n this.configuration = init?.configuration;\r\n this.queryClient = init?.queryClient;\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n /**\r\n * Adds or update a collection of Hospital Prescriptions\r\n * @param this current HospitalPrescriptionStore reference\r\n * @param hospitalPrescriptions array of HospitalPrescription models to create/update\r\n */\r\n upsertHospitalPrescriptions = flow(function* (this: HospitalPrescriptionStore, hospitalId: number, hospitalPrescriptions: HospitalPrescriptionModel[]) {\r\n this.hospitalPrescriptions = yield HospitalService.upsertHospitalPrescriptions(hospitalId, hospitalPrescriptions)\r\n .then(NotificationStoreInstance.onSuccess(`Hospital Prescriptions ${hospitalPrescriptions[0].hospitalPrescriptionStatusId === HospitalPrescriptionStatus.Cancelled ? 'canceled' : 'updated'}`))\r\n .catch(NotificationStoreInstance.onError(\"Failed to update Hospital Prescription\", hospitalPrescriptions));\r\n });\r\n\r\n cancelHospitalPrescription = flow(function* (this: HospitalPrescriptionStore, hospitalPrescriptionId: number, cancelData: HospitalPrescriptionCancelModel) {\r\n return yield HospitalService.cancelHospitalPrescription(hospitalPrescriptionId, cancelData)\r\n .then(NotificationStoreInstance.onSuccess(\"Hospital Prescriptions canceled\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to cancel Hospital Prescription\", cancelData));\r\n });\r\n\r\n public savePrescriptionSignature = flow(function* (this: HospitalPrescriptionStore, image: string) {\r\n return yield this.uploadSignature(image, `signaturePhoto-prescription-${uuid()}.png`);\r\n });\r\n\r\n private uploadSignature = flow(function* (this: HospitalPrescriptionStore, image: string, filename: string) {\r\n const blobStore = new AzureBlobStore({ containerName: BlobEntityType.Signatures });\r\n const blobSas: IBlobSasModel = yield blobStore.uploadDataUrl(image, filename, MimeType.PNG);\r\n const photoRequest: IPhotoRequest = {\r\n container: blobSas.container,\r\n fileName: blobSas.fileName,\r\n photoUrl: blobSas.sasUrl\r\n };\r\n\r\n return photoRequest;\r\n });\r\n\r\n public getHospitalPrescription = flow(function* (this: HospitalPrescriptionStore, hospitalPrescriptionId: number) {\r\n this.hospitalPrescription = yield PrescriptionService.getHospitalPrescription(hospitalPrescriptionId);\r\n });\r\n\r\n public getRXDispensingHistory = flow(function* (this: HospitalPrescriptionStore, request: DispensingHistoryRequest) {\r\n this.dispensingHistory = yield PrescriptionService.getRXDispensingHistory(request)\r\n .catch(() => { this.dispensingServiceUnavailable = true });\r\n });\r\n\r\n public getRXSKUQuantities = flow(function* (this: HospitalPrescriptionStore) {\r\n if (!this.queryClient) {\r\n this.rxSKUItem = yield PrescriptionService.getRXSKUQuantities();\r\n return;\r\n }\r\n\r\n this.rxSKUItem = yield this.queryClient.fetchQuery({\r\n queryKey: [PrescriptionService.tags.getRXSKUQuantities],\r\n queryFn: () => PrescriptionService.getRXSKUQuantities(),\r\n staleTime: this.configuration?.longClientSideCacheTimeToLive ?? 28800000\r\n });\r\n });\r\n\r\n public recallHospitalPrescription = flow(function* (this: HospitalPrescriptionStore, hospitalPrescriptionId: number) {\r\n return yield PrescriptionService.recallHospitalPrescription(hospitalPrescriptionId)\r\n .then(NotificationStoreInstance.onSuccess(\"Hospital Prescriptions recalled\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to recall Hospital Prescription\", {}));\r\n });\r\n\r\n public transferHospitalPrescription = flow(function* (this: HospitalPrescriptionStore, hospitalPrescriptionId: number, note: string) {\r\n return yield PrescriptionService.transferHospitalPrescription(hospitalPrescriptionId, note)\r\n .then(NotificationStoreInstance.onSuccess(\"Hospital Prescriptions transfered\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to transfer Hospital Prescription\", {}));\r\n });\r\n}\r\n","import { SalesPackageModel, SalesPlanModel } from \"@common/models\";\r\nimport { IWellnessExamSalesItem } from \"@common/models/forms\";\r\nimport { makeAllBold } from \"@common/utils\";\r\nimport { action, computed, makeObservable, observable } from \"mobx\";\r\nimport { ISalesStore } from \"@hospital/stores/SalesStore\";\r\n\r\nexport type SalesBuilderSearchResults = {\r\n searchQueryApplied: boolean,\r\n queryPatterns: undefined | string[],\r\n totalRegularSalesItemsCount: number,\r\n regularSalesItems: IWellnessExamSalesItem[],\r\n totalDiscountedSalesItemCount: number,\r\n discountedSalesItems: IWellnessExamSalesItem[],\r\n totalSalesPackageCount: number,\r\n salesPackages: SalesPackageModel[],\r\n totalSalesPlanCount: number\r\n salesPlans: SalesPlanModel[]\r\n}\r\n\r\nexport class SalesBuilderSearchStore {\r\n @observable salesStore!: ISalesStore;\r\n @observable _searchQuery: string | undefined = undefined;\r\n @observable searchQueryApplied: boolean = false;\r\n\r\n @computed get queryPatterns() {\r\n if (!this._searchQuery)\r\n return undefined;\r\n return this._searchQuery.trim().toLowerCase().split(\" \").map(qp => qp.trim()).filter(qp => qp != \"\");\r\n }\r\n\r\n constructor(opts: ISalesStore) {\r\n this.salesStore = opts;\r\n\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n /**\r\n * Wraps up the regular sales items, discounted sales items, plans, and packages into one search results object.\r\n * @returns An object with the search query, whether it's applied, and all the arrays of sales items, packages, plans, and discounted sales items with or without the search query applied\r\n */\r\n @computed get searchResults() {\r\n let ret: SalesBuilderSearchResults = {\r\n searchQueryApplied: false,\r\n queryPatterns: this.queryPatterns,\r\n totalRegularSalesItemsCount: this.salesStore.totalRegularSalesItems,\r\n totalDiscountedSalesItemCount: this.salesStore.totalDiscountSalesItems,\r\n totalSalesPackageCount: this.salesStore.totalSalesPackageCount,\r\n totalSalesPlanCount: this.salesStore.totalSalesPlanCount,\r\n regularSalesItems: this.salesStore.regularSalesItems,\r\n discountedSalesItems: this.salesStore.discountedSalesItems,\r\n salesPackages: this.salesStore.salesPackages,\r\n salesPlans: this.salesStore.salesPlans\r\n };\r\n\r\n if (!this.queryPatterns)\r\n return ret;\r\n else {\r\n ret.searchQueryApplied = true;\r\n ret.regularSalesItems = this.salesStore.regularSalesItems.filter(si => this.queryPatterns!.every(q => si.searchPattern.includes(q))).map(si => {\r\n return { ...si, name: makeAllBold(si.name, this.queryPatterns!), option: makeAllBold(si.option, this.queryPatterns!) };\r\n });\r\n ret.discountedSalesItems = this.salesStore.discountedSalesItems.filter(si => this.queryPatterns!.every(q => si.searchPattern.includes(q))).map(si => {\r\n return { ...si, name: makeAllBold(si.name, this.queryPatterns!), option: makeAllBold(si.option, this.queryPatterns!) };\r\n });\r\n ret.salesPlans = this.salesStore.salesPlans.filter(sp => this.queryPatterns!.every(q => (sp.name ? sp.name.toLowerCase() : '').includes(q))).map(sp => {\r\n return new SalesPlanModel({ ...sp, name: makeAllBold(sp.name, this.queryPatterns!) });\r\n });\r\n ret.salesPackages = this.salesStore.salesPackages.filter(sp => this.queryPatterns!.every(q => (`${sp.name} ${sp.displayName}`.toLowerCase().includes(q)))).map(sp => {\r\n return new SalesPackageModel({ ...sp, name: makeAllBold(sp.name, this.queryPatterns!), displayName: makeAllBold(sp.displayName, this.queryPatterns!) });\r\n });\r\n return ret;\r\n }\r\n }\r\n\r\n @action.bound setSearchQuery(searchQuery: undefined | string) {\r\n this._searchQuery = searchQuery;\r\n }\r\n}\r\n","import {\r\n IWellnessExamSalesItem, SalesItemModel,\r\n SalesPackageModel, SalesPlanModel\r\n} from \"@common/models\";\r\nimport { DiscountItemTypes, SalesItemType, Traits } from \"@common/models/Enums\";\r\nimport { SalesBuilderSearchStore } from \"@hospital/stores/SalesBuilderSearchStore\";\r\nimport { computed, makeObservable, observable } from \"mobx\";\r\n\r\nexport interface ISalesStore {\r\n salesItems: IWellnessExamSalesItem[];\r\n salesPackages: SalesPackageModel[];\r\n salesPlans: SalesPlanModel[];\r\n regularSalesItems: IWellnessExamSalesItem[];\r\n discountedSalesItems: IWellnessExamSalesItem[];\r\n totalRegularSalesItems: number;\r\n totalDiscountSalesItems: number;\r\n totalSalesPackageCount: number;\r\n totalSalesPlanCount: number;\r\n filterToSalesItemsThatCanBeAddedByUsers: (salesItems: SalesItemModel[]) => SalesItemModel[];\r\n filterToSalesItemsThatIsAnesethieaMedication: (salesItems: SalesItemModel[]) => SalesItemModel[]\r\n filterToSalesItemsForOutpatientPrescriptions: (salesItems: SalesItemModel[]) => SalesItemModel[]\r\n mapSalesItemsForVisitBuilder: (salesItems: SalesItemModel[]) => IWellnessExamSalesItem[];\r\n}\r\n\r\nexport abstract class SalesStore implements ISalesStore {\r\n @observable salesItems: IWellnessExamSalesItem[] = [];\r\n @observable salesPackages: SalesPackageModel[] = [];\r\n @observable salesPlans: SalesPlanModel[] = [];\r\n @observable visitBuilderSearch: SalesBuilderSearchStore = new SalesBuilderSearchStore(this);\r\n\r\n constructor() {\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n /**\r\n * This computed will update and return only regular (non-discount) sales items whenever salesItems updates\r\n * Note: This logic was previously deep down inside the ExamFormVisitBuilder, moved it up for ease of use.\r\n */\r\n @computed get regularSalesItems() {\r\n const items = (this.salesItems ?? []).filter(si => !DiscountItemTypes.includes(si.salesItemTypeId));\r\n return _.orderBy(items, [\"name\", \"sortOrder\"]);\r\n }\r\n\r\n /**\r\n * This computed will updated and return only discount sales items whenever salesItems updates\r\n */\r\n @computed get discountedSalesItems() {\r\n const items = (this.salesItems ?? []).filter(si => DiscountItemTypes.includes(si.salesItemTypeId))\r\n return _.orderBy(items, [\"name\", \"sortOrder\"])\r\n }\r\n\r\n @computed get totalRegularSalesItems() {\r\n return this.regularSalesItems.length;\r\n }\r\n\r\n @computed get totalDiscountSalesItems() {\r\n return this.discountedSalesItems.length;\r\n }\r\n\r\n @computed get totalSalesPackageCount() {\r\n return this.salesPackages.length;\r\n }\r\n\r\n @computed get totalSalesPlanCount() {\r\n return this.salesPlans.length;\r\n }\r\n\r\n filterToSalesItemsThatCanBeAddedByUsers = (salesItems: SalesItemModel[]) =>\r\n salesItems.filter(i => !i.traits.some(t => t.traitId == Traits.BlockUsersFromManuallyAddingToVisit)); // BlockUsersFromManuallyAddingToVisit = 2\r\n\r\n filterToSalesItemsThatIsAnesethieaMedication = (salesItems: SalesItemModel[]) =>\r\n salesItems.filter(i => i.traits.some(t => t.traitId == Traits.IsAnesthesiaMedication)); // Is Anesethiea Medication\r\n\r\n filterToSalesItemsForOutpatientPrescriptions = (salesItems: SalesItemModel[]) =>\r\n salesItems.filter(i => [SalesItemType.PrescriptionProduct, SalesItemType.VetcoPrescription].some(t => t === i.salesItemTypeId)\r\n && !i.traits.some(t => t.traitId == Traits.AllowedInPnpNewOrder));\r\n\r\n filterToSalesItemsForPetNotPresent = (salesItems: SalesItemModel[]) =>\r\n salesItems.filter(i => i.traits.some(t => t.traitId == Traits.AllowedInPnpNewOrder));\r\n\r\n filterToDiscountSalesItems = (salesItems: SalesItemModel[]) =>\r\n salesItems.filter(si => DiscountItemTypes.includes(si.salesItemTypeId))\r\n\r\n mapSalesItemsForVisitBuilder = (salesItems: SalesItemModel[]) =>\r\n salesItems.flatMap(i => i.options.map(o => ({\r\n salesItemId: o.salesItemId,\r\n salesItemOptionId: o.salesItemOptionId,\r\n salesItemTypeId: i.salesItemTypeId,\r\n salesSubCategoryId: i.salesSubCategoryId,\r\n name: i.name,\r\n option: o.displayName,\r\n price: i.prices.find(p => p.salesItemOptionId == null || p.salesItemOptionId == o.salesItemOptionId)!.price,\r\n dispensingFee: i.priceRules.find(pr => pr.salesItemOptionId == null || pr.salesItemOptionId == o.salesItemOptionId)!.dispensingFee,\r\n sortOrder: o.sortOrder,\r\n searchPattern: `${i.name} ${o.displayName}`.toLowerCase(),\r\n priceRules: i.priceRules,\r\n hospitalSKU: o.hospitalSKU,\r\n petcoSKU: o.petcoSKU,\r\n traits: i.traits,\r\n salesItemUpgradeId: i.salesItemUpgradeId,\r\n reminderDays: o.reminderDays\r\n })))\r\n}\r\n","import { SalesPackageModel, SalesPlanModel } from \"@common/models\";\r\nimport { IWellnessExamSalesItem } from \"@common/models/forms\";\r\nimport { makeAllBold } from \"@common/utils\";\r\nimport { SalesBuilderSearchStore } from \"@hospital/stores/SalesBuilderSearchStore\";\r\n\r\nexport type SalesBuilderSearchResults = {\r\n searchQueryApplied: boolean,\r\n queryPatterns: undefined | string[],\r\n totalRegularSalesItemsCount: number,\r\n regularSalesItems: IWellnessExamSalesItem[],\r\n totalDiscountedSalesItemCount: number,\r\n discountedSalesItems: IWellnessExamSalesItem[],\r\n totalSalesPackageCount: number,\r\n salesPackages: SalesPackageModel[],\r\n totalSalesPlanCount: number\r\n salesPlans: SalesPlanModel[]\r\n}\r\n\r\nexport class PriceCheckSalesBuilderSearchStore extends SalesBuilderSearchStore {\r\n\r\n /**\r\n * Override method for search results to include hospital SKU in the search\r\n * Wraps up the regular sales items, discounted sales items, plans, and packages into one search results object.\r\n * @returns An object with the search query, whether it's applied, and all the arrays of sales items, packages, plans, and discounted sales items with or without the search query applied\r\n */\r\n override get searchResults() {\r\n let ret: SalesBuilderSearchResults = {\r\n searchQueryApplied: false,\r\n queryPatterns: this.queryPatterns,\r\n totalRegularSalesItemsCount: this.salesStore.totalRegularSalesItems,\r\n totalDiscountedSalesItemCount: this.salesStore.totalDiscountSalesItems,\r\n totalSalesPackageCount: this.salesStore.totalSalesPackageCount,\r\n totalSalesPlanCount: this.salesStore.totalSalesPlanCount,\r\n regularSalesItems: this.salesStore.regularSalesItems,\r\n discountedSalesItems: this.salesStore.discountedSalesItems,\r\n salesPackages: this.salesStore.salesPackages,\r\n salesPlans: this.salesStore.salesPlans\r\n };\r\n\r\n if (!this.queryPatterns)\r\n return ret;\r\n else {\r\n ret.searchQueryApplied = true;\r\n ret.regularSalesItems = this.salesStore.regularSalesItems.filter(si => this.queryPatterns!.every(q => si.searchPattern.includes(q) || si.hospitalSKU?.toLowerCase().includes(q))).map(si => {\r\n return {\r\n ...si,\r\n name: makeAllBold(si.name, this.queryPatterns!),\r\n option: makeAllBold(si.option, this.queryPatterns!),\r\n hospitalSKU: si.hospitalSKU ? makeAllBold(si.hospitalSKU, this.queryPatterns!) : si.hospitalSKU\r\n };\r\n });\r\n ret.discountedSalesItems = this.salesStore.discountedSalesItems.filter(si => this.queryPatterns!.every(q => si.searchPattern.includes(q) || si.hospitalSKU?.toLowerCase().includes(q))).map(si => {\r\n return {\r\n ...si,\r\n name: makeAllBold(si.name, this.queryPatterns!),\r\n option: makeAllBold(si.option, this.queryPatterns!),\r\n hospitalSKU: si.hospitalSKU ? makeAllBold(si.hospitalSKU, this.queryPatterns!) : si.hospitalSKU\r\n };\r\n });\r\n ret.salesPlans = this.salesStore.salesPlans.filter(sp => this.queryPatterns!.every(q => (sp.name ? sp.name.toLowerCase() : '').includes(q))).map(sp => {\r\n return new SalesPlanModel({...sp, name: makeAllBold(sp.name, this.queryPatterns!)});\r\n });\r\n ret.salesPackages = this.salesStore.salesPackages.filter(sp => this.queryPatterns!.every(q => (`${sp.name} ${sp.displayName}`.toLowerCase().includes(q) || sp.hospitalSKU?.toLowerCase().includes(q)))).map(sp => {\r\n return new SalesPackageModel({\r\n ...sp,\r\n name: makeAllBold(sp.name, this.queryPatterns!),\r\n displayName: makeAllBold(sp.displayName, this.queryPatterns!),\r\n hospitalSKU: sp.hospitalSKU ? makeAllBold(sp.hospitalSKU, this.queryPatterns!) : sp.hospitalSKU\r\n });\r\n });\r\n return ret;\r\n }\r\n }\r\n}\r\n","import { SalesItemService, SalesPackageService } from \"@common/services\";\r\nimport { flow } from \"mobx\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\nimport { DateTime } from \"luxon\";\r\nimport { SalesStore } from \"./SalesStore\";\r\nimport { PriceCheckSalesBuilderSearchStore } from \"@hospital/stores/PriceCheckSalesBuilderSearchStore\";\r\n\r\nexport class PriceCheckStore extends SalesStore {\r\n constructor() {\r\n super();\r\n this.visitBuilderSearch = new PriceCheckSalesBuilderSearchStore(this);\r\n }\r\n\r\n public loadPriceChecker = flow(function* (this: PriceCheckStore, clinicId: number) {\r\n yield Promise.all([\r\n this.getSalesItemsForPriceCheck.call(this, clinicId),\r\n this.getSalesPackagesForPriceCheck.call(this, clinicId)\r\n ]);\r\n });\r\n\r\n public getSalesItemsForPriceCheck = flow(function* (this: PriceCheckStore, clinicId: number) {\r\n const now = DateTime.now();\r\n const unfilteredSalesItems = clinicId == undefined\r\n ? []\r\n : yield SalesItemService\r\n .fetchSalesItems(clinicId, now)\r\n .then(items => items.salesItems)\r\n .catch(NotificationStoreInstance.onError(\"Failed to fetch visit sales items\", this.salesItems));\r\n if (_.isArray(unfilteredSalesItems)) {\r\n const userAddedSalesItems = this.filterToSalesItemsThatCanBeAddedByUsers(unfilteredSalesItems)\r\n this.salesItems = this.mapSalesItemsForVisitBuilder(userAddedSalesItems)\r\n }\r\n });\r\n\r\n public getSalesPackagesForPriceCheck = flow(function* (this: PriceCheckStore, clinicId: number) {\r\n const now = DateTime.now();\r\n this.salesPackages = clinicId == undefined\r\n ? undefined\r\n : yield SalesPackageService\r\n .getClinicSalesPackages(clinicId, now)\r\n .then(items => items)\r\n .catch(NotificationStoreInstance.onError(\"Failed to fetch visit sales items\", this.salesPackages));\r\n });\r\n}\r\n","import { Environment } from \"@common/models/Enums\";\r\nimport { getQueryParams, getRandomWaitInterval, http } from \"@common/utils\";\r\nimport { action, computed, makeObservable, observable } from \"mobx\";\r\n\r\nexport const enum HubConnectionState {\r\n Connecting = 0,\r\n Connected = 1,\r\n Reconnecting = 2,\r\n Disconnected = 4\r\n}\r\n\r\nexport type QueuedSignalRMethod = {\r\n methodName: string,\r\n args: any[],\r\n resolve?: (value: T | PromiseLike) => void,\r\n reject?: (reason: any) => void\r\n}\r\n\r\nexport type BaseHubMethods = {\r\n [key: symbol | string]: (...args: any[]) => any;\r\n\r\n // TODO - MS: This should be moved to the HospitalHub\r\n \"joinVisitGroup\": (visitId: number, groupType: HubGroupType) => boolean;\r\n \"leaveVisitGroup\": (visitId: number, groupType: HubGroupType) => boolean;\r\n \"OtherJoinedVisit\": (connectionId: string, visitId: number, groupType: HubGroupType) => void;\r\n \"OtherLeftVisit\": (connectionId: string, visitId: number, groupType: HubGroupType) => void;\r\n}\r\n\r\nexport type BaseHubClientMethod =\r\n { eventName: \"onJoinedVisitGroup\", callback: (connectionId: string, visitId: number, groupType: HubGroupType, userName: string) => void } |\r\n { eventName: \"onLeftVisitGroup\", callback: (connectionId: string, visitId: number, groupType: HubGroupType, userName: string) => void } |\r\n { eventName: \"onOtherJoinedVisitGroup\", callback: (connectionId: string, visitId: number, groupType: HubGroupType, userName: string) => void } |\r\n { eventName: \"onOtherLeftVisitGroup\", callback: (connectionId: string, visitId: number, groupType: HubGroupType, userName: string) => void } |\r\n { eventName: \"onOtherConnectionDisconnected\", callback: (connectionId: string, userName: string) => void } |\r\n { eventName: \"onVisitUpdated\", callback: (connectionId: string, visitId: number) => void }\r\n\r\nexport type BaseHubInitOptions = {\r\n hubName: string,\r\n isMock?: boolean,\r\n env: Environment\r\n}\r\n\r\nexport enum HubGroupType {\r\n None = 0,\r\n LoggedIntoHospital = 100,\r\n VisitExamOpen = 200\r\n}\r\nexport abstract class BaseHub {\r\n private _pingHandle: NodeJS.Timer | undefined = undefined;\r\n private _invokeQueue: QueuedSignalRMethod[] = [];\r\n private _manualStop: boolean = false;\r\n private _loggedOut: boolean = false;\r\n private _isMock: boolean = false;\r\n private _isLocalDev: boolean = false;\r\n private _isAlpha: boolean = false;\r\n\r\n @observable private _connection: SignalR.Hub.Connection | undefined;\r\n @observable private _hub: SignalR.Hub.Proxy | undefined;\r\n @observable private _prevConnectionState: HubConnectionState = HubConnectionState.Disconnected;\r\n @observable private _connectionState: HubConnectionState = HubConnectionState.Disconnected;\r\n\r\n\r\n\r\n protected constructor(options: BaseHubInitOptions) {\r\n const me = this;\r\n this._isMock = Boolean(options.isMock);\r\n this._isLocalDev = options.env === Environment.local;\r\n this._isAlpha = options.env === Environment.alpha;\r\n const queryParams = this._isMock ? {} : getQueryParams();\r\n if (jQuery.hubConnection) {\r\n this._connection = jQuery.hubConnection(\"/azsignalr\", {\r\n useDefaultPath: false\r\n });\r\n if (queryParams[\"enableLogging\"] || this._isLocalDev || this._isAlpha)\r\n this._connection.logging = true;\r\n\r\n this._hub = this._connection.createHubProxy(options.hubName);\r\n\r\n //If you implement any client methods in IBaseWSHub server side, you can subscribe to them here\r\n //i.e. this._hub.on('newBaseServerSideMethod', ...);\r\n\r\n this._connection.error(function (this: SignalR.Connection) {\r\n me.onError.call(me, this);\r\n });\r\n //register signal r state methods\r\n this._connection.starting(function (this: SignalR.Connection) {\r\n me.onStarting.call(me, this);\r\n });\r\n //not to be confused with data state, this is connection state. AzureSignalR on Asp.Net does not support data state.\r\n this._connection.stateChanged(function (this: SignalR.Connection, state: SignalR.StateChanged) {\r\n me.onStateChanged.call(me, this, state);\r\n });\r\n this._connection.reconnecting(function (this: SignalR.Connection) {\r\n me.onConnectionReconnecting.call(me, this);\r\n });\r\n this._connection.reconnected(function (this: SignalR.Connection) {\r\n me.onConnectionReconnected.call(me, this);\r\n });\r\n this._connection.disconnected(function (this: SignalR.Connection) {\r\n me.onConnectionDisconnected.call(me, this);\r\n });\r\n\r\n this._hub.on(\"onPingEcho\", () => {\r\n });\r\n }\r\n\r\n makeObservable(this, undefined, { autoBind: true });\r\n (globalThis as unknown as any)[options.hubName] = this;\r\n }\r\n\r\n //#region Base Hub Invokable Methods\r\n public joinVisitGroup = async (visitId: number, groupType: HubGroupType) => {\r\n return await this.safeInvoke(\"joinVisitGroup\", visitId, groupType);\r\n }\r\n\r\n public leaveVisitGroup = async (visitId: number, groupType: HubGroupType) => {\r\n return await this.safeInvoke(\"leaveVisitGroup\", visitId, groupType);\r\n };\r\n //#endregion\r\n\r\n //#region ----------------------------------------------------\r\n /**\r\n * The ID of the current signalR connection if there is one connected\r\n */\r\n @computed get connectionId() {\r\n return this._connection ? this._connection.id : '';\r\n }\r\n\r\n @computed get connectionState() {\r\n return this._hub ? this._hub.connection.state : HubConnectionState.Disconnected;\r\n }\r\n\r\n @action.bound protected onError(this: BaseHub, connection: SignalR.Connection) {\r\n }\r\n\r\n @action.bound protected initiatePing() {\r\n if (this._pingHandle)\r\n clearInterval(this._pingHandle);\r\n this._pingHandle = setInterval(() => {\r\n if (this._connectionState === HubConnectionState.Connected)\r\n this._hub?.invoke('ping', true);\r\n }, 600000); //every 10 minutes\r\n }\r\n\r\n @action.bound protected stopPing() {\r\n if (this._pingHandle)\r\n clearInterval(this._pingHandle);\r\n }\r\n\r\n /**\r\n * Overridable, is fired when the connection is starting and before it finishes connecting\r\n * @param this \r\n * @param connection \r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n @action.bound protected onStarting(this: BaseHub, connection: SignalR.Connection) {\r\n }\r\n\r\n /**\r\n * Overridable, is fired when the connection has connected and ConnectionState is in state 1 (Connected)\r\n */\r\n @action.bound protected onConnected(): void {\r\n }\r\n\r\n @action.bound startConnection() {\r\n this._manualStop = false;\r\n this.withConnection(conn => {\r\n if (conn.state !== HubConnectionState.Disconnected)\r\n return; //already connected or already reconnecting or connecting\r\n conn.start({\r\n jsonp: false,\r\n withCredentials: true,\r\n transport: ['webSockets'],\r\n pingInterval: undefined //using our own ping in the BaseWSHub so it counts as Azure Traffic and keeps the token alive.\r\n }).then(() => {\r\n this.initiatePing();\r\n });\r\n });\r\n }\r\n\r\n @action.bound setLoggedOut(isLoggedOut: boolean) {\r\n this._loggedOut = isLoggedOut;\r\n }\r\n\r\n @action.bound stopConnection(opts?: { ignoreManual?: boolean }) {\r\n if (opts?.ignoreManual)\r\n this._manualStop = true;\r\n\r\n this._connection?.stop();\r\n }\r\n\r\n /**\r\n * This calls the hubs (on) method to register callback events triggered from the signalr server to this connected client\r\n * And provides some amount of type safety if you pass in a string literal union as \r\n * @param methodName \r\n * @param callback \r\n */\r\n @action.bound public registerMethod void }>(event: T) {\r\n this.withHub(hub => {\r\n hub.on(event.eventName as string, event.callback);\r\n });\r\n }\r\n\r\n /**\r\n * This calls the hubs (off) method to unregister callback events so they are cleaned up and no longer triggered by the signalr server to this connected client.\r\n * @param event \r\n */\r\n @action.bound public unregisterMethod void; }>(event: T) {\r\n this.withHub(hub => {\r\n hub.off(event.eventName as string, event.callback);\r\n });\r\n }\r\n\r\n /**\r\n * Must Override/Implement:\r\n * CleanQue is to allow the implementing class to remove things from the queue before they are processed. This is useful\r\n * if you might have 5 things in the que and 4 are redundant so you remove the first four and keep the fith in the cleanQue method.\r\n * The array you return should be the cleaned array.\r\n * @param queue \r\n */\r\n protected cleanQue(queue: QueuedSignalRMethod[]): QueuedSignalRMethod[] {\r\n const lastIndex = queue.length - 1;\r\n const lastItem = queue[lastIndex];\r\n let newQueue: QueuedSignalRMethod[] = queue;\r\n let droppedItems: QueuedSignalRMethod[] = [];\r\n let dropped = false;\r\n function processDrop(name: string) {\r\n if (dropped)\r\n return;\r\n newQueue = queue.filter((a, index) => {\r\n if (a.methodName === name && index < lastIndex) {\r\n droppedItems.push(a);\r\n if (!dropped)\r\n dropped = false;\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n //check if the current lastmethod is joinVisitGroup, if so drop any previous joinVisitGroup calls (can only be in one visit at a time)\r\n if (lastItem.methodName === \"joinVisitGroup\")\r\n processDrop(lastItem.methodName);\r\n //check if derrived classes have any extra functions to drop previous calls to from the queue\r\n _.some(this.getExtraQueueMethodsToClean(), (name) => { processDrop(name); return dropped; });\r\n\r\n //the dropped checks above are because if the last item has already processed some drops there's no sense in comparing any other drops because they won't match and wastes processing time for no reason.\r\n\r\n //resolve any dropped methods (todo: might be better to reject/cancel these)\r\n droppedItems.forEach((v) => {\r\n if (v.resolve)\r\n v.resolve(undefined);\r\n });\r\n\r\n return newQueue;\r\n }\r\n\r\n protected getExtraQueueMethodsToClean(): string[] {\r\n return [];\r\n }\r\n\r\n /**\r\n * Overridable, This will let you call invoke whether the connection is connected or not, the connection is unblocking and this will queue invokes if the connection is down and will process the queue when it's reconnected.\r\n * @param methodName \r\n * @param args \r\n * @returns \r\n */\r\n protected safeInvoke = async (methodName: MK, ...args: Parameters]>) => {\r\n const method: QueuedSignalRMethod = {\r\n methodName: methodName as unknown as string, args\r\n }\r\n const retPromise = new Promise((resolve, reject) => {\r\n method.resolve = action((value: any) => {\r\n resolve(value);\r\n });\r\n method.reject = action((err: any) => {\r\n reject(err);\r\n });\r\n })\r\n\r\n if (!this._isMock) {\r\n this._invokeQueue.push(method);\r\n this._invokeQueue = this.cleanQue(this._invokeQueue);\r\n this.processQueue();\r\n } else {\r\n if (method.resolve)\r\n method.resolve(undefined);\r\n }\r\n\r\n return await retPromise;\r\n };\r\n\r\n //#region Private/Internal methods\r\n /**\r\n * Fired when the signalr client connection state changes.\r\n * @param this \r\n * @param connection \r\n * @param state \r\n */\r\n @action.bound private onStateChanged(this: BaseHub, connection: SignalR.Connection, state: SignalR.StateChanged) {\r\n this.withHub(hub => {\r\n switch (state.newState) {\r\n case HubConnectionState.Connected:\r\n http.updateSignalRConnection(hub.hubName, this.connectionId);\r\n this.onConnected();\r\n this.processQueue(); //<- newly connected, process the invoke queue\r\n break;\r\n case HubConnectionState.Connecting:\r\n case HubConnectionState.Disconnected:\r\n http.updateSignalRConnection(hub.hubName, null);\r\n break;\r\n case HubConnectionState.Reconnecting:\r\n default:\r\n break;\r\n }\r\n this._prevConnectionState = state.oldState;\r\n this._connectionState = state.newState;\r\n })\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n @action.bound private onConnectionReconnecting(this: BaseHub, connection: SignalR.Connection) {\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n @action.bound private onConnectionReconnected(this: BaseHub, connection: SignalR.Connection) {\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n @action.bound private onConnectionDisconnected(this: BaseHub, connection: SignalR.Connection) {\r\n const intervalWait = getRandomWaitInterval(2000, 10000);\r\n if (!this._manualStop && !this._loggedOut)\r\n setTimeout(() => {\r\n this.startConnection.call(this); //<- will call start connection on repeat, if it stops it'll fire disconnected again where this will call start again\r\n }, intervalWait); //<- wait randomly between 2 seconds and 10 seconds\r\n }\r\n\r\n /**\r\n * Server Side methods are queued up in array FIFO style, this processes them all in order they were received\r\n * This prevents trying to make signalr calls if disconnected without having connections block the UI.\r\n * @returns \r\n */\r\n @action private processQueue() {\r\n const internalProcessQueue = (ldone: () => void, lReject: (err: any) => void) => {\r\n if (!this._connection || this._connection.state !== HubConnectionState.Connected) {\r\n return;\r\n }\r\n\r\n if (this._invokeQueue.length <= 0) {\r\n ldone();\r\n return;\r\n }\r\n const method = this._invokeQueue[0];\r\n if (!method) {\r\n this._invokeQueue.shift();\r\n return;\r\n }\r\n this.withHub(hub => {\r\n hub.invoke(method.methodName, ...method.args).then((value: any) => {\r\n if (method.resolve)\r\n method.resolve(value);\r\n }).fail((err) => {\r\n if (method.reject)\r\n method.reject(err);\r\n }).always(() => {\r\n this._invokeQueue.shift();\r\n internalProcessQueue(ldone, lReject);\r\n });\r\n\r\n })\r\n }\r\n\r\n let done: () => void;\r\n let doneReject: (err: any) => void;\r\n const promise = new Promise((resolve, reject) => {\r\n done = resolve;\r\n doneReject = reject;\r\n internalProcessQueue(done, doneReject);\r\n }).catch((err) => {\r\n doneReject(err);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n @action.bound protected withConnection(cb: (connection: SignalR.Connection) => void) {\r\n if (this._connection)\r\n cb(this._connection);\r\n }\r\n\r\n @action.bound protected withHub(cb: (hub: SignalR.Hub.Proxy) => void) {\r\n if (this._hub)\r\n cb(this._hub);\r\n }\r\n //#endregion\r\n //#endregion\r\n}\r\n","import { BaseHub, BaseHubInitOptions, BaseHubClientMethod, BaseHubMethods } from \"@common/stores/hubs/BaseHub\";\r\nimport { makeObservable, observable } from \"mobx\";\r\nimport { ContextWrapper } from \"@common/contexts\";\r\nimport { AppointmentStatus, CommunicationEventType } from \"@common/models/Enums\";\r\nimport { ClientDocumentRequestModel } from \"@common/models/ClientDocumentRequestModel\";\r\n\r\n\r\nexport type HospitalHubMethods = BaseHubMethods & {\r\n joinHospitalGroup: (hospitalId: number) => void;\r\n leaveHospitalGroup: (hospitalId: number) => void;\r\n}\r\n\r\nexport type HospitalHubClientMethod = BaseHubClientMethod |\r\n{ eventName: \"onJoinHospitalGroup\", callback: (connectionId: string, hospitalId: number, userName: string) => void }\r\n | { eventName: \"onLeaveHospitalGroup\", callback: (connectionId: string, hospitalId: number, userName: string) => void }\r\n | { eventName: \"onHospitalTaskUpdated\", callback: (taskId: number, hospitalId: number, userIds: number[], roleName: string) => void }\r\n | { eventName: \"onConnected\", callback: () => void }\r\n | { eventName: \"onUpdatedHospital\", callback: (hospitalId: number) => void }\r\n | { eventName: \"onAppointmentUpdated\", callback: (hospitalId: number, reservationId: number | null, visitId: number | null, strStartDate: string, strEndDate: string) => void }\r\n | { eventName: \"onAppointmentStatusChanged\", callback: (hospitalId: number, reservationId: number | null, visitId: number | null, apptStatus: AppointmentStatus, strStartDate: string, strEndDate: string) => void }\r\n | { eventName: \"onAppointmentRescheduled\", callback: (hospitalId: number, reservationId: number | null, visitId: number | null, strStartDate: string, strEndDate: string) => void }\r\n | { eventName: \"onAppointmentReopened\", callback: (hospitalId: number, reservationId: number | null, visitId: number | null, strStartDate: string, strEndDate: string) => void }\r\n | { eventName: \"onUpdatedHospitalSchedule\", callback: (hospitalId: number, strChangeDates: string[]) => void }\r\n | { eventName: \"onUpdatedHospitalScheduleAdHoc\", callback: (hospitalId: number, strScheduleDate: string | null, scheduleId: number) => void }\r\n | { eventName: \"onUpdatedHospitalScheduleOverrides\", callback: (hospitalId: number, strDateScheduled: string) => void }\r\n | { eventName: \"onUpdatedHospitalScheduleTemplate\", callback: (hospitalId: number, templateId: number, templateName: string) => void }\r\n | { eventName: \"onAppointmentBookedOnline\", callback: (hospitalId: number, strScheduleDate: string | null) => void }\r\n | { eventName: \"onUnreadHospitalMessagesUpdated\", callback: (storeId: number, unreadMessageCount: number, unreadMessageClientCount: number, communicationEventType: CommunicationEventType) => void }\r\n | { eventName: \"onDocumentGenerationStatusUpdated\", callback: (clientDocumentRequestModel: ClientDocumentRequestModel) => void }\r\n\r\nexport class HospitalHubStore extends BaseHub {\r\n private static _currentInstance: HospitalHubStore | undefined;\r\n @observable private _loggedInHospitalId: number | undefined = undefined;\r\n protected constructor(options: Omit) {\r\n super({ hubName: \"hospitalHub\", ...options });\r\n makeObservable(this, undefined);\r\n (globalThis as any)[\"hospitalHub\"] = this;\r\n }\r\n\r\n public static get currentInstance() {\r\n if (HospitalHubStore._currentInstance === undefined)\r\n HospitalHubStore._currentInstance = new HospitalHubStore({ isMock: appEnv.USEMOCK, env: appEnv.ENV });\r\n return HospitalHubStore._currentInstance;\r\n }\r\n\r\n //#region Transmit Methods\r\n /**\r\n * Invokes the server side hub to cause this signalr client to be added to the hospital group for the hospitalId. this effectively makes this connection an active user of the specified hospital\r\n */\r\n joinHospitalGroup = async (hospitalId: number) => {\r\n await this.safeInvoke(\"leaveHospitalGroup\", hospitalId);\r\n let joinedgroup = await this.safeInvoke(\"joinHospitalGroup\", hospitalId);\r\n return joinedgroup\r\n };\r\n\r\n /**\r\n * Invokes the server side hub to cause this signalr client to be removed from teh hoospital group for the hospitalId, this makes the user no longer actively connected to that hospital group\r\n */\r\n leaveHospitalGroup = async (hospitalId: number) => {\r\n var leftGroup = await this.safeInvoke(\"leaveHospitalGroup\", hospitalId);\r\n return leftGroup;\r\n };\r\n\r\n //#endregion\r\n\r\n //#region Base Methods\r\n\r\n public override registerMethod(event: HospitalHubClientMethod): void {\r\n super.registerMethod(event);\r\n }\r\n\r\n public override unregisterMethod(event: HospitalHubClientMethod): void {\r\n super.unregisterMethod(event);\r\n }\r\n override getExtraQueueMethodsToClean() {\r\n return [\"joinHospitalGroup\"];\r\n }\r\n //#endregion\r\n}\r\n\r\nexport const HospitalHubStoreContext = new ContextWrapper();\r\n","import { action, computed, makeObservable, observable } from \"mobx\";\r\nimport { HospitalHubStore } from \"@hospital/stores/Hubs/HospitalHub\";\r\nimport { DateTime } from \"luxon\";\r\nimport { IDisposable } from \"@common/types\";\r\nimport { HospitalAppStore } from \"../rootStores/HospitalAppStore\";\r\nimport { AppointmentStatus } from \"@common/models/Enums\";\r\n\r\n/**\r\n * This class subscribes to things appointment related on the HospitalHub and updates some observables when things happen\r\n * Currently this is just increasing a counter and the change in that counter is being used to trigger an observer useEffect\r\n * that in turn refreshes the calendar/flow page.\r\n * This is actually even more than it was previously, as this will refresh the calendar if the schedule changes, templates are added\r\n * overrides are created, adhoc vets are scheduled, appointments are rescheduled, online bookings happen\r\n * or if an appointment was updated or it's status changed.\r\n */\r\nexport class AppointmentSubscriberStore implements IDisposable {\r\n messageHub: HospitalHubStore;\r\n hospitalApp: HospitalAppStore;\r\n @observable private _isCalendarDirty: boolean = false;\r\n\r\n constructor(hospitalApp: HospitalAppStore) {\r\n this.messageHub = HospitalHubStore.currentInstance;\r\n this.hospitalApp = hospitalApp;\r\n makeObservable(this, undefined, { autoBind: true })\r\n this.subscribeToHubEvents();\r\n }\r\n\r\n @computed get IsCalendarDirty() {\r\n return this._isCalendarDirty;\r\n }\r\n\r\n @computed get LoadedDate() {\r\n return this.hospitalApp.calendarLoadedDate;\r\n }\r\n\r\n private subscribeToHubEvents(unsubscribe: boolean = false) {\r\n const method = !unsubscribe ? this.messageHub.registerMethod : this.messageHub.unregisterMethod;\r\n method({ eventName: \"onAppointmentUpdated\", callback: this.onAppointmentUpdated });\r\n method({ eventName: \"onAppointmentStatusChanged\", callback: this.onAppointmentStatusChanged });\r\n method({ eventName: \"onAppointmentRescheduled\", callback: this.onAppointmentRescheduled });\r\n method({ eventName: \"onAppointmentReopened\", callback: this.onAppointmentReopened });\r\n method({ eventName: \"onUpdatedHospitalSchedule\", callback: this.onUpdatedHospitalSchedule });\r\n method({ eventName: \"onUpdatedHospitalScheduleAdHoc\", callback: this.onUpdatedHospitalScheduleAdHoc });\r\n method({ eventName: \"onUpdatedHospitalScheduleOverrides\", callback: this.onUpdatedHospitalScheduleOverrides });\r\n method({ eventName: \"onUpdatedHospitalScheduleTemplate\", callback: this.onUpdatedHospitalScheduleTemplate });\r\n method({ eventName: \"onAppointmentBookedOnline\", callback: this.onAppointmentBookedOnline });\r\n }\r\n\r\n dispose() {\r\n this.subscribeToHubEvents(true);\r\n }\r\n\r\n @action.bound setCalendarDirty(isDirty: boolean = true) {\r\n this._isCalendarDirty = isDirty;\r\n }\r\n\r\n @action.bound onUpdatedHospitalSchedule(hospitalId: number, strChangeDates: string[]) {\r\n if (this.isCurrentHospital(hospitalId) && _.some(strChangeDates, p => this.isDateLoadedDate(p)))\r\n this.setCalendarDirty();\r\n }\r\n\r\n @action.bound onUpdatedHospitalScheduleAdHoc(hospitalId: number, strScheduleDate: string | null) {\r\n if (this.isCurrentHospital(hospitalId) && this.isDateLoadedDate(strScheduleDate)) {\r\n this.setCalendarDirty();\r\n }\r\n }\r\n\r\n @action.bound onUpdatedHospitalScheduleTemplate(hospitalId: number, templateId: number, templateName: string) { //<- do not delete the unused parameters, the signalr hub will not execute this call back if parameters don't exist for it's server side parameters.\r\n if (this.isCurrentHospital(hospitalId))\r\n this.setCalendarDirty();\r\n }\r\n\r\n @action.bound onUpdatedHospitalScheduleOverrides(hospitalId: number, strDateScheduled: string) {\r\n if (this.isCurrentHospital(hospitalId) && this.isDateLoadedDate(strDateScheduled))\r\n this.setCalendarDirty();\r\n }\r\n\r\n @action.bound onAppointmentUpdated(hospitalId: number, reservationId: number | null, visitId: number | null, strStartDate: string) {\r\n this.processAppointmentChange(hospitalId, strStartDate);\r\n }\r\n\r\n @action.bound onAppointmentReopened(hospitalId: number, reservationId: number | null, visitId: number | null, strStartDate: string) {\r\n this.processAppointmentChange(hospitalId, strStartDate);\r\n }\r\n\r\n @action.bound onAppointmentRescheduled(hospitalId: number, reservationId: number | null, visitId: number | null, strStartDate: string) {\r\n this.processAppointmentChange(hospitalId, strStartDate);\r\n }\r\n\r\n @action.bound onAppointmentStatusChanged(hospitalId: number, reservationId: number | null, visitId: number | null, appointmentStatus: AppointmentStatus, strStartDate: string, strEndDate: string) {\r\n this.processAppointmentChange(hospitalId, strStartDate);\r\n }\r\n\r\n @action.bound onAppointmentBookedOnline(hospitalId: number, strStartDate: string | null) {\r\n this.processAppointmentChange(hospitalId, strStartDate);\r\n }\r\n\r\n //#region Helpers\r\n private isDateLoadedDate(strDate: string | null) {\r\n if (strDate === null)\r\n return false;\r\n var loadedDate = this.LoadedDate.toLocaleString(DateTime.DATE_SHORT);\r\n var date = DateTime.fromISO(strDate, { zone: 'UTC' }).toLocaleString(DateTime.DATE_SHORT, {});\r\n return loadedDate === date;\r\n }\r\n\r\n private isCurrentHospital(hospitalId: number) {\r\n if (this.hospitalApp && this.hospitalApp.currentHospital && this.hospitalApp.currentHospital.hospitalId === hospitalId)\r\n return true;\r\n return false;\r\n }\r\n\r\n @action.bound private processAppointmentChange(hospitalId: number, strStartDate: string | null) {\r\n if (this.isCurrentHospital(hospitalId) && this.isDateLoadedDate(strStartDate)) {\r\n this.setCalendarDirty();\r\n }\r\n }\r\n //#endregion\r\n}\r\n","import { StoreCommunicationStatModel } from \"@common/models\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { http } from \"@common/utils\";\r\n\r\nexport class StoreService {\r\n private static baseUrl: string = \"/api/store\";\r\n\r\n public static tags = {\r\n getStoreCommunicationStats: \"getStoreCommunicationStats\",\r\n };\r\n\r\n static getStoreCommunicationStats = (storeId: number): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/${storeId}/communicationstats`)\r\n .get()\r\n .then((storeCommStat) => {\r\n const storeCommStatModel = new StoreCommunicationStatModel(storeCommStat);\r\n resolve(storeCommStatModel);\r\n })\r\n .catch(() => reject());\r\n })\r\n , this.tags.getStoreCommunicationStats);\r\n };\r\n}\r\n","import { ContextWrapper } from \"@common/contexts\";\r\nimport { SRClientCommunicationListingModel } from \"@common/models/signalRTransport/SRClientCommunicationListingModel\";\r\nimport { BaseHub, BaseHubClientMethod, BaseHubInitOptions, BaseHubMethods } from \"@common/stores/hubs/BaseHub\";\r\nimport { makeObservable } from \"mobx\";\r\n\r\n\r\nexport type ClientSMSHubMethods = BaseHubMethods & {\r\n joinClientSMSGroup: (clientId: number,storeId: number) => void;\r\n leaveClientSMSGroup: (clientId: number,storeId: number) => void;\r\n};\r\n\r\nexport type ClientSMSHubClientMethod = BaseHubClientMethod | \r\n { eventName: \"onNewClientSMSMessage\", callback: (clientCommunication: SRClientCommunicationListingModel) => void };\r\n\r\nexport class ClientSMSHub extends BaseHub {\r\n private static _currentInstance: ClientSMSHub | undefined;\r\n\r\n protected constructor(options: Omit) {\r\n super({ hubName: \"clientSMSHub\", ...options });\r\n makeObservable(this, undefined);\r\n (globalThis as any)[\"clientSMSHub\"] = this;\r\n }\r\n\r\n public static get currentInstance() {\r\n if (ClientSMSHub._currentInstance === undefined)\r\n ClientSMSHub._currentInstance = new ClientSMSHub({ isMock: appEnv.USEMOCK, env: appEnv.ENV });\r\n return ClientSMSHub._currentInstance;\r\n }\r\n\r\n //#region Transmit Methods\r\n\r\n joinClientSMSGroup = async (clientId: number,storeId: number) => {\r\n await this.safeInvoke(\"leaveClientSMSGroup\", clientId,storeId);\r\n let joinedgroup = await this.safeInvoke(\"joinClientSMSGroup\", clientId,storeId);\r\n return joinedgroup;\r\n }\r\n\r\n leaveClientSMSGroup = async (clientId: number,storeId: number) => {\r\n var leftGroup = await this.safeInvoke(\"leaveClientSMSGroup\", clientId,storeId);\r\n return leftGroup;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Base Methods\r\n\r\n public override registerMethod(event: ClientSMSHubClientMethod) {\r\n super.registerMethod(event);\r\n }\r\n\r\n public override unregisterMethod(event: ClientSMSHubClientMethod) {\r\n super.unregisterMethod(event);\r\n }\r\n\r\n override getExtraQueueMethodsToClean() {\r\n return [\"joinClientSMSGroup\"];\r\n }\r\n\r\n //#endregion\r\n\r\n \r\n}\r\n\r\nexport const ClientSMSHubContext = new ContextWrapper();\r\n","import { ClientCommunicationListingModel } from \"@common/models\";\r\nimport { SRClientCommunicationListingModel } from \"@common/models/signalRTransport/SRClientCommunicationListingModel\";\r\nimport { ClientSMSHub } from \"@common/stores/hubs/ClientSMSHub\";\r\nimport { IDisposable } from \"@common/types\";\r\nimport { action, computed, makeObservable, observable } from \"mobx\";\r\n\r\n/**\r\n * This class subscribes to things SMS related on the ClientSMSHub and updates some observables when things happen \r\n */\r\n/**\r\n * Represents a store for subscribing to client SMS hub events.\r\n */\r\nexport class ClientSMSHubSubscriberStore implements IDisposable {\r\n clientSMSHub: ClientSMSHub; \r\n @observable private _isNewIncomingMessage: boolean = false; \r\n @observable private _incomingMessageClientId: number = 0; \r\n private _incomingMessage: ClientCommunicationListingModel | undefined = undefined;\r\n\r\n constructor() {\r\n this.clientSMSHub = ClientSMSHub.currentInstance; \r\n makeObservable(this, undefined, { autoBind: true })\r\n this.subscribeToHubEvents();\r\n }\r\n\r\n @computed get IsNewIncomingMessage() {\r\n return this._isNewIncomingMessage;\r\n }\r\n\r\n @computed get IncomingMessage() {\r\n return this._incomingMessage;\r\n }\r\n\r\n @computed get IncomingMessageClientId() {\r\n return this._incomingMessageClientId;\r\n }\r\n\r\n @action.bound setNewIncomingMessage(isNewIncomingMessage: boolean = true) {\r\n this._isNewIncomingMessage = isNewIncomingMessage;\r\n }\r\n /**\r\n * Subscribes or unsubscribes from hub events.\r\n * \r\n * @param unsubscribe - A boolean indicating whether to unsubscribe from the hub events. Default is `false`.\r\n */\r\n private subscribeToHubEvents(unsubscribe: boolean = false) {\r\n const method = !unsubscribe ? this.clientSMSHub.registerMethod : this.clientSMSHub.unregisterMethod;\r\n method({ eventName: \"onNewClientSMSMessage\", callback: this.onNewClientSMSMessage });\r\n }\r\n\r\n dispose() {\r\n this.subscribeToHubEvents(true);\r\n }\r\n\r\n\r\n /**\r\n * Handles the event when a new SMS message is received for a client.\r\n * @param clientCommunication - The SRClientCommunicationListingModel representing the client communication.\r\n */\r\n @action.bound onNewClientSMSMessage(clientCommunication: SRClientCommunicationListingModel) {\r\n this._incomingMessageClientId = clientCommunication.clientId;\r\n this._isNewIncomingMessage = true;\r\n this._incomingMessage = new ClientCommunicationListingModel((clientCommunication.clientCommunication) as any);\r\n }\r\n}\r\n","import React from 'react';\r\nimport { iconView } from '@common/_assets/images';\r\nimport { ActionButton } from '@common/components/forms';\r\ninterface INotificationToastLinkBodyProps {\r\n linkText: string;\r\n linkUrl: string;\r\n}\r\n\r\nconst navigateToLink = (linkUrl: string) => {\r\n window.open(linkUrl, '_blank');\r\n}\r\n\r\nconst NotificationToastLinkBody: React.FC = ({ linkText, linkUrl }) => {\r\n return <>\r\n navigateToLink(linkUrl)} />\r\n ;\r\n};\r\n\r\nexport default NotificationToastLinkBody;\r\n","import { HospitalModel, StoreCommunicationStatModel } from \"@common/models\";\r\nimport { HospitalService } from \"@common/services\";\r\nimport { AppStore, ClientSearchStore, NotificationStoreInstance } from \"@common/stores\";\r\nimport { action, autorun, computed, flow, makeObservable, observable, runInAction } from \"mobx\";\r\nimport { ClinicTaskSearchStore } from \"../ClinicTaskSearchStore\";\r\nimport { HospitalHubStore } from \"../Hubs/HospitalHub\";\r\nimport { AppointmentSubscriberStore } from \"../Hubs/AppointmentSubscriberStore\";\r\nimport { DateTime } from \"luxon\";\r\nimport { IDisposable } from \"@common/types\";\r\nimport { StoreService } from \"@common/services/storeService\";\r\nimport { ClientSMSHubSubscriberStore } from \"@common/stores/subscribers/ClientSMSHubSubscriberStore\";\r\nimport { CommunicationEventType } from \"@common/models/Enums\";\r\nimport { ClientDocumentRequestModel } from \"@common/models/ClientDocumentRequestModel\";\r\nimport NotificationToastLinkBody from '@common/components/utility/NotificationToastLinkBody';\r\nimport React from 'react';\r\n\r\nexport type HospitalAppStoreInit = {\r\n\tappStore: AppStore;\r\n\thospitalHub: HospitalHubStore;\r\n};\r\nexport class HospitalAppStore implements IDisposable {\r\n\tappStore: AppStore;\r\n\tclientSearchStore: ClientSearchStore = new ClientSearchStore();\r\n\t@observable currentHospital?: HospitalModel;\r\n\t@observable isHospitalLoading: boolean = false;\r\n\t@observable adminNavActiveKey: string | undefined = undefined;\r\n\t@observable connectedHospitalId: number | undefined = undefined;\r\n\thospitalHub: HospitalHubStore;\r\n\t@observable private _appointmentSubscriber: AppointmentSubscriberStore;\r\n\t@observable private _calendarLoadedDate: DateTime;\r\n\t@observable unreadMessageCount: number | undefined = undefined;\r\n\t@observable unreadMessageClientCount: number | undefined = undefined;\r\n\t@observable currentCommunicationType: CommunicationEventType | undefined;\r\n\t@observable private _clientSMSSubscriber: ClientSMSHubSubscriberStore;\r\n\tconstructor(init: HospitalAppStoreInit) {\r\n\t\tthis.appStore = init.appStore;\r\n\t\tthis.hospitalHub = init.hospitalHub;\r\n\t\tthis._calendarLoadedDate = DateTime.utc();\r\n\t\tthis._appointmentSubscriber = new AppointmentSubscriberStore(this);\r\n\t\tthis._clientSMSSubscriber = new ClientSMSHubSubscriberStore();\r\n\t\tmakeObservable(this, undefined);\r\n\t\tthis.initMessageHub();\r\n\t}\r\n\r\n\t@action.bound setCurrentHospital(hospital: HospitalModel) {\r\n\t\tthis.currentHospital = hospital;\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tthis._appointmentSubscriber.dispose;\r\n\t\tthis._clientSMSSubscriber.dispose;\r\n\t}\r\n\r\n\t@computed get appointmentSubscriber() {\r\n\t\treturn this._appointmentSubscriber;\r\n\t}\r\n\r\n\t@computed get clientSMSSubscriber() {\r\n\t\treturn this._clientSMSSubscriber;\r\n\t}\r\n\r\n\t@computed get calendarLoadedDate() {\r\n\t\treturn this._calendarLoadedDate;\r\n\t}\r\n\r\n\t@action.bound setCalendarLoadedDate(date: DateTime) {\r\n\t\tthis._calendarLoadedDate = date;\r\n\t}\r\n\r\n\t@action.bound private initMessageHub() {\r\n\t\t//registerMethod is a helper on the raw hubs \"on\" methood, this subscribes a client to a client message on the Hub\r\n\t\tthis.hospitalHub.registerMethod({ eventName: \"onHospitalTaskUpdated\", callback: this.OnTaskUpdatedMessage });\r\n\t\tthis.hospitalHub.registerMethod({ eventName: \"onUnreadHospitalMessagesUpdated\", callback: this.OnUnReadHospitalMessagesUpdated});\r\n\t\tthis.hospitalHub.registerMethod({ eventName: \"onDocumentGenerationStatusUpdated\", callback: this.OnDocumentGenerationStatusUpdated});\r\n\r\n\t\t//using an auto run in the store to run anytime the current hospital changes, we do this to handle login and logout\r\n\t\t//to remove the current user or add the current user to the signalr group for the hospital.\r\n\t\tautorun(async () => {\r\n\t\t\tconst hospitalId = this.currentHospital?.hospitalId;\r\n\t\t\tif (hospitalId)\r\n\t\t\t\tthis.InitUnReadMessagesCount(hospitalId);\r\n\t\t\tif (this.connectedHospitalId && (!hospitalId || this.connectedHospitalId !== hospitalId)) {\r\n\t\t\t\tawait this.hospitalHub.leaveHospitalGroup(this.connectedHospitalId);\r\n\t\t\t\trunInAction(() => (this.connectedHospitalId = undefined));\r\n\t\t\t}\r\n\t\t\tif (hospitalId && hospitalId !== this.connectedHospitalId) {\r\n\t\t\t\tawait this.hospitalHub.joinHospitalGroup(hospitalId);\r\n\t\t\t\trunInAction(() => (this.connectedHospitalId = hospitalId));\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t//#region HospitalHub Events\r\n\t@action.bound OnUnReadHospitalMessagesUpdated = (storeId: number, unreadMessageCount: number, unreadMessageClientCount: number, communicationEventType: CommunicationEventType) => {\r\n\t\tif(storeId === this.currentHospital?.hospitalId) {\r\n\t\t\tthis.unreadMessageCount = unreadMessageCount;\r\n\t\t\tthis.unreadMessageClientCount = unreadMessageClientCount;\r\n\t\t\tthis.currentCommunicationType = communicationEventType;\r\n\t\t}\r\n\t}\r\n\r\n\t@action.bound InitUnReadMessagesCount = (storeId: number) => {\r\n\t\tif(_.isUndefined(this.unreadMessageCount)) {\r\n\t\t\tStoreService.getStoreCommunicationStats(storeId)\r\n\t\t\t.then((data:StoreCommunicationStatModel) => runInAction(() => {\r\n\t\t\t\tthis.unreadMessageCount = data.unreadMessageCount;\r\n\t\t\t\tthis.unreadMessageClientCount = data.unreadMessageClientCount;\r\n\t\t\t}))\r\n\t\t\t.catch(() => { }); //Intentional empty catch left to allow tests to pass\r\n\t\t}\r\n\t}\r\n\r\n\t@action.bound OnTaskUpdatedMessage = (task: number, hospitalId: number, userIds: number[], roleName: string) => {\r\n\t\t//a new task was created from the back end, check if it's for the current hospital (it always should be because it should only send updates to the hospital group for the task)\r\n\t\tif (this.currentHospital && this.currentHospital.hospitalId === hospitalId) {\r\n\t\t\tconst hasUsers = userIds.length > 0;\r\n\t\t\tconst hasRole = !!roleName;\r\n\t\t\t//ensure the task either targets the current user or one of the current users roles\r\n\t\t\tlet shouldUpdate = !hasUsers || _.some(userIds, a => a === this.appStore.configuration.userId);\r\n\t\t\tshouldUpdate = shouldUpdate && (!hasRole || this.appStore.configuration.userHasRole(roleName));\r\n\t\t\tif (shouldUpdate) {\r\n\t\t\t\t//the task is for the current user or their roles, reexecute the task search\r\n\t\t\t\tif (this.openTaskSearch) {\r\n\t\t\t\t\tthis.openTaskSearch.updateSearchFilter({ currentUserId: this.appStore.configuration.userId, hospitalId: this.currentHospital.hospitalId });\r\n\t\t\t\t\tthis.openTaskSearch.search();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t@action.bound OnDocumentGenerationStatusUpdated = (clientDocumentRequestModel: ClientDocumentRequestModel) => {\r\n\t\tconst isForuser = clientDocumentRequestModel.userId === this.appStore.configuration.userId;\r\n\t\tif(isForuser)\r\n\t\t{\r\n\t\t\tswitch (clientDocumentRequestModel.documentRequestStatusId)\r\n\t\t\t{\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconst myComponentInstance = React.createElement(NotificationToastLinkBody, { linkText: 'View PDF', linkUrl: `${clientDocumentRequestModel.storageContent?.storageContentUrl}${clientDocumentRequestModel.storageContent?.sasToken}` });\r\n\t\t\t\t\t\tNotificationStoreInstance.success(`Your document generation request for ${clientDocumentRequestModel.clientName} has completed.`, true, myComponentInstance);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\tcase 5:\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tNotificationStoreInstance.error(`Your document generation request for ${clientDocumentRequestModel.clientName} has failed.`, true);\r\n\t\t\t\t\t\tbreak;\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t//console.log(`document generation request for ${clientDocumentRequestModel.clientName} status changed to ${clientDocumentRequestModel.documentRequestStatusName}.`)\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//#endregion\r\n\r\n\t@computed get openTaskSearch() {\r\n\t\tif (this.hasCurrentHospital) {\r\n\t\t\tconst openTasks = new ClinicTaskSearchStore({ hospitalId: Number(this.currentHospital!.hospitalId), openTasks: true, currentUserId: this.appStore.configuration.userId, top: 0, explicitLoad: false });\r\n\t\t\topenTasks.search();\r\n\t\t\treturn openTasks;\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t@computed get hasCurrentHospital(): boolean {\r\n\t\treturn this.currentHospital ? true : false;\r\n\t}\r\n\r\n\t@computed get hospitalTimezone(): string {\r\n\t\treturn this.currentHospital?.store?.timezoneName ?? \"utc\";\r\n\t}\r\n\r\n\t@action.bound navAccordionToggled = (key?: string) => {\r\n\t\t// the key represents the accordion section that's being toggled.\r\n\t\t// we can infer the toggle state by comparing the existing active key to the new one.\r\n\t\tthis.adminNavActiveKey = this.adminNavActiveKey === key ? undefined : key;\r\n\t};\r\n\r\n\t@action.bound tryUpdateCurrentHospital(hospital?: HospitalModel) {\r\n\t\tif (this.currentHospital && this.currentHospital.hospitalId === hospital?.hospitalId) this.currentHospital = hospital;\r\n\t}\r\n\r\n\tloginHospital = flow(function* (this: HospitalAppStore, hospitalId: number) {\r\n\t\tthis.clearHospitalCommsStats();\r\n\t\tif (!this.hasCurrentHospital || this.currentHospital?.hospitalId !== hospitalId) {\r\n\t\t\tthis.isHospitalLoading = true;\r\n\t\t\tthis.currentHospital = undefined;\r\n\t\t\tthis.currentHospital = yield HospitalService.getHospitalForUser(hospitalId, { promiseArea: \"loggedInHospital\" }).catch(NotificationStoreInstance.onError(\"Unable to load Hospital\", undefined));\r\n\t\t\tthis.isHospitalLoading = false;\r\n\t\t}\r\n\t});\r\n\r\n\t@action.bound logoutHospital = () => {\r\n\t\tthis.currentHospital = undefined;\r\n\t\tthis.clearHospitalCommsStats();\r\n\t};\r\n\r\n\t@action.bound clearHospitalCommsStats = () => {\r\n\t\tthis.unreadMessageClientCount = undefined;\r\n\t\tthis.unreadMessageCount = undefined;\r\n\t};\r\n}\r\n","import {\r\n HospitalOrganizationRelationListingModel as BaseModel,\r\n IHospitalOrganizationRelationListingModel as BaseInterface,\r\n IOrganizationListingModel,\r\n OrganizationListingModel\r\n\r\n} from '@common/models';\r\n\r\n\r\nexport interface IHospitalOrganizationRelationListingModel extends BaseInterface {\r\n corpOrgModel: IOrganizationListingModel\r\n}\r\n\r\n//The base model is in common, this one inherits it and adds a hospital specific read only field, they have the same name on purpose\r\nexport class HospitalOrganizationRelationListingModel extends BaseModel implements IHospitalOrganizationRelationListingModel {\r\n corpOrgModel: IOrganizationListingModel;\r\n\r\n constructor(params: Partial) {\r\n super(params);\r\n\r\n const {\r\n corpOrgModel = {}\r\n } = params;\r\n\r\n this.corpOrgModel = new OrganizationListingModel(corpOrgModel);\r\n }\r\n\r\n get isReadOnly(): boolean {\r\n return this.corpOrgModel.organizationId === this.organizationId; //don't let users delete corp org if there is one.\r\n }\r\n}\r\n","import { makeObservable, observable, flow, computed, action } from \"mobx\";\r\nimport { IOrganizationRelationListingModel, OrganizationRelationListingModel, IOrganizationListingModel, IUserModel, UserModel, IBlobSasModel, ILicenseTypeModel, IVeterinarianModel, VeterinarianModel, ClientConfigurationModel, LicenseModel } from \"@common/models\";\r\nimport { IAuthRoleModel } from \"@common/models/Security\";\r\nimport { AzureBlobStore, NotificationStoreInstance } from \"@common/stores\";\r\nimport { BlobEntityType } from \"@common/models/Enums\";\r\nimport { HospitalOrganizationRelationListingModel } from \"@models/HospitalOrganizationRelationListingModel\";\r\nimport { ILicenseRequestModel } from \"@common/models/requests\";\r\nimport { chain, cloneDeep, differenceBy, uniqBy, without } from \"lodash\";\r\nimport { UserService } from \"@common/services/userService\";\r\nimport { LicenseService, VeterinarianService } from \"@common/services\";\r\nimport { ILicenseModelWithNewLicenseImage } from \"@models/LicenseModelWithNewLicenseImage\";\r\n\r\nconst defaultUser: UserModel = new UserModel({});\r\n\r\nconst defaultVet: IVeterinarianModel = {\r\n veterinarianId: 0,\r\n licenses: [],\r\n firstName: \"\",\r\n lastName: \"\",\r\n email: \"\",\r\n title: \"\",\r\n username: \"\",\r\n hospitalSchedules: [],\r\n rowVersion: '',\r\n schedulingColor: \"\",\r\n petcoUserId: \"\",\r\n activeSignature: {\r\n veterinarianSinatureId: 0,\r\n veterinarianId: 0,\r\n photoId: 0,\r\n active: false,\r\n rowVersion: \"\",\r\n signature: {\r\n photoId: 0,\r\n photoUrl: \"\",\r\n container: \"\",\r\n fileName: \"\",\r\n processedPhotoBaseUrl: \"\"\r\n }\r\n },\r\n schedulePreferences: [],\r\n fullName: undefined\r\n}\r\n\r\nexport interface IUserStoreInit extends Partial {\r\n configuration: ClientConfigurationModel;\r\n strUserId?: string | undefined; //exists so memos can key off userId to recreate the user store\r\n}\r\nexport class UserStore {\r\n blobStorageStore: AzureBlobStore = new AzureBlobStore({ containerName: BlobEntityType.License });\r\n @observable configuration: ClientConfigurationModel;\r\n @observable licensesAreBeingUpdated: boolean = false;\r\n @observable showSignatureModal: boolean = false;\r\n @observable signatureIsBeingUpdated: boolean = false;\r\n @observable licenseAddModalVisible: boolean = false;\r\n @observable licenseDeleteModalVisible: boolean = false;\r\n @observable userLoading: boolean = true;\r\n @observable licenseDeletePending: boolean = false;\r\n @observable licenseToDelete: LicenseModel | undefined = undefined;\r\n @observable user: UserModel = defaultUser;\r\n @observable vet: VeterinarianModel = new VeterinarianModel(defaultVet);\r\n @observable userId: number | undefined;\r\n\r\n @observable licenseModel: ILicenseRequestModel = {\r\n licenseId: 0,\r\n number: \"\",\r\n expirationDate: new Date().toISOString(),\r\n stateId: 0,\r\n veterinarianId: 0,\r\n licenseTypeId: 0,\r\n licensePhoto: {\r\n container: \"\",\r\n fileName: \"\",\r\n photoUrl: \"\",\r\n }\r\n }\r\n\r\n constructor(init: IUserStoreInit) {\r\n this.configuration = init.configuration;\r\n if (init.strUserId != null && init.strUserId.length > 0)\r\n this.userId = parseInt(init.strUserId);\r\n\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n }); //use decorators \r\n }\r\n\r\n private onlySwiftRoles = (r: IAuthRoleModel) => !r.description.toLowerCase().startsWith(\"petpass\");\r\n\r\n @computed get implicitRoles() {\r\n return chain(this.user.implicitAuthRoles || []).filter(this.onlySwiftRoles).orderBy('description').value();\r\n }\r\n\r\n @computed get explicitRoles() {\r\n return chain(this.user.explicitAuthRoles || []).filter(this.onlySwiftRoles).orderBy('description').value();\r\n }\r\n\r\n @computed get assignedRoles() {\r\n return this.implicitRoles.concat(this.explicitRoles);\r\n }\r\n\r\n @computed get availableRoles() {\r\n return differenceBy(this.configuration.authRoles, this.assignedRoles, 'authRoleId');\r\n }\r\n @computed get userHospitalOrganizations() {\r\n if (this.user.hospitalOrganizations && this.user.hospitalOrganizations.length) {\r\n return this.user.hospitalOrganizations.map(value => {\r\n //there's two hospital organization relation listing model, the base one in common, and one in hospital that adds hospital properties like isReadyOnly.\r\n //this code instantiates the hospital model from the common model's values and adds the needed corpOrgModel for hospitals version to make the isReadOnly check work.\r\n return new HospitalOrganizationRelationListingModel({ ...value, corpOrgModel: this.configuration.currentCorpOrganization });\r\n });\r\n }\r\n return [];\r\n }\r\n @computed get hasVetRole() {\r\n const licensedRoles = [\"Veterinarian\", \"Veterinary Technician\"];\r\n return chain(this.assignedRoles).some(r => licensedRoles.includes(r.description)).value();\r\n }\r\n @computed get hasLicenses() {\r\n return this.vet?.licenses !== undefined && this.vet?.licenses.length > 0;\r\n }\r\n @computed get sortedLicenses() {\r\n return chain(this.vet?.licenses || []).sortBy('expirationDate', 'state.abbreviation', 'licenseType.name').value();\r\n }\r\n @computed get licenseTypes(): ILicenseTypeModel[] {\r\n return this.configuration.licenseTypes;\r\n }\r\n\r\n /**\r\n * Returns description used when deleting an existing license\r\n */\r\n @computed get licenseDeleteDescription() {\r\n return \"Are you sure you wish to delete this license record?\"\r\n }\r\n\r\n @computed get isActive() {\r\n return this.user.isProfileActive\r\n }\r\n\r\n /**\r\n * Updates model of license to be deleted\r\n * @param license updated license properties on actionable license for deletion\r\n */\r\n @action.bound updateLicenseToDelete(license: LicenseModel | undefined) {\r\n this.licenseToDelete = license;\r\n }\r\n\r\n\r\n /**\r\n * Filter the users with the existing search params.\r\n */\r\n refreshUser = flow(function* (this: UserStore, userId: number): Generator, void, any> {\r\n this.userLoading = true;\r\n yield this.getUserImpl(userId);\r\n this.userLoading = false;\r\n });\r\n\r\n /**\r\n * Used in multiple places in here, updates a user with only the data that needs updated for the request\r\n */\r\n updateUser = flow(function* (this: UserStore, user: Partial, successMsg: string, failureMessage: string): Generator, void, any> {\r\n this.userLoading = true;\r\n\r\n yield UserService.updateUser(this.user.userId, { ...this.user, ...user })\r\n .then(NotificationStoreInstance.onSuccess(successMsg))\r\n .catch(NotificationStoreInstance.onError(failureMessage, undefined));\r\n\r\n yield this.getUserImpl(this.user.userId);\r\n\r\n this.userLoading = false;\r\n })\r\n\r\n getUserImpl = flow(function* (this: UserStore, userId: number): Generator, void, any> {\r\n this.user = yield UserService.getUser(userId)\r\n .catch(NotificationStoreInstance.onError(\"Failed to retrive user record\", defaultUser));\r\n\r\n if (this.hasVetRole) {\r\n this.vet = yield VeterinarianService.getVeterinarianByUserId(userId)\r\n .catch(() => NotificationStoreInstance.onError(\"Failed to retrieve veterinarian record\", undefined));\r\n }\r\n })\r\n\r\n //moved these to actions and moved the User Update post to a single flow to be re-used by addHospitals\r\n @action.bound addRoles(roleIds: number[]) {\r\n const roles = this.configuration.authRoles.filter((r) => roleIds.includes(r.authRoleId));\r\n const explicitAuthRoles = this.user.explicitAuthRoles.concat(roles);\r\n this.updateUser({ explicitAuthRoles }, \"Role added\", \"Failure to add role\");\r\n }\r\n\r\n @action.bound deleteRole(roleToDelete: IAuthRoleModel) {\r\n const explicitAuthRoles = without(this.user.explicitAuthRoles, roleToDelete);\r\n this.updateUser({ explicitAuthRoles }, \"Role removed\", \"Failure to remove role\");\r\n }\r\n\r\n @action.bound showAddLicenseModal(shouldShow: boolean) {\r\n this.licenseAddModalVisible = shouldShow;\r\n }\r\n\r\n\r\n addOrganizations = flow(function* (this: UserStore, hospitalOrgs: IOrganizationListingModel[]): Generator, void, any> {\r\n const currentOrgRelations = cloneDeep(this.user.organizations);\r\n const newOrgRelations: IOrganizationRelationListingModel[] = [];\r\n const newHospitalOrgs = hospitalOrgs.filter((o) => {\r\n let matches = currentOrgRelations.filter((co) => co.organizationId === o.organizationId);\r\n return matches.length === 0;\r\n });\r\n\r\n newHospitalOrgs.forEach((newOrg) => {\r\n newOrgRelations.push(OrganizationRelationListingModel.CreateForUserOrgRelation(this.user, newOrg));\r\n });\r\n\r\n //prevent dupes from being added in the event that happened\r\n const uniqNewOrgRelations = uniqBy(newOrgRelations, (o) => o.organizationId);\r\n\r\n if (newOrgRelations.length > 0) {\r\n let combinedRelations = currentOrgRelations.concat(uniqNewOrgRelations);\r\n yield this.updateUser({ organizations: combinedRelations }, \"Location added\", \"Failure to add location\");\r\n }\r\n })\r\n\r\n deleteOrganization = flow(function* (this: UserStore, hospitalOrg: IOrganizationRelationListingModel): Generator, void, any> {\r\n //hospital org is extended and has a hospitalCount field, so doing without on it won't work, need to get the non extended \r\n //hospital org from user.organizations from the id of the extended one and then delete that.\r\n const orgToDelete = this.user.organizations.filter(value => value.organizationRelationId === hospitalOrg.organizationRelationId)[0];\r\n const updateOrganizations = without(this.user.organizations, orgToDelete);\r\n yield this.updateUser({ organizations: updateOrganizations }, \"Location removed\", \"Failure to remove location\");\r\n });\r\n\r\n\r\n\r\n deleteLicense = flow(function* (this: UserStore) {\r\n if (!this.licenseToDelete || this.licenseToDelete.isReadOnly)\r\n return;\r\n\r\n yield LicenseService.deleteLicense(this.licenseToDelete.licenseId)\r\n .then(NotificationStoreInstance.onSuccess(\"License removed\"))\r\n .catch(NotificationStoreInstance.onError(\"License failed to be removed\", undefined));\r\n\r\n this.updateLicenseToDelete(undefined);\r\n yield this.refreshUser(this.user.userId);\r\n });\r\n\r\n addLicense = flow(function* (this: UserStore, licenseToAdd: ILicenseModelWithNewLicenseImage, licensePhotos: FileList) {\r\n this.licensesAreBeingUpdated = true;\r\n\r\n // upload files to azure\r\n let blobSas: IBlobSasModel[] = []\r\n if (licensePhotos.length > 0) {\r\n blobSas = yield this.blobStorageStore.uploadFiles(licensePhotos);\r\n if (blobSas.length === 0)\r\n throw \"There was a failure saving photo to azure blog storage\";\r\n }\r\n\r\n // create license request model\r\n this.licenseModel.expirationDate = licenseToAdd.expirationDate;\r\n this.licenseModel.licenseId = licenseToAdd.licenseId;\r\n this.licenseModel.licenseTypeId = licenseToAdd.licenseType.licenseTypeId;\r\n this.licenseModel.number = licenseToAdd.number;\r\n this.licenseModel.stateId = licenseToAdd.state.stateId;\r\n this.licenseModel.veterinarianId = this.vet.veterinarianId;\r\n if (blobSas.length > 0) {\r\n this.licenseModel.licensePhoto.container = blobSas[0].container;\r\n this.licenseModel.licensePhoto.photoUrl = blobSas[0].sasUrl;\r\n this.licenseModel.licensePhoto.fileName = blobSas[0].fileName;\r\n }\r\n\r\n yield LicenseService.addLicense(this.licenseModel)\r\n .then(NotificationStoreInstance.onSuccess(\"License added\"))\r\n .catch(NotificationStoreInstance.onError(\"Failed to add license\", undefined))\r\n\r\n this.licensesAreBeingUpdated = false;\r\n this.showAddLicenseModal(false);\r\n yield this.refreshUser(this.user.userId);\r\n });\r\n\r\n updateLicense = flow(async function* (this: UserStore, license: ILicenseModelWithNewLicenseImage, newPhotos: FileList) {\r\n this.licensesAreBeingUpdated = true;\r\n\r\n const blobStore = new AzureBlobStore({ containerName: BlobEntityType.License });\r\n let sasResults: IBlobSasModel[] | undefined = [];\r\n\r\n const updateRequest: Partial = {\r\n licenseId: license.licenseId,\r\n number: license.number,\r\n expirationDate: license.expirationDate,\r\n stateId: license.state.stateId,\r\n licenseTypeId: license.licenseType.licenseTypeId\r\n }\r\n\r\n //upload new image to blob storage if new image was selected\r\n if (newPhotos && newPhotos.length > 0) {\r\n sasResults = await blobStore.uploadFiles(newPhotos);\r\n }\r\n\r\n //change photo if new photo selected\r\n if (sasResults && sasResults.length > 0) {\r\n updateRequest.licensePhoto = {\r\n photoUrl: sasResults[0].sasUrl,\r\n container: sasResults[0].container,\r\n fileName: sasResults[0].fileName\r\n };\r\n }\r\n\r\n yield LicenseService.updateLicense(license.licenseId, updateRequest)\r\n .then(NotificationStoreInstance.onSuccess('License Updated'))\r\n .catch(NotificationStoreInstance.onError(\"Failure to update license\", undefined));\r\n\r\n yield this.refreshUser(this.user.userId);\r\n\r\n this.licensesAreBeingUpdated = false;\r\n });\r\n}\r\n","import { ClientConfigurationModel } from \"@common/models\";\r\nimport { UserStoreContextWrapper } from \"@hospital/contexts\";\r\nimport { UserStore } from \"@hospital/views/_shared/userprofile/UserStore\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\n\r\n/**\r\n * Creates a UserStore with options on whether it should be updated in the UserStore context, and whether it should be recreated when the UserId changes in the route.\r\n * @param options\r\n * @returns\r\n */\r\nexport const useCreateUserStore = (configuration: ClientConfigurationModel, options?: { shouldSetContext?: boolean, recreateOnUserIdRoute?: boolean }) => {\r\n const { userId } = useParams();\r\n //options object will always be different, so need to store options in state and only update state when the option values change\r\n const [optionBasedUserId, setOptionBasedUserId] = useState(undefined);\r\n const [optionsSetContext, setOptionsSetContext] = useState(false);\r\n\r\n useEffect(() => {\r\n if (options && options.recreateOnUserIdRoute)\r\n setOptionBasedUserId(userId);\r\n else\r\n setOptionBasedUserId(undefined);\r\n if (options) {\r\n if (options.recreateOnUserIdRoute)\r\n setOptionBasedUserId(userId);\r\n else\r\n setOptionBasedUserId(undefined);\r\n if (options.shouldSetContext)\r\n setOptionsSetContext(true);\r\n else\r\n setOptionsSetContext(false);\r\n }\r\n }, [options, userId]);\r\n\r\n const [store] = useMemo(() => {\r\n const store = new UserStore({ configuration, strUserId: optionBasedUserId });\r\n if (optionsSetContext)\r\n UserStoreContextWrapper.set(store);\r\n return [store]\r\n }, [configuration, optionBasedUserId, optionsSetContext]); //<- if recreateOnUserIdRoute was true, optionBasedUserId will be the current userId from useParams, and it changing will recreate the user store here.\r\n return store;\r\n}\r\n","import { AppStoreContextWrapper } from \"@common/contexts\";\r\nimport { AppStore } from \"@common/stores\";\r\nimport { useContext } from \"react\";\r\n\r\nexport const useApp = () => useContext(AppStoreContextWrapper.get());\r\n","import classNames from 'classnames/dedupe';\r\nimport React from 'react';\r\nimport { Card } from 'react-bootstrap';\r\nimport { Color, Variant } from 'react-bootstrap/types';\r\n\r\nexport interface PageCardProps {\r\n id?: string;\r\n bg?: Variant;\r\n text?: Color;\r\n border?: Variant;\r\n title?: string | JSX.Element;\r\n additionalinfo?: string | JSX.Element;\r\n actionElement?: React.ReactElement;\r\n titleClassName?: string;\r\n bodyClassName?: string;\r\n actionSectionClassName?: string;\r\n className?: string;\r\n}\r\n\r\nexport const PageCard = (props: React.PropsWithChildren) => {\r\n const { title, additionalinfo, children, actionElement, className, bodyClassName: _bodyClassName, titleClassName, actionSectionClassName, ...trimmedProps } = props;\r\n //all the properties are passed to the card, including children, the card renders the children.\r\n //1/10/2022 - turned off body on Card, manually render body to control padding/margin. Set margin/padding on title and content instead, added properties to override body/title margin classes and body/title classes.\r\n return (\r\n \r\n
\r\n {\r\n (title || actionElement) &&\r\n
\r\n
\r\n
\r\n {typeof title === \"string\" ?

{title}

: title}\r\n
\r\n {\r\n additionalinfo\r\n }\r\n {\r\n actionElement &&\r\n
\r\n {actionElement}\r\n
\r\n }\r\n
\r\n
\r\n }\r\n {children}\r\n
\r\n
);\r\n};\r\n\r\nPageCard.defaultProps = {\r\n border: \"0\",\r\n bg: 'white',\r\n text: 'black'\r\n}\r\n\r\nexport default PageCard;\r\n","import classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\n\r\nexport interface IFlexContainerProps extends React.HTMLAttributes> {\r\n children: React.ReactElement\r\n | React.ReactElement[]\r\n | React.ReactElement\r\n | React.ReactElement\r\n\r\n}\r\n\r\n/**\r\n * FlexContainer is a component intended to standardize using flex layouts, this currently supports a Container which does a d-flex and flex-fill\r\n * that has children that are either flex-column or flex-row that can shrink or grow. Knowledge of how bootstrap's flex classes is still needed.\r\n * For an example, check out PetDetailsDisplay.tsx and PetDetailsForm.tsx\r\n */\r\nconst FlexContainerImp = observer(({ className, children, ...attrs }: IFlexContainerProps) => {\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n});\r\n\r\nexport interface IFlexContainerColumnProps extends React.HTMLAttributes> {\r\n fill?: boolean\r\n shrink?: boolean\r\n}\r\n\r\nconst Column = observer(({ className, shrink, fill, children, ...attrs }: IFlexContainerColumnProps) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n});\r\n\r\nexport interface IFlexContainerRowProps extends React.HTMLAttributes> {\r\n fill?: boolean,\r\n shrink?: boolean\r\n}\r\n\r\nconst Row = observer(({ className, shrink, fill, children, ...attrs }: IFlexContainerRowProps) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n});\r\n\r\n\r\nconst FlexContainer = Object.assign(FlexContainerImp, {\r\n Column,\r\n Row\r\n});\r\n\r\nexport {\r\n FlexContainer\r\n};\r\n\r\nexport default FlexContainer;\r\n","import { RouteContext } from '@common/contexts';\r\nimport classnames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useContext } from 'react';\r\nimport { Nav } from 'react-bootstrap';\r\nimport { NavLink } from 'react-router-dom';\r\nimport useBreadcrumbs from 'use-react-router-breadcrumbs';\r\nexport interface BreadCrumbProps {\r\n positionSticky?: boolean\r\n}\r\nexport const BreadCrumbTrail = observer(({ positionSticky }: BreadCrumbProps) => {\r\n const routes = useContext(RouteContext.get());\r\n const breadcrumbs = useBreadcrumbs(routes).filter((bc) => bc.match.pathname !== \"/\");\r\n const lastKey = breadcrumbs.length > 0 ? breadcrumbs.slice(-1)[0].key : undefined;\r\n return (\r\n \r\n )\r\n});\r\n","import { Environment } from \"@common/models/Enums\";\r\nimport { observer } from \"mobx-react\";\r\nimport React from 'react';\r\n\r\nexport interface IProps {\r\n}\r\n\r\nexport const EnvironmentBanner = observer(() => {\r\n const env = appEnv.ENV as Environment;\r\n const show = env === Environment.dev || env === Environment.training;\r\n return <>\r\n {\r\n show &&
\r\n DEVELOPMENT-TRAINING SITE ONLY, DO NOT ENTER LIVE DATA\r\n
\r\n }\r\n \r\n});\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport { Card } from 'react-bootstrap';\r\nimport { Color, Variant } from 'react-bootstrap/types';\r\n\r\nexport interface SlimPageCardProps\r\n extends React.HTMLAttributes {\r\n bg?: Variant;\r\n text?: Color;\r\n border?: Variant;\r\n body?: boolean;\r\n}\r\n\r\nexport const SlimPageCard = (props: React.PropsWithChildren) => {\r\n\r\n //all the properties are passed to the card, including children, the card renders the children.\r\n return (\r\n \r\n );\r\n};\r\n\r\nSlimPageCard.defaultProps = {\r\n // border: \"0\",\r\n body: true,\r\n bg: 'white',\r\n text: 'dark'\r\n}\r\n\r\nexport default SlimPageCard;\r\n","import { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport ReactPaginate from 'react-paginate';\r\n\r\nexport interface IPagerProps {\r\n skip: number;\r\n pageSize: number;\r\n totalItems: number;\r\n pageRangeDisplayed?: number\r\n marginPagesDisplayed?: number\r\n onPageChange: (page: number) => void;\r\n}\r\n\r\nexport const Pager = observer((props: IPagerProps) => {\r\n const currentPage = props.skip / props.pageSize;\r\n const handlePageChange = (props: IPagerProps, selectedPage: number) => {\r\n if (selectedPage !== currentPage) {\r\n props.onPageChange(selectedPage);\r\n }\r\n }\r\n\r\n return ( handlePageChange(props, args.selected)}\r\n breakClassName={'page-item'}\r\n breakLinkClassName={'page-link'}\r\n containerClassName={'pagination'}\r\n pageClassName={'page-item'}\r\n pageLinkClassName={'page-link'}\r\n previousClassName={'page-item'}\r\n previousLinkClassName={'page-link'}\r\n nextClassName={'page-item'}\r\n nextLinkClassName={'page-link'}\r\n activeClassName={'active'} />);\r\n});\r\n\r\nexport default Pager;\r\n","import { useIsMounted } from \"@common/hooks\";\r\nimport { isUndefined } from \"lodash\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useCallback, useMemo } from \"react\";\r\nimport { PaginationComponentProps } from \"react-data-table-component\";\r\nimport ReactPaginate from \"react-paginate\";\r\n\r\nexport const BasicDataTablePagination = observer(({ rowsPerPage, rowCount, onChangePage, currentPage, ...props }: PaginationComponentProps) => {\r\n const isMounted = useIsMounted();\r\n\r\n\r\n const pageNumbers = useMemo(() => {\r\n return Math.ceil(rowCount / rowsPerPage);\r\n }, [rowCount, rowsPerPage]);\r\n\r\n const lastIndex = currentPage * rowsPerPage;\r\n const firstIndex = lastIndex - rowsPerPage + 1;\r\n\r\n const handlePageChange = useCallback((pageNumber: number) => {\r\n if (!isUndefined(pageNumber) && isMounted()) {\r\n onChangePage(pageNumber + 1, rowCount);\r\n }\r\n }, [rowCount, onChangePage, isMounted]);\r\n\r\n const range =\r\n currentPage === pageNumbers\r\n ? `${firstIndex}-${rowCount} of ${rowCount}`\r\n : `${firstIndex}-${lastIndex} of ${rowCount}`;\r\n\r\n return (\r\n \r\n );\r\n});\r\n","import { useIsMounted } from \"@common/hooks\";\r\nimport { isUndefined } from \"lodash\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useCallback, useMemo, useState } from \"react\";\r\nimport { PaginationComponentProps } from \"react-data-table-component\";\r\nimport ReactPaginate from \"react-paginate\";\r\n\r\nexport interface IDataTablePaginationProps extends PaginationComponentProps {\r\n\tpageRangeDisplayed?: number;\r\n}\r\n\r\nexport const DataTablePagination = observer(({ rowsPerPage, rowCount, currentPage, onChangePage, onChangeRowsPerPage, pageRangeDisplayed = 5 }: IDataTablePaginationProps) => {\r\n const isMounted = useIsMounted();\r\n\r\n const pageNumbers = useMemo(() => {\r\n return Math.ceil(rowCount / rowsPerPage);\r\n }, [rowCount, rowsPerPage]);\r\n\r\n const lastIndex = currentPage * rowsPerPage;\r\n const firstIndex = lastIndex - rowsPerPage + 1;\r\n\r\n const handlePageChange = useCallback((pageNumber: number) => {\r\n if (!isUndefined(pageNumber) && isMounted()) {\r\n onChangePage(pageNumber + 1, rowCount);\r\n }\r\n }, [rowCount, onChangePage, isMounted]);\r\n\r\n const handleRowsPerPage = useCallback(\r\n (e: React.ChangeEvent) => {\r\n onChangeRowsPerPage(Number(e.target.value), currentPage)\r\n onChangePage(1, rowCount); \r\n }, [currentPage, onChangeRowsPerPage, rowCount, onChangePage]);\r\n\r\n\t// TODO: maybe allow this to be set from RemoteDataTable.tsx in the future?\r\n const [defaultRowsPerPageOptions] = useState([10, 25, 50, 100]);\r\n\r\n const range =\r\n currentPage === pageNumbers\r\n ? `${firstIndex}-${rowCount} of ${rowCount}`\r\n : `${firstIndex}-${lastIndex} of ${rowCount}`;\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n});\r\n","import React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport Skeleton from 'react-loading-skeleton';\r\n\r\ninterface TableSkeletonProps {\r\n rows: number;\r\n cols: number;\r\n\r\n}\r\nexport const TableSkeleton = ({ rows, cols, children }: React.PropsWithChildren) => {\r\n return (\r\n \r\n {children &&\r\n \r\n {children}\r\n \r\n }\r\n \r\n {\r\n Array.from({ length: rows }, (_, i) =>\r\n \r\n {Array.from({ length: cols }, (_, j) =>\r\n )}\r\n )\r\n }\r\n \r\n
\r\n )\r\n}\r\n","import React from 'react';\r\n\r\ninterface AuthorizeProps {\r\n if: boolean;\r\n deniedMessage?: string,\r\n redirectToErrorPage?: boolean\r\n throwError?: boolean\r\n}\r\n\r\nexport const Throw401 = () => {\r\n throw new DOMException('You do not have access to the requested resource.', DOMException.INVALID_ACCESS_ERR.toString());\r\n}\r\n\r\nexport const Authorized = (props: React.PropsWithChildren): JSX.Element => {\r\n return (\r\n props.if ? <>{props.children} : (\r\n props.redirectToErrorPage || props.throwError ? : (\r\n <> {props.deniedMessage && {props.deniedMessage}}\r\n )\r\n )\r\n );\r\n};\r\n\r\nAuthorized.defaultProps = {\r\n redirectToErrorPage: false,\r\n deniedMessage: undefined\r\n}\r\n\r\nexport default Authorized;\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport { Nav } from 'react-bootstrap';\r\nimport { Link, useLocation } from 'react-router-dom';\r\nexport interface INavLinkProps extends React.HTMLAttributes {\r\n disabled?: boolean,\r\n route: string,\r\n name: string,\r\n notificationCount?: number,\r\n target?: string\r\n}\r\n\r\nfunction isLargeCount(notificationCount: number | undefined) {\r\n if (!notificationCount)\r\n return false;\r\n return notificationCount > 99;\r\n}\r\n\r\nexport const NavBarLink = (props: INavLinkProps) => {\r\n const { name, route, notificationCount, ...remainingProps } = props;\r\n const location = useLocation();\r\n const isActive = location.pathname?.toLowerCase().startsWith(props.route);\r\n const isLargeNotificationCount = isLargeCount(notificationCount);\r\n\r\n return (\r\n \r\n \r\n {name}\r\n {Boolean(notificationCount) && \r\n {notificationCount}\r\n }\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const NavBarLinkWithHref = (props: INavLinkProps) => {\r\n const { name, route, notificationCount } = props;\r\n const isLargeNotificationCount = isLargeCount(notificationCount);\r\n return (\r\n \r\n \r\n {name}\r\n {Boolean(notificationCount) && \r\n {notificationCount}\r\n }\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default NavBarLink;\r\n","import { NavBarLink } from '@common/components/layout/nav/NavBarLink';\r\nimport { useApp, useCurrentMatchRoutes } from '@common/hooks';\r\nimport { CacheUtils } from '@common/utils/cacheUtils';\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { observer } from 'mobx-react';\r\nimport React, { useRef, useState } from 'react';\r\nimport { Nav, Overlay, Popover } from 'react-bootstrap';\r\nimport Skeleton from 'react-loading-skeleton';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nexport interface INavBarProfileProps {\r\n userId: number,\r\n userInitials: string,\r\n firstName: string,\r\n lastName: string\r\n}\r\n\r\nconst NavBarProfile = observer(({ userId, userInitials, firstName, lastName }: INavBarProfileProps) => {\r\n const { isConfigurationLoading } = useApp();\r\n const routeMatches = useCurrentMatchRoutes();\r\n const queryClient = useQueryClient();\r\n\r\n let currentDirectory = '';\r\n if (routeMatches !== undefined && routeMatches.length > 1) {\r\n currentDirectory += (routeMatches[1].pathname != \"\"\r\n && routeMatches[1].pathname !== \"/\"\r\n && routeMatches[1].pathname != \"myprofile\"\r\n && routeMatches[1].pathname != \"login\")\r\n ? routeMatches[1].pathname : \"\";\r\n }\r\n\r\n let profileLink = currentDirectory + '/myprofile/' + userId;\r\n\r\n const [show, setShow] = useState(false);\r\n const target = useRef(null);\r\n\r\n const showOverlay = () => {\r\n setShow(!show);\r\n };\r\n\r\n const Logout = () => {\r\n window.location.href = '/account/logout';\r\n }\r\n\r\n const ClearDataCache = () => {\r\n CacheUtils.evictExpiredKeys(0)\r\n .then(() => window.alert(\"Data cache cleared.\"));\r\n\r\n // Clear client-side catched data\r\n queryClient.clear();\r\n }\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nexport default NavBarProfile;\r\n","import { EnvironmentBanner } from \"@common/components/layout\";\r\nimport { NavBarLink, NavBarLinkWithHref } from '@common/components/layout/nav/NavBarLink';\r\nimport NavBarProfile from '@common/components/layout/nav/NavBarProfile';\r\nimport { Authorized } from '@common/components/trimming/Authorized';\r\nimport { EnvironmentWarning } from \"@common/components/utility\";\r\nimport { useApp } from '@common/hooks';\r\nimport { AuthOperationUINames } from '@common/models/Enums/AuthOperationStrings';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Container, Nav, Navbar } from 'react-bootstrap';\r\nimport { NavLink as NavLinkRR } from 'react-router-dom';\r\nimport uniqid from 'uniqid';\r\n\r\nexport const AdminNavBar = observer(() => {\r\n const { configuration } = useApp();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n});\r\n\r\nexport default AdminNavBar;\r\n","import { NavBarLink } from '@common/components/layout/nav/NavBarLink';\r\nimport { useApp } from '@common/hooks';\r\nimport { FeatureFlags } from '@common/models/Enums';\r\nimport { AuthOperationUINames } from '@common/models/Enums/AuthOperationStrings';\r\nimport { useHospitalApp } from '@hospital/hooks';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Accordion } from 'react-bootstrap';\r\n\r\nexport const AdminNavList = observer(() => {\r\n const hospitalAppStore = useHospitalApp();\r\n const { configuration } = useApp();\r\n const canEditAllCommunicationTemplates = configuration.HasUIFlag(AuthOperationUINames.UI_HospitalFlags_CanEditAllCommunicationTemplates)\r\n const canViewAdminReports =\r\n configuration.systemEnvironment === \"DEVLOCAL\" // Are you browsing from localhost?\r\n || configuration.systemEnvironment === \"DEVPETCO\" // Are you browsing from dev.petpass.com?\r\n || configuration.fullName === \"Rosanna Dubbs\"; // Are you Ro?\r\n const canEditSmsCommunicationTemplates = configuration.hasFeatureFlag(FeatureFlags.InAppSms);\r\n\r\n return (
\r\n \r\n \r\n \r\n\r\n \r\n hospitalAppStore.navAccordionToggled(\"1\")}>Schedule Management\r\n \r\n \r\n \r\n \r\n\r\n \r\n hospitalAppStore.navAccordionToggled(\"2\")}>Hospital Communication Templates\r\n \r\n {\r\n canEditAllCommunicationTemplates &&\r\n \r\n }\r\n {\r\n canEditSmsCommunicationTemplates &&\r\n \r\n }\r\n \r\n \r\n\r\n {\r\n canViewAdminReports &&\r\n \r\n hospitalAppStore.navAccordionToggled(\"3\")}>Reports\r\n \r\n \r\n \r\n \r\n }\r\n \r\n
)\r\n});\r\n\r\nexport default AdminNavList;\r\n","import { caretWhite, iconSearchBlue } from \"@common/_assets/images\";\r\nimport { FormInput, spreadAndtransformDefaultValues } from '@common/components/forms';\r\nimport { useRecentClientSearch } from \"@common/hooks/useRecentClients\";\r\nimport { UserService } from \"@common/services/userService\";\r\nimport { ClientSearchStore, IClientSearchFilter, defaultClientSearchFilter } from \"@common/stores\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useRef, useState } from 'react';\r\nimport { Form, Image, InputGroup, Overlay, Popover } from \"react-bootstrap\";\r\nimport { useForm } from 'react-hook-form';\r\nimport { usePromiseTracker } from \"react-promise-tracker\";\r\nimport { useNavigate } from \"react-router\";\r\nimport { NavLink, useParams } from 'react-router-dom';\r\n\r\ntype IClientSearchButtonProps = {\r\n\tstore: ClientSearchStore\r\n\tisCsr?: boolean;\r\n}\r\n\r\nconst defaultValues = { phone: \"\" }\r\n\r\nexport const ClientSearchButton = observer(({ store, isCsr = false }: IClientSearchButtonProps) => {\r\n\tconst { promiseInProgress } = usePromiseTracker({\r\n\t\tdelay: 500,\r\n\t\tarea: UserService.tags.getRecentClients,\r\n\t});\r\n\tconst { hospitalId } = useParams();\r\n\tconst navigate = useNavigate();\r\n\tconst { handleSubmit, reset, control } = useForm();\r\n\tconst recentClientStore = useRecentClientSearch();\r\n\tconst onSubmit = (data: IClientSearchFilter) => {\r\n\t\t// push the phone number (if any) to the client search store\r\n\t\tstore.updateSearchFilter({\r\n\t\t\t...defaultClientSearchFilter,\r\n\t\t\tphone: data.phone\r\n\t\t});\r\n\t\t// clear out the search box\r\n\t\treset(spreadAndtransformDefaultValues(defaultValues));\r\n\t\t// navigate to this hospital's clients page to show the search results.\r\n\t\tif (isCsr) {\r\n\t\t\tstore.triggerDisclaimer();\r\n\t\t\tnavigate('/');\r\n\t\t}\r\n\t\telse {\r\n\t\t\tnavigate(`/${hospitalId}/clients`);\r\n\t\t}\r\n\t}\r\n\t// Used to show / hide overlay.\r\n\tconst [show, setShow] = useState(false);\r\n\tconst target = useRef(null);\r\n\t// Used to limit number of network requests.\r\n\tconst previousClickedRecentHistory = useRef(0);\r\n\tconst showOverlay = () => {\r\n\t\tsetShow(!show);\r\n\t\t// Ref gets reset to zero every page load.\r\n\t\tif (previousClickedRecentHistory.current === 0) {\r\n\t\t\trecentClientStore.getRecentlyViewedClients();\r\n\t\t}\r\n\t\tpreviousClickedRecentHistory.current = previousClickedRecentHistory.current + 1;\r\n\t};\r\n\tconst lastFiveRecentClients = recentClientStore?.recentClients?.filter((_, index) => index < 5) ?? [];\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t  |   \r\n\t\t\t\t\t showOverlay()}>\r\n\t\t\t\t\t\tRecent clients   \r\n\t\t\t\t\t\t{'caret'}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t setShow(false)}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{promiseInProgress ? : undefined}\r\n\t\t\t\t\t\t\t{lastFiveRecentClients.map((recentClient, index) => {\r\n\t\t\t\t\t\t\t\treturn
\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tisCsr\r\n\t\t\t\t\t\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\t\t\t\t\t{`${recentClient.FirstName} ${recentClient.LastName}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t: \r\n\t\t\t\t\t\t\t\t\t\t\t\t{`${recentClient.FirstName} ${recentClient.LastName}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t setShow(false)} className=\"text-decoration-none\" to={isCsr ? '/clients' : `/${hospitalId}/clients/`} >\r\n\t\t\t\t\t\t\t\t\t{'caret'}\r\n\t\t\t\t\t\t\t\t\tSearch More Clients\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t)\r\n});\r\n\r\nconst LoadingOverlay = () => <>\r\n\t
Loading Recent Clients ...
\r\n\r\n\r\nexport default ClientSearchButton\r\n","import { RecentClientSearchStoreContextWrapper } from '@common/contexts';\r\nimport { ClientRecentResultsStore } from '@common/stores';\r\nimport React from 'react';\r\nexport const useRecentClientSearch = () => React.useContext(RecentClientSearchStoreContextWrapper.get());\r\n","import { Suspense } from \"@common/components/utility\";\r\nimport { IWellnessExamSalesItem } from \"@common/models\";\r\nimport { SalesItemType } from \"@common/models/Enums\";\r\nimport { SalesItemService } from \"@common/services\";\r\nimport { formatCurrency, htmlFrom } from \"@common/utils\";\r\nimport { isEmpty, orderBy } from \"lodash\";\r\nimport { observer } from \"mobx-react\";\r\nimport React from \"react\";\r\nimport { Table } from \"react-bootstrap\";\r\nimport { PulseLoader } from \"react-spinners\";\r\n\r\ninterface IPriceCheckDiscountTable {\r\n items: IWellnessExamSalesItem[];\r\n}\r\nexport const PriceCheckDiscountTable = observer(({ items }: IPriceCheckDiscountTable) => {\r\n return }>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isEmpty(items) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!isEmpty(items) && orderBy(items, [\"name\", \"sortOrder\"]).map((item, index) => {\r\n\r\n return \r\n \r\n \r\n \r\n \r\n })}\r\n \r\n
DESCRIPTIONSKUPRICE
No sales packages found.
{htmlFrom(item.name)} {htmlFrom(item.option)}{htmlFrom(item.hospitalSKU ?? '')}\r\n {item.salesItemTypeId !== SalesItemType.CouponDiscountPercentage ? formatCurrency(item.price) : `${item.price * 100}%`}\r\n
\r\n
\r\n
\r\n})\r\n","import { Suspense } from \"@common/components/utility\";\r\nimport { IWellnessExamSalesItem } from \"@common/models\";\r\nimport { SalesItemService } from \"@common/services\";\r\nimport { formatCurrency, htmlFrom } from \"@common/utils\";\r\nimport { isEmpty, orderBy } from \"lodash\";\r\nimport { observer } from \"mobx-react\";\r\nimport React from \"react\";\r\nimport { Table } from \"react-bootstrap\";\r\nimport { PulseLoader } from \"react-spinners\";\r\n\r\ninterface IPriceCheckItemTable {\r\n items: IWellnessExamSalesItem[];\r\n}\r\nexport const PriceCheckItemTable = observer(({ items }: IPriceCheckItemTable) => {\r\n\r\n return }>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isEmpty(items) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {!isEmpty(items) && orderBy(items, [\"name\", \"sortOrder\"]).map((item, index) => {\r\n\r\n return \r\n \r\n \r\n \r\n \r\n \r\n })}\r\n \r\n
DESCRIPTIONSKUDISPENSING FEEPRICE
No sales packages found.
{htmlFrom(item.name)} {htmlFrom(item.option)}{htmlFrom(item.hospitalSKU ?? '')}{item.priceRules && item.priceRules[0].dispensingFee ? formatCurrency(item.priceRules[0].dispensingFee) : \"\"}{formatCurrency(item.price)}
\r\n
\r\n
\r\n})\r\n","import { Suspense } from \"@common/components/utility\";\r\nimport { useDoubleClickHandler } from \"@common/hooks\";\r\nimport { SalesPackageModel } from \"@common/models\";\r\nimport { SalesItemService } from \"@common/services\";\r\nimport { formatCurrency, htmlFrom } from \"@common/utils\";\r\nimport { isEmpty, orderBy } from \"lodash\";\r\nimport { observer } from \"mobx-react\";\r\nimport React from \"react\";\r\nimport { Table } from \"react-bootstrap\";\r\nimport { PulseLoader } from \"react-spinners\";\r\n\r\ninterface IPriceCheckPackageTable {\r\n items: SalesPackageModel[];\r\n}\r\nexport const PriceCheckPackageTable = observer(({ items }: IPriceCheckPackageTable) => {\r\n const [isClickedArray, setIsClickedArray] = React.useState([])\r\n const expandRow = (index: number) => {\r\n const arr = [...isClickedArray];\r\n arr[index] = !arr[index];\r\n setIsClickedArray(arr);\r\n }\r\n const rowClickedHandler = useDoubleClickHandler({ onDoubleClick: expandRow });\r\n return }>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isEmpty(items) &&\r\n \r\n \r\n \r\n \r\n }\r\n {!isEmpty(items) && orderBy(items, [\"name\", \"sortOrder\"]).map((item, index) => {\r\n\r\n return rowClickedHandler(index)}>\r\n \r\n \r\n \r\n \r\n })}\r\n \r\n
DescriptionSKUPrice
No sales packages found.
\r\n
\r\n
{htmlFrom(item.name)}
\r\n {isClickedArray[index] &&\r\n
\r\n {orderBy(item.contents, \"sortOrder\").map(c =>\r\n
\r\n {c.salesItemName} {c.salesItemOption.displayName}\r\n
\r\n )}\r\n
\r\n }\r\n
\r\n
{htmlFrom(item.hospitalSKU)}{formatCurrency(item.prices[0].price)}
\r\n
\r\n
\r\n})\r\n","import { priceCheck } from '@common/_assets/images';\r\nimport { FieldSet } from \"@common/components/forms\";\r\nimport { PageCard } from \"@common/components/layout\";\r\nimport { PriceCheckDiscountTable } from \"@common/components/priceCheck/PriceCheckDiscountTable\";\r\nimport { PriceCheckItemTable } from \"@common/components/priceCheck/PriceCheckItemTable\";\r\nimport { PriceCheckPackageTable } from \"@common/components/priceCheck/PriceCheckPackageTable\";\r\nimport { TabTitleWithPills } from \"@common/components/tabs/TabsHelperComponents\";\r\nimport QuerySearchButton from \"@hospital/components/search/QuerySearchButton\";\r\nimport { useHospitalApp } from \"@hospital/hooks\";\r\nimport { PriceCheckStore } from \"@hospital/stores\";\r\nimport React, { useCallback, useMemo, useState } from 'react';\r\nimport { Button, Modal, Tab, Tabs } from \"react-bootstrap\";\r\nimport { petcoGainsboro2 } from \"../../common/_assets/color-constants\";\r\nexport type usePriceCheckReturn = {\r\n priceCheckModal: JSX.Element;\r\n priceCheckButton: JSX.Element;\r\n}\r\nexport const usePriceCheck = (): usePriceCheckReturn => {\r\n const [isShowing, setIsShowing] = useState(false);\r\n const hospital = useHospitalApp();\r\n const [priceCheckStore] = useState(new PriceCheckStore())\r\n React.useEffect(() => {\r\n }, [hospital, priceCheckStore]);\r\n\r\n\r\n const onShowPriceChecker = useCallback(() => {\r\n if (hospital?.currentHospital?.currentClinicId) {\r\n priceCheckStore.loadPriceChecker(hospital?.currentHospital?.currentClinicId);\r\n }\r\n }, [hospital.currentHospital?.currentClinicId, priceCheckStore]);\r\n\r\n\r\n const [activeTab, setActiveTab] = React.useState(\"salesitems\");\r\n const searchResults = priceCheckStore.visitBuilderSearch.searchResults;\r\n const priceCheckModal = useMemo(() => {\r\n return (\r\n setIsShowing(false)} backdrop=\"static\" onShow={onShowPriceChecker}>\r\n \r\n Price Check\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n setActiveTab(key ?? \"all\")}>\r\n \r\n : \r\n }>\r\n \r\n \r\n \r\n : \r\n }>\r\n \r\n \r\n \r\n : \r\n }>\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }, [\r\n onShowPriceChecker,\r\n activeTab,\r\n isShowing,\r\n priceCheckStore.totalDiscountSalesItems,\r\n priceCheckStore.totalRegularSalesItems,\r\n priceCheckStore.totalSalesPackageCount,\r\n priceCheckStore.visitBuilderSearch.setSearchQuery,\r\n searchResults.discountedSalesItems,\r\n searchResults.regularSalesItems,\r\n searchResults.salesPackages,\r\n searchResults.searchQueryApplied\r\n ])\r\n\r\n const priceCheckButton = useMemo(() => {\r\n return (\r\n \r\n )\r\n }, [])\r\n\r\n return useMemo(() => {\r\n return {\r\n priceCheckModal,\r\n priceCheckButton\r\n }\r\n }, [priceCheckButton, priceCheckModal])\r\n};\r\n","import { EnvironmentBanner } from \"@common/components/layout\";\r\nimport { ClientSearchButton } from '@common/components/layout/nav/ClientSearchButton';\r\nimport { NavBarLink } from '@common/components/layout/nav/NavBarLink';\r\nimport NavBarProfile from '@common/components/layout/nav/NavBarProfile';\r\nimport { Authorized } from '@common/components/trimming/Authorized';\r\nimport { EnvironmentWarning } from '@common/components/utility';\r\nimport { useApp } from '@common/hooks';\r\nimport { FeatureFlags } from \"@common/models/Enums\";\r\nimport { AuthOperationUINames } from '@common/models/Enums/AuthOperationStrings';\r\nimport { useHospitalApp } from '@hospital/hooks';\r\nimport { usePriceCheck } from \"@hospital/hooks/usePriceCheck\";\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Container, Nav, Navbar } from 'react-bootstrap';\r\nimport { NavLink as NavLinkRR } from 'react-router-dom';\r\nimport uniqid from 'uniqid';\r\n\r\n\r\nexport const HospitalMainNavBar = observer(() => {\r\n\tconst { configuration } = useApp();\r\n\tconst hospitalAppStore = useHospitalApp();\r\n\tconst hasCurrentHospital = hospitalAppStore.hasCurrentHospital;\r\n\tconst currentHospital = hospitalAppStore.currentHospital;\r\n\tconst hospitalId = currentHospital ? currentHospital.hospitalId : 0;\r\n\tconst { priceCheckModal, priceCheckButton } = usePriceCheck();\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\thasCurrentHospital &&\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t{priceCheckButton}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{/*TODO: Margin top 1px might not be the best approach*/}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t{priceCheckModal}\r\n\t\t\r\n\t);\r\n});\r\n\r\n\r\nexport default HospitalMainNavBar;\r\n","import { BreadCrumbTrail } from '@common/components/layout/nav/BreadCrumbTrail';\r\nimport { Authorized } from '@common/components/trimming/Authorized';\r\nimport { NotificationList } from '@common/components/utility';\r\nimport { useApp } from '@common/hooks';\r\nimport { AuthOperationUINames } from '@common/models/Enums/AuthOperationStrings';\r\nimport { componentUtility } from '@hospital/utils';\r\nimport classNames from 'classnames';\r\nimport React from 'react';\r\nimport { Col, Container, Row } from 'react-bootstrap';\r\nimport { AdminNavBar } from './nav/AdminNavBar';\r\nimport { AdminNavList } from './nav/AdminNavList';\r\nimport { HospitalMainNavBar } from './nav/HospitalMainNavBar';\r\n\r\nexport interface PageProps {\r\n hideBreadcrumbs?: boolean;\r\n pageContentClass?: string;\r\n positionSticky?: boolean;\r\n}\r\n\r\nconst Page = (props: React.PropsWithChildren) => {\r\n const { children } = props;\r\n const pageNav = componentUtility.findByType(children, PageNav);\r\n const contentComponent = componentUtility.findByType(children, Content);\r\n const sideBarComponent = componentUtility.findByType(children, SideBar);\r\n const pageTitleComponent = componentUtility.findByType(children, PageTitle);\r\n\r\n if (!contentComponent) {\r\n throw new Error('Expected Page.Content child on Page component, not supplied');\r\n }\r\n return (\r\n
\r\n {\r\n pageNav && pageNav\r\n }\r\n {\r\n !pageNav &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n {\r\n !props.hideBreadcrumbs &&\r\n \r\n }\r\n
\r\n {\r\n pageTitleComponent ? pageTitleComponent : null\r\n }\r\n {contentComponent}\r\n
\r\n \r\n {\r\n sideBarComponent &&\r\n \r\n {sideBarComponent}\r\n \r\n }\r\n
\r\n
\r\n
\r\n )\r\n};\r\n\r\nconst AdminPage = (props: React.PropsWithChildren) => {\r\n const { configuration } = useApp();\r\n\r\n const { children } = props;\r\n const contentComponent = componentUtility.findByType(children, Content);\r\n const sideBarComponent = componentUtility.findByType(children, SideBar);\r\n const pageTitleComponent = componentUtility.findByType(children, PageTitle);\r\n if (!contentComponent) {\r\n throw new Error('Expected Page.Content child on Page component, not supplied');\r\n }\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n pageTitleComponent ? pageTitleComponent : null\r\n }\r\n {contentComponent}\r\n
\r\n \r\n {\r\n sideBarComponent &&\r\n \r\n {sideBarComponent}\r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n )\r\n};\r\nexport interface PageTitleProps {\r\n text?: string | JSX.Element;\r\n subText?: string | JSX.Element;\r\n className?: string;\r\n inlineBlock?: boolean;\r\n}\r\n\r\nconst PageTitle = (props: React.PropsWithChildren) => {\r\n\r\n if (props.text) {\r\n return (\r\n <>\r\n

{props.text}{props.children ? props.children : <>}

\r\n {props.subText &&\r\n
{props.subText}
\r\n }\r\n \r\n )\r\n }\r\n return (\r\n <>\r\n {props.children ? props.children : <>}\r\n \r\n )\r\n}\r\nexport interface SideBarProps {\r\n title?: string;\r\n className?: string;\r\n}\r\n\r\nconst SideBar = (props: React.PropsWithChildren) => {\r\n return (\r\n <>\r\n
\r\n {props.title &&\r\n

{props.title}

\r\n }\r\n {props.children}\r\n
\r\n \r\n )\r\n}\r\n\r\nexport interface ContentProps {\r\n}\r\n\r\nconst Content = (props: React.PropsWithChildren) => {\r\n return (\r\n <>\r\n {props.children}\r\n \r\n );\r\n}\r\n\r\ninterface IPageNavProps {\r\n\r\n}\r\n\r\nconst PageNav = (props: React.PropsWithChildren) => {\r\n return (\r\n <>\r\n {props.children}\r\n \r\n );\r\n}\r\n\r\n\r\nconst PageComponent = Object.assign(Page, {\r\n SideBar,\r\n Content,\r\n PageTitle,\r\n PageNav\r\n});\r\n\r\nconst AdminPageComponent = Object.assign(AdminPage, {\r\n SideBar,\r\n Content,\r\n PageTitle\r\n});\r\n\r\nexport {\r\n AdminPageComponent as AdminPage, PageComponent as Page\r\n};\r\n\r\ninterface IMainContentProps {\r\n cols?: number,\r\n showBreadcrumbs?: boolean,\r\n title?: string,\r\n}\r\n\r\nexport const MainContent = ({ cols = 10, showBreadcrumbs = true, ...props }: React.PropsWithChildren) => (\r\n \r\n {showBreadcrumbs && }\r\n
\r\n {props.title && }\r\n \r\n {props.children}\r\n \r\n
\r\n \r\n);\r\n\r\n\r\ninterface ISidebarProps {\r\n side: \"left\" | \"right\"\r\n title?: string;\r\n className?: string;\r\n cols?: number\r\n minWidth?: string\r\n}\r\n\r\nexport const Sidebar = ({ cols = 2, minWidth = \"0px\", ...props }: React.PropsWithChildren) => (\r\n \r\n
\r\n {props.title &&

{props.title}

}\r\n {props.children}\r\n
\r\n \r\n)\r\n","import { NotificationList } from '@common/components/utility';\r\nimport { HospitalMainNavBar } from '@hospital/components/layout/nav/HospitalMainNavBar';\r\nimport { componentUtility } from '@hospital/utils';\r\nimport classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nexport interface IHospitalPageProps {\r\n hideBreadcrumbs?: boolean;\r\n pageContentClass?: string;\r\n navBarMinWidth?: string;\r\n}\r\n\r\ninterface IPageNavProps {\r\n\r\n}\r\n\r\nconst PageNav = (props: React.PropsWithChildren) => {\r\n return (\r\n <>\r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nexport interface HospitalPageTitleProps {\r\n text?: string;\r\n}\r\n\r\nconst PageTitle = (props: React.PropsWithChildren) => {\r\n if (props.text) {\r\n return (\r\n

{props.text}

\r\n )\r\n }\r\n return (\r\n <>\r\n {props.children ? props.children : <>}\r\n \r\n )\r\n}\r\n\r\nexport interface HospitalContentProps {\r\n}\r\n\r\nconst Content = (props: React.PropsWithChildren) => {\r\n return (\r\n <>\r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nexport interface HospitalSideBarProps {\r\n title?: string;\r\n className?: string;\r\n}\r\n\r\nconst SideBar = (props: React.PropsWithChildren) => {\r\n return (\r\n <>\r\n
\r\n {props.title &&\r\n

{props.title}

\r\n }\r\n {props.children}\r\n
\r\n \r\n )\r\n}\r\n\r\nconst HospitalPage = observer((props: React.PropsWithChildren) => {\r\n const { children } = props;\r\n const pageNav = componentUtility.findByType(children, PageNav);\r\n const pageTitleComponent = componentUtility.findByType(children, PageTitle);\r\n const contentComponent = componentUtility.findByType(children, Content);\r\n const sideBarComponent = componentUtility.findByType(children, SideBar);\r\n\r\n if (!contentComponent) {\r\n throw new Error('Expected Page.Content child on Page component, not supplied');\r\n }\r\n\r\n return (\r\n <>\r\n\r\n
\r\n {\r\n pageNav && pageNav\r\n }\r\n {\r\n !pageNav &&\r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n
\r\n {\r\n pageTitleComponent ? pageTitleComponent : null\r\n }\r\n {contentComponent}\r\n
\r\n
\r\n {\r\n sideBarComponent && sideBarComponent\r\n }\r\n
\r\n \r\n\r\n )\r\n});\r\n\r\nconst HospitalPageComponent = Object.assign(HospitalPage, {\r\n SideBar,\r\n Content,\r\n PageTitle,\r\n PageNav\r\n});\r\n\r\nexport {\r\n HospitalPageComponent as HospitalPage\r\n};\r\n","import { PageCard } from \"@common/components/layout\";\r\nimport { YesNoConfirmModal } from '@common/components/modals';\r\nimport { Pager } from \"@common/components/pagination\";\r\nimport { TableSkeleton } from \"@common/components/skeleton/TableSkeleton\";\r\nimport { IStoreListingModel } from \"@common/models\";\r\nimport { IStoreSearchFilter, defaultStoreSearchFilter } from \"@common/stores/search\";\r\nimport { AdminPage, Page } from \"@hospital/components/layout\";\r\nimport { useCreateLocationStore } from \"@hospital/stores\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useEffect } from 'react';\r\nimport { useNavigate, useOutlet } from \"react-router-dom\";\r\nimport { LocationsFilter, LocationsTable, LocationsTableHeader } from \".\";\r\n\r\nexport const LocationsContainer = observer(() => {\r\n const store = useCreateLocationStore({ shouldSetContext: true });\r\n const navigate = useNavigate();\r\n const outlet = useOutlet();\r\n\r\n //update search anytime searchParams changes and on initial run\r\n useEffect(() => {\r\n if (!outlet)\r\n store.searchStore.search();\r\n }, [store, store.searchStore.combinedSearchParams, outlet])\r\n\r\n if (outlet)\r\n return outlet;\r\n\r\n //if the pager changes, apply the new page in the store, which will trigger an update to searchParams computed which will trigger the useEffect to update the search results.\r\n const browseToEdit = (id: number) => navigate(`/admin/locations/${id}`);\r\n const onHospitalEdit = (loc: IStoreListingModel) => browseToEdit(loc.storeId);\r\n const onStoreConvert = (loc: IStoreListingModel) => store.setStoreToConvert(loc);\r\n\r\n function updateFilter(filter: IStoreSearchFilter) {\r\n if (!filter.isHospital)\r\n filter.isHospital = undefined;\r\n store.searchStore.updateSearchFilter(filter);\r\n }\r\n\r\n return (\r\n <>\r\n store.convertStoreToHospital()\r\n .then(() => { if (store.hospital) { browseToEdit(store.hospital.hospitalId) } })}\r\n onCancel={store.clearStoreToConvert}\r\n />\r\n \r\n \r\n \r\n \r\n {store.searchStore.isLoading &&\r\n }\r\n {!store.searchStore.isLoading && store.searchStore.searchResults.totalRecordCount === 0 &&\r\n

No locations match that combination of filters.

}\r\n {!store.searchStore.isLoading && store.searchStore.searchResults.totalRecordCount !== 0 &&\r\n }\r\n {store.searchStore.hasMultiplePages &&\r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n )\r\n});\r\n","import { makeObservable, observable, computed, flow, action, runInAction } from \"mobx\";\r\nimport { isEqual } from \"lodash\";\r\nimport { IHospitalHoursModel, IStoreListingModel, HospitalModel, HospitalHoursModel, VeterinarianModel, HospitalScheduleModel, ClientConfigurationModel, IvlsDeviceModel } from \"@common/models\";\r\nimport { HospitalService } from \"@common/services\";\r\nimport { StoreSearchStore } from \"@common/stores/search\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\nimport { IQueryCacheStoreInit, QueryCacheStore } from \"@common/stores/QueryCacheStore\";\r\n\r\nexport interface IHospitalHoursGroup {\r\n hospitalHoursVisible: boolean,\r\n hospitalHoursConfirmationLoading: boolean,\r\n hospitalClosureChanged: boolean,\r\n hospitalHoursExceedWorkday: boolean,\r\n hospitalHoursConfirmed: boolean\r\n}\r\n\r\nexport interface ILocationStoreInit extends IQueryCacheStoreInit {\r\n configuration: ClientConfigurationModel;\r\n tryUpdateCurrentHospital: (hospital?: HospitalModel) => void;\r\n}\r\n\r\nexport class LocationStore extends QueryCacheStore {\r\n configuration: ClientConfigurationModel;\r\n searchStore: StoreSearchStore;\r\n tryUpdateCurrentHospital: (hospital?: HospitalModel) => void;\r\n @observable hospitalLoading: boolean = false;\r\n @observable hospital?: HospitalModel = undefined;\r\n @observable hospitalVeterinarians: VeterinarianModel[] = [];\r\n @observable hospitalSchedule: HospitalScheduleModel[] = [];\r\n @observable allHospitals: HospitalModel[] = [];\r\n @observable storeToConvert: IStoreListingModel | undefined = undefined;\r\n @observable storeIsBeingConverted: boolean = false;\r\n @observable hospitalHoursGroup: IHospitalHoursGroup = observable.object({\r\n hospitalHoursVisible: false,\r\n hospitalClosureChanged: false,\r\n hospitalHoursConfirmationLoading: false,\r\n hospitalHoursExceedWorkday: false,\r\n hospitalHoursConfirmed: false\r\n });\r\n @observable ivlsDevices: IvlsDeviceModel[] = [];\r\n\r\n constructor(init: ILocationStoreInit) {\r\n super(init)\r\n\r\n this.searchStore = new StoreSearchStore();\r\n this.tryUpdateCurrentHospital = init.tryUpdateCurrentHospital;\r\n this.configuration = init.configuration;\r\n\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n }); //use decorators\r\n }\r\n\r\n @computed get isConfirmCreateHospitalModalVisible() {\r\n return this.storeToConvert !== undefined;\r\n }\r\n\r\n @computed get hospitalPricingTierOrganization() {\r\n return this.hospital && this.hospital.parentOrganizationId !== undefined ? this.configuration.getPricingTierOrganization(this.hospital.parentOrganizationId) : undefined;\r\n }\r\n\r\n @computed get confirmCreateHospitalModalDescription() {\r\n return this.storeToConvert\r\n ? `Are you sure you want to convert ${this.storeToConvert.name} in ${this.storeToConvert.city}, ${this.storeToConvert.stateAbbreviation} to a new hospital?`\r\n : '';\r\n }\r\n\r\n @computed get isLocationActionDisabled() {\r\n return this.searchStore.isLoading || this.hospitalLoading || this.storeToConvert !== undefined;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Actions\r\n /**\r\n * Clears all hospital hour changes needed for modal popu\r\n */\r\n @action.bound clearHospitalHoursConfirmation() {\r\n this.hospitalHoursGroup.hospitalClosureChanged = false;\r\n this.hospitalHoursGroup.hospitalHoursExceedWorkday = false;\r\n this.hospitalHoursGroup.hospitalHoursVisible = false;\r\n this.hospitalHoursGroup.hospitalHoursConfirmationLoading = false;\r\n this.hospitalHoursGroup.hospitalHoursConfirmed = false;\r\n }\r\n\r\n /**\r\n * Confirms that the user has agreed to make changes to hospital confirmation\r\n */\r\n @action.bound setHospitalHoursChangesConfirmed() {\r\n this.hospitalHoursGroup.hospitalHoursConfirmed = true;\r\n }\r\n\r\n @action.bound setStoreToConvert(store: IStoreListingModel) {\r\n this.storeIsBeingConverted = false;\r\n this.storeToConvert = store;\r\n }\r\n\r\n @action.bound clearStoreToConvert() {\r\n this.storeIsBeingConverted = false;\r\n this.storeToConvert = undefined;\r\n }\r\n //#endregion\r\n\r\n //#region Flows\r\n\r\n updateHospital = flow(function* (this: LocationStore, hospital: HospitalModel) {\r\n // if hospital hours were changed, we want to warn the user of this\r\n if (this.requireHospitalHoursConfirmation(hospital)) {\r\n this.hospitalHoursGroup.hospitalHoursVisible = true;\r\n return;\r\n }\r\n this.hospitalLoading = true;\r\n this.hospital = yield HospitalService.updateHospital(hospital.hospitalId, hospital)\r\n .then(NotificationStoreInstance.onSuccess(\"Hospital Updated!\"))\r\n .catch(NotificationStoreInstance.onError(`Unable to update hospital: ${hospital.hospitalId}`, this.hospital));\r\n\r\n this.tryUpdateCurrentHospital(this.hospital);\r\n this.hospitalLoading = false;\r\n this.clearHospitalHoursConfirmation();\r\n });\r\n\r\n convertStoreToHospital = flow(function* (this: LocationStore) {\r\n if (this.storeToConvert === undefined) return;\r\n this.storeIsBeingConverted = true;\r\n this.hospital = yield HospitalService.convertStoreToHospital(this.storeToConvert.storeId)\r\n .then(NotificationStoreInstance.onSuccess(\"Hospital created!\"))\r\n .catch(NotificationStoreInstance.onError(`Unable to convert store to hospital. Store: ${this.storeToConvert.storeId}`, undefined));\r\n\r\n this.clearStoreToConvert();\r\n return this.hospital === undefined ? 0 : this.hospital.hospitalId;\r\n });\r\n\r\n /**\r\n * Retrieve the specified hospital by ID., the result is stored in the this.selectedLocation observable.\r\n * @param hospitalId the id of the hospital to load.\r\n * @returns\r\n */\r\n refreshHospital = flow(function* (this: LocationStore, hospitalId: number) {\r\n this.hospitalLoading = true;\r\n this.hospital = yield HospitalService.getHospital(hospitalId)\r\n .then((hh: HospitalModel) => {\r\n return runInAction(() => {\r\n this.ivlsDevices = hh.ivlsDevices;\r\n return hh;\r\n });\r\n })\r\n .catch(NotificationStoreInstance.onError(\"Unable to load Hospital\", this.hospital))\r\n this.hospitalLoading = false;\r\n });\r\n\r\n /**\r\n * Determines if times specified by user are outside normal working hours\r\n * @param hospitalHours newly chosen hospital hours\r\n */\r\n hoursAreOutsideStandard = (hospitalHours: IHospitalHoursModel) => {\r\n // we don't need to check open and close times if the store is closed\r\n if (!hospitalHours.isOpen) {\r\n return false;\r\n }\r\n if (hospitalHours.openTime < \"07:00:00\" || hospitalHours.closeTime > \"18:00:00\") {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n requireHospitalHoursConfirmation = (hospital: HospitalModel) => {\r\n // if the user has accepted changes, then no more confirmation is needed\r\n if (this.hospitalHoursGroup.hospitalHoursConfirmed) {\r\n return false;\r\n }\r\n\r\n this.updateHospitalHoursConfirmationModel(hospital.hospitalHours);\r\n\r\n // we only want to show confirmation model if a store had been previously opened and now closed\r\n // and if a user specifies hours that are outside normal global work day\r\n if (this.hospitalHoursGroup.hospitalClosureChanged || this.hospitalHoursGroup.hospitalHoursExceedWorkday) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n updateHospitalHoursConfirmationModel(allHospitalHours: HospitalHoursModel[]) {\r\n allHospitalHours.forEach((hospitalHour, index) => {\r\n const previousHospitalHours = this.hospital?.hospitalHours[index];\r\n // if previous and current are the same, no need to process anything\r\n if (isEqual(hospitalHour, previousHospitalHours)) {\r\n return;\r\n }\r\n // if a store has been closed, we need to confirm changes\r\n if (previousHospitalHours && previousHospitalHours.isOpen && !hospitalHour.isOpen) {\r\n this.hospitalHoursGroup.hospitalClosureChanged = true;\r\n }\r\n if (this.hoursAreOutsideStandard(hospitalHour)) {\r\n this.hospitalHoursGroup.hospitalHoursExceedWorkday = true;\r\n }\r\n })\r\n }\r\n\r\n loadAllHospitals = flow(function* (this: LocationStore) {\r\n this.allHospitals = yield HospitalService.getAllHospitals()\r\n .catch(NotificationStoreInstance.onError(\"Unable to load hospitals\", []))\r\n });\r\n\r\n loadHospitalhospitalVeterinarians = flow(function* (this: LocationStore, hospitalId: number) {\r\n this.hospitalVeterinarians = yield this.queryClient?.fetchQuery({\r\n queryKey: [HospitalService.tags.getHospitalVeterinarians, { hospitalId }],\r\n queryFn: () => HospitalService.getHospitalVeterinarians(hospitalId),\r\n staleTime: this.queryStaleTime\r\n });\r\n });\r\n //#endregion\r\n\r\n public refreshHospitalIvlsDevices = flow(function* (this: LocationStore, hospitalId: number) {\r\n this.ivlsDevices = yield HospitalService.refreshHospitalIvlsDevices(hospitalId, { showSuccess: true, showError: true });\r\n if (this.hospital) {\r\n this.hospital.ivlsDevices = this.ivlsDevices;\r\n }\r\n });\r\n}\r\n","import { FormInput, FormSelect, Patterns, spreadAndtransformDefaultValues } from \"@common/components/forms\";\r\nimport { useApp } from \"@common/hooks\";\r\nimport { IStoreSearchFilter } from \"@common/stores/search\";\r\nimport { find } from \"lodash\";\r\nimport { observer } from \"mobx-react\";\r\nimport React from \"react\";\r\nimport { Button, Form } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\n\r\ninterface LocationFilterProps {\r\n filter: IStoreSearchFilter,\r\n defaultFilter: IStoreSearchFilter,\r\n onApplyFilter: (filter: IStoreSearchFilter) => void\r\n onClearFilter: () => void;\r\n}\r\n\r\nexport const LocationsFilter = observer((props: LocationFilterProps) => {\r\n const { configuration } = useApp();\r\n\r\n const { register, handleSubmit, control, reset } = useForm({\r\n shouldFocusError: true,\r\n defaultValues: spreadAndtransformDefaultValues(props.filter)\r\n });\r\n\r\n /**\r\n * Clear all existing filters and resets form\r\n */\r\n const removeAllFilters = () => {\r\n props.onClearFilter()\r\n reset(spreadAndtransformDefaultValues(props.defaultFilter))\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n s.name}\r\n getOptionValue={s => s.name}\r\n mapOptionToValue={opt => opt?.name}\r\n mapValueToOption={name => find(configuration.states, { name })}\r\n />\r\n
\r\n
\r\n \r\n
\r\n\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 { useApp, useCurrentRoute, useRouteBreadcrumb } from '@common/hooks';\r\nimport { AdminPage, Page } from '@hospital/components/layout';\r\nimport { useCreateUserStore, useCreateVeterinarianStore } from '@hospital/stores';\r\nimport { UserProfile } from '@hospital/views/shared/userprofile';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect } from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { useOutlet } from 'react-router';\r\n\r\nexport const User = observer(() => {\r\n const { configuration } = useApp();\r\n const currentRoute = useCurrentRoute();\r\n const isRootRoute = currentRoute!.pathname.toLowerCase().indexOf('/myprofile') === 0;\r\n const isAdminRoute = currentRoute!.pathname.toLowerCase().indexOf('/admin') === 0;\r\n const store = useCreateUserStore(configuration, { recreateOnUserIdRoute: true });\r\n const vetStore = useCreateVeterinarianStore();\r\n const { setBreadCrumb } = useRouteBreadcrumb();\r\n const outlet = useOutlet();\r\n\r\n useEffect(() => {\r\n if (store.userId) {\r\n store.refreshUser(store.userId);\r\n }\r\n }, [store, store.userId]);\r\n\r\n useEffect(() => {\r\n if (store.user)\r\n setBreadCrumb(`${store.user.firstName} ${store.user.lastName}`);\r\n else\r\n setBreadCrumb(undefined);\r\n }, [store.user, setBreadCrumb]);\r\n\r\n const renderUser = () =>\r\n \r\n {store.userLoading &&\r\n \r\n Loading user profile... \r\n \r\n }\r\n {!store.userLoading &&\r\n \r\n }\r\n ;\r\n\r\n if (outlet) return <>{outlet}\r\n\r\n return (\r\n <>\r\n {\r\n isRootRoute && renderUser()\r\n }\r\n {\r\n isAdminRoute &&\r\n \r\n \r\n {renderUser()}\r\n \r\n \r\n\r\n }\r\n {\r\n !isRootRoute && !isAdminRoute &&\r\n \r\n \r\n {renderUser()}\r\n \r\n \r\n }\r\n \r\n )\r\n});\r\n","import { useMemo } from \"react\";\r\nimport { VeterinarianStore } from \"../VeterinarianStore\";\r\n\r\n/**\r\n * Create a Veterinarian Store\r\n * @returns\r\n */\r\nexport const useCreateVeterinarianStore = () => {\r\n const [vetStore] = useMemo(() => [new VeterinarianStore()], []);\r\n return vetStore;\r\n}\r\n","import { makeObservable, action, computed, observable, IObservableArray } from 'mobx';\r\nimport { HospitalOrganizationsSearchStore } from '@hospital/stores';\r\nimport { ClientConfigurationModel, IOrganizationListingModel } from '@common/models/.';\r\nimport { UserStore } from './UserStore';\r\nexport interface UserLocationsAddStoreInit {\r\n configuration: ClientConfigurationModel\r\n userStore: UserStore\r\n}\r\n\r\nexport class UserLocationsAddStore {\r\n userStore!: UserStore;\r\n configuration!: ClientConfigurationModel;\r\n currentCorpOrg!: IOrganizationListingModel;\r\n hospitalOrgSearchStore!: HospitalOrganizationsSearchStore;\r\n @observable selectedOrganizations: IObservableArray = observable([]);\r\n\r\n constructor(init: UserLocationsAddStoreInit) {\r\n\r\n const {\r\n configuration,\r\n userStore,\r\n } = init;\r\n\r\n this.configuration = configuration;\r\n this.userStore = userStore;\r\n\r\n\r\n if (!this.userStore)\r\n throw 'Attempt to instantiate UserLocationsAddStore with undefined UserStore.';\r\n\r\n this.currentCorpOrg = this.configuration.currentCorpOrganization;\r\n const userId: number | undefined = this.userStore.user && this.userStore.user.userId > 0 ? this.userStore.user.userId : undefined; //use will be loaded by this point because child router outlet doesn't render until it's loaded.\r\n this.hospitalOrgSearchStore = new HospitalOrganizationsSearchStore(this.configuration, { uid: userId, unrelated: userId ? 1 : undefined }); //unrelated: 1 tells the Hospital Org Search stored procedure to drop org results the specified user id is already related to, so it returns orgs they don't already have.\r\n\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n @action.bound clear = () => {\r\n this.selectedOrganizations.clear();\r\n this.hospitalOrgSearchStore.setPartialDefaultSearchFilter({});\r\n }\r\n\r\n @action.bound addSelectedOrganization(organization: IOrganizationListingModel) {\r\n this.selectedOrganizations.push(organization);\r\n }\r\n\r\n @action.bound removeSelectedOrganization(organization: IOrganizationListingModel) {\r\n this.selectedOrganizations.remove(organization);\r\n }\r\n\r\n isSelectedOrganization(organization: IOrganizationListingModel) {\r\n return this.selectedOrganizations.filter((org) => {\r\n return org.organizationId === organization.organizationId;\r\n }).length > 0;\r\n }\r\n\r\n @computed get isLoading() {\r\n return this.hospitalOrgSearchStore.isLoading;\r\n }\r\n}\r\n","import { ToggleButton } from '@common/components/forms';\r\nimport { IHospitalOrganizationListingModel } from '@common/models/HospitalOrganizationListingModel';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\nimport Skeleton from 'react-loading-skeleton';\r\nimport { UserLocationsAddStore } from './UserLocationsAddStore';\r\n\r\nconst UserLocationsAddTableHeader = observer(() => (\r\n \r\n Name\r\n Description\r\n Action\r\n ));\r\n\r\nconst UserLocationsAddTableRows = observer(({ userLocationsAddStore }: { userLocationsAddStore: UserLocationsAddStore }) => {\r\n if (userLocationsAddStore.isLoading) {\r\n const rows = Array.from({ length: userLocationsAddStore.hospitalOrgSearchStore.searchParams.top }, (_, i) =>\r\n \r\n {Array.from({ length: 3 }, (_, j) =>\r\n )}\r\n )\r\n return (\r\n <>\r\n {rows}\r\n \r\n )\r\n } else {\r\n const rows = userLocationsAddStore.hospitalOrgSearchStore.searchResults.results.map((o: IHospitalOrganizationListingModel) => {\r\n let isSelected = userLocationsAddStore.isSelectedOrganization(o);\r\n return (\r\n isSelected ? userLocationsAddStore.removeSelectedOrganization(o) : userLocationsAddStore.addSelectedOrganization(o)}>\r\n {o.name + (o.hospitalCount > 1 ? ' - (' + o.hospitalCount + ')' : '')}\r\n {o.description}\r\n \r\n \r\n \r\n \r\n \r\n )\r\n });\r\n return (\r\n <>\r\n {rows}\r\n \r\n )\r\n }\r\n});\r\n\r\nexport const UserLocationsAddTable = observer(({ userLocationsAddStore }: { userLocationsAddStore: UserLocationsAddStore }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {\r\n (userLocationsAddStore.isLoading || userLocationsAddStore.hospitalOrgSearchStore.searchResults.totalRecordCount > 0) &&\r\n \r\n }\r\n {\r\n !userLocationsAddStore.isLoading && userLocationsAddStore.hospitalOrgSearchStore.searchResults.totalRecordCount === 0 &&\r\n (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
\r\n
No hospitals match your search criteria or they are already assigned to {userLocationsAddStore.userStore.user.firstName + ' ' + userLocationsAddStore.userStore.user.lastName}
\r\n
)\r\n});\r\n","import { spreadAndtransformDefaultValues } from '@common/components/forms';\r\nimport { Pager } from '@common/components/pagination';\r\nimport { useApp } from '@common/hooks';\r\nimport { IHospitalOrganizationsSearchFilter } from '@hospital/stores';\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\nimport { Button, Form, Modal } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { UserLocationsAddStore } from './UserLocationsAddStore';\r\nimport { UserLocationsAddTable } from './UserLocationsAddTable';\r\nimport { UserStore } from './UserStore';\r\n\r\ninterface IUserLocationsAddProps {\r\n userStore: UserStore;\r\n onClose: () => void;\r\n}\r\nexport const UserLocationsAdd = observer(({ onClose, userStore }: IUserLocationsAddProps) => {\r\n const { configuration } = useApp();\r\n const [userLocationsAddStore] = useState(new UserLocationsAddStore({ configuration, userStore }));\r\n const { register: registerSearch, handleSubmit: handleSubmitSearch, reset: resetSearch } = useForm({\r\n shouldFocusError: true,\r\n defaultValues: spreadAndtransformDefaultValues(userLocationsAddStore.hospitalOrgSearchStore.searchFilter)\r\n });\r\n\r\n const submitCaller = handleSubmitSearch(d => {\r\n userLocationsAddStore.hospitalOrgSearchStore.updateSearchFilter({ searchterm: d.searchterm })\r\n });\r\n\r\n const resetSearchForm = useCallback(() => {\r\n resetSearch();\r\n userLocationsAddStore.clear();\r\n }, [userLocationsAddStore, resetSearch]);\r\n\r\n const close = () => {\r\n resetSearchForm();\r\n onClose();\r\n }\r\n\r\n useEffect(() => {\r\n userLocationsAddStore.hospitalOrgSearchStore.search();\r\n }, [userLocationsAddStore.hospitalOrgSearchStore, userLocationsAddStore.hospitalOrgSearchStore.combinedSearchParams, userLocationsAddStore.userStore.user]);\r\n\r\n const saveSelectedOrganizations = () => {\r\n userStore.addOrganizations(userLocationsAddStore.selectedOrganizations).then(close);\r\n }\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n Assign Hospitals To: {userStore.user.firstName + ' ' + userStore.user.lastName}\r\n \r\n \r\n
\r\n
\r\n
\r\n Search: \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {\r\n userLocationsAddStore.hospitalOrgSearchStore.hasMultiplePages &&\r\n \r\n }\r\n \r\n \r\n \r\n
\r\n )\r\n});\r\n","import { DeleteButton } from '@common/components/forms';\r\nimport { YesNoConfirmModal } from '@common/components/modals';\r\nimport { IOrganizationRelationListingModel, OrganizationRelationListingModel } from '@common/models/OrganizationRelationListingModel';\r\nimport { action, computed, makeObservable, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useCallback, useState } from 'react';\r\nimport { OverlayTrigger, Popover, Row, Tooltip } from 'react-bootstrap';\r\nimport { UserLocationsAdd } from './UserLocationsAdd';\r\nimport { UserStore } from './UserStore';\r\n\r\nexport interface IUserLocationsProps {\r\n store: UserStore;\r\n readOnly?: boolean;\r\n}\r\n\r\nclass UserLocationsConfirmDeleteStore {\r\n userStore!: UserStore;\r\n @observable visible: boolean = false;\r\n @observable organization: OrganizationRelationListingModel | undefined;\r\n @computed get description() {\r\n return `Are you sure you want to remove access to ${this.organization?.organizationName} for this user?`;\r\n }\r\n @action.bound show(organization: IOrganizationRelationListingModel) {\r\n this.organization = organization;\r\n this.visible = true;\r\n }\r\n @action.bound close() {\r\n this.visible = false;\r\n }\r\n @action.bound async confirm() {\r\n await this.userStore.deleteOrganization(this.organization!);\r\n this.visible = false;\r\n }\r\n constructor(userStore: UserStore) {\r\n this.userStore = userStore;\r\n makeObservable(this, undefined, { autoBind: true });\r\n }\r\n}\r\n\r\nconst primaryLocationToolTip = (\r\n \r\n A users primary location cannot be deleted here.\r\n \r\n\r\n);\r\n\r\nexport const UserLocations = observer(({ store, readOnly }: IUserLocationsProps) => {\r\n const [confirmDeleteStore] = useState(new UserLocationsConfirmDeleteStore(store));\r\n const deleteOrganization = useCallback((hospitalOrg: IOrganizationRelationListingModel) => {\r\n confirmDeleteStore.show(hospitalOrg);\r\n }, [confirmDeleteStore]);\r\n const [addLocation, setAddLocation] = useState(false);\r\n\r\n return (\r\n <>\r\n {addLocation &&\r\n setAddLocation(false)} userStore={store} />}\r\n await confirmDeleteStore.confirm()}\r\n onCancel={confirmDeleteStore.close}\r\n />\r\n {!store.userHospitalOrganizations.length &&\r\n \r\n No locations have been assigned to this user.\r\n \r\n }\r\n {store.userHospitalOrganizations.length > 0 &&\r\n
    \r\n {store.userHospitalOrganizations.map((r, index) =>\r\n
  • \r\n
    \r\n {r.organizationDescription ? r.organizationDescription : r.organizationName} {\r\n r.isDefault &&\r\n (\r\n \r\n \r\n \r\n )\r\n }\r\n {r.hospitalCount > 1 &&\r\n (\r\n This location includes access to {r.hospitalCount} Hospital(s) {r.isReadOnly && 'and is read only and cannot be deleted here.'}}>\r\n {r.hospitalCount} \r\n \r\n )\r\n }\r\n \r\n {(!r.isDefault && !readOnly && !r.isReadOnly) && store.isActive &&\r\n < DeleteButton aria-label={`delete ${r.organizationDescription} role`} onClick={() => deleteOrganization(r)} />\r\n }\r\n
    \r\n
  • \r\n )}\r\n
\r\n }\r\n \r\n
\r\n {!readOnly && store.isActive &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n \r\n )\r\n});\r\n","import { observer } from 'mobx-react';\r\nimport React from 'react';\r\n\r\nexport interface IUserInactiveProfileBannerProps {\r\n isProfileActive: boolean;\r\n}\r\n\r\nexport const UserInactiveProfileBanner = observer(\r\n ({ isProfileActive }: IUserInactiveProfileBannerProps) => {\r\n return (\r\n <>\r\n {!isProfileActive && (\r\n
\r\n INACTIVE PROFILE\r\n
\r\n )}\r\n \r\n );\r\n }\r\n);\r\n","import { FormInput, FormSelect, TriStateSelectOptions, spreadAndtransformDefaultValues } from '@common/components/forms';\r\nimport { HospitalModel, macroTypes } from \"@common/models\";\r\nimport { MacroType } from \"@common/models/Enums/MacroType\";\r\nimport { ICommunicationTemplateFilter } from \"@common/stores/CommunicationTemplateSearchStore\";\r\nimport { find } from \"lodash\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useEffect } from \"react\";\r\nimport { Button, Form } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\n\r\nexport interface ICommunicationTemplatesFilterProps {\r\n searchFilter: ICommunicationTemplateFilter,\r\n defaultFilter: ICommunicationTemplateFilter,\r\n onClearFilter: () => void;\r\n onUpdateFilter: (data: ICommunicationTemplateFilter) => void;\r\n fetchHospitals?: () => void\r\n hospitals?: Array\r\n macroScope?: MacroType\r\n}\r\n\r\nexport const CommunicationTemplatesFilter = observer(({ onClearFilter, defaultFilter, searchFilter, onUpdateFilter, fetchHospitals, hospitals, macroScope }: ICommunicationTemplatesFilterProps) => {\r\n const { handleSubmit, control, reset, resetField, watch } = useForm({ defaultValues: spreadAndtransformDefaultValues(searchFilter) });\r\n\r\n useEffect(() => {\r\n fetchHospitals && fetchHospitals();\r\n }, [fetchHospitals])\r\n\r\n /**\r\n * Clear all existing filters and resets form\r\n */\r\n const removeAllFilters = () => {\r\n onClearFilter()\r\n reset(spreadAndtransformDefaultValues(defaultFilter))\r\n }\r\n\r\n const macroType = watch(\"macroTypeId\");\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n opt.label}\r\n getOptionValue={opt => opt.value.toString()}\r\n mapValueToOption={value => find(macroTypes, { value })}\r\n mapOptionToValue={opt => opt?.value}\r\n onOptionChanged={(option) => {\r\n if (option?.value == MacroType.Location) resetField('userName');\r\n if (option?.value == MacroType.Provider) resetField('hospitalId');\r\n }}\r\n />\r\n
\r\n
\r\n s.name}\r\n getOptionValue={s => s.hospitalId.toString()}\r\n mapOptionToValue={opt => opt?.hospitalId}\r\n mapValueToOption={hospitalId => find(hospitals, { hospitalId: hospitalId ?? 0 })}\r\n />\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n opt.name}\r\n getOptionValue={opt => opt.value === null ? '' : opt.value.toString()}\r\n mapValueToOption={val => TriStateSelectOptions.filter(p => val === undefined ? p.value === null : p.value === val)[0]}\r\n mapOptionToValue={opt => opt?.value === null ? undefined : opt?.value as boolean}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n});\r\n","import { TableStyles } from \"react-data-table-component\";\r\nimport { petcoBodyBG, petcoCharcoal } from '@common/_assets/color-constants.js';\r\n\r\n// Available Styles: https://github.com/jbetancur/react-data-table-component/blob/master/src/DataTable/styles.ts\r\nexport const dataTableCustomStyles: TableStyles & { rows: { style: any } } = {\r\n headRow: {\r\n style: {\r\n fontFamily: 'petcocirculartt-bold, Roboto',\r\n fontWeight: 'bold',\r\n fontSize: '14px',\r\n lineHeight: '22px',\r\n letterSpacing: '0.5px',\r\n textTransform: 'uppercase',\r\n color: petcoCharcoal,\r\n border: 'none',\r\n paddingBottom: '0.25rem',\r\n minHeight: '30px',\r\n paddingTop: '1rem'\r\n }\r\n },\r\n rows: {\r\n style: {\r\n fontWeight: 'normal',\r\n fontStyle: 'normal',\r\n fontSize: '15px',\r\n lineHeight: '22px',\r\n letterSpacing: '0.5px',\r\n color: petcoCharcoal,\r\n '&:hover': {\r\n backgroundColor: petcoBodyBG,\r\n }\r\n }\r\n },\r\n headCells: {\r\n style: {\r\n paddingLeft: '10px',\r\n paddingRight: '10px',\r\n }\r\n },\r\n cells: {\r\n style: {\r\n paddingLeft: '10px',\r\n paddingRight: '10px',\r\n textAlign: 'text-center',\r\n }\r\n }\r\n}\r\n\r\nexport const dashboardTableStyle = {\r\n ...dataTableCustomStyles,\r\n responsiveWrapper: { style: { height: 'calc(100% - 93px)' } },\r\n noData: {\r\n style: {\r\n alignItems: 'flex-start',\r\n justifyContent: 'flex-start',\r\n marginLeft: '-12px'\r\n }\r\n },\r\n tableWrapper: { style: { height: '100%' } }\r\n}\r\n","import { useIsMounted } from \"@common/hooks\";\r\nimport { isUndefined } from \"lodash\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useCallback, useState } from \"react\";\r\nimport { PaginationComponentProps } from \"react-data-table-component\";\r\nimport ReactPaginate from \"react-paginate\";\r\n\r\nexport interface IUnknownPageCountPaginationProps extends PaginationComponentProps {\r\n hasMore?: boolean;\r\n}\r\n\r\nexport const UnknownPageCountPagination = observer(({ rowsPerPage, onChangePage, onChangeRowsPerPage, currentPage, hasMore = true, ...props }: IUnknownPageCountPaginationProps) => {\r\n const isMounted = useIsMounted(); \r\n\r\n const handleRowsPerPage = useCallback(\r\n (e: React.ChangeEvent) => {\r\n onChangeRowsPerPage(Number(e.target.value), currentPage);\r\n onChangePage(1, props.rowCount); \r\n }, [currentPage, onChangeRowsPerPage, onChangePage, props.rowCount]);\r\n\r\n\t// TODO: maybe allow this to be set from RemoteDataTable.tsx in the future?\r\n const [defaultRowsPerPageOptions] = useState([10, 25, 50, 100]);\r\n\r\n const handlePageChange = useCallback((pageNumber: number) => {\r\n if (!isUndefined(pageNumber) && isMounted()) {\r\n onChangePage(pageNumber + 1, props.rowCount); \r\n }\r\n }, [onChangePage, isMounted, props.rowCount]); \r\n\r\n return (\r\n \r\n );\r\n});\r\n","import { BasicDataTablePagination, DataTablePagination, IDataTablePaginationProps } from '@common/components/pagination';\r\nimport { SearchResponse } from '@common/models';\r\nimport { defaultTo } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport DataTable, { PaginationComponentProps, TableColumn, TableProps } from 'react-data-table-component';\r\nimport { dataTableCustomStyles } from './TableStyles';\r\nimport { IUnknownPageCountPaginationProps, UnknownPageCountPagination } from '@common/components/pagination/UnknownPageCountPagination';\r\n\r\n// Cell Props defines properties needed to create a custom cell defined in your data table columns using TableColumn[]\r\n// i.e. cell: (row, index, col, id) => { {row.name} }\r\n// https://react-data-table-component.netlify.app/?path=/story/columns-cells-custom-cells--custom-cells\r\nexport interface ICellProps {\r\n row: T,\r\n index?: number,\r\n column?: TableColumn,\r\n id?: string | number\r\n}\r\n\r\n// To be used when Rows Per Page ddl is implemented in Pager Control\r\nconst defaultRowsPerPageOptions = [10, 25, 50, 100];\r\n\r\nexport type RemoteDataTableProps = {\r\n searchResult: SearchResponse;\r\n displayRowsPerPage?: boolean;\r\n isBasicPagination?: boolean;\r\n hasMore?: boolean;\r\n\tpageRangeDisplayed?: number;\r\n} & Omit, \"data\">\r\n\r\nconst applyStyleToWhenRowClickable = (rowHasClickEvent: boolean) => {\r\n if (rowHasClickEvent) { dataTableCustomStyles.rows.style[\"cursor\"] = 'pointer' }\r\n}\r\n\r\nexport const RemoteDataTable = observer((props: RemoteDataTableProps) => {\r\n //This is this way so that all possible properties for DataTable can be passed to RemoteDataTable, but we pull off the ones we setup our own defaults for\r\n //and dump the rest to remainingProps so we can spread the remainingProps onto the data table to support adhocc scenarios like rowClick and other custom case by case scenarios.\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n columns, \r\n persistTableHead = true, \r\n searchResult, \r\n displayRowsPerPage, \r\n isBasicPagination = false,\r\n sortServer = true, \r\n onSort, \r\n defaultSortFieldId, \r\n pagination = true, \r\n paginationServer = true,\r\n paginationComponent,\r\n paginationTotalRows, \r\n paginationPerPage = 20,\r\n\t\tpageRangeDisplayed,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n paginationRowsPerPageOptions, onChangePage, onChangeRowsPerPage, onRowDoubleClicked, customStyles, noDataComponent, paginationResetDefaultPage, ...remainingProps\r\n } = props;\r\n\r\n applyStyleToWhenRowClickable(Boolean(props.onRowClicked) || Boolean(props.onRowDoubleClicked));\r\n\r\n const handleChangePage = (page: number, totalRows: number) => {\r\n if (onChangePage)\r\n onChangePage(page - 1, totalRows);\r\n }\r\n\r\n\tconst setPaginationComponent = (component: PaginationComponentProps) => {\r\n if (isBasicPagination) {\r\n let unknownComponent: IUnknownPageCountPaginationProps = {...component, hasMore: props.hasMore };\r\n return ;\r\n }\r\n\t\tif (displayRowsPerPage) {\r\n\t\t\tlet dtComponent: IDataTablePaginationProps = {...component, pageRangeDisplayed};\r\n\t\t\treturn ;\r\n\t\t} else {\r\n\t\t\treturn ;\r\n\t\t}\r\n\t}\r\n\r\n return (\r\n \r\n )\r\n});\r\n","import { RemoteDataTable } from '@common/components/table/RemoteDataTable';\r\nimport { HospitalModel, MacroListingModel } from '@common/models';\r\nimport { MacroType } from '@common/models/Enums/MacroType';\r\nimport { CommunicationTemplateSearchStore } from '@common/stores/CommunicationTemplateSearchStore';\r\nimport { DateTime } from 'luxon';\r\nimport { observer } from \"mobx-react\";\r\nimport React from 'react';\r\nimport { PulseLoader } from 'react-spinners';\r\n\r\ninterface IProps {\r\n onCommunicationTemplateSelected: (macroId: number) => void;\r\n hospital: HospitalModel | undefined,\r\n searchStore: CommunicationTemplateSearchStore,\r\n macroScope?: MacroType\r\n}\r\n\r\nexport const CommunicationTemplatesTable = observer((props: IProps) => {\r\n const CreatedBy = {\r\n name: \"Created By\",\r\n sortable: false,\r\n selector: (row: MacroListingModel) => row.createdBy,\r\n minWidth: \"12rem\"\r\n }\r\n\r\n const Type = {\r\n name: \"Type\",\r\n sortable: false,\r\n selector: (row: MacroListingModel) => row.macroTypeName,\r\n minWidth: \"3rem\"\r\n }\r\n\r\n const Access = {\r\n name: \"Access\",\r\n sortable: false,\r\n selector: (row: MacroListingModel) => row.assignedTo,\r\n minWidth: \"12rem\"\r\n }\r\n\r\n const Name = {\r\n name: \"Name\",\r\n sortable: false,\r\n selector: (row: MacroListingModel) => row.name,\r\n minWidth: \"18rem\"\r\n }\r\n\r\n const DateCreated = {\r\n name: \"Date Created\",\r\n sortable: false,\r\n selector: (row: MacroListingModel) => row.dateCreated.setZone(props.hospital?.store?.timezoneName).toLocaleString(DateTime.DATE_SHORT),\r\n minWidth: \"7rem\"\r\n }\r\n\r\n const Status = {\r\n name: \"Status\",\r\n sortable: false,\r\n selector: (row: MacroListingModel) => row.isActive ? \"Active\" : \"Inactive\",\r\n minWidth: \"3rem\"\r\n }\r\n\r\n const Action = {\r\n name: \"Action\",\r\n sortable: false,\r\n cell: (row: MacroListingModel) => (\r\n props.onCommunicationTemplateSelected(row.macroId)} />\r\n ),\r\n minWidth: \"4rem\",\r\n center: true,\r\n\r\n }\r\n\r\n const FullDataTableColumns = [\r\n CreatedBy,\r\n Type,\r\n Access,\r\n Name,\r\n DateCreated,\r\n Status,\r\n Action\r\n ]\r\n\r\n const ProviderDataTableColumns = [\r\n Name,\r\n CreatedBy,\r\n Action\r\n ]\r\n\r\n return }\r\n searchResult={props.searchStore.searchResults}\r\n onChangePage={(page: number) => { props.searchStore.changePage(page) }}\r\n onChangeRowsPerPage={(rowsPerPage) => props.searchStore.updateSearchParams({ top: rowsPerPage })}\r\n pagination={true}\r\n paginationServer={true}\r\n sortServer={true}\r\n onSort={props.searchStore.updateRemoteDTSort}\r\n paginationPerPage={props.searchStore.searchParams.top}\r\n onRowClicked={row => props.onCommunicationTemplateSelected(row.macroId)}\r\n />\r\n})\r\n","import { FormInput, FormSelect, ISelectOption, ToggleButton, spreadAndtransformDefaultValues } from \"@common/components/forms\";\r\nimport { PageCard } from \"@common/components/layout\";\r\nimport { YesNoConfirmModal } from \"@common/components/modals\";\r\nimport { SuspenseButton } from \"@common/components/utility\";\r\nimport { useApp, useCurrentRoute, useUnsavedChangesWarning } from \"@common/hooks\";\r\nimport { HospitalModel, MacroKeywords, MacroModel } from \"@common/models\";\r\nimport { AuthOperationUINames } from \"@common/models/Enums/AuthOperationStrings\";\r\nimport { MacroTargetType, MacroType } from \"@common/models/Enums/MacroType\";\r\nimport { HospitalService } from \"@common/services\";\r\nimport { useHospitalApp } from \"@hospital/hooks\";\r\nimport classNames from \"classnames\";\r\nimport { find } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useEffect, useMemo } from \"react\";\r\nimport { Button, Col, Form, Row, Table } from \"react-bootstrap\";\r\nimport { FormProvider, useForm } from \"react-hook-form\";\r\n\r\ninterface IProps {\r\n\tmacro: MacroModel | undefined;\r\n\tmacroScope: MacroType;\r\n\t// onSubmit: (data: IMacroModel) => void;\r\n\tonSubmit: any;\r\n\tonCancel: () => void;\r\n\tonDelete: (macroId: number) => void;\r\n\tfetchHospitals?: () => void;\r\n\thospitals?: Array;\r\n\tusers: ISelectOption[];\r\n\tmacroTypes: ISelectOption[];\r\n\tselectedUserId?: number;\r\n}\r\n\r\nexport const CommunicationTemplateForm = observer(\r\n\t({\r\n\t\tmacro,\r\n\t\tmacroScope,\r\n\t\tonSubmit,\r\n\t\tonCancel,\r\n\t\tonDelete,\r\n\t\tfetchHospitals,\r\n\t\thospitals,\r\n\t\tusers,\r\n\t\tmacroTypes,\r\n\t\tselectedUserId,\r\n\t}: IProps) => {\r\n\t\tconst { configuration } = useApp();\r\n\t\tconst { currentHospital } = useHospitalApp();\r\n\t\tconst timezoneName = currentHospital?.store?.timezoneName;\r\n\t\tconst [showDeleteConfirm, setShowDeleteConfirm] = React.useState(false);\r\n\r\n\t\tconst currentRoute = useCurrentRoute();\r\n\t\tconst isCommunicationTemplateRoute = currentRoute!.pathname.toLowerCase().includes('communicationtemplates');\r\n\t\tconst currentMacroTargetType = isCommunicationTemplateRoute ? MacroTargetType.ExamVisit : MacroTargetType.Sms;\r\n\t\tlet isReadOnly = false;\r\n\t\tconst isEditing = macro?.macroId !== undefined && macro?.macroId !== 0;\r\n\r\n\t\tif (isEditing) {\r\n\t\t\tswitch (macro.macroTypeId) {\r\n\t\t\t\tcase MacroType.Hospitals:\r\n\t\t\t\t\t// Hospital templates are read only if the current user doesn't have permissions or if the current scope is not Hospitals (Hospital templates must be managed from Hospital Admin)\r\n\t\t\t\t\tisReadOnly =\r\n\t\t\t\t\t\t!configuration.HasUIFlag(\r\n\t\t\t\t\t\t\tAuthOperationUINames.UI_HospitalFlags_CanEditAllCommunicationTemplates\r\n\t\t\t\t\t\t) || macroScope != MacroType.Hospitals;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase MacroType.Location:\r\n\t\t\t\t\tisReadOnly = !configuration.HasUIFlag(\r\n\t\t\t\t\t\tAuthOperationUINames.UI_HospitalFlags_CanEditLocationCommunicationTemplates\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase MacroType.Provider:\r\n\t\t\t\t\t// Provider templates are read only if the current user doesn't have permissions and are not the user who created the template\r\n\t\t\t\t\tisReadOnly =\r\n\t\t\t\t\t\t!configuration.HasUIFlag(\r\n\t\t\t\t\t\t\tAuthOperationUINames.UI_HospitalFlags_CanEditProviderCommunicationTemplates\r\n\t\t\t\t\t\t) && macro.createdByUserId != configuration.userId;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst keywords = useMemo(() => {\r\n\t\t\treturn new MacroKeywords({\r\n\t\t\t\t\"{{hospitalname}}\": \"001 - Sarasota, FL\",\r\n\t\t\t\t\"{{hospitalemail}}\": \"example@petco.com\",\r\n\t\t\t\t\"{{hospitalphone}}\": \"555-555-5555\",\r\n\t\t\t\t\"{{hospitalcity}}\": \"Sarasota\",\r\n\t\t\t\t\"{{hospitaladdress}}\": \"4244 Berkshire Dr, Sarasota, FL 34241\",\r\n\t\t\t\t\"{{hospitalurl}}\": \"www.petco.com\",\r\n\t\t\t\t\"{{clientfirstname}}\": \"John\",\r\n\t\t\t\t\"{{clientlastname}}\": \"Doe\",\r\n\t\t\t\t\"{{clientfullname}}\": \"John Doe\",\r\n\t\t\t\t\"{{petname}}\": \"Fluffy\",\r\n\t\t\t\t\"{{vetname}}\": \"Dr. Jane Doe\",\r\n\t\t\t\t\"{{todaysdate}}\": DateTime.now().setZone(timezoneName).toLocaleString(DateTime.DATE_SHORT),\r\n\t\t\t\t\"{{petgender}}\": \"Female\",\r\n\t\t\t\t\"{{hospitalsms}}\": \"555-555-5555\"\r\n\t\t\t});\r\n\t\t}, [timezoneName]);\r\n\r\n\t\tconst defaultValues = useMemo(() => {\r\n\t\t\treturn {\r\n\t\t\t\tmacroId: macro?.macroId === undefined ? 0 : macro.macroId,\r\n\t\t\t\tisActive: macro?.isActive === undefined ? true : macro.isActive,\r\n\t\t\t\tuserId: macroScope == MacroType.Provider ? selectedUserId : undefined,\r\n\t\t\t\tmacroTypeId: macroScope == MacroType.Provider ? MacroType.Provider : undefined,\r\n\t\t\t\tpreview: isEditing ? MacroKeywords.processTextForMacros(macro.content, keywords) : undefined,\r\n\t\t\t\t...macro,\r\n\t\t\t};\r\n\t\t}, [isEditing, keywords, macro, macroScope, selectedUserId]);\r\n\r\n\t\tconst methods = useForm({ defaultValues: spreadAndtransformDefaultValues(defaultValues) });\r\n\t\tconst {\r\n\t\t\tcontrol,\r\n\t\t\thandleSubmit,\r\n\t\t\twatch,\r\n\t\t\treset,\r\n\t\t\tregister,\r\n\t\t\tunregister,\r\n\t\t\tsetValue,\r\n\t\t\tformState: { isDirty },\r\n\t\t} = methods;\r\n\t\tconst unsavedChangesPrompt = useUnsavedChangesWarning(isDirty);\r\n\r\n\t\tconst macroType = watch(\"macroTypeId\");\r\n\t\tconst content = watch(\"content\");\r\n\r\n\t\tuseEffect(() => {\r\n\t\t\treset(spreadAndtransformDefaultValues(defaultValues));\r\n\t\t}, [defaultValues, reset]);\r\n\r\n\t\tuseEffect(() => {\r\n\t\t\tfetchHospitals && fetchHospitals();\r\n\t\t}, [fetchHospitals]);\r\n\r\n\t\tuseEffect(() => {\r\n\t\t\tconst correctedText = content ? MacroKeywords.processTextForMacros(content, keywords) : undefined;\r\n\t\t\tif (correctedText !== undefined) {\r\n\t\t\t\tsetValue(\"preview\", correctedText);\r\n\t\t\t} else {\r\n\t\t\t\tsetValue(\"preview\", \"\");\r\n\t\t\t}\r\n\t\t}, [content, keywords, setValue]);\r\n\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t{unsavedChangesPrompt}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t onDelete(macro?.macroId!)}\r\n\t\t\t\t\t\t\t\tonCancel={() => setShowDeleteConfirm(false)}\r\n\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t opt.label}\r\n\t\t\t\t\t\t\t\t\t\t\tgetOptionValue={opt => opt.value.toString()}\r\n\t\t\t\t\t\t\t\t\t\t\tmapValueToOption={value => find(macroTypes, { value })}\r\n\t\t\t\t\t\t\t\t\t\t\tmapOptionToValue={opt => opt?.value}\r\n\t\t\t\t\t\t\t\t\t\t\tonOptionChanged={option => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tswitch (option?.value) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcase MacroType.Location:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tunregister(\"userId\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmacroScope == MacroType.Location &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetValue(\"hospitalId\", currentHospital?.hospitalId! ?? null);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcase MacroType.Provider:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tunregister(\"hospitalId\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcase MacroType.Hospitals:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tunregister(\"hospitalId\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tunregister(\"userId\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t s.name}\r\n\t\t\t\t\t\t\t\t\t\t\tgetOptionValue={s => s.hospitalId.toString()}\r\n\t\t\t\t\t\t\t\t\t\t\tmapOptionToValue={opt => opt?.hospitalId}\r\n\t\t\t\t\t\t\t\t\t\t\tmapValueToOption={hospitalId =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tfind(hospitals, { hospitalId: hospitalId ?? 0 })\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t find(users, { value })}\r\n\t\t\t\t\t\t\t\t\t\t\tmapOptionToValue={opt => opt?.value}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tActive?\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{!isReadOnly && (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{!isReadOnly && isEditing && (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t setShowDeleteConfirm(true)}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\tDelete\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t{!isReadOnly && (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\"Save Template\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{isEditing\r\n\t\t\t\t\t\t\t\t\t\t\t\t? `Last Modified By: ${macro.userUpdated}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t: `Created By: ${configuration.IsDVM()\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `Dr. ${configuration.firstName} ${configuration.lastName}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: `${configuration.firstName} ${configuration.lastName}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t}`}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{isEditing\r\n\t\t\t\t\t\t\t\t\t\t\t\t? `Date Last Modified: ${macro?.dateUpdated\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.setZone(currentHospital?.store?.timezoneName)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.toLocaleString(DateTime.DATE_FULL)}\r\n at ${macro?.dateUpdated\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.setZone(currentHospital?.store?.timezoneName)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.toLocaleString(DateTime.TIME_SIMPLE)}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t: `Date Created: ${DateTime.now()\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.setZone(currentHospital?.store?.timezoneName)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.toLocaleString(DateTime.DATE_FULL)}\r\n at ${DateTime.now()\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.setZone(currentHospital?.store?.timezoneName)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.toLocaleString(DateTime.TIME_SIMPLE)}`}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{Object.keys(keywords).map((a: string) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
{a}
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n);\r\n","import { useCurrentRoute } from '@common/hooks';\r\nimport { MacroType } from '@common/models/Enums/MacroType';\r\nimport { CommunicationTemplateSearchStore } from '@common/stores/CommunicationTemplateSearchStore';\r\nimport { useHospitalApp } from '@hospital/hooks';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Button, Col, Row } from 'react-bootstrap';\r\nimport { useNavigate, useParams } from 'react-router';\r\nimport { CommunicationTemplatesTable } from '../communicationTemplates';\r\nimport { UserStore } from './UserStore';\r\n\r\ninterface IUserProfileCommunicationTemplates {\r\n store: UserStore;\r\n readOnly?: boolean;\r\n}\r\n\r\nexport const UserProfileCommunicationTemplates = observer(({ store, readOnly }: IUserProfileCommunicationTemplates) => {\r\n const navigate = useNavigate();\r\n const { currentHospital } = useHospitalApp();\r\n const [searchStore] = useState(new CommunicationTemplateSearchStore(MacroType.Provider, undefined, store.userId))\r\n const { userId } = useParams();\r\n const currentRoute = useCurrentRoute();\r\n const isAdmin = currentRoute?.pathname.toLowerCase().startsWith(\"/admin\");\r\n const isMyProfile = currentRoute!.pathname.toLowerCase().includes('/myprofile');\r\n const userProfileBaseUrl = isAdmin && !isMyProfile ? \"../../users/\" : \"../\";\r\n\r\n useEffect(() => {\r\n searchStore.search();\r\n }, [searchStore, searchStore.combinedSearchParams, userId]);\r\n\r\n const onCommunicationTemplateSelected = (id: number) =>\r\n navigate(`${userProfileBaseUrl}${userId}/communicationtemplates/${id}`);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {!readOnly &&\r\n \r\n \r\n onCommunicationTemplateSelected(0)}>\r\n Add Hospital Communication Template\r\n \r\n \r\n \r\n }\r\n\r\n \r\n )\r\n})\r\n","import { Page } from \"@hospital/components/layout\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useEffect, useMemo, useState } from 'react';\r\n\r\nimport { useApp, useCurrentRoute, useRouteBreadcrumb } from '@common/hooks';\r\nimport { IMacroModel, macroTypes } from '@common/models';\r\nimport { MacroTargetType, MacroType } from '@common/models/Enums/MacroType';\r\nimport { MacroStore } from '@hospital/stores';\r\nimport { useNavigate, useParams } from 'react-router';\r\nimport { CommunicationTemplateForm } from './CommunicationTemplateForm';\r\nimport { useMacros } from \"@common/components/richTextBox/useMacros\";\r\nimport { useHospitalApp } from \"@hospital/hooks\";\r\n\r\nexport const CommunicationTemplateContainer = observer(() => {\r\n const navigate = useNavigate();\r\n const { configuration } = useApp();\r\n const hospitalApp = useHospitalApp();\r\n const currentHospital = hospitalApp!.currentHospital;\r\n const currentRoute = useCurrentRoute();\r\n const isRootRoute = currentRoute!.pathname.toLowerCase().indexOf('/myprofile') === 0;\r\n const macroStore = useMacros();\r\n // Grab the current macroId from query parameters and fetch the Macro\r\n const [store] = useState(new MacroStore());\r\n let { macroId } = useParams();\r\n const parsedMacroId = useMemo(\r\n () => parseInt(macroId!),\r\n [macroId]\r\n );\r\n\r\n const isCommunicationTemplateRoute = currentRoute!.pathname.toLowerCase().includes('communicationtemplates');\r\n const currentMacroTargetType = isCommunicationTemplateRoute ? MacroTargetType.ExamVisit : MacroTargetType.Sms\r\n\r\n useEffect(() => {\r\n parsedMacroId !== 0 && store.getMacro(parsedMacroId, currentMacroTargetType)\r\n }, [currentMacroTargetType, parsedMacroId, store]);\r\n\r\n useEffect(() => {\r\n if (currentHospital)\r\n macroStore.load();\r\n }, [currentHospital, macroStore]);\r\n\r\n // Breadcrumb management\r\n const { setBreadCrumb } = useRouteBreadcrumb();\r\n useEffect(() => {\r\n if (store.macro) {\r\n setBreadCrumb(store.macro.name);\r\n }\r\n else {\r\n setBreadCrumb(\"New Hospital Communication Template\");\r\n }\r\n }, [store.macro, setBreadCrumb]);\r\n\r\n // Scope MacroType options\r\n const macroTypeOptions = macroTypes.filter(r => r.value == MacroType.Provider);\r\n\r\n // Form Actions\r\n const onSubmit = (at: IMacroModel) => {\r\n at.macroTargetTypeId = currentMacroTargetType;\r\n store.upsertMacro(at);\r\n }\r\n\r\n const onCancel = () => {\r\n navigate(`../..`);\r\n }\r\n\r\n const onDelete = (macroId: number) => {\r\n store.deleteMacro(macroId).then(() => {\r\n navigate(`../..`);\r\n });\r\n }\r\n return (\r\n <>\r\n {\r\n !isRootRoute &&\r\n \r\n \r\n \r\n {\r\n (store.macro !== undefined || parsedMacroId === 0) &&\r\n \r\n }\r\n \r\n \r\n }\r\n {\r\n isRootRoute &&\r\n <>\r\n \r\n \r\n {\r\n (store.macro !== undefined || parsedMacroId === 0) &&\r\n \r\n }\r\n \r\n \r\n\r\n }\r\n \r\n );\r\n})\r\n","import { PageCard } from '@common/components/layout';\r\nimport { TableSkeleton } from '@common/components/skeleton/TableSkeleton';\r\nimport { useApp } from '@common/hooks';\r\nimport { AuthOperationUINames } from '@common/models/Enums/AuthOperationStrings';\r\nimport { SignatureStore, VeterinarianStore } from '@hospital/stores';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect } from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { UserLocations, UserProfileDetail, UserProfileLicenses, UserProfileRoles, UserProfileSignature, UserSchedulePreferences } from '.';\r\nimport { UserInactiveProfileBanner } from './UserInactiveProfileBanner';\r\nimport { UserProfileCommunicationTemplates } from './UserProfileCommunicationTemplates';\r\nimport { UserStore } from './UserStore';\r\n\r\n\r\nexport interface IUserProfileProps {\r\n store: UserStore;\r\n vetStore: VeterinarianStore;\r\n}\r\n\r\nexport const UserProfile = observer(({ store, vetStore }: IUserProfileProps) => {\r\n const { configuration } = useApp();\r\n const signatureStore = new SignatureStore({ userStore: store });\r\n useEffect(() => {\r\n if (store.vet?.veterinarianId) {\r\n vetStore.fetchVeterinarianByVetId(store.vet.veterinarianId)\r\n }\r\n }, [store.vet, vetStore])\r\n\r\n const currentUserIsThisVet = vetStore.veterinarian?.petcoUserId == configuration.userIdentityName.split('@')[0];\r\n const canEditUserRoles = configuration.HasUIFlag(AuthOperationUINames.UI_HospitalFlags_CanEditUserRoles);\r\n const canEditUserLocations = configuration.HasUIFlag(AuthOperationUINames.UI_HospitalFlags_CanEditUserLocations);\r\n const canEditDvmLicenses = currentUserIsThisVet || configuration.HasUIFlag(AuthOperationUINames.UI_HospitalFlags_CanEditDvmLicenses);\r\n const canEditDvmSchedule = currentUserIsThisVet || configuration.HasUIFlag(AuthOperationUINames.UI_HospitalFlags_CanEditDvmSchedule);\r\n const canEditDvmSignature = currentUserIsThisVet || configuration.HasUIFlag(AuthOperationUINames.UI_HospitalFlags_CanEditDvmSignature);\r\n const canEditProviderCommunicationTemplates = currentUserIsThisVet || configuration.HasUIFlag(AuthOperationUINames.UI_HospitalFlags_CanEditProviderCommunicationTemplates)\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {store.hasVetRole && !vetStore.loading && <>\r\n \r\n \r\n \r\n \r\n {vetStore.loading && }\r\n {!vetStore.loading && vetStore.veterinarian &&\r\n e.isOverrideType === false)}\r\n veterinarian={vetStore.veterinarian}\r\n onSavePreferences={(schedulePreferences, schedulingColor) => vetStore.saveSchedulePreferences({ schedulePreferences, schedulingColor })}\r\n isActive={store.isActive} />\r\n }\r\n \r\n }\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n {store.hasVetRole && !vetStore.loading &&\r\n \r\n \r\n \r\n }\r\n\r\n {store.hasVetRole && !vetStore.loading &&\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 { IUserModel } from '@common/models/UserModel';\r\nimport React from 'react';\r\nimport { Col, Form, Row } from 'react-bootstrap';\r\n\r\nexport interface IUserProfileDetailProps {\r\n user: IUserModel;\r\n}\r\n\r\nexport const UserProfileDetail = ({ user }: IUserProfileDetailProps) => (\r\n <>\r\n \r\n \r\n First Name\r\n \r\n \r\n \r\n Last Name\r\n \r\n \r\n \r\n Email\r\n \r\n \r\n \r\n Employee ID\r\n \r\n \r\n \r\n \r\n \r\n Employee Type\r\n \r\n \r\n \r\n Employment Status\r\n \r\n \r\n \r\n \r\n);\r\n","import { FileUpload, FormInput, FormSelect, Patterns } from '@common/components/forms';\r\nimport { CustomDatePicker, spreadAndtransformDefaultValues } from '@common/components/forms/controls';\r\nimport { ClientConfigurationModel, ILicenseModel } from '@common/models';\r\nimport { ErrorMessage } from '@hookform/error-message';\r\nimport { ILicenseModelWithNewLicenseImage } from '@hospital/models';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useCallback, useEffect } from 'react';\r\nimport { Button, Col, Container, Form, Modal, Row } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { UserStore } from './UserStore';\r\n\r\ninterface IProps {\r\n show: boolean;\r\n store: UserStore;\r\n configuration: ClientConfigurationModel;\r\n existingLicense?: ILicenseModel;\r\n onCancel: () => void;\r\n onSubmit: (formData: ILicenseModelWithNewLicenseImage) => void;\r\n}\r\n\r\nexport const UserProfileLicenseAddUpdate = observer(({ show, store, configuration, onSubmit, onCancel, existingLicense }: IProps) => {\r\n const { reset, register, handleSubmit, control, formState: { errors } } = useForm({\r\n defaultValues: spreadAndtransformDefaultValues(existingLicense as ILicenseModelWithNewLicenseImage),\r\n shouldFocusError: true\r\n });\r\n useEffect(() => {\r\n reset(spreadAndtransformDefaultValues(existingLicense));\r\n }, [reset, existingLicense]);\r\n\r\n const cancel = useCallback(() => {\r\n reset(spreadAndtransformDefaultValues(existingLicense));\r\n onCancel();\r\n }, [reset, onCancel, existingLicense])\r\n\r\n const editing = existingLicense && existingLicense.licenseId !== 0;\r\n return (\r\n \r\n \r\n Add New License\r\n \r\n \r\n \r\n
onSubmit(data))}>\r\n \r\n \r\n m.name}\r\n getOptionValue={m => m.licenseTypeId.toString()}\r\n mapOptionToValue={option => option}\r\n mapValueToOption={licenseType => licenseType}\r\n />\r\n \r\n \r\n m.abbreviation}\r\n getOptionValue={m => m.stateId.toString()}\r\n mapOptionToValue={option => option}\r\n mapValueToOption={state => state}\r\n />\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n Expiration Date\r\n \r\n {message}} />\r\n \r\n \r\n
\r\n {!existingLicense?.licensePhoto &&\r\n <>\r\n \r\n {errors.newLicensePhotoFile && {errors.newLicensePhotoFile.message}}\r\n \r\n \r\n }\r\n {existingLicense?.licensePhoto &&\r\n <>\r\n CURRENT LICENSE IMAGE\r\n {existingLicense.licensePhoto.fileName}\r\n \r\n\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n Cancel\r\n {existingLicense ? \"Update License\" : \"Save New License\"}\r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n});\r\n","import { ActionButton } from '@common/components/forms/controls';\r\nimport { YesNoConfirmModal } from '@common/components/modals';\r\nimport { useApp } from '@common/hooks';\r\nimport { ILicenseModel } from '@common/models';\r\nimport { ILicenseModelWithNewLicenseImage } from '@hospital/models';\r\nimport { DateTime } from 'luxon';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useCallback, useState } from 'react';\r\nimport { Button, Col, OverlayTrigger, Row, Table, Tooltip } from 'react-bootstrap';\r\nimport { UserProfileLicenseAddUpdate } from './UserProfileLicenseAddUpdate';\r\nimport { UserStore } from './UserStore';\r\n\r\nconst readonlyLicenseMessage = \"Licenses and Registrations that originate from VetPoint can not be managed within PetPass.\";\r\n\r\ninterface IUserProfileLicenses {\r\n store: UserStore;\r\n readOnly?: boolean;\r\n}\r\n\r\nexport const UserProfileLicenses = observer(({ store, readOnly }: IUserProfileLicenses) => {\r\n const { configuration } = useApp();\r\n const [showUpdateLicenseModal, setShowUpdateLicenseModal] = useState(false);\r\n const [updateLicense, setUpdateLicense] = useState(undefined);\r\n\r\n const submitUpdateLicense = useCallback(async (license: ILicenseModelWithNewLicenseImage) => {\r\n await store.updateLicense(license, license.newLicensePhotoFile);\r\n }, [store]);\r\n\r\n const viewLicense = useCallback((license: ILicenseModel) => {\r\n if (license.licensePhoto && license.licensePhoto.photoUrl)\r\n window.open(license.licensePhoto.photoUrl, '_self');\r\n }, []);\r\n\r\n\r\n return (\r\n <>\r\n store.deleteLicense()}\r\n onCancel={() => store.updateLicenseToDelete(undefined)}\r\n />\r\n \r\n {!store.hasLicenses &&\r\n

This user has no licenses or registrations.

\r\n }\r\n {store.hasLicenses &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {store.sortedLicenses.map((l) =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
TypeStateNumberExpirationStatusACTIONS
{l.licenseType.name}{l.state.abbreviation}{l.number}{DateTime.fromISO(l.expirationDate).toLocaleString()}{(DateTime.fromISO(l.expirationDate) < DateTime.now()) ? Expired : \"Active\"}\r\n {(l.isReadOnly && !readOnly) &&\r\n {readonlyLicenseMessage}}>\r\n \r\n \r\n \r\n \r\n }\r\n {(!l.isReadOnly && !readOnly) && store.isActive &&\r\n {\r\n setUpdateLicense(l as ILicenseModelWithNewLicenseImage);\r\n setShowUpdateLicenseModal(true);\r\n }} />\r\n }\r\n {\r\n l.licensePhoto?.fileName &&\r\n viewLicense(l)} />\r\n }\r\n {(l.isReadOnly && !readOnly) &&\r\n {readonlyLicenseMessage}}>\r\n \r\n \r\n \r\n \r\n }\r\n {(!l.isReadOnly && !readOnly) && store.isActive &&\r\n store.updateLicenseToDelete(l)} />\r\n }\r\n
\r\n }\r\n
\r\n {!readOnly && store.isActive &&\r\n \r\n \r\n store.showAddLicenseModal(true)}>Add New License\r\n \r\n \r\n }\r\n store.addLicense(data, data.newLicensePhotoFile)}\r\n onCancel={() => store.showAddLicenseModal(false)}\r\n />\r\n setShowUpdateLicenseModal(false)}\r\n />\r\n \r\n )\r\n})\r\n","import { IAuthRoleModel } from '@common/models/Security/AuthRoleModel';\r\nimport { isEmpty } from 'lodash';\r\nimport React from 'react';\r\nimport { Button, Form, Modal } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nexport interface UserProfileRolesModalAddProps {\r\n roles: IAuthRoleModel[];\r\n onSubmit: (selectedRoleIds: number[]) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport interface IFormData {\r\n roleIds: number[]\r\n}\r\n\r\nexport const UserProfileRolesModalAdd = ({ roles, onSubmit, onCancel }: UserProfileRolesModalAddProps) => {\r\n const { register, handleSubmit, watch } = useForm({\r\n shouldFocusError: true,\r\n });\r\n const selectedRoleIds = watch('roleIds'); // the current state of roles selections\r\n const enableSubmit = selectedRoleIds?.length; // only enable the submit if one or more roles is chosen.\r\n const parseRoles = (formData: IFormData) => {\r\n // for some reason react-hooks-forms can store values as strings, even thought we've typed them as numbers. 🤷🏻‍♂️\r\n const selectedRoles = formData.roleIds.map(r => typeof (r) === \"string\" ? parseInt(r) : r);\r\n onSubmit(selectedRoles);\r\n }\r\n\r\n return (\r\n \r\n \r\n Add New Roles\r\n \r\n \r\n
\r\n \r\n \r\n {roles.map(r => )}\r\n \r\n Hint: Use Ctrl+click (Windows) or ⌘+click (Mac) to choose multiple roles.\r\n \r\n
\r\n \r\n Cancel\r\n Add Roles\r\n \r\n
\r\n )\r\n};\r\n","import { IAuthRoleModel } from '@common/models/Security/AuthRoleModel';\r\nimport React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\n\r\ninterface IProps {\r\n role: IAuthRoleModel | undefined;\r\n onSubmit: (role: IAuthRoleModel) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport const UserProfileRolesModalDelete = ({ role, onSubmit, onCancel }: IProps) => {\r\n return (\r\n <>\r\n {role &&\r\n \r\n \r\n Remove Role?\r\n \r\n \r\n

Are you sure you want to remove {role.description} from this user? This user will no longer be able to perform the actions allowed by this role.

\r\n
\r\n \r\n Cancel\r\n onSubmit(role)}>Remove Role\r\n \r\n
\r\n }\r\n )\r\n};\r\n","import { DeleteButton } from '@common/components/forms/controls';\r\nimport { IAuthRoleModel } from '@common/models/Security/AuthRoleModel';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useState } from 'react';\r\nimport { Button, Col, Row } from 'react-bootstrap';\r\nimport { UserProfileRolesModalAdd } from './UserProfileRolesModalAdd';\r\nimport { UserProfileRolesModalDelete } from './UserProfileRolesModalDelete';\r\nimport { UserStore } from './UserStore';\r\n\r\nexport interface IUserProfileRolesProps {\r\n store: UserStore;\r\n readOnly?: boolean;\r\n}\r\n\r\nexport const UserProfileRoles = observer(({ store, readOnly }: IUserProfileRolesProps) => {\r\n const [availableRoles, setAvailableRoles] = useState([]);\r\n const [roleToDelete, setRoleToDelete] = useState(undefined);\r\n\r\n const clearModals = () => {\r\n setAvailableRoles([]);\r\n setRoleToDelete(undefined);\r\n }\r\n const onAddRole = (roleIds: number[]) => {\r\n clearModals();\r\n store.addRoles(roleIds);\r\n }\r\n const onDeleteRole = (role: IAuthRoleModel) => {\r\n clearModals();\r\n store.deleteRole(role);\r\n }\r\n\r\n const hasRoles = store.assignedRoles.length > 0;\r\n\r\n return (<>\r\n \r\n {!hasRoles &&\r\n

No roles have been assigned to this user.

\r\n }\r\n {hasRoles &&\r\n
    \r\n {store.implicitRoles.map((r) =>\r\n
  • \r\n {r.description} (Primary)\r\n
  • )}\r\n {store.explicitRoles.map((r) =>\r\n
  • \r\n
    \r\n {r.description}\r\n {!readOnly && store.isActive &&\r\n { setRoleToDelete(r) }} />\r\n }\r\n
    \r\n
  • )}\r\n
\r\n }\r\n
\r\n \r\n \r\n {!readOnly && store.isActive &&\r\n setAvailableRoles(store.availableRoles)}>Add New Roles\r\n }\r\n \r\n \r\n \r\n \r\n )\r\n});\r\n","import * as React from 'react';\r\nimport SigPad, { Options, PointGroup } from 'signature_pad';\r\n\r\n//DEV NOTES\r\n//This is a temporary copy paste of react-signature-pad-wrapper. Signature_Pad updated to move events to addEventListener and out of \"options\"\r\n//So if we can add support for all the events here, we can put in a PR to react-signature-pad-wrapper and then remove this and go back to the package.\r\n//Optionally I can patch the package with a patch-package script...\r\n\r\ntype Props = {\r\n width?: number;\r\n height?: number;\r\n options?: Options;\r\n onEndStroke?: () => void;\r\n canvasProps?: { [key: string]: string | { [key: string]: string } };\r\n} & DefaultProps;\r\n\r\ntype DefaultProps = {\r\n redrawOnResize: boolean;\r\n debounceInterval: number;\r\n};\r\n\r\ntype State = {\r\n canvasWidth: number;\r\n canvasHeight: number;\r\n};\r\n\r\n/**\r\n * @class\r\n * @classdesc Signature pad component.\r\n * @extends {PureComponent}\r\n */\r\nclass SignaturePad extends React.PureComponent {\r\n static displayName = 'react-signature-pad-wrapper';\r\n\r\n static defaultProps: DefaultProps = {\r\n redrawOnResize: false,\r\n debounceInterval: 150,\r\n };\r\n\r\n private canvasRef = React.createRef();\r\n\r\n private signaturePad!: SigPad;\r\n\r\n\r\n private callResizeHandler!: _.DebouncedFunc<() => void>;\r\n\r\n /**\r\n * Create a new signature pad.\r\n *\r\n * @param {Props} props\r\n */\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = { canvasWidth: 0, canvasHeight: 0 };\r\n this.callResizeHandler = _.debounce<() => void>(this.handleResize.bind(this), this.props.debounceInterval);\r\n }\r\n\r\n /**\r\n * Initialise the signature pad once the canvas element is rendered.\r\n *\r\n * @return {void}\r\n */\r\n override componentDidMount(): void {\r\n const canvas = this.canvasRef.current;\r\n\r\n if (canvas) {\r\n if (!this.props.width || !this.props.height) {\r\n canvas.style.width = '100%';\r\n window.addEventListener('resize', this.callResizeHandler);\r\n }\r\n\r\n this.signaturePad = new SigPad(canvas, this.props.options);\r\n\r\n if (this.props.onEndStroke)\r\n this.signaturePad.addEventListener('endStroke', this.props.onEndStroke, { once: false });\r\n\r\n this.scaleCanvas(canvas);\r\n }\r\n }\r\n\r\n /**\r\n * Remove the resize event listener and switch the signature pad off on\r\n * unmount.\r\n *\r\n * @return {void}\r\n */\r\n override componentWillUnmount(): void {\r\n if (!this.props.width || !this.props.height) {\r\n window.removeEventListener('resize', this.callResizeHandler);\r\n if (this.props.onEndStroke)\r\n this.signaturePad.removeEventListener('endStroke', this.props.onEndStroke);\r\n }\r\n\r\n this.signaturePad.off();\r\n }\r\n\r\n /**\r\n * Get the original signature_pad instance.\r\n *\r\n * @return {SigPad}\r\n */\r\n get instance(): SigPad {\r\n return this.signaturePad;\r\n }\r\n\r\n /**\r\n * Get the canvas ref.\r\n *\r\n * @return {Object}\r\n */\r\n get canvas(): React.RefObject {\r\n return this.canvasRef;\r\n }\r\n\r\n /**\r\n * Set the radius of a single dot.\r\n *\r\n * @param {number} dotSize\r\n * @return {void}\r\n */\r\n set dotSize(dotSize: number) {\r\n this.signaturePad.dotSize = dotSize;\r\n }\r\n\r\n /**\r\n * Get the radius of a single dot.\r\n *\r\n * @return {number}\r\n */\r\n get dotSize(): number {\r\n return this.signaturePad.dotSize;\r\n }\r\n\r\n /**\r\n * Set the minimum width of a line.\r\n *\r\n * @param {number} minWidth\r\n * @return {void}\r\n */\r\n set minWidth(minWidth: number) {\r\n this.signaturePad.minWidth = minWidth;\r\n }\r\n\r\n /**\r\n * Get the minimum width of a line.\r\n *\r\n * @return {number}\r\n */\r\n get minWidth(): number {\r\n return this.signaturePad.minWidth;\r\n }\r\n\r\n /**\r\n * Get the maximum width of a line.\r\n *\r\n * @param {number} maxWidth\r\n * @return {void}\r\n */\r\n set maxWidth(maxWidth: number) {\r\n this.signaturePad.maxWidth = maxWidth;\r\n }\r\n\r\n /**\r\n * Get the maximum width of a line.\r\n *\r\n * @return {number}\r\n */\r\n get maxWidth(): number {\r\n return this.signaturePad.maxWidth;\r\n }\r\n\r\n /**\r\n * Set the throttle for drawing the next point at most once every x ms.\r\n *\r\n * @param {number} throttle\r\n * @return {void}\r\n */\r\n set throttle(throttle: number) {\r\n this.signaturePad.throttle = throttle;\r\n }\r\n\r\n /**\r\n * Get the throttle for drawing the next point at most once every x ms.\r\n *\r\n * @return {number}\r\n */\r\n get throttle(): number {\r\n return this.signaturePad.throttle;\r\n }\r\n\r\n /**\r\n * Set the color used to clear the background.\r\n *\r\n * @param {string} color\r\n * @return {void}\r\n */\r\n set backgroundColor(color: string) {\r\n this.signaturePad.backgroundColor = color;\r\n }\r\n\r\n /**\r\n * Get the color used to clear the background.\r\n *\r\n * @return {string}\r\n */\r\n get backgroundColor(): string {\r\n return this.signaturePad.backgroundColor;\r\n }\r\n\r\n /**\r\n * Set the color used to draw the lines.\r\n *\r\n * @param {string} color\r\n * @return {void}\r\n */\r\n set penColor(color: string) {\r\n this.signaturePad.penColor = color;\r\n }\r\n\r\n /**\r\n * Get the color used to draw the lines.\r\n *\r\n * @return {string}\r\n */\r\n get penColor(): string {\r\n return this.signaturePad.penColor;\r\n }\r\n\r\n /**\r\n * Set weight used to modify new velocity based on the previous velocity.\r\n *\r\n * @param {number} weight\r\n * @return {void}\r\n */\r\n set velocityFilterWeight(weight: number) {\r\n this.signaturePad.velocityFilterWeight = weight;\r\n }\r\n\r\n /**\r\n * Get weight used to modify new velocity based on the previous velocity.\r\n *\r\n * @return {number}\r\n */\r\n get velocityFilterWeight(): number {\r\n return this.signaturePad.velocityFilterWeight;\r\n }\r\n\r\n /**\r\n * Determine if the canvas is empty.\r\n *\r\n * @return {Boolean}\r\n */\r\n isEmpty(): boolean {\r\n return this.signaturePad.isEmpty();\r\n }\r\n\r\n /**\r\n * Clear the canvas.\r\n *\r\n * @return {void}\r\n */\r\n clear(): void {\r\n this.signaturePad.clear();\r\n }\r\n\r\n /**\r\n * Draw a signature from a data URL.\r\n *\r\n * @param {string} base64String\r\n * @return {void}\r\n */\r\n fromDataURL(base64String: string): void {\r\n this.signaturePad.fromDataURL(base64String);\r\n }\r\n\r\n /**\r\n * Get the signature data as a data URL.\r\n *\r\n * @param {?string} mime\r\n * @param {?number} encoderOptions\r\n * @return {string}\r\n */\r\n toDataURL(type?: string, encoderOptions?: number): string {\r\n return this.signaturePad.toDataURL(type, encoderOptions);\r\n }\r\n\r\n /**\r\n * Draw a signature from an array of point groups.\r\n *\r\n * @param {PointGroup[]} data\r\n * @return {void}\r\n */\r\n fromData(data: PointGroup[]): void {\r\n this.signaturePad.fromData(data);\r\n }\r\n\r\n /**\r\n * Get the signature pad data an array of point groups.\r\n *\r\n * @return {PointGroup[]}\r\n */\r\n toData(): PointGroup[] {\r\n return this.signaturePad.toData();\r\n }\r\n\r\n /**\r\n * Turn the signature pad off.\r\n *\r\n * @return {void}\r\n */\r\n off(): void {\r\n this.signaturePad.off();\r\n }\r\n\r\n /**\r\n * Turn the signature pad on.\r\n *\r\n * @return {void}\r\n */\r\n on(): void {\r\n this.signaturePad.on();\r\n }\r\n\r\n /**\r\n * Handle a resize event.\r\n *\r\n * @return {void}\r\n */\r\n handleResize(): void {\r\n const canvas = this.canvasRef.current;\r\n\r\n if (canvas) {\r\n this.scaleCanvas(canvas);\r\n }\r\n }\r\n\r\n /**\r\n * Scale the canvas.\r\n *\r\n * @param {HTMLCanvasElement} canvas\r\n * @return {void}\r\n */\r\n scaleCanvas(canvas: HTMLCanvasElement): void {\r\n const ratio = Math.max(window.devicePixelRatio || 1, 1);\r\n const width = (this.props.width || canvas.offsetWidth) * ratio;\r\n const height = (this.props.height || canvas.offsetHeight) * ratio;\r\n\r\n // Avoid needlessly setting height / width if dimensions haven't changed\r\n const { canvasWidth, canvasHeight } = this.state;\r\n\r\n if (width === canvasWidth && height === canvasHeight) return;\r\n\r\n let data;\r\n\r\n if (this.props.redrawOnResize && this.signaturePad) {\r\n data = this.signaturePad.toDataURL();\r\n }\r\n\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n this.setState({ canvasWidth: width, canvasHeight: height });\r\n\r\n const ctx = canvas.getContext('2d');\r\n\r\n if (ctx) {\r\n ctx.scale(ratio, ratio);\r\n }\r\n\r\n if (data) {\r\n this.signaturePad.fromDataURL(data);\r\n } else if (this.signaturePad) {\r\n this.signaturePad.clear();\r\n }\r\n }\r\n\r\n /**\r\n * Render the signature pad component.\r\n *\r\n * @return {ReactNode}\r\n */\r\n override render(): React.ReactNode {\r\n const { canvasProps } = this.props;\r\n\r\n return ;\r\n }\r\n}\r\n\r\nexport default SignaturePad;\r\n","import { SuspenseButton } from '@common/components/utility';\r\nimport SignaturePad from '@common/components/wrappers/SignaturePad';\r\nimport React, { useRef, useState } from 'react';\r\nimport { Button, Col, Form, Modal, Row } from 'react-bootstrap';\r\n\r\n\r\nexport interface IUserProfileSignatureAddProps {\r\n onSubmit: (image: string, applySignatureToClinic?: boolean) => void;\r\n onCancel: () => void;\r\n title: string;\r\n visible: boolean;\r\n updateInProgress?: boolean;\r\n showApplySignatureToClinic?: boolean\r\n tag?: string;\r\n}\r\n\r\nexport const UserProfileSignatureAdd = ({ onSubmit, onCancel, title, visible, updateInProgress, showApplySignatureToClinic, tag }: IUserProfileSignatureAddProps) => {\r\n const [applySignatureToClinic, setApplySignatureToClinic] = useState(false);\r\n let signaturePadRef = useRef(null);\r\n\r\n const handleClear = () => signaturePadRef?.current?.clear();\r\n\r\n const handleSave = () => {\r\n if (signaturePadRef?.current && !signaturePadRef.current.isEmpty()) {\r\n onSubmit(signaturePadRef.current.toDataURL(), applySignatureToClinic);\r\n }\r\n }\r\n const checkboxNotPresent = !showApplySignatureToClinic;\r\n const checkboxIsChecked = applySignatureToClinic;\r\n const showDisclaimer = checkboxNotPresent || checkboxIsChecked;\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n Clear signature\r\n \r\n {showDisclaimer &&\r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n {showApplySignatureToClinic &&\r\n \r\n \r\n {\r\n setApplySignatureToClinic(e.target.checked);\r\n }}\r\n id={`signatureForDayVerify`} />\r\n \r\n \r\n }\r\n
\r\n Cancel\r\n {tag ?\r\n\r\n \r\n Save Signature\r\n \r\n :\r\n Save Signature\r\n }\r\n
\r\n
\r\n
\r\n )\r\n};\r\nconst SignatureDisclaimer = () =>
\r\n
\r\n By providing my electronic signature here, I acknowledge that I have read and agree to the following: My electronic signature will be applied by the Pet Pass Hospital system to where I might otherwise apply my physical signature including but not limited to:\r\n
    \r\n
  • Patient Charts,
  • \r\n
  • Visit Summaries,
  • \r\n
  • Written Prescriptions,
  • \r\n
  • Rabies Certificates,
  • \r\n
  • Medical Certificates,
  • \r\n
  • etc. (collectively “Documents”)
  • \r\n
\r\n
when such Documents are finalized for clients to check out or otherwise pay for veterinary services.
\r\n
\r\n Documents will be locked after 48 hours. Personal information, including my signature will be handled in accordance with the Petco Animal Supplies Stores, Inc. Privacy Policy for Partners & Independent Contractors and/or for Job Applicants, Candidates, and Members of our Talent Pool.\r\n
\r\n","import React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\n\r\ninterface IProps {\r\n show: boolean;\r\n busy: boolean;\r\n onSubmit: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport const UserProfileSignatureDelete = ({show, busy, onSubmit, onCancel}:IProps) => (\r\n \r\n \r\n Remove Signature?\r\n \r\n \r\n
Are you sure you want to remove this signature? Doing so will remove this signature for all future visits and the DVM will need to sign each record individually until a new signature is saved.
\r\n
\r\n \r\n Cancel\r\n Remove Signature\r\n \r\n
\r\n)\r\n","import { DeleteButton } from '@common/components/forms';\r\nimport { ISignatureStore } from '@hospital/stores';\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useState } from 'react';\r\nimport { Button, Row } from 'react-bootstrap';\r\nimport { UserProfileSignatureAdd } from './UserProfileSignatureAdd';\r\nimport { UserProfileSignatureDelete } from './UserProfileSignatureDelete';\r\nexport interface IUserProfileSignatureProps {\r\n store: ISignatureStore;\r\n readOnly?: boolean;\r\n isActive: boolean;\r\n}\r\n\r\nexport const UserProfileSignature = observer(({ store, readOnly, isActive }: IUserProfileSignatureProps) => {\r\n const [showAddSignatureModal, setShowAddSignatureModal] = useState(false);\r\n const [showDeleteSignatureModal, setShowDeleteSignatureModal] = useState(false);\r\n\r\n const hideModals = () => {\r\n setShowAddSignatureModal(false);\r\n setShowDeleteSignatureModal(false);\r\n }\r\n const setSignature = async (imageUrl: string) =>\r\n await store.saveVetSignature(imageUrl);\r\n\r\n const deleteSignature = async () =>\r\n await store.deleteVetSignature().finally(hideModals);\r\n\r\n return (<>\r\n {!store.hasSignature && <>\r\n \r\n No signature has been saved for this user.\r\n \r\n \r\n
\r\n {!readOnly && isActive && <>\r\n setShowAddSignatureModal(true)}>Add New Signature\r\n }\r\n
\r\n
\r\n }\r\n {store.hasSignature && <>\r\n \r\n {store.signatureName}\r\n \r\n \r\n
\r\n {!readOnly && isActive && <>\r\n setShowAddSignatureModal(true)}>Update Signature\r\n setShowDeleteSignatureModal(true)} />\r\n }\r\n
\r\n
\r\n }\r\n {\r\n isActive &&\r\n \r\n }\r\n {\r\n isActive &&\r\n \r\n }\r\n \r\n )\r\n});\r\n","import { TableSkeleton } from '@common/components/skeleton/TableSkeleton';\r\nimport { IUserListingModel } from '@common/models';\r\nimport { UserSearchStore } from '@hospital/stores';\r\nimport classNames from 'classnames';\r\nimport { chain } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\n\r\n\r\nconst RenderTableHeader = (hasEmailColumn?: boolean, combineFirstLastName?: boolean) => (\r\n \r\n {\r\n !combineFirstLastName &&\r\n <>\r\n First Name\r\n Last Name\r\n \r\n }\r\n {\r\n combineFirstLastName &&\r\n Name\r\n }\r\n Primary Role\r\n {\r\n !hasEmailColumn &&\r\n Email Address\r\n }\r\n Active\r\n Action\r\n );\r\n\r\nexport interface IUsersTableProps {\r\n userSearchStore: UserSearchStore,\r\n onClick: (userId: number) => void,\r\n noUsersMessage?: string,\r\n hideEmail?: boolean,\r\n combineFirstLastName?: boolean\r\n}\r\n\r\nconst convertNameForPrefix = (user: IUserListingModel) => {\r\n const drRoles = [\"veterinarian\", \"petpass_dvm\"];\r\n var isDvm = chain(user.roles.split(\",\")).some(r => drRoles.includes(r.toLowerCase().trim())).value();\r\n return (isDvm ? 'Dr. ' : '') + user.firstName + ' ' + user.lastName;\r\n};\r\n\r\nexport const UsersTable = observer(({ userSearchStore, onClick, noUsersMessage, hideEmail, combineFirstLastName }: IUsersTableProps) => {\r\n const rows = userSearchStore.searchResults.results.map((u, index) => (\r\n onClick(u.userId)}>\r\n {\r\n !combineFirstLastName &&\r\n <>\r\n {u.firstName}\r\n {u.lastName}\r\n \r\n }\r\n {\r\n combineFirstLastName &&\r\n <>\r\n {convertNameForPrefix(u)}\r\n \r\n }\r\n\r\n {u.roles?.split(',').filter(r => !r.startsWith(\"PetPass\")).map(r => r.trim())[0]}\r\n {\r\n !hideEmail &&\r\n {u.emailAddress}\r\n }\r\n \r\n < td className=\"action text-center\">\r\n \r\n \r\n \r\n ));\r\n\r\n const tableHeader = RenderTableHeader(hideEmail, combineFirstLastName);\r\n\r\n if (userSearchStore.isLoading)\r\n return ({tableHeader});\r\n\r\n if (userSearchStore.searchResults.totalRecordCount === 0) {\r\n if (noUsersMessage)\r\n return

{noUsersMessage}

\r\n else\r\n return

No users match that combination of filters.

\r\n\r\n }\r\n\r\n return (\r\n \r\n \r\n {tableHeader}\r\n \r\n \r\n {rows}\r\n \r\n
\r\n );\r\n});\r\n","import { PageCard } from \"@common/components/layout/\";\r\nimport { Pager } from \"@common/components/pagination\";\r\nimport { useApp } from '@common/hooks';\r\nimport { UserSearchStore } from \"@hospital/stores\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useCallback, useEffect, useState } from \"react\";\r\nimport { useNavigate } from \"react-router\";\r\nimport { UsersTable } from './UsersTable';\r\n\r\n\r\n\r\nexport interface IUserListContainerProps {\r\n scope: \"all\" | \"org\",\r\n organizationRelationKey: string | undefined;\r\n userStoreRef: React.RefCallback\r\n}\r\n\r\n\r\nexport const UserListContainer = observer(({ organizationRelationKey, userStoreRef, scope }: IUserListContainerProps) => {\r\n const { configuration } = useApp();\r\n const navigate = useNavigate();\r\n const [userSearchStore] = useState(new UserSearchStore(\r\n scope === 'all' ? { scope } :\r\n {\r\n scope,\r\n organizationVersionId: configuration.currentCorpOrganization.organizationVersionId,\r\n organizationSourceId: configuration.currentCorpOrganization.organizationSourceId,\r\n organizationRelationKey: organizationRelationKey\r\n\r\n }));\r\n useEffect(() => {\r\n if (userStoreRef)\r\n userStoreRef(userSearchStore);\r\n }, [userSearchStore, userStoreRef])\r\n\r\n useEffect(() => {\r\n userSearchStore.search();\r\n }, [userSearchStore, userSearchStore.combinedSearchParams]);\r\n\r\n const clickHandler = useCallback((userId: number) => {\r\n navigate(userId.toString());\r\n }, [navigate])\r\n\r\n return (\r\n \r\n \r\n {userSearchStore.hasMultiplePages &&\r\n \r\n }\r\n \r\n )\r\n});\r\n","import { FormInput, FormSelect, TriStateSelectOptions, spreadAndtransformDefaultValues } from \"@common/components/forms\";\r\nimport { IAuthRoleModel } from \"@common/models/Security\";\r\nimport { IUserSearchAllFilter, UserSearchStore } from \"@hospital/stores\";\r\nimport { find, orderBy } from \"lodash\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useCallback, useMemo } from \"react\";\r\nimport { Button, Form } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\n\r\nexport interface UsersFilterProps {\r\n store: UserSearchStore | null\r\n authRoles: IAuthRoleModel[];\r\n}\r\n\r\nexport const UsersFilter = observer(({ store, authRoles }: UsersFilterProps) => {\r\n const { handleSubmit, reset, control } = useForm({\r\n defaultValues: spreadAndtransformDefaultValues(store?.searchFilter)\r\n });\r\n\r\n const removeAllFilters = useCallback(() => {\r\n if (store) {\r\n store.resetSearchFilter();\r\n reset(store.searchFilter);\r\n }\r\n }, [store, reset]);\r\n\r\n const sortedAuthRoles = useMemo(() =>\r\n orderBy(authRoles, \"description\"), [authRoles])\r\n\r\n if (!store)\r\n return null; //return until store isn't undefined\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n opt.description}\r\n getOptionValue={opt => opt.authRoleId.toString()}\r\n mapValueToOption={authRoleId => find(authRoles, { authRoleId })}\r\n mapOptionToValue={opt => opt?.authRoleId}\r\n />\r\n
\r\n
\r\n opt.name}\r\n getOptionValue={opt => opt.value === null ? '' : opt.value.toString()}\r\n mapValueToOption={val => TriStateSelectOptions.filter(p => val === undefined ? p.value === null : p.value === val)[0]}\r\n mapOptionToValue={opt => opt?.value === null ? undefined : opt?.value as boolean}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n});\r\n","import { CalendarOptionsRefined, Theme, createPlugin as fcCreatePlugin } from '@fullcalendar/common';\r\n\r\nexport class PetcoCalendarTheme extends Theme {\r\n constructor(options: CalendarOptionsRefined) {\r\n super(options);\r\n\r\n this.classes = {\r\n root: 'fcThemePetco',\r\n table: 'themeTable',\r\n tableCellShaded: 'themeTable-active',\r\n buttonGroup: 'btn-group',\r\n button: 'btn btn-primary',\r\n buttonActive: 'active',\r\n popover: 'popover',\r\n popoverHeader: 'popover-header',\r\n popoverContent: 'popover-body',\r\n };\r\n\r\n this.baseIconClass = 'fa';\r\n\r\n this.iconClasses = {\r\n close: 'fa-times',\r\n prev: 'fa-chevron-left',\r\n next: 'fa-chevron-right',\r\n prevYear: 'fa-angle-double-left',\r\n nextYear: 'fa-angle-double-right',\r\n };\r\n\r\n this.rtlIconClasses = {\r\n prev: 'fa-chevron-right',\r\n next: 'fa-chevron-left',\r\n prevYear: 'fa-angle-double-right',\r\n nextYear: 'fa-angle-double-left',\r\n };\r\n\r\n this.iconOverrideOption = 'bootstrapFontAwesome';\r\n this.iconOverrideCustomButtonOption = 'bootstrapFontAwesome';\r\n this.iconOverridePrefix = 'fa-';\r\n }\r\n\r\n static createPlugin() {\r\n return fcCreatePlugin({\r\n themeClasses: {\r\n petco: PetcoCalendarTheme\r\n }\r\n })\r\n }\r\n}\r\n","import { petcoPewterBlue, petcoWhite } from '@common/_assets/color-constants.js';\r\nimport { ColorPickerPopover } from '@common/components/forms';\r\nimport { YesNoConfirmModal } from '@common/components/modals';\r\nimport { ScheduleBlockTypeModel, VeterinarianModel, schedule } from '@common/models';\r\nimport { EntityScheduleType, WeekDay } from '@common/models/Enums';\r\nimport { getCalendarEventItemId } from '@common/utils';\r\nimport FullCalendar, { EventContentArg, EventDropArg, EventInput } from '@fullcalendar/react';\r\nimport interactionPlugin, { Draggable, DropArg, EventReceiveArg, EventResizeDoneArg } from '@fullcalendar/interaction';\r\nimport resourceTimeGridPlugin from '@fullcalendar/resource-timegrid';\r\nimport timeGridPlugin from \"@fullcalendar/timegrid\";\r\nimport { PetcoCalendarTheme } from '@hospital/components/calendar/PetcoCalendarTheme';\r\nimport { find, some } from 'lodash';\r\nimport { DateTime } from 'luxon';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { Button, Col, Form, InputGroup, Row } from 'react-bootstrap';\r\nimport { v4 as uuid } from 'uuid';\r\n\r\n// This component was inspired by https://codesandbox.io/s/vm45zwmo07\r\n\r\ntype UserSchedulePreferenceEvent = {\r\n preference: schedule.EntitySchedulePreference | undefined;\r\n} & EventInput\r\n\r\n// our schedule preferences do not care about dates, but Fullcalendar very much does.\r\nconst eventDate = \"2000-01-01\"\r\n\r\nconst defaultProfileColor = petcoPewterBlue;\r\n/**\r\n ** Event creation and manipulation\r\n **/\r\n\r\n// Creates a colored schedule block element that will be draggable when dragging/dropping is enabled.\r\nconst draggableScheduleBlockType = (sb: ScheduleBlockTypeModel, editing: boolean) =>\r\n \r\n {sb.name}\r\n \r\n\r\n// Make schedule block elements draggable into the grid.\r\nconst initDraggableBlocks = () =>\r\n new Draggable(document.getElementById(\"schedule-block-list\")!, {\r\n itemSelector: \".schedule-block\",\r\n eventData: (eventEl: HTMLElement) => ({\r\n id: eventEl.getAttribute(\"data\"),\r\n title: eventEl.getAttribute(\"title\")\r\n })\r\n });\r\n\r\n\r\n/**\r\n ** Event creation and manipulation\r\n **/\r\n\r\n// generate a new event record with a title and appropriate coloring\r\nconst newEvent = (pref: schedule.EntitySchedulePreference): UserSchedulePreferenceEvent => {\r\n var baseEntityPreferenceId = getCalendarEventItemId(pref.uniqueId);\r\n return {\r\n id: baseEntityPreferenceId === 0 ? `0_${uuid()}` : pref.uniqueId,\r\n title: pref.scheduleBlockTypeName,\r\n textColor: pref.scheduleBlockTypeColor,\r\n backgroundColor: `${pref.scheduleBlockTypeColor}25`,\r\n borderColor: petcoWhite,\r\n preference: pref\r\n };\r\n}\r\n\r\n// modify the start/end time of the event\r\nconst updateEventStartEnd = (event: UserSchedulePreferenceEvent, start: string, end?: string) => {\r\n event.start = start;\r\n event.end = end ? end : DateTime.fromISO(start).plus({ hours: 1 }).toISO();\r\n return event;\r\n}\r\n\r\n// modify the resource (day) of the event.\r\nconst updateEventResource = (event: UserSchedulePreferenceEvent, resourceId?: string) => {\r\n event.resourceId = resourceId ?? event.resourceId;\r\n event.preference!.dayOfWeek = parseInt(event.resourceId!);\r\n return event;\r\n}\r\n\r\n/**\r\n * Event <-> Preference mapping\r\n */\r\n\r\nconst preferenceToEvent = (p: schedule.EntitySchedulePreference): UserSchedulePreferenceEvent => {\r\n const event = newEvent(p);\r\n // convert time to date: 08:00:00 -> 2000-01-01T08:00:00\r\n updateEventStartEnd(event, `${eventDate}T${p.startTime}`, `${eventDate}T${p.endTime}`);\r\n updateEventResource(event, p.dayOfWeek.valueOf().toString());\r\n return event;\r\n};\r\n\r\nconst eventToPreference = (e: UserSchedulePreferenceEvent): schedule.EntitySchedulePreference => {\r\n const pref = e.preference!;\r\n\r\n return new schedule.EntitySchedulePreference({\r\n entityPreferenceId: pref.entityPreferenceId,\r\n entityId: pref.entityId,\r\n entityType: EntityScheduleType.Veterinarian,\r\n schedulePreferenceId: pref.schedulePreferenceId,\r\n scheduleBlockTypeId: pref.scheduleBlockTypeId,\r\n scheduleBlockTypeName: pref.scheduleBlockTypeName,\r\n scheduleBlockIsOverrideType: false,\r\n scheduleBlockTypeColor: pref.scheduleBlockTypeColor,\r\n rowVersion: pref.rowVersion,\r\n uniqueId: '',\r\n hospitalId: 0,\r\n startTime: DateTime.fromISO((e.start as string)).toISOTime({ includeOffset: false, suppressMilliseconds: true }),\r\n endTime: DateTime.fromISO((e.end as string)).toISOTime({ includeOffset: false, suppressMilliseconds: true }),\r\n dayOfWeek: parseInt(e.resourceId!)\r\n });\r\n}\r\n\r\n/**\r\n * Component\r\n */\r\ninterface IProps {\r\n readOnly?: boolean;\r\n scheduleBlockTypes: ScheduleBlockTypeModel[];\r\n veterinarian: VeterinarianModel;\r\n onSavePreferences: (preferences: schedule.EntitySchedulePreference[], schedulingColor: string) => void;\r\n isActive: boolean;\r\n}\r\n\r\nexport const UserSchedulePreferences = observer((props: IProps) => {\r\n const [editing, setEditing] = useState(false);\r\n const [schedulingColor, setSchedulingColor] = useState(props.veterinarian.schedulingColor ? props.veterinarian.schedulingColor : defaultProfileColor);\r\n const [events, setEvents] = useState([]);\r\n const [promptSaveChanges, setPromptSaveChanges] = useState(false);\r\n\r\n // initialize the calendar grid events from the current set of vet schedule preferences\r\n useEffect(() => {\r\n if (props.veterinarian?.schedulePreferences) {\r\n setEvents(props.veterinarian.schedulePreferences.map(preferenceToEvent))\r\n }\r\n }, [props.veterinarian]);\r\n\r\n /**\r\n * Dragging/dropping is enabled when a Draggable instance is created\r\n * To disable dragging/dropping we must call Draggable.destroy().\r\n * This reference tracks a Draggable instance and enable/disable dragging as needed.\r\n */\r\n const draggable = useRef(undefined);\r\n\r\n //\r\n const hasExistingPreferences = some(props.veterinarian?.schedulePreferences);\r\n\r\n // generate the markup for the grid event\r\n const renderEvent = (arg: EventContentArg) => {\r\n const event = find(events, { id: arg.event.id });\r\n return (\r\n
\r\n
\r\n
{arg.event.title}
\r\n
{arg.timeText}
\r\n
\r\n {editing && event?.resourceId &&\r\n
deleteEvent(arg.event.id)}>\r\n \r\n
\r\n }\r\n
\r\n )\r\n }\r\n\r\n\r\n // A schedule block was dragged into the grid. Create a corresponding event record.\r\n const createEvent = (arg: DropArg) => {\r\n const schedBlock = find(props.scheduleBlockTypes, { name: arg.draggedEl.title })!;\r\n const newPref = schedule.EntitySchedulePreference.createNewEntitySchedulePreference(\r\n {\r\n scheduleBlockTypeId: schedBlock.scheduleBlockTypeId,\r\n scheduleBlockTypeColor: schedBlock.color,\r\n scheduleBlockTypeName: schedBlock.name,\r\n scheduleBlockIsOverrideType: false\r\n });\r\n const event = newEvent(newPref);\r\n updateEventStartEnd(event, arg.dateStr)\r\n updateEventResource(event, arg.resource?.id);\r\n setEvents([...events, event]);\r\n };\r\n\r\n /**\r\n * When you drag a schedule block onto the grid, FullCalendar adds a stub event to the grid and\r\n * then fires 'eventReceive'. It fires 'drop' at the same time. Only 'drop' carries the necessary\r\n * metadata to properly create an event descriptor. (In particular, the 'eventReceive' metadata\r\n * is missing the event day, or \"resource\".)\r\n * Since the 'drop' args are sufficient to create the event, we don't need FullCalendar's stub event.\r\n * This handler simply tells FullCalendar to revert the addition of that stub event to the grid.\r\n */\r\n const receiveEvent = (arg: EventReceiveArg) => { arg.revert() };\r\n\r\n // The event end time was changed.\r\n const resizeEvent = (arg: EventResizeDoneArg) => {\r\n const event = find(events, { id: arg.event.id })!;\r\n updateEventStartEnd(event, arg.event.startStr, arg.event.endStr);\r\n setEvents(events);\r\n }\r\n\r\n // The event was dragged to a different time time slot and/or day\r\n const moveEvent = (arg: EventDropArg) => {\r\n const event = find(events, { id: arg.event.id })!;\r\n updateEventStartEnd(event, arg.event.startStr, arg.event.endStr);\r\n updateEventResource(event, arg.newResource?.id);\r\n setEvents(events);\r\n }\r\n\r\n // Remove the selected event from state\r\n const deleteEvent = (eventId: string) => {\r\n setEvents(events.filter(e => e.id != eventId));\r\n }\r\n\r\n // Enable schedule block dragging/dropping\r\n const enableEditing = () => {\r\n draggable.current?.destroy();\r\n draggable.current = initDraggableBlocks();\r\n setEditing(true);\r\n }\r\n\r\n // Disable schedule block dragging/dropping\r\n const disableEditing = () => {\r\n draggable.current?.destroy();\r\n setEditing(false);\r\n setPromptSaveChanges(false)\r\n }\r\n\r\n // Disable grid interaction and restore gird to original state\r\n const cancelChanges = () => {\r\n disableEditing();\r\n setEvents(props.veterinarian.schedulePreferences.map(preferenceToEvent));\r\n setSchedulingColor(props.veterinarian.schedulingColor ? props.veterinarian.schedulingColor : defaultProfileColor);\r\n }\r\n\r\n // Disable grid interaction and post events back to server\r\n const saveChanges = () => {\r\n disableEditing();\r\n props.onSavePreferences(events.map(e => eventToPreference(e)), schedulingColor);\r\n }\r\n\r\n // Prompt the use to confirm changes to preferences.\r\n // Don't prompt them if they're adding preferences for the first time.\r\n const confirmSaveChanges = () => {\r\n if (hasExistingPreferences)\r\n setPromptSaveChanges(true);\r\n else\r\n saveChanges();\r\n }\r\n\r\n return (<>\r\n \r\n \r\n {!props.readOnly && props.isActive &&\r\n
\r\n {!editing && !hasExistingPreferences && }\r\n {!editing && hasExistingPreferences && }\r\n {editing && }\r\n {editing && }\r\n
\r\n }\r\n\r\n\r\n Profile Color\r\n \r\n
\r\n
\r\n {editing &&\r\n {\r\n setSchedulingColor(newColor);\r\n }} />\r\n }\r\n
\r\n
\r\n \r\n {`Dr. ${props.veterinarian.firstName} ${props.veterinarian.lastName}`}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
Available Blocks:
\r\n
\r\n {props.scheduleBlockTypes.map(sb => draggableScheduleBlockType(sb, editing))}\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Online booking only available for appointments.
\r\n
\r\n
\r\n )\r\n});\r\n","import { spreadAndtransformDefaultValues } from '@common/components/forms';\r\nimport { PageCard, PageCardProps } from '@common/components/layout';\r\nimport { Pager } from '@common/components/pagination';\r\nimport { useApp } from '@common/hooks';\r\nimport { HospitalModel } from '@common/models/HospitalModel';\r\nimport { IUserSearchOrgFilter, UserSearchStore } from '@hospital/stores';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\nimport { Button, Form, FormGroup, InputGroup } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useNavigate } from 'react-router';\r\nimport { UsersTable } from '../userprofile';\r\n\r\nexport type ILocationDetailUsersListProps = {\r\n hospital: HospitalModel\r\n userProfileBaseUrl: string\r\n} & PageCardProps\r\n\r\nexport const LocationDetailUsersList = observer(({ hospital, userProfileBaseUrl, ...cardProps }: ILocationDetailUsersListProps) => {\r\n const { configuration } = useApp();\r\n const navigate = useNavigate();\r\n const [userSearchStore] = useState(new UserSearchStore({\r\n scope: 'org',\r\n organizationVersionId: configuration.currentCorpOrganization.organizationVersionId,\r\n organizationSourceId: configuration.currentCorpOrganization.organizationSourceId,\r\n organizationRelationKey: hospital.organizationRelationKey\r\n\r\n }));\r\n const { register, reset, handleSubmit } = useForm({\r\n shouldFocusError: true,\r\n defaultValues: spreadAndtransformDefaultValues(userSearchStore.searchFilter)\r\n });\r\n useEffect(() => {\r\n userSearchStore.search();\r\n }, [userSearchStore, userSearchStore.combinedSearchParams]);\r\n\r\n\r\n const removeAllFilters = useCallback(() => {\r\n if (userSearchStore) {\r\n userSearchStore.resetSearchFilter();\r\n reset(spreadAndtransformDefaultValues(userSearchStore.searchFilter));\r\n }\r\n }, [userSearchStore, reset]);\r\n\r\n\r\n const userClick = useCallback((userId: number) => {\r\n navigate(`${userProfileBaseUrl}${userId}`);\r\n }, [navigate, userProfileBaseUrl]);\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {userSearchStore.hasMultiplePages &&\r\n \r\n }\r\n
\r\n )\r\n});\r\n","import { petcoPewterBlue, petcoWhite } from '@common/_assets/color-constants.js';\r\nimport { ColorPickerPopover } from '@common/components/forms';\r\nimport { useApp } from '@common/hooks';\r\nimport { ClientConfigurationModel, HospitalHoursModel, ScheduleBlockTypeModel, schedule } from '@common/models';\r\nimport { EntityScheduleType, WeekDay } from '@common/models/Enums';\r\nimport { getCalendarEventItemId } from '@common/utils';\r\nimport FullCalendar, { EventContentArg, EventDropArg, EventInput } from '@fullcalendar/react';\r\nimport interactionPlugin, { Draggable, DropArg, EventReceiveArg, EventResizeDoneArg } from '@fullcalendar/interaction';\r\nimport { ResourceInput } from '@fullcalendar/resource-common';\r\nimport resourceTimeGridPlugin from '@fullcalendar/resource-timegrid';\r\nimport timeGridPlugin from \"@fullcalendar/timegrid\";\r\nimport { PetcoCalendarTheme } from '@hospital/components/calendar/PetcoCalendarTheme';\r\nimport { find, first, isEmpty, isEqual, xorWith } from \"lodash\";\r\nimport { DateTime } from 'luxon';\r\nimport { makeAutoObservable, observable, toJS } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useCallback } from 'react';\r\nimport { Col, Form, InputGroup, Row } from 'react-bootstrap';\r\nimport { v4 as uuid } from 'uuid';\r\n\r\n//strongly typed EventInput extensions, deterministic unions\r\ntype SchedulePreferenceEvent = {\r\n preference: schedule.EntitySchedulePreference | undefined;\r\n} & EventInput\r\n\r\nconst eventDate = \"2000-01-01\"\r\nconst dayOfWeek = WeekDay.fromDateTime(DateTime.fromISO(eventDate, { zone: 'UTC' }));\r\nconst defaultProfileColor = petcoPewterBlue;\r\n\r\nconst draggableScheduleBlockType = (sb: ScheduleBlockTypeModel, editing: boolean) =>\r\n \r\n {sb.name}\r\n \r\n\r\n// Make schedule block elements draggable into the grid.\r\nconst initDraggableBlocks = () =>\r\n new Draggable(document.getElementById(\"schedule-block-list\")!, {\r\n itemSelector: \".schedule-block\",\r\n eventData: (eventEl: HTMLElement) => ({\r\n id: eventEl.getAttribute(\"data\"),\r\n title: eventEl.getAttribute(\"title\")\r\n })\r\n });\r\nexport class SchedulePreferencesUIStore {\r\n private _configuration: ClientConfigurationModel;\r\n private _schedulePreferencesType: EntityScheduleType;\r\n private _editing: boolean = false;\r\n private _originalScheduleColor: string = '';\r\n private _schedulingColor: string = ''; //used to compute whether color is dirty in hasChanges\r\n private _templateOrVetId: number;\r\n private _originalEvents = observable([]); //used to compute whether preferences are dirty in hasChanges\r\n private _hospitalHours = observable([]);\r\n events = observable([]);\r\n\r\n constructor(init: { configuration: ClientConfigurationModel, schedulePreferencesType: EntityScheduleType, templateOrVetId: number, schedulingColor: string, hospitalHours: HospitalHoursModel[] | undefined }) {\r\n this._configuration = init.configuration;\r\n this._schedulePreferencesType = init.schedulePreferencesType;\r\n this._templateOrVetId = init.templateOrVetId;\r\n this._originalScheduleColor = init.schedulingColor;\r\n this._schedulingColor = init.schedulingColor;\r\n if (init.hospitalHours) {\r\n this._hospitalHours.clear();\r\n init.hospitalHours.forEach(e => this._hospitalHours.push(e));\r\n }\r\n makeAutoObservable(this, undefined, { autoBind: true });\r\n }\r\n\r\n get editing() { return this._editing; }\r\n set editing(value: boolean) { this._editing = value; }\r\n\r\n get schedulingColor() { return this._schedulingColor; }\r\n set schedulingColor(value: string) { this._schedulingColor = value; }\r\n\r\n get eventSchedulePreferences(): schedule.EntitySchedulePreference[] {\r\n const ret = this.events.map(e => (e as SchedulePreferenceEvent).preference).filter(a => a !== undefined);\r\n return ret as schedule.EntitySchedulePreference[] ?? [];\r\n }\r\n\r\n get resources() {\r\n const ret = [0, 1, 2, 3, 4, 5, 6].map(i => {\r\n const dayName = WeekDay.getLongName(i);\r\n const hospitalHour: HospitalHoursModel | undefined = this._hospitalHours.find(h => h.dayOfWeek === i);\r\n const resource: ResourceInput = {\r\n id: i.toString(),\r\n title: dayName,\r\n businessHours: hospitalHour ? {\r\n id: hospitalHour.hospitalHoursId.toString(),\r\n daysOfWeek: [dayOfWeek],\r\n startTime: hospitalHour.isOpen ? hospitalHour.openTime : `00:00:00`,\r\n endTime: hospitalHour.isOpen ? hospitalHour.closeTime : `00:00:00`,\r\n overlap: false,\r\n interactive: false\r\n } : undefined\r\n }\r\n return resource;\r\n });\r\n return ret;\r\n }\r\n\r\n get minOpenTime() {\r\n const sorted = this._hospitalHours.map(h => h.openTime).sort();\r\n return sorted.length > 0 ? sorted[0] : '07:00:00';\r\n }\r\n\r\n get maxCloseTime() {\r\n const sorted = this._hospitalHours.map(h => h.closeTime).sort();\r\n return sorted.length > 0 ? sorted[sorted.length - 1] : '19:00:00'\r\n }\r\n\r\n /**\r\n * Returns true if any initially loaded events have changed, been added, deleted, or the scheduling color has changed since loaded.\r\n * Essentially this is dirty tracking on the schedule preferences and scheduling color.\r\n */\r\n get hasChanges() {\r\n if (this._originalScheduleColor !== this._schedulingColor)\r\n return true;\r\n const origEvents = toJS(this._originalEvents);\r\n const currentEvents = toJS(this.events);\r\n const eventsHaveChanged = !isEmpty(xorWith(origEvents, currentEvents, isEqual));\r\n return eventsHaveChanged;\r\n }\r\n\r\n /**\r\n * Clears any existing events and creates new events from all the schedule preferences passed in, you should pass in hosp or vet based on the SchedulePreferencesType the store was instantiated with, not both.\r\n * @param preferences A Hospital or Vet schedule prefrenceModel\r\n */\r\n setPreferences(preferences: schedule.EntitySchedulePreference[]) {\r\n this.events.clear();\r\n this._originalEvents.clear();\r\n preferences.map(this.preferenceToEvent).forEach(e => this.events.push(e));\r\n preferences.map(this.preferenceToEvent).forEach(e => this._originalEvents.push(e));\r\n }\r\n\r\n // modify the start/end time of the event\r\n updateEventStartEnd = (event: SchedulePreferenceEvent, start: string, end?: string) => {\r\n event.start = start;\r\n event.end = end ? end : DateTime.fromISO(start, { zone: 'UTC' }).plus({ hours: 1 }).toISO();\r\n\r\n const startTime = DateTime.fromISO(event.start, { zone: 'UTC' }).toISOTime({ includeOffset: false, suppressMilliseconds: true });\r\n const endTime = DateTime.fromISO(event.end, { zone: 'UTC' }).toISOTime({ includeOffset: false, suppressMilliseconds: true });\r\n\r\n if (event.preference) {\r\n event.preference.startTime = startTime;\r\n event.preference.endTime = endTime;\r\n }\r\n\r\n return event;\r\n }\r\n\r\n // modify the resource (day) of the event.\r\n updateEventResource = (event: SchedulePreferenceEvent, resourceId?: string) => {\r\n event.resourceId = resourceId ?? event.resourceId;\r\n if (event.preference && event.resourceId)\r\n event.preference.dayOfWeek = parseInt(event.resourceId);\r\n return event;\r\n }\r\n\r\n /**\r\n * Instantiates a schedule preference event for the calendar from a block type and pref model\r\n * @param sb the schedule block type to create an event for\r\n * @param model the hos pref or vet pref model to create an event for\r\n * @returns returns a SchedulePreferenceEvent\r\n */\r\n newEvent = (model: schedule.EntitySchedulePreference): SchedulePreferenceEvent => {\r\n var baseEntityPreferenceId = getCalendarEventItemId(model.uniqueId);\r\n\r\n let event: SchedulePreferenceEvent = {\r\n schedulePreferencesType: this._schedulePreferencesType,\r\n title: model.scheduleBlockTypeName,\r\n textColor: model.scheduleBlockTypeColor,\r\n backgroundColor: `${model.scheduleBlockTypeColor}25`, //25 makes it 25% opacity, important or text will be invisible\r\n borderColor: petcoWhite,\r\n preference: model,\r\n id: baseEntityPreferenceId === 0 ? `0_${uuid()}` : model.uniqueId,\r\n };\r\n return event;\r\n }\r\n\r\n\r\n /**\r\n * Converts a single preference to a schedule preference event\r\n * @param p hosp pref or vet pref depending on schedule preferences type\r\n * @returns a SchedulePreferenceEvent\r\n */\r\n preferenceToEvent(p: schedule.EntitySchedulePreference) {\r\n const event = this.newEvent(p);\r\n // convert time to date: 08:00:00 -> 2000-01-01T08:00:00\r\n this.updateEventStartEnd(event, `${eventDate}T${p.startTime}`, `${eventDate}T${p.endTime}`);\r\n this.updateEventResource(event, p.dayOfWeek.valueOf().toString());\r\n return event;\r\n }\r\n\r\n\r\n resizeEvent(arg: EventResizeDoneArg) {\r\n const event = find(this.events, e => e.id === arg.event.id);\r\n if (event)\r\n this.updateEventStartEnd(event, arg.event.startStr, arg.event.endStr);\r\n }\r\n\r\n moveEvent(arg: EventDropArg) {\r\n const event = find(this.events, { id: arg.event.id })!;\r\n this.updateEventStartEnd(event, arg.event.startStr, arg.event.endStr);\r\n this.updateEventResource(event, arg.newResource?.id);\r\n\r\n }\r\n\r\n /**\r\n * A schedule block was dragged into the grid. Create a corresponding event record. not to be confused with newEvent which merely instantiates an event object, this actually inserts the created event into the events.\r\n * @param arg\r\n */\r\n\r\n createEvent(arg: DropArg) {\r\n const schedBlock = find(this._configuration.scheduleBlockTypes, { name: arg.draggedEl.title })!;\r\n let event: SchedulePreferenceEvent;\r\n\r\n const newPreference = schedule.EntitySchedulePreference.createNewEntitySchedulePreference({\r\n scheduleBlockTypeId: schedBlock.scheduleBlockTypeId,\r\n scheduleBlockTypeName: schedBlock.name,\r\n scheduleBlockIsOverrideType: false,\r\n scheduleBlockTypeColor: schedBlock.color,\r\n rowVersion: '',\r\n entityType: this._schedulePreferencesType\r\n });\r\n\r\n\r\n event = this.newEvent(newPreference);\r\n\r\n this.updateEventStartEnd(event, arg.dateStr);\r\n this.updateEventResource(event, arg.resource?.id);\r\n this.events.push(event);\r\n }\r\n\r\n clearEvents() {\r\n this.events.clear();\r\n }\r\n\r\n // Remove the selected event from state\r\n deleteEvent(eventId: string) {\r\n const event = find(this.events, e => e.id === eventId);\r\n if (event)\r\n this.events.remove(event);\r\n }\r\n}\r\n\r\ninterface IProps {\r\n calendarKey: string,\r\n className?: string,\r\n editing: boolean,\r\n hideActions?: boolean\r\n schedulingColor: string,\r\n schedulingName: string,\r\n templateOrVetId: number,\r\n schedulePreferencesType: EntityScheduleType,\r\n schedulePreferences: schedule.EntitySchedulePreference[];\r\n hospitalHours?: HospitalHoursModel[] | undefined,\r\n setPreferencesStore: (store: SchedulePreferencesUIStore) => void;\r\n}\r\n\r\nexport const SchedulingPreferences = observer(({ hospitalHours, setPreferencesStore, schedulePreferencesType, schedulingName, schedulePreferences, schedulingColor, templateOrVetId, editing, className, calendarKey }: IProps) => {\r\n const fcRef = React.useRef(null); //used to know when FC has been rendered so it can be initialized in edit mode at load.\r\n const draggable = React.useRef(undefined);\r\n const { configuration } = useApp();\r\n //get the store, memo prevents it from being recreated unless the props actually change, this preserves state in the store\r\n const [uiStore] = React.useMemo(() => {\r\n return [new SchedulePreferencesUIStore({ configuration, schedulePreferencesType, templateOrVetId: templateOrVetId, schedulingColor: schedulingColor, hospitalHours })];\r\n }, [configuration, schedulePreferencesType, templateOrVetId, schedulingColor, hospitalHours]);\r\n\r\n // Enable schedule block dragging/dropping\r\n const enableEditing = useCallback(() => {\r\n draggable.current?.destroy();\r\n draggable.current = initDraggableBlocks();\r\n uiStore.editing = true;\r\n }, [uiStore]);\r\n\r\n // Disable schedule block dragging/dropping\r\n const disableEditing = useCallback(() => {\r\n draggable.current?.destroy();\r\n uiStore.editing = false;\r\n }, [uiStore]);\r\n\r\n //loading existing schedule preferences\r\n React.useEffect(() => {\r\n uiStore.setPreferences(schedulePreferences);\r\n }, [uiStore, schedulePreferences]);\r\n\r\n React.useEffect(() => {\r\n setPreferencesStore(uiStore);\r\n }, [setPreferencesStore, uiStore]);\r\n\r\n\r\n //enables editing based on editing prop once full calendar has rendered, can't create draggable until FC exists.\r\n React.useEffect(() => {\r\n if (fcRef && fcRef.current) {\r\n if (editing)\r\n enableEditing();\r\n else\r\n disableEditing();\r\n }\r\n }, [fcRef, editing, disableEditing, enableEditing]);\r\n\r\n // generate the markup for the grid event\r\n const renderEvent = (arg: EventContentArg) => {\r\n const resource = first(arg.event.getResources());\r\n return (\r\n
\r\n
\r\n
{arg.event.title}
\r\n
{arg.timeText}
\r\n
\r\n {uiStore.editing && resource &&\r\n
uiStore.deleteEvent(arg.event.id)}>\r\n \r\n
\r\n }\r\n
\r\n )\r\n }\r\n\r\n /**\r\n * When you drag a schedule block onto the grid, FullCalendar adds a stub event to the grid and\r\n * then fires 'eventReceive'. It fires 'drop' at the same time. Only 'drop' carries the necessary\r\n * metadata to properly create an event descriptor. (In particular, the 'eventReceive' metadata\r\n * is missing the event day, or \"resource\".)\r\n * Since the 'drop' args are sufficient to create the event, we don't need FullCalendar's stub event.\r\n * This handler simply tells FullCalendar to revert the addition of that stub event to the grid.\r\n */\r\n const receiveEvent = (arg: EventReceiveArg) => { arg.revert() };\r\n\r\n return (<>\r\n \r\n {schedulePreferencesType === EntityScheduleType.Template ? 'Schedule Color' : 'Profile Color'}\r\n \r\n
\r\n
\r\n {uiStore.editing &&\r\n {\r\n uiStore.schedulingColor = newColor;\r\n }} />\r\n }\r\n
\r\n
\r\n \r\n {schedulingName == null || schedulingName == '' ? 'Not Yet Named' : schedulingName}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
Available Blocks:
\r\n
\r\n {configuration.scheduleBlockTypes.filter(e => e.isOverrideType === false).map(sb => draggableScheduleBlockType(sb, uiStore.editing))}\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Online booking only available for appointments.
\r\n
\r\n
\r\n )\r\n});\r\n","import { petcoPewterBlue } from '@common/_assets/color-constants.js';\r\nimport { FormInput, spreadAndtransformDefaultValues } from '@common/components/forms';\r\nimport { YesNoConfirmModal } from '@common/components/modals';\r\nimport { useUnsavedChangesWarning } from '@common/hooks';\r\nimport { useUniqueKey } from '@common/hooks/useUniqueKey';\r\nimport { HospitalModel, HospitalScheduleTemplateModel, schedule } from '@common/models';\r\nimport { EntityScheduleType } from '@common/models/Enums';\r\nimport { EntitySchedulePreference } from '@common/models/Schedule';\r\nimport { HospitalScheduleTemplateRequest, IHospitalScheduleTemplateRequest } from '@common/models/requests/HospitalScheduleTemplateRequest';\r\nimport { some } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Button, Form, Modal } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { SchedulePreferencesUIStore, SchedulingPreferences } from './SchedulePreferences';\r\n\r\nexport type LocationScheduleTemplateModalProps = {\r\n show: boolean,\r\n hospital: HospitalModel,\r\n existingTemplateNames: (string | undefined)[],\r\n hospitalScheduleTemplate: HospitalScheduleTemplateModel | undefined,\r\n onSaveTemplate: (request: IHospitalScheduleTemplateRequest) => void;\r\n onClose: () => void,\r\n}\r\n\r\nexport const LocationScheduleTemplateModal = observer(({ show, existingTemplateNames, hospitalScheduleTemplate, onSaveTemplate, onClose, hospital }: LocationScheduleTemplateModalProps) => {\r\n const calendarKey = useUniqueKey([hospitalScheduleTemplate]);\r\n const [isNewTemplate] = React.useState(hospitalScheduleTemplate === undefined || hospitalScheduleTemplate.hospitalScheduleTemplateId === 0 ? true : false);\r\n const [schedulePreferenceUI, setSchedulePreferenceUI] = React.useState(undefined);\r\n const [schedulePreferences] = React.useState(hospitalScheduleTemplate?.hospitalSchedulePreferences ?? []);\r\n const [scheduleTemplateId] = React.useState(hospitalScheduleTemplate?.hospitalScheduleTemplateId ?? 0);\r\n const [showCancelConfirm, setShowCancelConfirm] = React.useState(false);\r\n\r\n const [formData] = React.useMemo(() => {\r\n return [isNewTemplate ? new HospitalScheduleTemplateRequest(\r\n { hospitalScheduleTemplateId: 0, isActive: true, isDefault: false, color: petcoPewterBlue, name: '', hospitalId: hospital.hospitalId, rowVersion: '' })\r\n : new HospitalScheduleTemplateRequest(hospitalScheduleTemplate)];\r\n }, [hospitalScheduleTemplate, isNewTemplate, hospital]);\r\n\r\n const { control, handleSubmit, watch, formState: { isDirty } } = useForm({ defaultValues: spreadAndtransformDefaultValues(formData) });\r\n const unsavedChangesPrompt = useUnsavedChangesWarning(isDirty);\r\n\r\n const raiseOnSaveTemplate = React.useCallback((template: HospitalScheduleTemplateRequest) => {\r\n if (!schedulePreferenceUI || !onSaveTemplate)\r\n return;\r\n const preferences = schedulePreferenceUI.eventSchedulePreferences;\r\n template.color = schedulePreferenceUI.schedulingColor;\r\n template.hospitalSchedulePreferences = preferences ?? [] as schedule.EntitySchedulePreference[];\r\n onSaveTemplate(template);\r\n }, [schedulePreferenceUI, onSaveTemplate]);\r\n\r\n const checkConfirmDirty = () => {\r\n if (isDirty || schedulePreferenceUI?.hasChanges)\r\n setShowCancelConfirm(true);\r\n else\r\n onClose();\r\n };\r\n\r\n const validateName = (value: any) => {\r\n //TODO Add new Search End criteria to search service to allow searching by template name (exactly). Do a different search in validateName\r\n if (value && typeof (value) === 'string') {\r\n const ret = ((!isNewTemplate && (value as string) === hospitalScheduleTemplate!.name) || !some(existingTemplateNames ?? [], p => p === value as string));\r\n if (ret)\r\n return true;\r\n }\r\n return 'That name is already in use, please choose another or edit the existing template.';\r\n };\r\n\r\n const watchColor = watch(\"color\", undefined);\r\n const watchName = watch(\"name\", \"\");\r\n\r\n return (\r\n <>\r\n {unsavedChangesPrompt}\r\n onClose()}\r\n onCancel={() => { setShowCancelConfirm(false) }}\r\n />\r\n \r\n \r\n {!isNewTemplate ? 'Edit template schedule preferences' : 'Create new template schedule preferences'}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\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 { uniqueId } from 'lodash';\r\nimport React from 'react';\r\n\r\n/**\r\n * \r\n * @param depedencies Generates a new lodash _.uniqueId when any dependencies in dependencies change\r\n * @returns a lodash uniqueId\r\n */\r\nexport const useUniqueKey = (dependencies?: React.DependencyList): string => {\r\n const [uniqueKey, setUniqueKey] = React.useState(uniqueId());\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n React.useEffect(() => {\r\n setUniqueKey(uniqueId());\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, dependencies ? [...dependencies] : []);\r\n return uniqueKey;\r\n}\r\n","import { RemoteDataTable } from '@common/components/table';\r\nimport { HospitalScheduleTemplateListingModel } from '@common/models';\r\nimport { HospitalScheduleTemplateSearchStore } from '@hospital/stores';\r\nimport { observer } from \"mobx-react\";\r\nimport React from 'react';\r\nimport { TableColumn } from 'react-data-table-component';\r\n\r\nexport type LocationScheduleTemplateTableProps = {\r\n templateSearchStore: HospitalScheduleTemplateSearchStore,\r\n onUpdateCreateSchedulePreference: (templateListingModel: HospitalScheduleTemplateListingModel, e: React.MouseEvent) => void\r\n\r\n}\r\n\r\nconst createDataTableColumns = (props: Pick): TableColumn[] =>\r\n [\r\n {\r\n name: \"NAME\",\r\n grow: 2,\r\n sortField: \"name\",\r\n selector: (row: HospitalScheduleTemplateListingModel) => row.name ?? '',\r\n sortable: true\r\n },\r\n {\r\n name: \"COLOR\",\r\n grow: 2,\r\n sortField: \"color\",\r\n selector: (row: HospitalScheduleTemplateListingModel) => row.color ?? '',\r\n sortable: true,\r\n cell: row => ( {row.color})\r\n },\r\n {\r\n name: \"ACTIVE\",\r\n grow: 1,\r\n sortField: \"isActive\",\r\n selector: (row: HospitalScheduleTemplateListingModel) => row.isActive ? 'Yes' : 'No',\r\n sortable: true,\r\n cell: row => ()\r\n },\r\n {\r\n name: \"PRIMARY\",\r\n grow: 1,\r\n sortField: \"isDefault\",\r\n selector: (row: HospitalScheduleTemplateListingModel) => row.isDefault ? 'Yes' : 'No',\r\n sortable: true,\r\n cell: row => ()\r\n },\r\n {\r\n name: \"ACTION\",\r\n grow: 3,\r\n sortable: false,\r\n cell: row => (\r\n ) => props.onUpdateCreateSchedulePreference(row, e)} />\r\n )\r\n },\r\n\r\n ];\r\n\r\n\r\n\r\n\r\nexport const LocationScheduleTemplateTable = observer(({ templateSearchStore, onUpdateCreateSchedulePreference }: LocationScheduleTemplateTableProps) => {\r\n const [scheduleTemplateColumns] = React.useState[]>(createDataTableColumns({ onUpdateCreateSchedulePreference }));\r\n\r\n return ( { templateSearchStore.changePage(page) }}\r\n onChangeRowsPerPage={(rowsPerPage: number) => { templateSearchStore.updateSearchParams({ top: rowsPerPage }) }}\r\n paginationPerPage={templateSearchStore.searchParams.top}\r\n sortServer={true}\r\n paginationServer={true}\r\n noDataComponent={

The current hospital does not have any Schedule Templates

}\r\n />);\r\n\r\n});\r\n","import { PageCard, PageCardProps } from \"@common/components/layout\"\r\nimport { useApp } from \"@common/hooks\"\r\nimport { HospitalModel, HospitalScheduleTemplateListingModel } from \"@common/models\"\r\nimport { HospitalScheduleTemplateRequest } from \"@common/models/requests/HospitalScheduleTemplateRequest\"\r\nimport { HospitalScheduleTemplateSearchStore, HospitalScheduleTemplateStore } from \"@hospital/stores\"\r\nimport { observer } from \"mobx-react\"\r\nimport React from \"react\"\r\nimport { Button } from \"react-bootstrap\"\r\nimport { LocationScheduleTemplateModal } from \"./LocationScheduleTemplateModal\"\r\nimport { LocationScheduleTemplateTable } from \"./LocationScheduleTemplateTable\"\r\n\r\nexport type LocationScheduleTemplateDetailProps = {\r\n hospital: HospitalModel\r\n} & PageCardProps\r\n\r\nexport const LocationScheduleTemplateDetail = observer(({ hospital, ...cardProps }: LocationScheduleTemplateDetailProps) => {\r\n const app = useApp();\r\n const [showModal, setShowModal] = React.useState(false);\r\n const [templateSearchStore] = React.useState(new HospitalScheduleTemplateSearchStore(app.configuration, { hospitalId: hospital.hospitalId }));\r\n const [templateStore] = React.useState(new HospitalScheduleTemplateStore());\r\n\r\n const onUpdateCreateSchedulePreference = (template?: HospitalScheduleTemplateListingModel) => {\r\n if (template && template.hospitalScheduleTemplateId > 0) {\r\n templateStore.loadHospitalScheduleTemplate(template.hospitalScheduleTemplateId).then(() => setShowModal(true));\r\n }\r\n else {\r\n templateStore.clearHospitalScheduleTemplate();\r\n setShowModal(true);\r\n }\r\n }\r\n\r\n const onSaveTemplate = (request: HospitalScheduleTemplateRequest) => {\r\n templateStore.saveHospitalScheduleTemplate(request).then(() => {\r\n setShowModal(false);\r\n templateSearchStore.search();\r\n });\r\n }\r\n\r\n React.useEffect(() => {\r\n templateSearchStore.search();\r\n }, [templateSearchStore, templateSearchStore.combinedSearchParams]);\r\n\r\n return (\r\n <>\r\n {!templateStore.isHospitalScheduleTemplateLoading && showModal && !templateSearchStore.isLoading &&\r\n { setShowModal(false); templateStore.hospitalScheduleTemplate = undefined }}\r\n onSaveTemplate={onSaveTemplate}\r\n hospital={hospital}\r\n existingTemplateNames={templateSearchStore.searchResults.results.map(p => p.name)}\r\n />\r\n }\r\n onUpdateCreateSchedulePreference()}>ADD NEW PREFERENCE\r\n } {...cardProps}>\r\n \r\n \r\n \r\n )\r\n})\r\n","import React from 'react';\r\nexport interface IDisplayLabelProps extends React.HTMLAttributes {\r\n text: string,\r\n classNames?:string\r\n}\r\n\r\nexport const DisplayLabel = (props: IDisplayLabelProps) => {\r\n const { classNames, ...rest } = props;\r\n return ()\r\n}\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { PatternFormat } from 'react-number-format';\r\nimport { DisplayFieldType } from './types';\r\nexport interface IDisplayFieldProps extends React.HTMLAttributes {\r\n\ttext?: string,\r\n\tvalue?: boolean | string | JSX.Element,\r\n\ttype?: DisplayFieldType,\r\n\ttextClass?: string,\r\n\tplaceholder?: string,\r\n}\r\n\r\nexport const DisplayField = ({ type = 'text', value, textClass, placeholder, ...props }: IDisplayFieldProps) => {\r\n\tswitch (type) {\r\n\t\tcase \"tel\":\r\n\t\t\treturn \r\n\t\tcase \"checkbox\":\r\n\t\t\treturn \r\n\t\tcase \"text\":\r\n\t\tdefault:\r\n\t\t\treturn (
{value ? value : (placeholder ? placeholder : \"-\")}
)\r\n\t}\r\n}\r\n","import { DisplayField, DisplayLabel } from '@common/components/forms/fields';\r\nimport { bsClassJustifyContent } from '@common/types/bootstrap';\r\nimport classNames from 'classnames';\r\nimport React from 'react';\r\nimport { DisplayFieldType } from './types';\r\n\r\nexport interface IDisplayGroupProps {\r\n controlid?: string,\r\n text: string,\r\n value?: string | boolean | JSX.Element,\r\n labelRowJustifyClass?: bsClassJustifyContent,\r\n labelTailElement?: JSX.Element,\r\n type?: DisplayFieldType,\r\n fieldClass?: string,\r\n placeholder?: string,\r\n parentClass?: string,\r\n}\r\n\r\nexport const DisplayGroup = ({ controlid, text, value, labelTailElement, fieldClass, parentClass, labelRowJustifyClass = \"justify-content-between\", type = 'text', placeholder }: IDisplayGroupProps) => {\r\n return (\r\n
\r\n
\r\n \r\n {labelTailElement}\r\n
\r\n \r\n
\r\n\r\n )\r\n}\r\n","import { ClientModel, ClientPhone } from \"@common/models\";\r\n\r\nexport const normalizePhone = (n: string | undefined | null, wrapAreaCode?: boolean) => {\r\n if (!n) return '-';\r\n const newN = n.replace(/\\D/g, '');\r\n if (newN.length === 10) {\r\n if (wrapAreaCode) return `(${newN.substring(0, 3)}) ${newN.substring(3, 6)}-${newN.substring(6, 10)}`;\r\n else return `${newN.substring(0, 3)}-${newN.substring(3, 6)}-${newN.substring(6, 10)}`;\r\n }\r\n return n;\r\n}\r\nexport const getPrimaryPhoneNumberFromClient = ({ cellPhone, homePhone, alternatePhone }: Partial) => {\r\n const primaryPhone = cellPhone || homePhone || alternatePhone || undefined\r\n return primaryPhone;\r\n}\r\nexport const formatPhoneNumberForViewLogic = (primaryPhone: string | undefined) => { // example phone: 619-948-0856\r\n if (primaryPhone) {\r\n const delimitedPhone = primaryPhone.split('-');\r\n if (delimitedPhone.length === 3) {\r\n const [areaCode, exchangeCode, subscriberNumber] = delimitedPhone;\r\n const finalString = `(${areaCode}) ${exchangeCode}-${subscriberNumber}`;\r\n return finalString;\r\n }\r\n else {\r\n return primaryPhone;\r\n }\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\nexport const phoneCallScreener = (phoneNumber: string | undefined, canCall: boolean | undefined) =>\r\n phoneNumber ?\r\n canCall === false // Can call does not mask intentionally if undefined.\r\n ? `***-***-${phoneNumber?.slice(-4)}`\r\n : phoneNumber\r\n : ''\r\nexport const getFormattedPrimaryPhoneNumber = ({ cellPhone, homePhone, alternatePhone }: ClientPhone) => {\r\n const primaryPhone = getPrimaryPhoneNumberFromClient({ cellPhone, homePhone, alternatePhone });\r\n const formattedPrimaryPhone = formatPhoneNumberForViewLogic(primaryPhone);\r\n return formattedPrimaryPhone;\r\n}\r\n","import { DisplayGroup } from '@common/components/forms/fields';\r\nimport { PageCard, PageCardProps } from '@common/components/layout';\r\nimport { HospitalModel } from '@common/models';\r\nimport { normalizePhone } from '@common/utils/phoneUtils';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\n\r\ntype IProps = {\r\n hospital: HospitalModel\r\n} & PageCardProps\r\n\r\nexport const LocationDetailStaticInfo = observer(({ hospital, ...cardProps }: IProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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 { observer } from 'mobx-react';\r\nimport React, { MouseEvent, useMemo } from 'react';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nexport interface ICancelAndEditActions {\r\n formId: string\r\n cancelText?: string\r\n editText?: string\r\n saveText?: string\r\n isEditing: boolean\r\n cancelClicked: (e?: MouseEvent | undefined) => void\r\n saveClicked: (e?: MouseEvent | undefined) => void\r\n editClicked: (e?: MouseEvent | undefined) => void\r\n}\r\n\r\nexport const CancelAndEditActions = observer((props: ICancelAndEditActions) => {\r\n const saveText = useMemo(() => props.saveText ? props.saveText : 'Save', [props.saveText]);\r\n const editText = useMemo(() => props.editText ? props.editText : 'Edit', [props.editText]);\r\n const cancelText = useMemo(() => props.cancelText ? props.cancelText : 'Cancel', [props.cancelText])\r\n return (\r\n <>\r\n {\r\n props.isEditing &&\r\n <>\r\n \r\n  \r\n \r\n \r\n }\r\n {\r\n !props.isEditing &&\r\n \r\n }\r\n \r\n );\r\n});\r\n","import { StringUtility, anyPromiseTrackerTagsInProgress } from \"@common/utils\";\r\nimport classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { Button, ButtonProps, OverlayTrigger, Tooltip } from \"react-bootstrap\";\r\n\r\ninterface ISuspenseButtonProps extends ButtonProps {\r\n tag?: string\r\n tags?: string[]\r\n className?: string\r\n hideSpinner?: boolean\r\n disabled?: boolean\r\n titleClsNotRequired?:boolean\r\n}\r\n\r\n\r\nexport const SuspenseButton = ({ tag, tags, children, className, hideSpinner = false, disabled, title, titleClsNotRequired, ...buttonProps }: React.PropsWithChildren) => {\r\n // get a single list of promise tags to watch\r\n const promiseTags = tags ?? [];\r\n if (tag) { promiseTags.push(tag); }\r\n // are any of the promise tags in progress?\r\n const promiseInProgress = anyPromiseTrackerTagsInProgress(promiseTags);\r\n\r\n const button =\r\n \r\n {children}\r\n \r\n\r\n // if a title was provided, provide a tooltip overlay.\r\n // otherwise just return the button.\r\n if (StringUtility.hasValue(title)) {\r\n return {title}}>\r\n \r\n {button}\r\n \r\n \r\n } else {\r\n return button;\r\n }\r\n}\r\n","import { observer } from \"mobx-react\";\r\nimport React from \"react\";\r\nimport { Table } from \"react-bootstrap\";\r\n\r\nimport { IIvlsDeviceModel } from \"@common/models\";\r\n\r\n\r\n\r\ninterface IIvlsDeviceTableProps {\r\n ivlsDevices?: IIvlsDeviceModel[];\r\n}\r\n\r\nexport const IvlsDeviceTable = observer(\r\n ({ ivlsDevices }: IIvlsDeviceTableProps) => {\r\n\r\n if (_.isEmpty(ivlsDevices))\r\n return

No Ivls Devices were found for this hospital.

;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {_.orderBy(ivlsDevices, \"deviceSerialNumber\").map((ivls: IIvlsDeviceModel) => (\r\n \r\n \r\n \r\n \r\n ))}\r\n\r\n \r\n
Device Serial NumberDisplay Name
{ivls.deviceSerialNumber}{ivls.displayName}
\r\n
\r\n );\r\n }\r\n);\r\n","import { DisplayGroup } from '@common/components/forms/fields';\r\nimport { HospitalModel } from '@common/models';\r\nimport { observer } from \"mobx-react\";\r\nimport React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\n\r\ninterface IProps {\r\n hospital: HospitalModel;\r\n}\r\n\r\nexport const LocationDiagnosticDisplay = observer((props: IProps) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n});\r\n","import { FormInput } from '@common/components/forms';\r\nimport { CancelAndEditActions } from '@common/components/forms/CancelAndEditActions';\r\nimport { PageCard, PageCardProps } from '@common/components/layout';\r\nimport { YesNoConfirmModal } from '@common/components/modals';\r\nimport { SuspenseButton } from '@common/components/utility/SuspenseButton';\r\nimport { useUnsavedChangesWarning } from '@common/hooks';\r\nimport { HospitalModel, IIvlsDeviceModel } from '@common/models';\r\nimport { HospitalService } from '@common/services';\r\nimport { DateTime } from 'luxon';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Col, Form, Row } from 'react-bootstrap';\r\nimport { useFormContext } from 'react-hook-form';\r\nimport { IvlsDeviceTable } from './IvlsDeviceTable';\r\nimport { LocationDiagnosticDisplay } from './LocationDiagnosticDisplay';\r\n\r\ntype IProps = {\r\n hospital: HospitalModel;\r\n onUpdateHospital: (data: HospitalModel) => void;\r\n refreshIvlsDevices: (hospitalId: number) => void;\r\n ivlsDevices: IIvlsDeviceModel[] | undefined\r\n} & PageCardProps\r\n\r\nexport const LocationDiagnosticDetail = observer(({ hospital, onUpdateHospital, refreshIvlsDevices, ivlsDevices, ...cardProps }: IProps) => {\r\n const {\r\n handleSubmit, control, reset, formState: { isDirty }\r\n } = useFormContext>() //<- omit defaultScheduleTemplate because it causes a circular reference.\r\n\r\n const [isEditing, setIsEditing] = useState(false);\r\n const [diagnosticDetailDirty, setDiagnosticDetailDirty] = React.useState(false);\r\n const [showCancelConfirm, setShowCancelConfirm] = useState(false);\r\n\r\n const cancelingEditing = () => {\r\n if (diagnosticDetailDirty)\r\n setShowCancelConfirm(true);\r\n else\r\n cancelEditing();\r\n }\r\n\r\n const cancelEditing = () => {\r\n setIsEditing(false);\r\n setShowCancelConfirm(false);\r\n reset()\r\n }\r\n const unsavedChangesPrompt = useUnsavedChangesWarning(diagnosticDetailDirty);\r\n useEffect(() => {\r\n if (setDiagnosticDetailDirty) {\r\n setDiagnosticDetailDirty(isDirty);\r\n }\r\n\r\n }, [isDirty, setDiagnosticDetailDirty])\r\n\r\n const formId = 'diagnosticDetailsEditForm'\r\n const disable = false;\r\n\r\n\r\n\r\n useEffect(() => {\r\n if (setDiagnosticDetailDirty) {\r\n setDiagnosticDetailDirty(isDirty);\r\n }\r\n\r\n }, [isDirty, setDiagnosticDetailDirty])\r\n\r\n\r\n const [defaultIvlsDevice, setDefaultIvlsDevice] = React.useState(\r\n (ivlsDevices)\r\n ? _.first(_.orderBy(ivlsDevices, \"lastPolledCloudTime\", \"desc\"))\r\n : undefined\r\n );\r\n\r\n const [lastPolledCloudTime, setLastPolledCloudTime] = React.useState(\r\n (defaultIvlsDevice?.lastPolledCloudTime)\r\n ? defaultIvlsDevice?.lastPolledCloudTime.toLocaleString(DateTime.DATETIME_SHORT)\r\n : ''\r\n );\r\n\r\n React.useEffect(() => {\r\n setDefaultIvlsDevice((ivlsDevices)\r\n ? _.first(_.orderBy(ivlsDevices, \"lastPolledCloudTime\", \"desc\"))\r\n : undefined);\r\n\r\n setLastPolledCloudTime((defaultIvlsDevice?.lastPolledCloudTime)\r\n ? defaultIvlsDevice?.lastPolledCloudTime.toLocaleString(DateTime.DATETIME_SHORT)\r\n : ''\r\n );\r\n\r\n }, [ivlsDevices, defaultIvlsDevice?.lastPolledCloudTime]);\r\n\r\n return (\r\n <>\r\n {unsavedChangesPrompt}\r\n cancelEditing()}\r\n onCancel={() => { setIsEditing(true); setShowCancelConfirm(false) }}\r\n />\r\n {\r\n if (!isEditing) {\r\n e?.preventDefault();\r\n return false;\r\n }\r\n return true;\r\n }}\r\n cancelClicked={cancelingEditing}\r\n editClicked={() => {\r\n if (!isEditing) {\r\n setIsEditing(true);\r\n }\r\n }}\r\n />\r\n } {...cardProps}>\r\n {isEditing ?\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
:\r\n \r\n }\r\n

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

Ivls Devices:

\r\n {lastPolledCloudTime\r\n ? Last Updated Date: {lastPolledCloudTime}\r\n : undefined\r\n }\r\n
\r\n { refreshIvlsDevices(hospital?.hospitalId) }}\r\n >\r\n Refresh IVLS Devices\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n )\r\n});\r\n","import classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React, { HTMLAttributes, useCallback, useEffect, useRef, useState } from 'react';\r\n\r\nexport interface ToggleButtonProps extends HTMLAttributes {\r\n checked?: boolean,\r\n disabled?: boolean,\r\n noSlider?: boolean,\r\n}\r\n\r\nconst ToggleButtonWithForwardRef = React.forwardRef((props, ref) => {\r\n const [isOn, setIsOn] = useState(false);\r\n const inputRef = useRef(null);\r\n\r\n const buttonClicked = useCallback((e: any) => {\r\n inputRef?.current?.click();\r\n e.stopPropagation(); //need this to stop clicking the input from propagating up and clicking parent click handlers.\r\n }, [inputRef]);\r\n\r\n let { noSlider, ...trimmedProps } = props;\r\n delete trimmedProps.className;\r\n\r\n useEffect(() => {\r\n if (!inputRef)\r\n return;\r\n\r\n if (ref == null) {\r\n if (props.defaultChecked != null) {\r\n setIsOn(props.defaultChecked);\r\n }\r\n return;\r\n }\r\n\r\n if (typeof ref === 'function') {\r\n ref(inputRef.current);\r\n if (inputRef && inputRef.current)\r\n setIsOn(inputRef.current.checked);\r\n }\r\n else\r\n if (ref !== null)\r\n ref.current = inputRef.current;\r\n }, [inputRef, ref, props.defaultChecked]);\r\n\r\n return (\r\n noSlider ?\r\n \r\n \r\n \r\n : \r\n \r\n \r\n \r\n )\r\n});\r\nToggleButtonWithForwardRef.displayName = 'ToggleButton';\r\n\r\nToggleButtonWithForwardRef.propTypes = {\r\n className: PropTypes.string,\r\n defaultChecked: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n noSlider: PropTypes.bool,\r\n}\r\n\r\nexport const ToggleButton = React.memo(ToggleButtonWithForwardRef);\r\n","import { FieldSet } from '@common/components/forms';\r\nimport { CancelAndEditActions } from '@common/components/forms/CancelAndEditActions';\r\nimport { ToggleButton } from '@common/components/forms/controls/ToggleButton';\r\nimport { PageCard, PageCardProps } from '@common/components/layout';\r\nimport { YesNoConfirmModal } from '@common/components/modals';\r\nimport { useApp, useUnsavedChangesWarning } from '@common/hooks';\r\nimport { AuthOperationUINames } from '@common/models/Enums/AuthOperationStrings';\r\nimport { HospitalModel } from '@common/models/HospitalModel';\r\nimport { observer } from 'mobx-react-lite';\r\nimport React from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { useFormContext } from 'react-hook-form';\r\n\r\ntype LocationFlagDetailProps = {\r\n hospital: HospitalModel,\r\n onUpdateHospital: (data: HospitalModel) => void\r\n} & PageCardProps\r\n\r\n\r\n\r\nexport const LocationFlagDetail = observer(({ hospital, onUpdateHospital, ...cardProps }: LocationFlagDetailProps) => {\r\n const [isEditing, setIsEditing] = React.useState(false);\r\n const [flagsDirty, setFlagsDirty] = React.useState(false);\r\n const [showCancelConfirm, setShowCancelConfirm] = React.useState(false);\r\n const formId = 'locationHospitalFlagForm';\r\n const { configuration } = useApp();\r\n const {\r\n register, handleSubmit, reset, formState: { isDirty }\r\n } = useFormContext>()\r\n\r\n const cancelEditing = React.useCallback(() => {\r\n setIsEditing(false);\r\n setShowCancelConfirm(false);\r\n reset()\r\n }, [reset]);\r\n\r\n const canToggleDoubleBooking = configuration.HasUIFlag(AuthOperationUINames.UI_HospitalFlags_CanToggleDoubleBooking);\r\n\r\n const cancelingEditing = React.useCallback(() => {\r\n if (flagsDirty)\r\n setShowCancelConfirm(true);\r\n else\r\n cancelEditing();\r\n }, [cancelEditing, flagsDirty]);\r\n\r\n const unsavedChangesPrompt = useUnsavedChangesWarning(flagsDirty);\r\n\r\n React.useEffect(() => {\r\n if (setFlagsDirty)\r\n setFlagsDirty(isDirty);\r\n }, [isDirty, setFlagsDirty]);\r\n\r\n return (\r\n {\r\n if (!isEditing) {\r\n e?.preventDefault();\r\n return false;\r\n }\r\n return true;\r\n }}\r\n cancelClicked={cancelingEditing}\r\n editClicked={() => {\r\n setIsEditing(true);\r\n }}\r\n /> : undefined}\r\n {...cardProps}>\r\n {unsavedChangesPrompt}\r\n cancelEditing()}\r\n onCancel={() => { setIsEditing(true); setShowCancelConfirm(false) }}\r\n />\r\n
\r\n
\r\n {\r\n !canToggleDoubleBooking &&\r\n
\r\n \r\n \r\n
\r\n }\r\n
\r\n
\r\n Allow Double Booking:\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n});\r\n","import { ClientCommunicationListingModel, IClientCommunicationListingModel, IModel, Model, ModelRecord } from \"@common/models\";\r\n\r\nexport interface ISendSMSResponseModel extends IModel {\r\n wasSent:boolean | undefined,\r\n communication: IClientCommunicationListingModel | undefined\r\n}\r\n\r\nexport class SendSMSResponseModel extends Model implements ModelRecord {\r\n wasSent:boolean | undefined\r\n communication: ClientCommunicationListingModel | undefined\r\n\r\n constructor(params?: Partial){\r\n super(params);\r\n this.wasSent = _.defaultTo(params?.wasSent, false);\r\n this.communication = new ClientCommunicationListingModel(params?.communication); \r\n }\r\n}\r\n","import { BlobSasModel, PhotoModel } from \"@common/models\";\r\nimport { ISendSMSResponseModel, SendSMSResponseModel } from \"@common/models/SendSMSResponseModel\";\r\nimport { ISmsModel } from \"@common/models/SmsModel\";\r\nimport { ServiceHelper } from \"@common/services/serviceHelper\";\r\nimport { http } from \"@common/utils\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\n\r\nexport class SmsService {\r\n private static baseUrl: string = \"/api/textmessage/\";\r\n\r\n public static tags = {\r\n validatePhoneNumber: \"validatePhoneNumber\",\r\n sendSms: \"sendSms\",\r\n uploadPhoto: \"uploadPhoto\"\r\n };\r\n\r\n static validateSms = (model: ISmsModel): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}validate`)\r\n .post(model)\r\n .then(() => resolve())\r\n .catch(() => reject());\r\n }),\r\n ServiceHelper.getTagForOptions(this.tags.validatePhoneNumber)\r\n );\r\n };\r\n\r\n static send = (model: ISmsModel): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}send`)\r\n .post(model)\r\n .then(json => resolve(new SendSMSResponseModel(json)))\r\n .catch(reject);\r\n }),\r\n ServiceHelper.getTagForOptions(this.tags.sendSms)\r\n );\r\n };\r\n\r\n static uploadPhoto = (model: BlobSasModel): Promise => {\r\n return trackPromise(\r\n new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}photo`)\r\n .post(model)\r\n .then(resolve)\r\n .catch(reject);\r\n }),\r\n ServiceHelper.getTagForOptions(this.tags.uploadPhoto)\r\n );\r\n };\r\n}\r\n","import { FormInput } from '@common/components/forms';\r\nimport { DisplayGroup } from '@common/components/forms/fields';\r\nimport { SuspenseButton } from '@common/components/utility';\r\nimport { useApp } from '@common/hooks';\r\nimport { HospitalModel, OrganizationListingModel } from '@common/models';\r\nimport { FeatureFlags } from '@common/models/Enums';\r\nimport { SmsModel } from '@common/models/SmsModel';\r\nimport { ServiceHelper } from '@common/services';\r\nimport { SmsService } from '@common/services/smsService';\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useState } from 'react';\r\nimport { Button, Col, Form, Modal, Row } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\n\r\ninterface IProps {\r\n hospital: HospitalModel;\r\n pricingTierOrganization: OrganizationListingModel | undefined;\r\n}\r\n\r\nexport const LocationDetailsDisplay = observer((props: IProps) => {\r\n const { configuration } = useApp();\r\n const [showConfirmSms, setShowConfirmSms] = useState(false);\r\n const { reset, handleSubmit, control } = useForm();\r\n\r\n const onCloseModal = () => {\r\n reset();\r\n setShowConfirmSms(false);\r\n }\r\n\r\n const onSubmit = (data: SmsModel) => {\r\n data.fromNumber = props.hospital.outboundSMSPhone;\r\n\r\n SmsService.validateSms(data)\r\n .then(() => ServiceHelper.showSuccess(\"Succeded to validate SMS Phone Number.\", { showSuccess: true, showError: true }))\r\n .catch(() => ServiceHelper.showError(\"Failed to validate SMS Phone Number.\"))\r\n .then(() => onCloseModal());\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n configuration.hasFeatureFlag(FeatureFlags.InAppSms) && props.hospital.outboundSMSPhone !== ''\r\n ? \r\n : null\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n showConfirmSms\r\n ? \r\n
\r\n \r\n SMS Validation\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Validate\r\n \r\n \r\n
\r\n
\r\n : null\r\n }\r\n \r\n )\r\n});\r\n","import { FormInput, FormSelect, Patterns } from '@common/components/forms';\r\nimport { CancelAndEditActions } from '@common/components/forms/CancelAndEditActions';\r\nimport { PageCard, PageCardProps } from '@common/components/layout';\r\nimport { YesNoConfirmModal } from '@common/components/modals';\r\nimport { useApp, useUnsavedChangesWarning } from '@common/hooks';\r\nimport { HospitalModel, OrganizationListingModel } from '@common/models';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Col, Form, Row } from 'react-bootstrap';\r\nimport { Controller, useFormContext } from 'react-hook-form';\r\nimport { PatternFormat } from 'react-number-format';\r\nimport { LocationDetailsDisplay } from './LocationDetailsDisplay';\r\n\r\ntype IProps = {\r\n\thospital: HospitalModel;\r\n\tpricingTierOrganization: OrganizationListingModel | undefined;\r\n\tonUpdateHospital: (data: HospitalModel) => void;\r\n} & PageCardProps\r\n\r\nexport const LocationHospitalDetail = observer(({ hospital, onUpdateHospital, pricingTierOrganization, ...cardProps }: IProps) => {\r\n\tconst {\r\n\t\thandleSubmit, control, reset, formState: { errors, isDirty }\r\n\t} = useFormContext>() //<- omit defaultScheduleTemplate because it causes a circular reference.\r\n\r\n\tconst app = useApp();\r\n\tconst [isEditing, setIsEditing] = useState(false);\r\n\tconst [locationDetailsDirty, setLocationDetailsDirty] = React.useState(false);\r\n\tconst [showCancelConfirm, setShowCancelConfirm] = useState(false);\r\n\r\n\tconst cancelingEditing = () => {\r\n\t\tif (locationDetailsDirty)\r\n\t\t\tsetShowCancelConfirm(true);\r\n\t\telse\r\n\t\t\tcancelEditing();\r\n\t}\r\n\r\n\tconst cancelEditing = () => {\r\n\t\tsetIsEditing(false);\r\n\t\tsetShowCancelConfirm(false);\r\n\t\treset()\r\n\t}\r\n\tconst unsavedChangesPrompt = useUnsavedChangesWarning(locationDetailsDirty);\r\n\tuseEffect(() => {\r\n\t\tif (setLocationDetailsDirty) {\r\n\t\t\tsetLocationDetailsDirty(isDirty);\r\n\t\t}\r\n\r\n\t}, [isDirty, setLocationDetailsDirty])\r\n\r\n\tconst formId = 'locationDetailsEditForm'\r\n\tconst disable = false;\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{unsavedChangesPrompt}\r\n\t\t\t cancelEditing()}\r\n\t\t\t\tonCancel={() => { setIsEditing(true); setShowCancelConfirm(false) }}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\t\tif (!isEditing) {\r\n\t\t\t\t\t\t\te?.preventDefault();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tcancelClicked={cancelingEditing}\r\n\t\t\t\t\teditClicked={() => {\r\n\t\t\t\t\t\tif (!isEditing) {\r\n\t\t\t\t\t\t\tsetIsEditing(true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t} {...cardProps}>\r\n\t\t\t\t{isEditing ?\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tPhone\r\n\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t onChange(v.value)}\r\n\t\t\t\t\t\t\t\t\t\t\t\taria-invalid={invalid}\r\n\t\t\t\t\t\t\t\t\t\t\t\tisInvalid={invalid}\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={disable}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{errors.phone && {errors.phone.message}}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSMS\r\n\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t onChange(v.value)}\r\n\t\t\t\t\t\t\t\t\t\t\t\taria-invalid={invalid}\r\n\t\t\t\t\t\t\t\t\t\t\t\tisInvalid={invalid}\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={disable}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{errors.fax && {errors.fax.message}}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tFax\r\n\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t onChange(v.value)}\r\n\t\t\t\t\t\t\t\t\t\t\t\taria-invalid={invalid}\r\n\t\t\t\t\t\t\t\t\t\t\t\tisInvalid={invalid}\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={disable}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{errors.fax && {errors.fax.message}}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t r.name}\r\n\t\t\t\t\t\t\t\t\tgetOptionValue={(r) => r.organizationId.toString()}\r\n\t\t\t\t\t\t\t\t\tmapOptionToValue={(r) => r?.organizationId}\r\n\t\t\t\t\t\t\t\t\tmapValueToOption={(orgId) =>\r\n\t\t\t\t\t\t\t\t\t\t_.find(app.configuration.hospitalPricingTierOrganizations, {\r\n\t\t\t\t\t\t\t\t\t\t\torganizationId: orgId,\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\thighlightDirty={true}\r\n\t\t\t\t\t\t\t\t\tisClearable={true}\r\n\t\t\t\t\t\t\t\t\tisRequired={true}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
:\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n});\r\n","import { IHospitalHoursModel } from '@common/models';\r\nimport React from 'react';\r\nexport const HospitalHourOptions = (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\nexport const byDayOfWeek = (a: IHospitalHoursModel, b: IHospitalHoursModel) =>\r\n a.dayOfWeek < b.dayOfWeek ? -1 : 1;\r\n","import { CancelAndEditActions } from '@common/components/forms/CancelAndEditActions';\r\nimport { FormInput, ToggleButton } from '@common/components/forms/controls';\r\nimport { PageCard, PageCardProps } from '@common/components/layout';\r\nimport { YesNoConfirmModal } from '@common/components/modals';\r\nimport { HospitalHourOptions, byDayOfWeek } from '@common/components/time/LocationHours';\r\nimport { useUnsavedChangesWarning } from '@common/hooks';\r\nimport { HospitalModel } from '@common/models';\r\nimport { WeekDay } from '@common/models/Enums';\r\nimport classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { UseFormHandleSubmit, useFieldArray, useFormContext } from 'react-hook-form';\r\nimport { IHospitalHoursGroup } from '.';\r\nimport { RichTextDisplay } from '@common/components/richTextBox/RichTextDisplay';\r\ntype IProps = {\r\n hospitalHoursGroup: IHospitalHoursGroup\r\n onUpdateHospital: (data: HospitalModel) => void\r\n clearHospitalHoursConfirmation: () => void\r\n setHospitalHoursChangesConfirmed: () => void\r\n} & PageCardProps\r\n\r\nconst ChangeHoursNoticeModal = observer(({ setHospitalHoursChangesConfirmed, onUpdateHospital, hospitalHoursGroup, handleSubmit, clearHospitalHoursConfirmation }: IProps & { handleSubmit: UseFormHandleSubmit> }) => {\r\n const confirmHospitalHours = (data: HospitalModel) => {\r\n setHospitalHoursChangesConfirmed();\r\n onUpdateHospital(data);\r\n }\r\n const hoursConfirmationMessage = () => {\r\n let text = \"We noticed that you\";\r\n text += hospitalHoursGroup.hospitalClosureChanged\r\n ? \" have chosen to close the hospital for one or more days\" : \"\";\r\n text += (hospitalHoursGroup.hospitalClosureChanged && hospitalHoursGroup.hospitalHoursExceedWorkday)\r\n ? \" and\" : \"\";\r\n text += hospitalHoursGroup.hospitalHoursExceedWorkday\r\n ? \" have selected hours outside the normal work day\" : \"\";\r\n text += \". Would you like to continue?\";\r\n return text;\r\n }\r\n return \r\n})\r\n\r\nexport const LocationHoursDetail = observer(({ onUpdateHospital, setHospitalHoursChangesConfirmed, hospitalHoursGroup, clearHospitalHoursConfirmation, ...cardProps }: IProps) => {\r\n const {\r\n register, handleSubmit, control, watch, reset,setValue, formState: {isDirty }\r\n } = useFormContext>() //<- omit defaultScheduleTemplate because it causes a circular reference.\r\n\r\n\r\n const { fields } = useFieldArray({\r\n control, // control props comes from useForm (optional: if you are using FormContext)\r\n name: \"hospitalHours\", // unique name for your Field Array\r\n // keyName: \"id\", default to \"id\", you can change the key name\r\n });\r\n\r\n const formHours = watch(\"hospitalHours\");\r\n const isOutOfOfficeEnabled = watch(\"isOutOfOfficeEnabled\");\r\n const outOfOfficeMessage = watch(\"outOfOfficeMessage\");\r\n const [isEditing, setIsEditing] = useState(false);\r\n const [locationDetailsDirty, setLocationDetailsDirty] = React.useState(false);\r\n const [showCancelConfirm, setShowCancelConfirm] = useState(false);\r\n\r\n const cancelingEditing = () => {\r\n if (locationDetailsDirty)\r\n setShowCancelConfirm(true);\r\n else\r\n cancelEditing();\r\n }\r\n\r\n const cancelEditing = () => {\r\n setIsEditing(false);\r\n setShowCancelConfirm(false);\r\n reset()\r\n }\r\n\r\n const unsavedChangesPrompt = useUnsavedChangesWarning(locationDetailsDirty);\r\n useEffect(() => {\r\n if (setLocationDetailsDirty)\r\n setLocationDetailsDirty(isDirty);\r\n }, [isDirty, setLocationDetailsDirty]);\r\n\r\n useEffect(() => {\r\n\r\n if(!isOutOfOfficeEnabled){\r\n setValue('outOfOfficeMessage','');\r\n }\r\n }, [isOutOfOfficeEnabled,setValue])\r\n\r\n const formId = 'locationDetailsHoursForm'\r\n const readonly = !isEditing;\r\n\r\n return (\r\n <>\r\n \r\n {unsavedChangesPrompt}\r\n cancelEditing()}\r\n onCancel={() => { setIsEditing(true); setShowCancelConfirm(false) }}\r\n />\r\n {\r\n if (!isEditing) {\r\n e?.preventDefault();\r\n return false;\r\n }\r\n return true;\r\n }}\r\n cancelClicked={cancelingEditing}\r\n editClicked={() => {\r\n if (!isEditing) {\r\n setIsEditing(true);\r\n }\r\n }}\r\n />}\r\n {...cardProps}\r\n >\r\n
\r\n
\r\n {fields\r\n .sort(byDayOfWeek)\r\n .map((field: any, index: number) => (\r\n
\r\n
\r\n \r\n {WeekDay.getShortName(index)}\r\n \r\n \r\n {formHours[index].isOpen ? 'Open' : 'Closed'}\r\n
\r\n \r\n {HospitalHourOptions}\r\n \r\n -\r\n \r\n {HospitalHourOptions}\r\n \r\n
\r\n
\r\n
\r\n ))\r\n }\r\n
\r\n
\r\n \r\n Out of Office Message\r\n \r\n \r\n {isOutOfOfficeEnabled ? 'Enabled' : 'Disabled'} \r\n
\r\n
\r\n \r\n message\r\n \r\n
\r\n
\r\n {!readonly &&\r\n \r\n }\r\n {readonly && }\r\n
\r\n
\r\n
\r\n \r\n )\r\n});\r\n","import React from 'react';\r\n\r\nimport { spreadAndtransformDefaultValues } from '@common/components/forms';\r\nimport { useCurrentRoute } from '@common/hooks';\r\nimport { HospitalModel, IIvlsDeviceModel, OrganizationListingModel } from '@common/models';\r\nimport { LocationDetailUsersList } from '@hospital/views/shared/locations';\r\nimport { LocationScheduleTemplateDetail } from '@hospital/views/shared/schedule';\r\nimport { observer } from 'mobx-react';\r\nimport { FormProvider, useForm } from 'react-hook-form';\r\nimport { LocationDetailStaticInfo } from './LocationDetailStaticInfo';\r\nimport { LocationDiagnosticDetail } from './LocationDiagnosticDetail';\r\nimport { LocationFlagDetail } from './LocationFlagDetail';\r\nimport { LocationHospitalDetail } from './LocationHospitalDetail';\r\nimport { LocationHoursDetail } from './LocationHoursDetail';\r\nimport { IHospitalHoursGroup } from './LocationStore';\r\n\r\ninterface IProps {\r\n hospital: HospitalModel\r\n hospitalHoursGroup: IHospitalHoursGroup\r\n pricingTierOrganization: OrganizationListingModel | undefined;\r\n onUpdateHospital: (data: HospitalModel) => void\r\n clearHospitalHoursConfirmation: () => void\r\n setHospitalHoursChangesConfirmed: () => void\r\n refreshIvlsDevices: (hospitalId: number) => void;\r\n ivlsDevices: IIvlsDeviceModel[] | undefined\r\n}\r\n\r\nexport const LocationDetailForm = observer(({ hospital, onUpdateHospital, setHospitalHoursChangesConfirmed, hospitalHoursGroup, clearHospitalHoursConfirmation, pricingTierOrganization, refreshIvlsDevices, ivlsDevices }: IProps) => {\r\n const currentRoute = useCurrentRoute();\r\n const isAdmin = currentRoute?.pathname.toLowerCase().startsWith(\"/admin\");\r\n const userProfileBaseUrl = isAdmin ? \"../../users/\" : \"../users/\";\r\n\r\n const methods = useForm>({ //<- omit defaultScheduleTemplate because it causes a circular reference.\r\n defaultValues: spreadAndtransformDefaultValues(hospital), shouldFocusError: true\r\n });\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n});\r\n\r\nexport default LocationDetailForm;\r\n","import { DisplayGroup } from '@common/components/forms/fields';\r\nimport { PageCard } from '@common/components/layout';\r\nimport { useCurrentRoute } from '@common/hooks';\r\nimport { HospitalModel, IHospitalHoursModel } from '@common/models';\r\nimport { WeekDay } from '@common/models/Enums';\r\nimport { LocationDetailUsersList } from '@hospital/views/shared/locations';\r\nimport { DateTime } from 'luxon';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { LocationDetailStaticInfo } from './LocationDetailStaticInfo';\r\ninterface IProps {\r\n hospital: HospitalModel\r\n}\r\n\r\nexport const LocationDetailView = observer(({ hospital }: IProps) => {\r\n const currentRoute = useCurrentRoute();\r\n const isAdmin = currentRoute?.pathname.toLowerCase().startsWith(\"/admin\");\r\n const userProfileBaseUrl = isAdmin ? \"../../users/\" : \"../users/\";\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {hospital.hospitalHours\r\n .slice()\r\n .sort(byDayOfWeek)\r\n .map((field, index) => (\r\n
\r\n
\r\n
\r\n {WeekDay.getLongName(index)}\r\n
\r\n
\r\n {!field.isOpen && Closed}\r\n {field.isOpen && <>\r\n
\r\n {DateTime.fromISO(field.openTime).toLocaleString(DateTime.TIME_SIMPLE)}\r\n
\r\n
-
\r\n
\r\n {DateTime.fromISO(field.closeTime).toLocaleString(DateTime.TIME_SIMPLE)}\r\n
\r\n }\r\n
\r\n
\r\n
\r\n ))\r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n});\r\n\r\nconst byDayOfWeek = (a: IHospitalHoursModel, b: IHospitalHoursModel) =>\r\n a.dayOfWeek < b.dayOfWeek ? -1 : 1;\r\n","import { PageCard } from '@common/components/layout';\r\nimport { TableSkeleton } from '@common/components/skeleton/TableSkeleton';\r\nimport { useRouteBreadcrumb } from '@common/hooks';\r\nimport { AdminPage, Page } from '@hospital/components/layout';\r\nimport { LocationStoreContextWrapper } from '@hospital/contexts';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useContext, useEffect } from 'react';\r\nimport { useOutlet, useParams } from 'react-router-dom';\r\nimport { LocationDetailForm } from './LocationDetailForm';\r\n\r\n/**\r\n * Edit Location View handles all rendering of editing a particular store/hospital location\r\n */\r\nexport const LocationDetailContainer = observer(() => {\r\n const { hospitalId } = useParams();\r\n const outlet = useOutlet();\r\n //get location store from parent context\r\n const store = useContext(LocationStoreContextWrapper.get());\r\n const breadcrumb = useRouteBreadcrumb();\r\n\r\n useEffect(() => {\r\n if (hospitalId)\r\n store.refreshHospital(parseInt(hospitalId));\r\n }, [store, hospitalId]);\r\n\r\n useEffect(() => {\r\n if (store.hospital)\r\n breadcrumb.setBreadCrumb(store.hospital.name);\r\n }, [breadcrumb, store.hospital])\r\n\r\n if (outlet !== null)\r\n return outlet;\r\n\r\n return (\r\n \r\n \r\n \r\n {store.hospitalLoading &&\r\n \r\n \r\n \r\n }\r\n {(!store.hospitalLoading && store.hospital !== undefined) &&\r\n store.updateHospital(h)}\r\n hospitalHoursGroup={store.hospitalHoursGroup}\r\n clearHospitalHoursConfirmation={store.clearHospitalHoursConfirmation}\r\n setHospitalHoursChangesConfirmed={store.setHospitalHoursChangesConfirmed}\r\n refreshIvlsDevices={id => store.refreshHospitalIvlsDevices(id)}\r\n ivlsDevices={store.ivlsDevices}\r\n />\r\n }\r\n \r\n \r\n );\r\n});\r\n","import { StoreListingModel } from '@common/models';\r\nimport classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Table } from 'react-bootstrap';\r\n\r\nexport const LocationsTableHeader = () => (\r\n \r\n Store Code\r\n Location Name\r\n Department\r\n Address\r\n Action\r\n );\r\n\r\ninterface ILocationsTableProps {\r\n locations: StoreListingModel[]\r\n onHospitalEdit: (loc: StoreListingModel) => void\r\n onStoreConvert: (loc: StoreListingModel) => void\r\n}\r\n\r\nexport const LocationsTable = observer((props: ILocationsTableProps) =>\r\n \r\n \r\n \r\n \r\n \r\n {props.locations.map((loc) =>\r\n loc.hasHospital\r\n ? props.onHospitalEdit(loc)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
{loc.code}{loc.hospitalName}{loc.marketName}{loc.address}{loc.address2 ? ` ${loc.address2}` : ''}, {loc.city}, {loc.stateAbbreviation} {loc.zipCode}\r\n
{loc.code}{`${loc.code?.replace(/\\D/g, '')} - ${loc.city}, ${loc.stateAbbreviation}`}{loc.marketName}{loc.address}{loc.address2 ? ` ${loc.address2}` : ''}, {loc.city}, {loc.stateAbbreviation} {loc.zipCode}\r\n props.onStoreConvert(loc)}\r\n className={classNames(\"btn btn-primary border-primary\")}>\r\n Convert\r\n \r\n
\r\n)\r\n","//const locationStore = new LocationStore({ configuration: configuration, tryUpdateCurrentHospital: hospitalAppStore.tryUpdateCurrentHospital });\r\n\r\nimport { useApp } from \"@common/hooks/useApp\";\r\nimport { LocationStoreContextWrapper } from \"@hospital/contexts\";\r\nimport { useHospitalApp } from \"@hospital/hooks\";\r\nimport { LocationStore } from \"@hospital/views/admin/locations\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\n\r\n/**\r\n * Create an useHospitalApp while optionally setting it in the useHospitalApp Context Wrapper. You might want to set it in context so child components can access the same instance of the useHospitalApp\r\n * @param options\r\n * @returns\r\n */\r\nexport const useCreateLocationStore = (options?: { shouldSetContext?: boolean }) => {\r\n const [shouldSetContext, setShouldSetContext] = useState(Boolean(options?.shouldSetContext));\r\n\r\n const { configuration } = useApp();\r\n const hospitalAppStore = useHospitalApp();\r\n const queryClient = useQueryClient();\r\n\r\n useEffect(() => {\r\n if (options)\r\n setShouldSetContext(Boolean(options.shouldSetContext));\r\n }, [options])\r\n\r\n const [locationStore] = useMemo(() => {\r\n const store = new LocationStore({ configuration, tryUpdateCurrentHospital: hospitalAppStore.tryUpdateCurrentHospital, queryClient, queryStaleTime: configuration.shortClientSideCacheTimeToLive });\r\n if (shouldSetContext)\r\n LocationStoreContextWrapper.set(store);\r\n return [store];\r\n }, [configuration, hospitalAppStore, shouldSetContext, queryClient]);\r\n return locationStore;\r\n}\r\n","import { IDisposable } from \"@common/types\";\r\nimport { HospitalHubStore } from \"./HospitalHub\";\r\nimport { IReactionDisposer, action, computed, makeObservable, observable, when } from \"mobx\";\r\nimport { ExamStore } from \"@hospital/views/exam\";\r\nimport { HubGroupType } from \"@common/stores/hubs/BaseHub\";\r\n\r\nexport class ExamMessageHub implements IDisposable {\r\n messageHub: HospitalHubStore;\r\n examStore: ExamStore;\r\n reactionDisposers: IReactionDisposer[] | undefined = undefined;\r\n @observable private _previousVisitId: number | undefined = undefined;\r\n @observable private _visitRefreshTick: number = 0;\r\n\r\n\r\n constructor(examStore: ExamStore) {\r\n this.messageHub = HospitalHubStore.currentInstance;\r\n this.examStore = examStore;\r\n makeObservable(this, undefined, { autoBind: true });\r\n this.subscribeToHubEvents();\r\n this.reactionDisposers = this.initReactions();\r\n\r\n }\r\n\r\n @computed get currentVisitId() {\r\n return this.examStore.visit?.visitId;\r\n }\r\n\r\n @computed get visitRefreshTick() {\r\n return this._visitRefreshTick;\r\n }\r\n\r\n private subscribeToHubEvents(unsubscribe: boolean = false) {\r\n const method = !unsubscribe ? this.messageHub.registerMethod : this.messageHub.unregisterMethod;\r\n method.call(this, { eventName: \"onVisitUpdated\", callback: this.onVisitUpdated });\r\n }\r\n\r\n private initReactions(): IReactionDisposer[] {\r\n return [\r\n when(() => this.currentVisitId !== this._previousVisitId, async () => {\r\n if (this._previousVisitId)\r\n await this.messageHub.leaveVisitGroup(this._previousVisitId, HubGroupType.VisitExamOpen);\r\n if (this.currentVisitId) {\r\n await this.messageHub.joinVisitGroup(this.currentVisitId, HubGroupType.VisitExamOpen);\r\n this._previousVisitId = this.currentVisitId;\r\n } else\r\n this._previousVisitId = undefined;\r\n })\r\n ];\r\n }\r\n\r\n dispose() {\r\n if (this.currentVisitId)\r\n this.messageHub.leaveVisitGroup(this.currentVisitId, HubGroupType.VisitExamOpen); //<- notify other connections that this connection left the visit. \r\n this.subscribeToHubEvents(true);\r\n this.reactionDisposers?.forEach(value => value());\r\n }\r\n\r\n\r\n //#region Events\r\n @action.bound private onVisitUpdated(connectionId: string, visitId: number) {\r\n if (visitId === this.currentVisitId)\r\n this._visitRefreshTick = this._visitRefreshTick + 1;\r\n }\r\n //#endregion\r\n}\r\n","import { DiagnosisModel, EstimateModel, EstimateSalesItemModel, HospitalScheduleVetTechModel, HospitalScheduleVeterinarianModel, IBlobSasModel, IConsentForm, IExamCategoryModel, IPhotoRequest, IVisitAnesthesiaFormPostSurgeryModel, IVisitAnesthesiaFormPreOpModel, IVisitAnesthesiaFormSurgeryModel, IWellnessExamCategory, IWellnessExamForm, IWellnessExamSalesItem, LabOrderModel, PhotoModel, VeterinarianModel, VisitAnesthesiaFormModel, VisitAnesthesiaFormPostSurgeryVitalModel, VisitAnesthesiaFormSurgeryVitalModel, VisitModel, VisitNoteModel, VisitSalesItemModel, VisitSectionVersionModel, VisitUpdateRequest, WellnessExamForm, schedule } from \"@common/models\";\r\nimport { AnesthesiaSectionTypes, BlobEntityType, BusinessLineEnum, ConsentType, ExamLockedStatus, HospitalScheduleDateRangeType, IdexxLabOrderStatus, MimeType, ReservationAssignmentStatuses, VisitCompletionType, VisitSectionTypes, VisitStatus } from \"@common/models/Enums\";\r\nimport { HospitalPrescriptionModel } from \"@common/models/HospitalPrescriptionModel\";\r\nimport { HospitalService, LabOrderService, PetService, SalesItemService, SalesPackageService, SalesPlanService, VeterinarianService, VisitAnesthesiaFormService, VisitService } from \"@common/services\";\r\nimport { AzureBlobStore, NotificationStoreInstance, PetDetailsStore } from \"@common/stores\";\r\nimport { ObjectUtility, http } from \"@common/utils\";\r\nimport { ExamMessageHub } from \"@hospital/stores/Hubs/ExamMessageHub\";\r\nimport { SalesBuilderSearchStore } from \"@hospital/stores/SalesBuilderSearchStore\";\r\nimport { SalesStore } from \"@hospital/stores/SalesStore\";\r\nimport { defaultTo, find, get, isEmpty, isUndefined, orderBy } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { action, computed, flow, makeObservable, observable, runInAction } from \"mobx\";\r\nimport { v4 as uuid } from \"uuid\";\r\nexport interface SectionUpdateResult {\r\n\tsection: VisitSectionTypes;\r\n\tsuccess: boolean;\r\n}\r\nexport interface AnesthesiaSectionUpdateResult {\r\n\tsection: AnesthesiaSectionTypes;\r\n\tsuccess: boolean;\r\n}\r\n\r\nexport class ExamStore extends SalesStore {\r\n\tpetDetailsStore: PetDetailsStore;\r\n\tmessageHub: ExamMessageHub;\r\n\t@observable scheduledVets: HospitalScheduleVeterinarianModel[] = [];\r\n\t@observable vetTechs: HospitalScheduleVetTechModel[] = [];\r\n\t@observable vetAssignedToVisit: VeterinarianModel | undefined = undefined;\r\n\t@observable visit: VisitModel | undefined = undefined;\r\n\t@observable addEstimateToVisitErrors: EstimateSalesItemModel[] = [];\r\n\t@observable estimateBuilderSearch: SalesBuilderSearchStore = new SalesBuilderSearchStore(this);\r\n\t@observable sectionUpdateResult: SectionUpdateResult = { section: VisitSectionTypes.None, success: false };\r\n\t@observable anesthesiaSectionUpdateResult: AnesthesiaSectionUpdateResult = { section: AnesthesiaSectionTypes.None, success: false };\r\n\t@observable visitSectionVersions: VisitSectionVersionModel[] = [];\r\n\t@observable visitLabOrders: LabOrderModel[] = [];\r\n\t@observable visitAnesthesiaForms: VisitAnesthesiaFormModel[] = [];\r\n\t@observable anesthesiaMedicationSalesItems: IWellnessExamSalesItem[] = [];\r\n\t@observable currentLabOrderId: number = 0;\r\n\t@observable selectedIvlsDeviceId: string | null = null;\r\n\r\n\tconstructor(petDetailsStore: PetDetailsStore) {\r\n\t\tsuper();\r\n\r\n\t\tthis.petDetailsStore = petDetailsStore;\r\n\t\tthis.messageHub = new ExamMessageHub(this);\r\n\r\n\t\tmakeObservable(this, undefined);\r\n\t}\r\n\r\n\tdispose = () => this.messageHub.dispose();\r\n\r\n\t@computed get examCategories(): IExamCategoryModel[] {\r\n\t\treturn orderBy(\r\n\t\t\tthis.visit?.examResults.map(er => er.examCategory),\r\n\t\t\t\"sortOrder\"\r\n\t\t);\r\n\t}\r\n\r\n\t/** NOTE: these form data will eventually be populated from Visit/VisitWellnessExam/ExamResult data */\r\n\t@computed get formData(): WellnessExamForm | undefined {\r\n\t\treturn this.visit ? new WellnessExamForm(this.visit) : undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if the Exam is a Vet Tech Exam by checking the Reservation Assignment Status for Assigned_Technician\r\n\t */\r\n\t@computed get isVetTechExam(): boolean {\r\n\t\treturn ReservationAssignmentStatuses.Assigned_Technician === this.visit?.reservation?.reservationAssignmentStatusId;\r\n\t}\r\n\r\n\t@computed get visitLockStatus(): ExamLockedStatus {\r\n\t\tif (this.visitIsAborted || this.hoursSinceFinalized > 48) {\r\n\t\t\treturn ExamLockedStatus.ExamLevelOnly;\r\n\t\t} else if (this.hoursSinceFinalized > 24 || this.visitIsFinalizedComplete) {\r\n\t\t\treturn ExamLockedStatus.ExamNotesAreAllowed;\r\n\t\t} else {\r\n\t\t\treturn ExamLockedStatus.NoLock;\r\n\t\t}\r\n\t}\r\n\r\n\t@computed get visitIsSigned(): boolean {\r\n\t\treturn this.visit?.veterinarianSignaturePhotoId !== undefined;\r\n\t}\r\n\r\n\t@computed get canFinalizeVisit(): boolean {\r\n\t\treturn this.vetAssignedToVisit?.activeSignature?.signature !== undefined || this.formData!.signature.vetClinicSignature !== undefined;\r\n\t}\r\n\r\n\t@computed get canAbortVisit(): boolean {\r\n\t\treturn [VisitStatus.In_Progress, VisitStatus.Admitted].includes(this.visit?.visitStatusId!);\r\n\t}\r\n\r\n\t@computed get visitIsAborted(): boolean {\r\n\t\treturn [VisitStatus.Check_Out].includes(this.visit?.visitStatusId ?? 0) && VisitCompletionType.visitIsAborted(this.visit?.visitCompletionTypeId);\r\n\t}\r\n\r\n\t@computed get visitIsFinalized(): boolean {\r\n\t\treturn [VisitStatus.Finalized, VisitStatus.Paid, VisitStatus.Check_Out].includes(this.visit?.visitStatusId ?? 0);\r\n\t}\r\n\r\n\t@computed get visitIsFinalizedComplete(): boolean {\r\n\t\treturn this.visitIsFinalized && this.visit?.visitEvent.finalizedStart !== undefined && this.visit?.visitEvent.finalizedComplete !== undefined && this.visit?.visitEvent.finalizedComplete > this.visit?.visitEvent.finalizedStart!;\r\n\t}\r\n\r\n\t@computed get hoursSinceFinalized(): number {\r\n\t\treturn this.visitIsFinalized ? DateTime.utc().diff(this.visit!.visitEvent.finalizedStart!).as(\"hours\") : 0;\r\n\t}\r\n\r\n\t@computed get visitSuspenseTag(): string {\r\n\t\treturn this.visitLockStatus == ExamLockedStatus.NoLock ? VisitService.tags.updateVisit : VisitService.tags.saveVisitFollowupNotes;\r\n\t}\r\n\r\n\t@computed get currentLabOrder(): LabOrderModel | undefined {\r\n\t\t// This will be used to get the first lab order that is either created or submitted\r\n\t\treturn this.visitLabOrders.find(l => l.orderStatus !== IdexxLabOrderStatus.CANCELLED) ?? undefined;\r\n\t}\r\n\r\n\t@action.bound clearAddEstimateToVisitErrors() {\r\n\t\tthis.addEstimateToVisitErrors = [];\r\n\t}\r\n\r\n\t@action.bound setSelectedIvlsDeviceId(device: string | null) {\r\n\t\tthis.selectedIvlsDeviceId = device;\r\n\t}\r\n\r\n\tpublic loadScheduledVets = flow(function* (this: ExamStore, hospitalId: number) {\r\n\t\tif (this.visit === undefined) return;\r\n\t\tconst date = this.visit.visitDate!;\r\n\t\tvar schedule: schedule.ProcessedHospitalScheduleModel = yield HospitalService.getHospitalSchedules(hospitalId, date, HospitalScheduleDateRangeType.Day);\r\n\t\tthis.scheduledVets = schedule.getVeterinarians(hospitalId, { day: date, isScheduled: true, hasLicense: true, hasAccess: true });\r\n\t\tthis.vetTechs = schedule.vetTechs;\r\n\t\t// Scheduled vets do not have their active signature included - if we include that later on this extra fetch can be removed\r\n\t\tif (this.visit !== undefined) {\r\n\t\t\tthis.updateScheduledVet(this.visit?.veterinarianId);\r\n\t\t}\r\n\t});\r\n\r\n\tpublic updateScheduledVet = flow(function* (this: ExamStore, veterinarianId?: number) {\r\n\t\tvar assignedVet = this.scheduledVets.find((vet: HospitalScheduleVeterinarianModel) => {\r\n\t\t\treturn vet.veterinarianId == veterinarianId;\r\n\t\t});\r\n\t\tif (assignedVet !== undefined) {\r\n\t\t\tthis.vetAssignedToVisit = yield VeterinarianService.getVeterinarianByVetId(assignedVet.veterinarianId).catch(NotificationStoreInstance.onError(\"Failed to fetch vet record.\", undefined));\r\n\t\t}\r\n\t});\r\n\r\n\tpublic getVisit = flow(function* (this: ExamStore, visitId: number) {\r\n\t\tthis.visit = yield VisitService.getVisit(visitId)\r\n\t\t\t.then(this.syncVisitSectionVersions)\r\n\t\t\t.then((visit: VisitModel) => {\r\n\t\t\t\treturn runInAction(() => {\r\n\t\t\t\t\tthis.visitLabOrders = visit.labOrders;\r\n\t\t\t\t\treturn visit;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t});\r\n\r\n\t@action.bound syncVisitSectionVersions = (visit: VisitModel): VisitModel => {\r\n\t\tthis.visitSectionVersions = visit.visitSectionVersions;\r\n\t\treturn visit;\r\n\t};\r\n\r\n\t@action.bound sectionUpdateSucceeded = (section: VisitSectionTypes, successMessage?: string) => {\r\n\t\treturn action((value: T) => {\r\n\t\t\t//you need to wrap callbacks in actions or the callback won't be in the action context anymroe.\r\n\t\t\tthis.sectionUpdateResult = { section, success: true };\r\n\t\t\tif (successMessage) NotificationStoreInstance.success(successMessage);\r\n\t\t\treturn value;\r\n\t\t});\r\n\t};\r\n\r\n\t@action.bound sectionUpdateFailed = (section: VisitSectionTypes, errorMessage: string, defaultValue: T) => {\r\n\t\tthis.sectionUpdateResult = { section, success: false };\r\n\t\treturn NotificationStoreInstance.onError(errorMessage, defaultValue);\r\n\t};\r\n\r\n\t@action.bound anesthesiaSectionUpdateSucceeded = (section: AnesthesiaSectionTypes, successMessage?: string) => {\r\n\t\treturn action((value: T) => {\r\n\t\t\t//you need to wrap callbacks in actions or the callback won't be in the action context anymroe.\r\n\t\t\tthis.anesthesiaSectionUpdateResult = { section, success: true };\r\n\t\t\tif (successMessage) NotificationStoreInstance.success(successMessage);\r\n\t\t\treturn value;\r\n\t\t});\r\n\t};\r\n\r\n\t@action.bound anesthesiaSectionUpdateFailed = (section: AnesthesiaSectionTypes, errorMessage: string, defaultValue: T) => {\r\n\t\tthis.anesthesiaSectionUpdateResult = { section, success: false };\r\n\t\treturn NotificationStoreInstance.onError(errorMessage, defaultValue);\r\n\t};\r\n\r\n\tpublic getSalesItemsForVisit = flow(function* (this: ExamStore) {\r\n\t\tconst visit = this.visit;\r\n\t\tconst unfilteredSalesItems =\r\n\t\t\tvisit == undefined\r\n\t\t\t\t? []\r\n\t\t\t\t: yield SalesItemService.fetchSalesItems(visit.clinicId, visit.visitDate!)\r\n\t\t\t\t\t.then(items => items.salesItems.filter(i => i.speciesId == null || i.speciesId == visit.pet.speciesId))\r\n\t\t\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to fetch visit sales items\", this.salesItems));\r\n\t\tif (_.isArray(unfilteredSalesItems)) {\r\n\t\t\tconst userAddedSalesItems = this.filterToSalesItemsThatCanBeAddedByUsers(unfilteredSalesItems);\r\n\t\t\tthis.salesItems = this.mapSalesItemsForVisitBuilder(userAddedSalesItems);\r\n\r\n\t\t\tconst anesthesiaMedicationSalesItems = this.filterToSalesItemsThatIsAnesethieaMedication(unfilteredSalesItems);\r\n\t\t\tthis.anesthesiaMedicationSalesItems = this.mapSalesItemsForVisitBuilder(anesthesiaMedicationSalesItems);\r\n\t\t}\r\n\r\n\t\t// Sales plans are not clinic-date aware like sales items and packages. We must fetch plans\r\n\t\t// after getting sales items and filter out any plan items that aren't available in this clinic-date.\r\n\t\tthis.salesPlans =\r\n\t\t\tvisit == undefined\r\n\t\t\t\t? []\r\n\t\t\t\t: yield SalesPlanService.getAllSalesPlans()\r\n\t\t\t\t\t// only global/hospital plans\r\n\t\t\t\t\t.then(items => items.filter(i => i.businessLineId === BusinessLineEnum.Global || i.businessLineId == BusinessLineEnum.Hospital))\r\n\t\t\t\t\t// only plans for this species\r\n\t\t\t\t\t.then(items => items.filter(i => i.speciesId == null || i.speciesId == visit.pet.speciesId))\r\n\t\t\t\t\t// only plans contents with corresponding sales items for this clinic-day.\r\n\t\t\t\t\t.then(item =>\r\n\t\t\t\t\t\titem.map(i => {\r\n\t\t\t\t\t\t\treturn { ...i, contents: i.contents.filter(c => this.salesItems.some(si => si.salesItemOptionId === c.salesItemOptionId)) };\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to fetch sales plans\", this.salesPlans));\r\n\t});\r\n\r\n\tpublic getSalesPackagesForVisit = flow(function* (this: ExamStore) {\r\n\t\tconst visit = this.visit;\r\n\t\tthis.salesPackages =\r\n\t\t\tvisit == undefined\r\n\t\t\t\t? []\r\n\t\t\t\t: yield SalesPackageService.getClinicSalesPackages(visit.clinicId, visit.visitDate!)\r\n\t\t\t\t\t.then(items => items.filter(i => i.speciesId == null || i.speciesId == visit.pet.speciesId))\r\n\t\t\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to fetch visit sales items\", this.salesPackages));\r\n\t});\r\n\r\n\tpublic updateAssignmentSection = flow(function* (this: ExamStore, formData: WellnessExamForm, sectionType: VisitSectionTypes, sectionVersion: string) {\r\n\t\tif (!_.isUndefined(this.visit)) {\r\n\t\t\tconst updateRequest = ExamStore.ParseVisitUpdateRequest(this.visit, formData, sectionType, sectionVersion);\r\n\t\t\tthis.visit = yield VisitService.updateVisit(updateRequest)\t\t\t\t\r\n\t\t\t\t.then(visit => {\r\n\t\t\t\t\trunInAction(() => {\r\n\t\t\t\t\t\tvar currentPet = this.petDetailsStore.pet;\r\n\t\t\t\t\t\tcurrentPet.weight = visit.pet.weight;\r\n\t\t\t\t\t\tthis.petDetailsStore.setPet({ ...currentPet });\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn visit;\r\n\t\t\t\t})\r\n\t\t\t\t.then((visit) => // optionally update visit vet\r\n\t\t\t\t\tsectionType === VisitSectionTypes.Assignment && visit.veterinarianId != formData.assignment.vetId\r\n\t\t\t\t\t\t? VisitService.updateVisitVet(visit.visitId, formData.assignment.vetId, this.visit!.visitStatusId).then(result => {\r\n\t\t\t\t\t\t\tthis.updateScheduledVet(formData.assignment.vetId);\r\n\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t: visit\r\n\t\t\t\t)\r\n\t\t\t\t.then(this.sectionUpdateSucceeded(sectionType, `${VisitSectionTypes[sectionType]} updated.`))\r\n\t\t\t\t.then(this.syncVisitSectionVersions)\r\n\t\t\t\t.catch(this.sectionUpdateFailed(sectionType, `Failed to update ${VisitSectionTypes[sectionType]}`, this.visit));\r\n\t\t}\r\n\t\treturn this.sectionUpdateResult;\r\n\t});\r\n\r\n\tpublic updateVisitSection = flow(function* (this: ExamStore, formData: WellnessExamForm, sectionType: VisitSectionTypes, sectionVersion: string) {\r\n\t\tif (this.visitLockStatus !== ExamLockedStatus.NoLock) {\r\n\t\t\t// get all notes that have been modified.\r\n\t\t\t// now that we save on a per-section basis, we don't expect that there will ever be more than one at at time.\r\n\t\t\tfor (var followupNote of ExamStore.parseFollowupVisitNotes(formData) ?? []) {\r\n\t\t\t\tthis.visit = yield VisitService.saveFollowupVisitNote(followupNote)\r\n\t\t\t\t\t.then(this.sectionUpdateSucceeded(sectionType, `${VisitSectionTypes[sectionType]} updated.`))\r\n\t\t\t\t\t.then(this.syncVisitSectionVersions)\r\n\t\t\t\t\t.catch(this.sectionUpdateFailed(sectionType, `Failed to add ${VisitSectionTypes[sectionType]} followup note`, this.visit));\r\n\t\t\t}\r\n\r\n\t\t} else if (!_.isUndefined(this.visit)) {\t\t\t\r\n\t\t\t\tconst updateRequest = ExamStore.ParseVisitUpdateRequest(this.visit, formData, sectionType, sectionVersion);\r\n\t\t\t\tthis.visit = yield VisitService.updateVisit(updateRequest)\r\n\t\t\t\t\t.then(this.sectionUpdateSucceeded(sectionType, `${VisitSectionTypes[sectionType]} updated.`))\r\n\t\t\t\t\t.then(visit => {\r\n\t\t\t\t\t\tvar currentPet = this.petDetailsStore.pet;\r\n\t\t\t\t\t\tcurrentPet.weight = visit.pet.weight;\r\n\t\t\t\t\t\tthis.petDetailsStore.setPet({ ...currentPet });\r\n\t\t\t\t\t\treturn visit;\r\n\t\t\t\t\t})\t\t\t\t\t\r\n\t\t\t\t\t.then(this.syncVisitSectionVersions)\r\n\t\t\t\t\t.catch(this.sectionUpdateFailed(sectionType, `Failed to update ${VisitSectionTypes[sectionType]}`, this.visit));\r\n\t\t\t\r\n\t\t}\r\n\t\treturn this.sectionUpdateResult;\r\n\t});\r\n\r\n\tpublic addAttachments(this: ExamStore, fileList: FileList | null, setCurrentProgress: (max: number, now: number, errors: number) => void, setShowAddAttachmentModal: (x: boolean) => void) {\r\n\t\tif (!fileList?.length) {\r\n\t\t\tsetShowAddAttachmentModal(false);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\r\n\t\tconst uploads = [...fileList];\r\n\t\tlet max = uploads.length;\r\n\t\tlet now = 0;\r\n\t\tlet errors = 0;\r\n\r\n\t\tconst update = async () => {\r\n\t\t\tif (now === max) {\r\n\t\t\t\tsetCurrentProgress(-1, -1, -1);\r\n\t\t\t} else {\r\n\t\t\t\tsetCurrentProgress(max, now, errors);\r\n\t\t\t}\r\n\t\t\tif (now > 0) setShowAddAttachmentModal(false);\r\n\t\t\tthis.sectionUpdateSucceeded(VisitSectionTypes.AttachmentsandConsents);\r\n\t\t\tawait this.getVisit(visitId);\r\n\t\t};\r\n\t\tupdate();\r\n\r\n\t\tconst blobStore = new AzureBlobStore({ containerName: BlobEntityType.Attachment });\r\n\t\tfor (let i = 0; i < uploads.length; i++) {\r\n\t\t\tblobStore\r\n\t\t\t\t.uploadFile(uploads[i])\r\n\t\t\t\t.then(r => {\r\n\t\t\t\t\treturn http(`/api/visit/attachment/${visitId}`).post(r);\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tnow++;\r\n\t\t\t\t\tupdate();\r\n\t\t\t\t})\r\n\t\t\t\t.catch(() => {\r\n\t\t\t\t\tmax -= 1;\r\n\t\t\t\t\terrors += 1;\r\n\t\t\t\t\tupdate();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic saveSignatureToVisit = flow(function* (this: ExamStore, formData: WellnessExamForm, image: string, applySignatureToClinic: boolean, signatureSectionVersion: string) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tif (applySignatureToClinic && !isUndefined(this.visit.veterinarianId)) {\r\n\t\t\tthis.uploadPhoto(image, `signaturePhoto-toClinic-${uuid()}.png`).then((photo: IPhotoRequest) => {\r\n\t\t\t\tVeterinarianService.addVeterinarianClinicSignature(this.visit!.veterinarianId!, this.visit!.clinicId, photo);\r\n\t\t\t});\r\n\t\t}\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tyield VisitService.saveVisitSignature(visitId, image).then((photoModel: PhotoModel) => {\r\n\t\t\tformData.signature.signatureAppliedToVisit = photoModel;\r\n\t\t\tthis.updateVisitSection(formData, VisitSectionTypes.Signature, signatureSectionVersion);\r\n\t\t});\r\n\t});\r\n\r\n\tsaveStoredSignatureToVisitBeforeFinalize = flow(function* (this: ExamStore) {\r\n\t\tlet success = false;\r\n\t\tif (isUndefined(this.visit) || (!this.formData!.signature.vetClinicSignature && !this.vetAssignedToVisit?.activeSignature?.signature)) return false;\r\n\r\n\t\tconst signature = { ...this.formData!.signature, signatureAppliedToVisit: this.formData!.signature.vetClinicSignature || this.vetAssignedToVisit?.activeSignature?.signature };\r\n\r\n\t\tyield this.updateVisitSection({ ...this.formData!, signature }, VisitSectionTypes.Signature, this.formData!.signature.sectionRowVersion).then((sectionUpdateResult: SectionUpdateResult) => {\r\n\t\t\tsuccess = sectionUpdateResult.success;\r\n\t\t});\r\n\r\n\t\treturn success;\r\n\t});\r\n\r\n\tpublic removeVeterinarianClinicSignature = flow(function* (this: ExamStore) {\r\n\t\tif (isUndefined(this.visit) || isUndefined(this.visit.veterinarianId)) return;\r\n\t\tyield VeterinarianService.deleteVeterinarianClinicSignature(this.visit.veterinarianId, this.visit.clinicId);\r\n\t});\r\n\r\n\tpublic removeVisitAttachment = flow(function* (this: ExamStore, visitAttachmentId: number | undefined) {\r\n\t\tif (isUndefined(this.visit) || isUndefined(visitAttachmentId)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tvar success: boolean = yield VisitService.deleteVisitAttachment(visitId, visitAttachmentId)\r\n\t\t\t.then(() => true)\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to remove visit attachment\", false));\r\n\t\tif (success) yield this.getVisit(visitId);\r\n\t});\r\n\r\n\tpublic uploadPhoto = flow(function* (this: ExamStore, image: string, filename: string) {\r\n\t\tconst blobStore = new AzureBlobStore({ containerName: BlobEntityType.Signatures });\r\n\t\tconst blobSas: IBlobSasModel = yield blobStore.uploadDataUrl(image, filename, MimeType.PNG);\r\n\t\tconst photoRequest: IPhotoRequest = {\r\n\t\t\tcontainer: blobSas.container,\r\n\t\t\tfileName: blobSas.fileName,\r\n\t\t\tphotoUrl: blobSas.sasUrl,\r\n\t\t};\r\n\r\n\t\treturn photoRequest;\r\n\t});\r\n\r\n\tpublic updateExamResult = flow(function* (this: ExamStore, category: IWellnessExamCategory) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tthis.visit = yield VisitService.updateVisitExamResult(visitId, category).then(this.sectionUpdateSucceeded(VisitSectionTypes.ObjectiveWithoutNotes)).then(this.syncVisitSectionVersions);\r\n\t});\r\n\r\n\tpublic setAllExamResultsToNormal = flow(function* (this: ExamStore) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tthis.visit = yield VisitService.setAllResultsToNormal(visitId).then(this.sectionUpdateSucceeded(VisitSectionTypes.ObjectiveWithoutNotes)).then(this.syncVisitSectionVersions);\r\n\t});\r\n\r\n\tpublic addSalesItemToVisit = flow(function* (this: ExamStore, salesItemOptionId: number) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tconst salesItemOptionIdBeingReplaced = this.findSalesItemOptionToReplace(salesItemOptionId);\r\n\t\tthis.visit = yield VisitService.addSalesItem(visitId, salesItemOptionId, salesItemOptionIdBeingReplaced).then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder)).then(this.syncVisitSectionVersions).catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to add sales item\", this.visit));\r\n\t});\r\n\r\n\tpublic deleteSalesItemFromVisit = flow(function* (this: ExamStore, salesItemId: number) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tyield VisitService.deleteSalesItem(visitId, salesItemId)\r\n\t\t\t.then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder))\r\n\t\t\t.then(() => this.getVisit(visitId))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to remove sales item\", this.visit));\r\n\t});\r\n\r\n\tpublic addSalesPackageToVisit = flow(function* (this: ExamStore, salesPackageId: number) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tthis.visit = yield VisitService.setSalesPackage(visitId, salesPackageId).then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder)).then(this.syncVisitSectionVersions).catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to set sales package\", this.visit));\r\n\t});\r\n\r\n\tpublic removeSalesPackageFromVisit = flow(function* (this: ExamStore) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tthis.visit = yield VisitService.setSalesPackage(visitId, undefined).then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder)).then(this.syncVisitSectionVersions).catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to remove sales package\", this.visit));\r\n\t});\r\n\r\n\tpublic addSalesPlanToVisit = flow(function* (this: ExamStore, salesPlanId: number) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tthis.visit = yield VisitService.addSalesPlan(visitId, salesPlanId).then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder)).then(this.syncVisitSectionVersions).catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to set sales package\", this.visit));\r\n\t});\r\n\r\n\tpublic setSalesItemAsGiven = flow(function* (this: ExamStore, visitSalesItem: VisitSalesItemModel) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tyield VisitService.updateVisitSalesItemAttributes(visitSalesItem, this.visitIsFinalized)\r\n\t\t\t.then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder))\r\n\t\t\t.then(() => this.getVisit(visitId))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to set sales item as given\", this.visit));\r\n\t});\r\n\r\n\tpublic setSalesItemAsDeclined = flow(function* (this: ExamStore, visitSalesItem: VisitSalesItemModel) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tyield VisitService.setVisitSalesItemAsDeclined(visitId, visitSalesItem.visitSalesItemId)\r\n\t\t\t.then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder))\r\n\t\t\t.then(() => this.getVisit(visitId))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to set sales item as declined\", this.visit));\r\n\t});\r\n\r\n\tpublic setSalesItemAsNotGiven = flow(function* (this: ExamStore, visitSalesItem: VisitSalesItemModel) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tyield VisitService.setVisitSalesItemAsNotGiven(visitId, visitSalesItem.visitSalesItemId)\r\n\t\t\t.then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder))\r\n\t\t\t.then(() => this.getVisit(visitId))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to set sales item as declined\", this.visit));\r\n\t});\r\n\r\n\tpublic setSalesItemAsPending = flow(function* (this: ExamStore, visitSalesItem: VisitSalesItemModel) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tyield VisitService.setVisitSalesItemAsPending(visitId, visitSalesItem.visitSalesItemId)\r\n\t\t\t.then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder))\r\n\t\t\t.then(() => this.getVisit(visitId))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to set sales item as pending\", this.visit));\r\n\t});\r\n\r\n\tpublic setSalesItemQuantity = flow(function* (this: ExamStore, visitSalesItem: VisitSalesItemModel) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tyield VisitService.setVisitSalesItemQuantity(visitSalesItem)\r\n\t\t\t.then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder))\r\n\t\t\t.then(() => this.getVisit(visitId))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to set sales item as declined\", this.visit));\r\n\t});\r\n\r\n\tpublic addVisitDiagnosis = flow(function* (this: ExamStore, diagnosis: DiagnosisModel) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tthis.visit = yield VisitService.addVisitDiagnosis(visitId, diagnosis.diagnosisId).then(this.syncVisitSectionVersions).then(this.sectionUpdateSucceeded(VisitSectionTypes.Assessment)).catch(this.sectionUpdateFailed(VisitSectionTypes.Assessment, \"Failed to add diagnosis\", this.visit));\r\n\t});\r\n\r\n\tpublic deleteVisitDiagnosis = flow(function* (this: ExamStore, diagnosis: DiagnosisModel) {\r\n\t\tif (isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tthis.visit = yield VisitService.deleteVisitDiagnosis(visitId, diagnosis.diagnosisId).then(this.syncVisitSectionVersions).then(this.sectionUpdateSucceeded(VisitSectionTypes.Assessment)).catch(this.sectionUpdateFailed(VisitSectionTypes.Assessment, \"Failed to remove diagnosis\", this.visit));\r\n\t});\r\n\r\n\tpublic sendTreatmentPlanSms = flow(function* (this: ExamStore, mobileNumber: string) {\r\n\t\tif (this.visit === undefined || this.visit.visitPublicId === undefined) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tyield VisitService.sendConsentSms(visitId, ConsentType.TreatmentPlanConsent, mobileNumber).then(NotificationStoreInstance.onSuccess(\"Treatment Consent SMS sent\")).catch(NotificationStoreInstance.onError(\"Failed to send Treatment Consent SMS\", {}));\r\n\t});\r\n\r\n\tpublic signConsent = flow(function* (this: ExamStore, formData: IConsentForm, signaturePhotoDataUrl: string, consentTypePublicId: string) {\r\n\t\tif (this.visit === undefined || this.visit.visitPublicId === undefined || signaturePhotoDataUrl === undefined) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tconst visitPublicId = this.visit.visitPublicId;\r\n\t\tconst signatureBase64Encoded = signaturePhotoDataUrl.split(\",\")[1];\r\n\r\n\t\tyield VisitService.signAndStoreConsent(signatureBase64Encoded, visitPublicId, consentTypePublicId, false, formData)\r\n\t\t\t.then(() => this.getVisit(visitId))\r\n\t\t\t.then(this.sectionUpdateSucceeded(VisitSectionTypes.AttachmentsandConsents, \"Signed Consent document is now available\"))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to save Consent signature\", this.visit));\r\n\t});\r\n\r\n\tpublic addEstimateToVisit = flow(function* (this: ExamStore, estimate: EstimateModel) {\r\n\t\tif (this.visit === undefined) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\r\n\t\t// Attempt to add all estimate items to the visit.\r\n\t\t// Capture any sales items that couldn't be added. These will be listed in a modal.\r\n\t\t// If there are no errors, show a success toast.\r\n\t\tthis.addEstimateToVisitErrors = yield PetService.addEstimateToVisit(estimate, visitId)\r\n\t\t\t.then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder, `Added ${estimate.name} to visit`))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to add estimate to visit\", []));\r\n\r\n\t\t// Refetch the visit to get the latest sales items and pricing.\r\n\t\tyield this.getVisit(visitId).catch(() => NotificationStoreInstance.error(\"Failed to fetch latest visit information.\"));\r\n\t});\r\n\r\n\tpublic updateVisitSectionVersions = flow(function* (this: ExamStore) {\r\n\t\tif (this.visit === undefined) return;\r\n\t\tconst latestSectionVersion: VisitSectionVersionModel[] = yield VisitService.getVisitSectionVersions(this.visit.visitId).catch(NotificationStoreInstance.onError(\"Failed to fetch latest visit section update times.\", this.visitSectionVersions));\r\n\r\n\t\tif (\r\n\t\t\t!ObjectUtility.sequenceEquals(\r\n\t\t\t\tthis.visitSectionVersions.map(vsv => vsv.rowVersion),\r\n\t\t\t\tlatestSectionVersion.map(vsv => vsv.rowVersion)\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tyield this.getVisit(this.visit.visitId);\r\n\t\t}\r\n\t});\r\n\r\n\tpublic createLabOrder = flow(function* (this: ExamStore, ihd: boolean) {\r\n\t\tif (this.visit === undefined) return;\r\n\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tyield LabOrderService.createLabOrder(visitId, ihd, this.selectedIvlsDeviceId)\r\n\t\t\t.then((labOrder: LabOrderModel) => {\r\n\t\t\t\trunInAction(() => {\r\n\t\t\t\t\tthis.currentLabOrderId = labOrder.labOrderId;\r\n\t\t\t\t\tconst index = _.findIndex(this.visitLabOrders, { labOrderId: labOrder.labOrderId });\r\n\t\t\t\t\tif (index !== -1) {\r\n\t\t\t\t\t\t_.extend(this.visitLabOrders[index], labOrder);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.visitLabOrders.push(labOrder);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder, \"Lab order created\");\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to create lab order\", this.visit));\r\n\t});\r\n\r\n\tpublic updateLabOrder = flow(function* (this: ExamStore, labOrderId: number) {\r\n\t\tif (this.visit === undefined) return;\r\n\r\n\t\tconst visitId = this.visit?.visitId;\r\n\t\tyield LabOrderService.updateLabOrder(labOrderId)\r\n\t\t\t.then((labOrder: LabOrderModel) => {\r\n\t\t\t\trunInAction(() => {\r\n\t\t\t\t\tthis.visitLabOrders.map(lo => (lo.labOrderId === labOrder.labOrderId ? labOrder : lo));\r\n\t\t\t\t\tthis.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder);\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to update lab order\", this.visit));\r\n\t\tyield this.getVisit(visitId);\r\n\t});\r\n\r\n\tpublic cancelLabOrder = flow(function* (this: ExamStore, labOrderId: number) {\r\n\t\tif (this.visit === undefined) return;\r\n\r\n\t\tconst visitId = this.visit?.visitId;\r\n\t\tyield LabOrderService.cancelLabOrder(labOrderId)\r\n\t\t\t.then(() => {\r\n\t\t\t\t// this.visitLabOrders.map(lo => (lo.labOrderId === labOrder.labOrderId) ? labOrder : lo);\r\n\t\t\t\tthis.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder);\r\n\t\t\t})\r\n\t\t\t.then(() => this.getVisit(visitId))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to cancel lab order\", this.visit));\r\n\t\tyield this.getVisit(visitId);\r\n\t});\r\n\r\n\t/**\r\n\t * Adds or update a Hospital Prescription\r\n\t * @param this current ExamStore reference\r\n\t * @param hospitalPrescription HospitalPrescription model to create/update\r\n\t */\r\n\tpublic upsertHospitalPrescription = flow(function* (this: ExamStore, hospitalPrescription: HospitalPrescriptionModel) {\r\n\t\tif (this.visit === undefined) return;\r\n\t\tconst visitId = this.visit?.visitId;\r\n\r\n\t\tyield HospitalService.upsertHospitalPrescription(hospitalPrescription)\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder);\r\n\t\t\t})\r\n\t\t\t.then(() => this.getVisit(visitId))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to add or update Hospital Prescription\", this.visit));\r\n\t});\r\n\r\n\tpublic deleteHospitalPrescription = flow(function* (this: ExamStore, hospitalPrescriptionId: number) {\r\n\t\tif (this.visit === undefined) return;\r\n\t\tconst visitId = this.visit?.visitId;\r\n\r\n\t\tyield HospitalService.deleteHospitalPrescription(hospitalPrescriptionId)\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder);\r\n\t\t\t})\r\n\t\t\t.then(() => this.getVisit(visitId))\r\n\t\t\t.catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to delete Hospital Prescription\", this.visit));\r\n\t});\r\n\r\n\t/**\r\n\t * Function iterates over each property (exam section) on the WellnessExam Form and looks to see if that section has a followupVisit\r\n\t * If there is a followup visit section and there is text in the note section, we add this to an array of modified followupVisitNotes\r\n\t * @param formData exam form data to persist\r\n\t * @returns parsed followup visit notes added to the form\r\n\t */\r\n\tprivate static parseFollowupVisitNotes(formData: WellnessExamForm): VisitNoteModel[] {\r\n\t\tconst visitNotes: VisitNoteModel[] = Object.values(formData)\r\n\t\t\t.filter(value => {\r\n\t\t\t\tconst followupNote: VisitNoteModel | undefined = get(value, \"followupVisit.followupNote\");\r\n\t\t\t\treturn followupNote !== undefined && !isEmpty(followupNote.notes);\r\n\t\t\t})\r\n\t\t\t.map(value => {\r\n\t\t\t\treturn get(value, \"followupVisit.followupNote\");\r\n\t\t\t});\r\n\r\n\t\treturn visitNotes;\r\n\t}\r\n\r\n\tprivate static ParseVisitUpdateRequest(visit: VisitModel, formData: IWellnessExamForm, visitSectionTypeId: VisitSectionTypes, formSectionVersion: string): VisitUpdateRequest {\r\n\t\tconst updatedSection = _.find(visit.visitSectionVersions, { visitSectionTypeId })!;\r\n\r\n\t\treturn {\r\n\t\t\t...visit,\r\n\t\t\troom: formData.assignment.room,\r\n\t\t\tdispensingAuthUserId: formData.assignment.dispensingAuthUserId,\r\n\t\t\tdispensingUserFirstName: formData.assignment.dispensingUserFirstName,\r\n\t\t\tdispensingUserLastName: formData.assignment.dispensingUserLastName,\r\n\t\t\treservationAssignmentStatusId: formData.assignment.reservationAssignmentStatusId,\r\n\t\t\treasonForVisit: formData.intake.reasonForVisit,\r\n\t\t\tappointmentNotes: formData.intake.appointmentNotes,\r\n\t\t\tveterinarianSignaturePhotoId: formData.signature.signatureAppliedToVisit?.photoId,\r\n\t\t\thasVetAttestation: formData.signature.hasVetAttestation,\r\n\t\t\tappointmentTypeId: formData.assignment.appointmentTypeId,\r\n\t\t\tvisitWellnessExam: WellnessExamForm.ParseUpdateModel(visit.visitWellnessExam, formData),\r\n\t\t\tupdatedSection: { ...updatedSection, rowVersion: formSectionVersion },\r\n\t\t};\r\n\t}\r\n\r\n\tfindSalesItemOptionToReplace = (salesItemOptionId: number) => {\r\n\t\tconst salesItemOption = find(this.salesItems, { salesItemOptionId });\r\n\t\tif (isUndefined(salesItemOption)) return undefined;\r\n\t\tconst salesItemToReplace = find(this.visit?.visitSalesItems, { salesItemId: salesItemOption.salesItemId });\r\n\t\treturn salesItemToReplace?.salesItemOptionId;\r\n\t};\r\n\r\n\tpublic getAnesthesiaMonitoringFormByVisitId = flow(function* (this: ExamStore, visitId: number) {\r\n\t\tthis.visitAnesthesiaForms = yield VisitAnesthesiaFormService.getVisitAnesthesiaFormByVisitId(visitId);\r\n\t});\r\n\r\n\tpublic upsertAnesthesiaMonitoringForm = flow(function* (this: ExamStore, anesthesiaForm: VisitAnesthesiaFormModel) {\r\n\t\tif (anesthesiaForm === undefined) return;\r\n\t\tyield VisitAnesthesiaFormService.upsertVisitAnesthesiaForm(anesthesiaForm).then((data: VisitAnesthesiaFormModel) => {\r\n\t\t\tthis.visitAnesthesiaForms.push(data);\r\n\t\t});\r\n\t});\r\n\r\n\tpublic upsertVisitAnesthesiaFormPreOp = flow(function* (this: ExamStore, anesthesiaMonitoringFormId: number, anesthesiaFormPreOp: IVisitAnesthesiaFormPreOpModel) {\r\n\t\tif (anesthesiaFormPreOp === undefined || this.visit === undefined || anesthesiaMonitoringFormId === 0) return;\r\n\r\n\t\tyield VisitAnesthesiaFormService.upsertVisitAnesthesiaFormPreOp(this.visit?.visitId, anesthesiaMonitoringFormId, anesthesiaFormPreOp)\r\n\t\t\t.then((data: VisitAnesthesiaFormModel) => {\r\n\t\t\t\tthis.visitAnesthesiaForms = this.visitAnesthesiaForms.map(item => (item.visitAnesthesiaFormId === data.visitAnesthesiaFormId ? data : item));\r\n\t\t\t})\r\n\t\t\t.then(this.anesthesiaSectionUpdateSucceeded(AnesthesiaSectionTypes.PreOp, `${AnesthesiaSectionTypes[AnesthesiaSectionTypes.PreOp]} updated.`))\r\n\t\t\t.catch(this.anesthesiaSectionUpdateFailed(AnesthesiaSectionTypes.PreOp, `Failed to update ${AnesthesiaSectionTypes[AnesthesiaSectionTypes.PreOp]}`, this.visitAnesthesiaForms[0]));\r\n\t\treturn this.anesthesiaSectionUpdateResult;\r\n\t});\r\n\r\n\t@computed get currentVisitAnesthesiaForm(): VisitAnesthesiaFormModel | undefined {\r\n\t\treturn this.visitAnesthesiaForms?.length > 0 ? this.visitAnesthesiaForms[0] : undefined;\r\n\t}\r\n\r\n\tpublic deleteAnesthesiaMedication = flow(function* (this: ExamStore, visitAnesthesiaFormPreOpId: number, visitAnesthesiaFormPreOpMedicationId: number) {\r\n\t\tif (this.visit === undefined || visitAnesthesiaFormPreOpId === 0 || visitAnesthesiaFormPreOpMedicationId === 0) return;\r\n\t\tyield VisitAnesthesiaFormService.deleteAnesthesiaMedication(this.visit?.visitId, visitAnesthesiaFormPreOpId, visitAnesthesiaFormPreOpMedicationId)\r\n\t\t\t.then((data: VisitAnesthesiaFormModel) => {\r\n\t\t\t\tthis.visitAnesthesiaForms = this.visitAnesthesiaForms.map(item => (item.visitAnesthesiaFormId === data.visitAnesthesiaFormId ? data : item));\r\n\t\t\t})\r\n\t\t\t.then(this.anesthesiaSectionUpdateSucceeded(AnesthesiaSectionTypes.PreOp, `Medication deleted`))\r\n\t\t\t.catch(this.anesthesiaSectionUpdateFailed(AnesthesiaSectionTypes.PreOp, `Failed to delete medication`, this.visitAnesthesiaForms[0]));\r\n\t});\r\n\r\n\tpublic upsertVisitAnesthesiaFormSurgery = flow(function* (this: ExamStore, anesthesiaMonitoringFormId: number, surgery: IVisitAnesthesiaFormSurgeryModel) {\r\n\t\tif (surgery === undefined || this.visit === undefined || anesthesiaMonitoringFormId === 0) return;\r\n\r\n\t\tyield VisitAnesthesiaFormService.upsertVisitAnesthesiaFormSurgery(this.visit?.visitId, anesthesiaMonitoringFormId, surgery)\r\n\t\t\t.then((data: VisitAnesthesiaFormModel) => {\r\n\t\t\t\tthis.visitAnesthesiaForms = this.visitAnesthesiaForms.map(item => (item.visitAnesthesiaFormId === data.visitAnesthesiaFormId ? data : item));\r\n\t\t\t})\r\n\t\t\t.then(this.anesthesiaSectionUpdateSucceeded(AnesthesiaSectionTypes.Surgery, `${AnesthesiaSectionTypes[AnesthesiaSectionTypes.Surgery]} updated.`))\r\n\t\t\t.catch(this.anesthesiaSectionUpdateFailed(AnesthesiaSectionTypes.Surgery, `Failed to update ${AnesthesiaSectionTypes[AnesthesiaSectionTypes.Surgery]}`, this.visitAnesthesiaForms[0]));\r\n\t\treturn this.anesthesiaSectionUpdateResult;\r\n\t});\r\n\r\n\tpublic upsertVisitAnesthesiaFormSurgeryVital = flow(function* (this: ExamStore, anesthesiaMonitoringFormId: number, vital: VisitAnesthesiaFormSurgeryVitalModel) {\r\n\t\tif (vital === undefined || this.visit === undefined || anesthesiaMonitoringFormId === 0) return;\r\n\r\n\t\tyield VisitAnesthesiaFormService.upsertVisitAnesthesiaFormSurgeryVital(this.visit?.visitId, anesthesiaMonitoringFormId, vital)\r\n\t\t\t.then((data: VisitAnesthesiaFormModel) => {\r\n\t\t\t\tthis.visitAnesthesiaForms = this.visitAnesthesiaForms.map(item => (item.visitAnesthesiaFormId === data.visitAnesthesiaFormId ? data : item));\r\n\t\t\t})\r\n\t\t\t.then(this.anesthesiaSectionUpdateSucceeded(AnesthesiaSectionTypes.Vital, `${AnesthesiaSectionTypes[AnesthesiaSectionTypes.Vital]} updated.`))\r\n\t\t\t.catch(this.anesthesiaSectionUpdateFailed(AnesthesiaSectionTypes.Vital, `Failed to update ${AnesthesiaSectionTypes[AnesthesiaSectionTypes.Vital]}`, this.visitAnesthesiaForms[0]));\r\n\t\treturn this.anesthesiaSectionUpdateResult;\r\n\t});\r\n\r\n\tpublic upsertVisitAnesthesiaFormPostSurgery = flow(function* (this: ExamStore, anesthesiaMonitoringFormId: number, postSurgery: IVisitAnesthesiaFormPostSurgeryModel) {\r\n\t\tif (postSurgery === undefined || this.visit === undefined || anesthesiaMonitoringFormId === 0) return;\r\n\r\n\t\tyield VisitAnesthesiaFormService.upsertVisitAnesthesiaFormPostSurgery(this.visit?.visitId, anesthesiaMonitoringFormId, postSurgery)\r\n\t\t\t.then((data: VisitAnesthesiaFormModel) => {\r\n\t\t\t\tthis.visitAnesthesiaForms = this.visitAnesthesiaForms.map(item => (item.visitAnesthesiaFormId === data.visitAnesthesiaFormId ? data : item));\r\n\t\t\t})\r\n\t\t\t.then(this.anesthesiaSectionUpdateSucceeded(AnesthesiaSectionTypes.PostOp, `${AnesthesiaSectionTypes[AnesthesiaSectionTypes.PostOp]} updated.`))\r\n\t\t\t.catch(this.anesthesiaSectionUpdateFailed(AnesthesiaSectionTypes.PostOp, `Failed to update ${AnesthesiaSectionTypes[AnesthesiaSectionTypes.PostOp]}`, this.visitAnesthesiaForms[0]));\r\n\t\treturn this.anesthesiaSectionUpdateResult;\r\n\t});\r\n\r\n\tpublic upsertVisitAnesthesiaFormPostSurgeryVital = flow(function* (this: ExamStore, anesthesiaMonitoringFormId: number, vital: VisitAnesthesiaFormPostSurgeryVitalModel) {\r\n\t\tif (vital === undefined || this.visit === undefined || anesthesiaMonitoringFormId === 0) return;\r\n\r\n\t\tyield VisitAnesthesiaFormService.upsertVisitAnesthesiaFormPostSurgeryVital(this.visit?.visitId, anesthesiaMonitoringFormId, vital)\r\n\t\t\t.then((data: VisitAnesthesiaFormModel) => {\r\n\t\t\t\tthis.visitAnesthesiaForms = this.visitAnesthesiaForms.map(item => (item.visitAnesthesiaFormId === data.visitAnesthesiaFormId ? data : item));\r\n\t\t\t})\r\n\t\t\t.then(this.anesthesiaSectionUpdateSucceeded(AnesthesiaSectionTypes.Vital, `${AnesthesiaSectionTypes[AnesthesiaSectionTypes.Vital]} updated.`))\r\n\t\t\t.catch(this.anesthesiaSectionUpdateFailed(AnesthesiaSectionTypes.Vital, `Failed to update ${AnesthesiaSectionTypes[AnesthesiaSectionTypes.Vital]}`, this.visitAnesthesiaForms[0]));\r\n\t\treturn this.anesthesiaSectionUpdateResult;\r\n\t});\r\n\r\n\tpublic updateVisitSalesItemOption = flow(function* (this: ExamStore, oldSalesItemOptionId: number, newSalesItemOptionId: number, reminderDays: number = 0) {\r\n\t\tif (_.isUndefined(this.visit)) return;\r\n\t\tconst visitId = this.visit.visitId;\r\n\t\tthis.visit = yield VisitService.updateVisitSalesItemOption(visitId, oldSalesItemOptionId, newSalesItemOptionId, reminderDays).then(this.sectionUpdateSucceeded(VisitSectionTypes.VisitBuilder, \"Visit Sales item Updated.\")).then(this.syncVisitSectionVersions).catch(this.sectionUpdateFailed(VisitSectionTypes.VisitBuilder, \"Failed to update visit sales item.\", this.visit));\r\n\t});\r\n\r\n\t@action.bound AddPricePackageRules = () => {\r\n\t\tif (!this.visit || !this.visit?.visitSalesItems || !this.salesItems || this.salesItems.length == 0) return;\r\n\t\tthis.visit.visitSalesItems.map(item => {\r\n\t\t\tconst salesItem = this.salesItems.find(x => x.salesItemId == item.salesItemId);\r\n\t\t\tif (salesItem) {\r\n\t\t\t\tconst priceRule = salesItem.priceRules?.find(p => defaultTo(p.salesItemOptionId, item.salesItemOptionId) == item.salesItemOptionId);\r\n\t\t\t\titem.packageAddOnPrice = priceRule?.packageAddOnPrice;\r\n\t\t\t\titem.upgradingPrice = salesItem.priceRules?.find(p => p.salesItemId == salesItem.salesItemUpgradeId)?.price;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { ContextWrapper } from \"@common/contexts\";\r\nimport { HospitalPrescriptionStore } from \"@hospital/stores/HospitalPrescriptionStore\";\r\nimport React, { useContext, useEffect, useMemo, useState } from \"react\";\r\n\r\nexport const HospitalPrescriptionStoreContext = new ContextWrapper();\r\n\r\n/**\r\n * Create a Hospital Prescription store\r\n * @param\r\n * @returns\r\n */\r\nexport const useCreateHospitalPrescriptionStore = (options?: { shouldSetContext?: boolean }) => {\r\n const [shouldSetContext, setShouldSetContext] = useState(Boolean(options?.shouldSetContext));\r\n\r\n useEffect(() => {\r\n if (options)\r\n setShouldSetContext(Boolean(options.shouldSetContext));\r\n }, [options])\r\n\r\n const [hospitalPrescriptionStore] = useMemo(() => {\r\n const store = new HospitalPrescriptionStore();\r\n if (shouldSetContext)\r\n HospitalPrescriptionStoreContext.set(store);\r\n return [store];\r\n }, [shouldSetContext])\r\n return hospitalPrescriptionStore;\r\n}\r\n\r\nexport const useHospitalPrescriptionStore = () => {\r\n return useContext(HospitalPrescriptionStoreContext.get() ?? React.createContext(new HospitalPrescriptionStore()));\r\n}\r\n","import { observer } from 'mobx-react'\r\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\r\nimport { Button, Col, Form, Modal, ToggleButton } from 'react-bootstrap';\r\nimport { makeBold } from '@common/utils';\r\nimport { FormInput } from '@common/components/forms';\r\nimport { PetCustomReminderModel } from '@common/models/PetCustomReminders';\r\nimport { Controller, useFormContext } from 'react-hook-form';\r\nimport { ReminderDays } from '@common/models/Enums';\r\nimport { DateTime } from 'luxon';\r\nimport { useApp } from '@common/hooks';\r\nimport { ReminderSourceModel } from '@common/models/ReminderSourceModel';\r\n\r\ninterface IThirdPartyRemindersDueDateModalProps {\r\n reminder: PetCustomReminderModel | undefined;\r\n onCancel: () => void;\r\n}\r\n\r\ninterface IReminderDaysKeyValuePair {\r\n displayString: string;\r\n reminderDays: number;\r\n}\r\n\r\ninterface IReminderSourceDateLabel {\r\n reminderSourceId: number;\r\n label: string;\r\n}\r\n\r\nexport const ThirdPartyRemindersDueDateModal = observer(({ reminder, onCancel }: IThirdPartyRemindersDueDateModalProps) => {\r\n const { configuration } = useApp();\r\n const { control, setValue, reset, watch, getValues } = useFormContext();\r\n const dueDateValue = watch('dueDate');\r\n const dateGivenValue = watch('dateGiven');\r\n const reminderSourceIdValue = watch('reminderSourceId');\r\n const [selectedDate, setSelectedDate] = useState('');\r\n const [selectedReminderSource, setSelectedReminderSource] = useState(undefined);\r\n const today = DateTime.utc().startOf('day');\r\n\r\n const previousDueDateRef = useRef('');\r\n const previousDateGivenRef = useRef('');\r\n const previousReminderSourceIdRef = useRef(0);\r\n const previousReminderNameRef = useRef('');\r\n\r\n\r\n const getDatePlusReminderDays = useCallback((date: string, forGivenDate: boolean = true) => {\r\n const dateTime = DateTime.fromISO(date)\r\n return forGivenDate\r\n ? dateTime.minus({ days: reminder!.reminderDays }).toISODate()\r\n : dateTime.plus({ days: reminder!.reminderDays }).toISODate();\r\n }, [reminder]);\r\n\r\n useEffect(() => {\r\n setSelectedDate(dueDateValue ? dueDateValue : '');\r\n if (selectedReminderSource?.reminderSourceId === 1 && dueDateValue && previousDueDateRef.current !== dueDateValue && reminder?.reminderDays) {\r\n const addedGivenDate = getDatePlusReminderDays(dueDateValue);\r\n if (addedGivenDate !== previousDueDateRef.current) {\r\n setValue(\"dateGiven\", addedGivenDate, { shouldDirty: true });\r\n }\r\n }\r\n }, [dueDateValue, getDatePlusReminderDays, reminder?.reminderDays, selectedReminderSource?.reminderSourceId, setValue]);\r\n\r\n useEffect(() => {\r\n if (selectedReminderSource?.reminderSourceId === 1 && dateGivenValue && previousDateGivenRef.current !== dateGivenValue && reminder?.reminderDays) {\r\n const addedDueDate = getDatePlusReminderDays(dateGivenValue, false);\r\n if (addedDueDate !== previousDateGivenRef.current) {\r\n setValue(\"dueDate\", addedDueDate, { shouldDirty: true });\r\n }\r\n }\r\n }, [dateGivenValue, getDatePlusReminderDays, reminder?.reminderDays, selectedReminderSource?.reminderSourceId, setValue]);\r\n\r\n const getDateLabel = (reminderSourceId: number) => reminderSourceId === 1 ? 'Date Given' : 'Date Recommended';\r\n\r\n useEffect(() => {\r\n if (!reminder) return;\r\n\r\n if (reminder.dueDate) {\r\n setSelectedDate(reminder.dueDate);\r\n setValue(\"dueDate\", reminder.dueDate);\r\n previousDueDateRef.current = reminder.dueDate;\r\n } else {\r\n reset();\r\n }\r\n\r\n if (reminder.dateGiven) {\r\n setValue(\"dateGiven\", reminder.dateGiven);\r\n previousDateGivenRef.current = reminder.dateGiven;\r\n }\r\n\r\n if (reminder.reminderSourceId) {\r\n setValue(\"reminderSourceId\", reminder.reminderSourceId);\r\n setSelectedReminderSource({ reminderSourceId: reminder.reminderSourceId, label: getDateLabel(reminder.reminderSourceId) });\r\n previousReminderSourceIdRef.current = reminder.reminderSourceId;\r\n previousReminderNameRef.current = reminder.reminderSourceName;\r\n }\r\n }, [reminder, setValue, reset]);\r\n\r\n useEffect(() => {\r\n let valueToSet = '';\r\n if (!selectedReminderSource) return;\r\n if (selectedReminderSource?.reminderSourceId === 1) {\r\n valueToSet = previousDateGivenRef.current && previousDateGivenRef.current !== reminder!.dateGiven\r\n ? previousDateGivenRef.current\r\n : reminder!.dateGiven;\r\n }\r\n else if (selectedReminderSource?.reminderSourceId === 2) {\r\n valueToSet = today.toISODate();\r\n }\r\n else {\r\n valueToSet = '';\r\n }\r\n if (previousDateGivenRef.current >= dueDateValue) {\r\n setValue(\"dueDate\", '');\r\n }\r\n reminder!.dateGiven = valueToSet;\r\n setValue(\"dateGiven\", valueToSet);\r\n //using the next eslint disable due to today const causing multiple executions of this effect\r\n //and not even allowing the logic to execute\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [reminder, selectedReminderSource?.reminderSourceId, setValue]);\r\n\r\n const resetReminder = () => {\r\n reminder!.dueDate = '';\r\n reminder!.dateGiven = '';\r\n reminder!.reminderSourceId = 0;\r\n setSelectedDate('');\r\n };\r\n\r\n const restorePreviousReminder = () => {\r\n reminder!.dueDate = previousDueDateRef.current;\r\n reminder!.dateGiven = previousDateGivenRef.current;\r\n reminder!.reminderSourceId = previousReminderSourceIdRef.current;\r\n reminder!.reminderSourceName = previousReminderNameRef.current;\r\n };\r\n\r\n const onContinue = () => {\r\n reminder!.dueDate = getValues(\"dueDate\");\r\n reminder!.dateGiven = getValues(\"dateGiven\");\r\n reminder!.reminded = true;\r\n onCancel();\r\n };\r\n\r\n const closeModal = () => {\r\n if (!reminder?.reminded) {\r\n resetReminder();\r\n } else {\r\n restorePreviousReminder();\r\n }\r\n reset();\r\n onCancel();\r\n };\r\n\r\n const getDateValue = useCallback((days: number) => today.plus({ days: days }).toISODate(), [today]);\r\n\r\n const onSelectDateFromButton = useCallback((days: number) => {\r\n const valueToSet = getDateValue(days);\r\n setSelectedDate(valueToSet);\r\n setValue(\"dueDate\", valueToSet, { shouldDirty: true });\r\n reminder!.dueDate = valueToSet;\r\n }, [getDateValue, reminder, setValue]);\r\n\r\n const reminderOptions: IReminderDaysKeyValuePair[] = [\r\n {\r\n displayString: \"1 Month(s)\",\r\n reminderDays: ReminderDays.One_Month\r\n },\r\n {\r\n displayString: \"3 Month(s)\",\r\n reminderDays: ReminderDays.Three_Months\r\n },\r\n {\r\n displayString: \"6 Month(s)\",\r\n reminderDays: ReminderDays.Six_Months\r\n },\r\n {\r\n displayString: \"1 Year\",\r\n reminderDays: ReminderDays.Year\r\n },\r\n ];\r\n\r\n const getMinDate = (): Date => {\r\n const dateGiven = getValues(\"dateGiven\");\r\n return DateTime.fromISO(dateGiven).plus({ days: 1 }).toJSDate();\r\n }\r\n\r\n return (\r\n \r\n \r\n {makeBold(reminder?.salesItemName, undefined)}\r\n \r\n \r\n
\r\n {\r\n // Decided not to use a selectable property or something similar \r\n // because the checked property validation can be done \r\n // using the reminder object passed into this component\r\n // and onChange always updates the reminderSourceId\r\n // which is what's needed for comparison\r\n configuration.reminderSources.map((rs: ReminderSourceModel, index: number) =>\r\n {\r\n return {\r\n if (e.target.checked) {\r\n setValue(\"reminderSourceId\", rs.reminderSourceId);\r\n setSelectedReminderSource({\r\n reminderSourceId: rs.reminderSourceId,\r\n label: getDateLabel(rs.reminderSourceId)\r\n } as IReminderSourceDateLabel);\r\n reminder!.reminderSourceId = rs.reminderSourceId;\r\n reminder!.reminderSourceName = rs.name;\r\n onChange(e);\r\n }\r\n }} />\r\n }}\r\n />\r\n )\r\n }\r\n
\r\n {\r\n selectedReminderSource === undefined\r\n ? undefined\r\n : <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {\r\n selectedReminderSource?.reminderSourceId === 2 &&\r\n
\r\n {\r\n reminderOptions.map(reminderOption => (\r\n onSelectDateFromButton(reminderOption.reminderDays)}\r\n active={selectedDate === getDateValue(reminderOption.reminderDays)}\r\n value={getDateValue(reminderOption.reminderDays)}\r\n >\r\n {reminderOption.displayString}\r\n \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 { Suspense, SuspenseButton } from '@common/components/utility';\r\nimport { IWellnessExamSalesItem } from '@common/models'\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react'\r\nimport { Button } from 'react-bootstrap';\r\nimport { PulseLoader } from 'react-spinners';\r\nimport { FixedSizeList as List } from 'react-window';\r\nimport classnames from 'classnames';\r\nimport { htmlFrom, stripHTML } from '@common/utils';\r\nimport { PetCustomReminderModel } from '@common/models/PetCustomReminders';\r\n\r\ninterface IThirdPartyRemindersSalesItemTable {\r\n salesItems: IWellnessExamSalesItem[];\r\n addedSalesItems: PetCustomReminderModel[];\r\n addSalesItem: (reminder: PetCustomReminderModel) => void;\r\n suspenseTag: string;\r\n}\r\n\r\nexport const ThirdPartyRemindersSalesItemTable = observer(({ salesItems, suspenseTag, addSalesItem, addedSalesItems }: IThirdPartyRemindersSalesItemTable) => {\r\n const SalesItemRow = ({ index, style }: { index: number, style: any }) => {\r\n const item = salesItems[index];\r\n const isAddedToRemindersTable = addedSalesItems.some(vsi => vsi.salesItemOptionId == item.salesItemOptionId);\r\n\r\n return (\r\n
\r\n
\r\n
{htmlFrom(item.name)} {htmlFrom(item.option)}
\r\n
\r\n {isAddedToRemindersTable\r\n ? Added\r\n : addSalesItem(\r\n {\r\n salesItemOptionId: item.salesItemOptionId,\r\n salesItemName: stripHTML(`${item.name} ${item.option}`),\r\n reminded: false,\r\n reminderDays: item.reminderDays\r\n } as PetCustomReminderModel)}>Add\r\n \r\n }\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n return (\r\n }>\r\n
\r\n
\r\n
DESCRIPTION
\r\n
ACTION
\r\n
\r\n {_.isEmpty(salesItems) &&\r\n
No sales items found.
\r\n }\r\n {!_.isEmpty(salesItems) &&\r\n \r\n {SalesItemRow}\r\n \r\n }\r\n
\r\n
\r\n )\r\n})\r\n","import { PetCustomReminderModel } from '@common/models/PetCustomReminders';\r\nimport { stringDateToISODate } from '@common/utils';\r\nimport { observer } from 'mobx-react'\r\nimport React from 'react'\r\nimport { Button, Table } from 'react-bootstrap';\r\n\r\ninterface IThirdPartyRemindersTableProps {\r\n remindersAdded: PetCustomReminderModel[];\r\n setActiveReminder: (value: PetCustomReminderModel) => void;\r\n onSelectedToRemind: () => void;\r\n removeReminder: (salesItemOptionId: number) => void;\r\n}\r\n\r\nexport const ThirdPartyRemindersTable = observer(({ remindersAdded, setActiveReminder, onSelectedToRemind, removeReminder }: IThirdPartyRemindersTableProps) => {\r\n const onRemind = (reminder: PetCustomReminderModel) => {\r\n setActiveReminder(reminder);\r\n onSelectedToRemind();\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n _.isEmpty(remindersAdded)\r\n ?\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n <>\r\n {remindersAdded.map((reminder, idx) =>\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n }\r\n \r\n
DescriptionStatusActions
No reminders added.
\r\n
\r\n {reminder.salesItemName}\r\n {\r\n reminder.reminded &&\r\n
\r\n

Due Date: {stringDateToISODate(reminder.dueDate)}

\r\n

Source: {reminder.reminderSourceName}

\r\n
\r\n }\r\n
\r\n
\r\n onRemind(reminder)}>{reminder.reminded ? 'Reminded' : 'Remind'}\r\n \r\n
\r\n )\r\n});\r\n","import { FileUpload, FormInput } from \"@common/components/forms\";\r\nimport { PetCustomReminderModel } from '@common/models/PetCustomReminders';\r\nimport { observer } from 'mobx-react'\r\nimport React, { useEffect, useState } from 'react'\r\nimport { useFormContext } from 'react-hook-form';\r\nimport { ProgressBar } from \"react-bootstrap\";\r\nimport { ProgressState } from \"@hospital/hooks\";\r\n\r\nexport type IThirdPartyRemindersAttachmentsProps = {\r\n progress: ProgressState | undefined;\r\n}\r\n\r\nconst LoadingProgressBar = ({ progress }: { progress: ProgressState }) =>\r\n
\r\n \r\n {progress.completed > 0 && }\r\n {progress.errored > 0 && }\r\n \r\n
\r\n\r\nexport const ThirdPartyRemindersAttachments = observer(({ progress }: IThirdPartyRemindersAttachmentsProps) => {\r\n const { control, watch, register, formState: { errors, isDirty } } = useFormContext();\r\n const [isNotesDisable, setIsNotesDisable] = useState(true);\r\n const [showAlertmessage, setShowAlertmessage] = useState(false)\r\n\r\n useEffect(() => {\r\n const subscription = watch(({ attachmentStorageContent }, { name, type, }) => {\r\n if (type === \"change\" && name == \"attachmentStorageContent\") {\r\n if (attachmentStorageContent?.length! > 0) {\r\n setIsNotesDisable(false);\r\n setShowAlertmessage(false);\r\n } else {\r\n setIsNotesDisable(true);\r\n setShowAlertmessage(true);\r\n }\r\n }\r\n });\r\n return () => subscription.unsubscribe();\r\n }, [watch]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {showAlertmessage &&\r\n

Attachments are required to save notes. Please reupload your files to ensure notes are saved.

\r\n }\r\n {progress &&\r\n <>\r\n
\r\n Uploading {progress.total} files...\r\n
\r\n \r\n \r\n }\r\n \r\n )\r\n});\r\n","import { ContextWrapper } from \"@common/contexts\";\r\nimport { useApp } from \"@common/hooks\";\r\nimport { MacroKeywords, MacroListingModel } from \"@common/models\";\r\nimport { MacroTargetType, MacroType } from \"@common/models/Enums/MacroType\";\r\nimport { AppStore, ClientStore, NotificationStoreInstance, PetDetailsStore } from \"@common/stores\";\r\nimport { CommunicationTemplateSearchStore } from \"@common/stores/CommunicationTemplateSearchStore\";\r\nimport { IQueryCacheStoreInit } from \"@common/stores/QueryCacheStore\";\r\nimport { useHospitalApp } from \"@hospital/hooks\";\r\n//TODO need to move hospitalAppStore, examStore etc into common\r\n//Optionally, refactor macros to have isolated values we can set from various places in apps that don't depend on specific stores.\r\nimport { HospitalAppStore } from \"@hospital/stores/rootStores\";\r\nimport { ExamStore } from \"@hospital/views/exam\";\r\nimport { useQueryClient } from \"@tanstack/react-query\";\r\nimport { DateTime } from \"luxon\";\r\nimport { action, computed, makeObservable, observable } from \"mobx\";\r\nimport { useContext, useMemo } from \"react\";\r\nimport { normalizePhone } from '@common/utils/phoneUtils';\r\n\r\nexport interface IMacroStoreInit extends IQueryCacheStoreInit {\r\n\tapp: AppStore;\r\n\thospitalApp: HospitalAppStore;\r\n\tpetDetails: PetDetailsStore | undefined;\r\n\texamStore: ExamStore | undefined;\r\n\tclientStore: ClientStore | undefined;\r\n\tmacroTargetTypeId?: MacroTargetType;\r\n}\r\n\r\nexport interface IKeyWordsModel {\r\n\tfullName?: string | undefined;\r\n\tpetName?: string | undefined;\r\n\tfirstName: string | undefined;\r\n\tlastName: string | undefined;\r\n\tpetGender?: string | undefined;\r\n\tvetName?: string | undefined;\r\n}\r\n\r\nexport class MacroStore {\r\n\tprivate _app: AppStore;\r\n\tprivate _hospitalApp: HospitalAppStore;\r\n\tprivate _petDetailsStore: PetDetailsStore | undefined;\r\n\tprivate _examStore: ExamStore | undefined;\r\n\tprivate _clientStore: ClientStore | undefined;\r\n\tprivate _templateSearchStore: CommunicationTemplateSearchStore;\r\n\tprivate _hospitalId: number | undefined = undefined;\r\n\t@observable private _searchText: string | undefined = undefined;\r\n\t@observable private _error: string | undefined = undefined;\r\n\tprivate _macroTargetTypeId: MacroTargetType | undefined = undefined;\r\n\tprivate _keywordsData: IKeyWordsModel | undefined = undefined;\r\n\tprivate _isTransientKeywords: boolean = false;\r\n\r\n\tconstructor(init: IMacroStoreInit) {\r\n\t\tthis._app = init.app;\r\n\t\tthis._hospitalApp = init.hospitalApp;\r\n\t\tthis._petDetailsStore = init.petDetails;\r\n\t\tthis._examStore = init.examStore;\r\n\t\tthis._clientStore = init.clientStore;\r\n\t\tthis._hospitalId = this._hospitalApp.currentHospital ? this._hospitalApp.currentHospital.hospitalId : undefined;\r\n\t\tthis._macroTargetTypeId = init.macroTargetTypeId ? init.macroTargetTypeId == MacroTargetType.All ? undefined : init.macroTargetTypeId : MacroTargetType.ExamVisit;\r\n\t\tthis._templateSearchStore = new CommunicationTemplateSearchStore(this._hospitalId ? MacroType.Location : MacroType.Hospitals, this._hospitalId, undefined, 100000, this._macroTargetTypeId, {\r\n\t\t\tqueryClient: init.queryClient,\r\n\t\t\tqueryStaleTime: init.app.configuration.longClientSideCacheTimeToLive\r\n\t\t});\r\n\t\tthis._templateSearchStore.updateSearchParams({ orderby: [{ field: \"name\", dir: \"asc\" }] });\r\n\r\n\t\tmakeObservable(this, undefined, { autoBind: true });\r\n\t}\r\n\r\n\t@computed get error() {\r\n\t\treturn this._error;\r\n\t}\r\n\r\n\t@computed get isLoading() {\r\n\t\treturn this._templateSearchStore.isLoading;\r\n\t}\r\n\r\n\t@computed get searchText() {\r\n\t\treturn this._searchText;\r\n\t}\r\n\r\n\t@computed get currentHospital() {\r\n\t\treturn this._hospitalApp.currentHospital;\r\n\t}\r\n\r\n\t@computed get visit() {\r\n\t\treturn (this._examStore && this._examStore.visit) ?? undefined;\r\n\t}\r\n\r\n\t@computed get visitClient() {\r\n\t\treturn (this.visit && this.visit.client) ?? undefined;\r\n\t}\r\n\r\n\t@computed get client() {\r\n\t\treturn (this._clientStore && this._clientStore.client) ?? undefined;\r\n\t}\r\n\r\n\t@computed get macroKeywords() {\r\n\t\tconst client = this._isTransientKeywords ? this._keywordsData : this.client ?? this.visitClient;\r\n\t\tconst clientFirstName = _.defaultTo(client && client.firstName, undefined);\r\n\t\tconst clientLastName = _.defaultTo(client && client.lastName, undefined);\r\n\t\tconst clientFullName = _.defaultTo(client && client.fullName, undefined);\r\n\t\tconst petName = this._isTransientKeywords ? this._keywordsData && this._keywordsData.petName : this._petDetailsStore && this._petDetailsStore.pet && this._petDetailsStore.pet.name;\r\n\t\tconst petGender = this._isTransientKeywords ? this._keywordsData && this._keywordsData.petGender : this._petDetailsStore && this._petDetailsStore.pet && this._petDetailsStore.pet.gender.name\r\n\t\tconst vetName = this._isTransientKeywords ? this._keywordsData && this._keywordsData.vetName : (this.visit && this.visit.veterinarianFullName) ?? undefined;\r\n\r\n\t\tconst macroKeyworkds: Partial = {\r\n\t\t\t\"{{hospitalname}}\": this.hospitalKeyWords.hospitalName,\r\n\t\t\t\"{{hospitalemail}}\": this.hospitalKeyWords.hospitalEmail,\r\n\t\t\t\"{{hospitalphone}}\": this.hospitalKeyWords.hospitalPhone,\r\n\t\t\t\"{{hospitalcity}}\": this.hospitalKeyWords.hospitalCity,\r\n\t\t\t\"{{hospitaladdress}}\": this.hospitalKeyWords.hospitalAddress,\r\n\t\t\t\"{{hospitalurl}}\": this.hospitalKeyWords.hospitalUrl,\r\n\t\t\t\"{{clientfirstname}}\": clientFirstName,\r\n\t\t\t\"{{clientlastname}}\": clientLastName,\r\n\t\t\t\"{{clientfullname}}\": clientFullName,\r\n\t\t\t\"{{petname}}\": petName,\r\n\t\t\t\"{{vetname}}\": vetName,\r\n\t\t\t\"{{todaysdate}}\": this.hospitalKeyWords.timezoneName ? DateTime.now().setZone(this.hospitalKeyWords.timezoneName).toLocaleString(DateTime.DATE_SHORT) : DateTime.now().toLocaleString(DateTime.DATE_SHORT),\r\n\t\t\t\"{{petgender}}\": petGender,\r\n\t\t\t\"{{hospitalsms}}\": this.hospitalKeyWords.hospitalSms,\r\n\t\t};\r\n\r\n\t\treturn new MacroKeywords(macroKeyworkds);\r\n\t}\r\n\r\n\tget hospitalKeyWords() {\r\n\t\treturn {\r\n\t\t\thospitalName: (this.currentHospital && this.currentHospital.name) ?? undefined,\r\n\t\t\thospitalEmail: (this.currentHospital && this.currentHospital.email) ?? undefined,\r\n\t\t\thospitalPhone: (this.currentHospital && this.currentHospital.phone) ? normalizePhone(this.currentHospital.phone) : undefined,\r\n\t\t\thospitalCity: (this.currentHospital && this.currentHospital.store?.city) ?? undefined,\r\n\t\t\thospitalAddress: (this.currentHospital && this.currentHospital.store?.address) ?? undefined,\r\n\t\t\thospitalUrl: (this.currentHospital && this.currentHospital.url) ?? undefined,\r\n\t\t\thospitalSms: (this.currentHospital && this.currentHospital.outboundSMSPhone) ?? undefined,\r\n\t\t\ttimezoneName: (this.currentHospital && this.currentHospital.store?.timezoneName) ?? undefined\r\n\t\t}\r\n\t}\r\n\r\n\t@computed get macros(): MacroListingModel[] {\r\n\t\tif (this.isLoading) return [];\r\n\r\n\t\tif (!this._templateSearchStore || !this._templateSearchStore.searchResults) return [];\r\n\r\n\t\tif (!this._searchText) this._templateSearchStore.searchResults;\r\n\r\n\t\treturn this._templateSearchStore.searchResults.results.filter(v => {\r\n\t\t\treturn (v.name ?? \"\").toLowerCase().indexOf((this.searchText ?? \"\").toLowerCase()) > -1 || (v.createdBy ?? \"\").toLowerCase().indexOf((this.searchText ?? \"\").toLowerCase()) > -1;\r\n\t\t});\r\n\t}\r\n\r\n\t@action.bound setSearchText = (searchText: string | undefined) => {\r\n\t\tthis._searchText = searchText;\r\n\t};\r\n\r\n\t@action.bound setKeywordsData = (keyWordsData: IKeyWordsModel) => {\r\n\t\tthis._keywordsData = keyWordsData;\r\n\t};\r\n\r\n\t@action.bound setTransientKeywords = (isTransientKeywords: boolean) => {\r\n\t\tthis._isTransientKeywords = isTransientKeywords;\r\n\t};\r\n\r\n\r\n\r\n\t@action.bound load = () => {\r\n\t\ttry {\r\n\t\t\tthis._templateSearchStore\r\n\t\t\t\t.search()\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tthis._error = undefined;\r\n\t\t\t\t})\r\n\t\t\t\t.catch(err => {\r\n\t\t\t\t\tthis._error = err;\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tif (this.error) NotificationStoreInstance.error(\"Unable to load Note Macros.\");\r\n\t\t\t\t});\r\n\t\t} catch (err) {\r\n\t\t\tthis._error = err;\r\n\t\t\tNotificationStoreInstance.error(\"Unable to load Note Macros.\");\r\n\t\t}\r\n\t};\r\n}\r\n\r\nconst MacroContext = new ContextWrapper();\r\n\r\n//Dev Note: All the use* hooks here have had their contexts updated to create new stores if they aren't already set\r\n//this prevents us from having get() errors if the text box is used in places where those contexts aren't set.\r\nexport const useMacros = (init?: { petDetails?: PetDetailsStore | undefined, examStore?: ExamStore | undefined, clientStore?: ClientStore, macroTargetTypeId?: MacroTargetType }): MacroStore => {\r\n\tconst app = useApp();\r\n\tconst hospitalApp = useHospitalApp();\r\n\tconst queryClient = useQueryClient();\r\n\tconst examStore = init?.examStore;\r\n\tconst clientStore = init?.clientStore;\r\n\tconst petDetails = init?.petDetails;\r\n\tconst macroTargetTypeId = init?.macroTargetTypeId;\r\n\r\n\tconst macroStore = useMemo(() => {\r\n\t\tconst store = new MacroStore({\r\n\t\t\tapp,\r\n\t\t\thospitalApp,\r\n\t\t\texamStore,\r\n\t\t\tpetDetails,\r\n\t\t\tmacroTargetTypeId,\r\n\t\t\tqueryClient,\r\n\t\t\tclientStore\r\n\t\t});\r\n\t\tMacroContext.set(store);\r\n\t\treturn store;\r\n\t}, [app, hospitalApp, petDetails, examStore,clientStore,macroTargetTypeId, queryClient]);\r\n\r\n\treturn macroStore;\r\n};\r\n\r\nexport const useMacroContext = () => {\r\n\tconst app = useApp();\r\n\tconst hospitalApp = useHospitalApp();\t\r\n\tconst useMacroResult = useContext(MacroContext.get() ?? new MacroStore({ app: app, hospitalApp: hospitalApp, examStore: undefined, petDetails: undefined, clientStore: undefined }));\r\n\treturn useMacroResult;\r\n};\r\n","import { useClickOutside } from \"@common/hooks\";\r\nimport { MacroKeywords, MacroListingModel } from \"@common/models\";\r\nimport classNames from 'classnames';\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { Button, Modal, Overlay } from \"react-bootstrap\";\r\nimport Skeleton from \"react-loading-skeleton\";\r\nimport { useSlate } from \"slate-react\";\r\nimport { RichTextDisplay } from \"./RichTextDisplay\";\r\nimport { RichTextBoxEditor } from \"./richTextEditorTypes\";\r\nimport { useMacroContext } from \"./useMacros\";\r\nimport { MacroTargetType } from \"@common/models/Enums/MacroType\";\r\n\r\nexport const MacroDropdown = observer((props: { element: HTMLSpanElement | null, searchText: string | null, wrapperRef: React.RefObject,macroTargetType?:MacroTargetType,isTrasientKeywords:boolean }) => {\r\n const editor = useSlate() as RichTextBoxEditor;\r\n const macroContext = useMacroContext() ?? { macros: [], isLoading: false, error: null, setSearchText: () => { }, setTransientKeywords: () => { }, macroTrasientKeywords: null, macroKeywords: null }; \r\n\r\n const { macros, isLoading, error, setSearchText } =macroContext;\r\n const [macroTarget] = useState(props.macroTargetType);\r\n const [previewMacro, setPreviewMacro] = useState(null);\r\n const overlayRef = useRef(null);\r\n\r\n useClickOutside(overlayRef, (event: PointerEvent) => {\r\n const target = event.target as ChildNode;\r\n if (target.nodeType === Node.ELEMENT_NODE) {\r\n //close the macro dropdown if the outside target element is not the macro search text element\r\n if (props.element !== target && !props.element?.contains(target)) {\r\n setPreviewMacro(null);\r\n editor.closeMacros();\r\n return;\r\n }\r\n }\r\n });\r\n\r\n const clickPreview = (macro: MacroListingModel) => {\r\n setPreviewMacro(macro);\r\n };\r\n\r\n const processMacroPlaceholders = (text: string) => {\r\n macroContext.setTransientKeywords(props.isTrasientKeywords);\r\n const macroKeywordsType = macroContext.macroKeywords;\r\n const html = macroKeywordsType ? MacroKeywords.processTextForMacros(text, macroKeywordsType) : text;\r\n return html;\r\n };\r\n\r\n const insertMacro = (macro: MacroListingModel) => {\r\n const html = processMacroPlaceholders(macro.content);\r\n if (html)\r\n editor.insertMacro(html);\r\n else\r\n editor.closeMacros();\r\n };\r\n\r\n\r\n\r\n const closeModal = useCallback(() => {\r\n setPreviewMacro(null);\r\n RichTextBoxEditor.focus(editor);\r\n }, [editor]);\r\n\r\n useEffect(() => {\r\n if (!props.searchText || !props.searchText.startsWith('/')) {\r\n setSearchText(undefined)\r\n }\r\n else {\r\n let text = _.trimStart(props.searchText.trim(), '/');\r\n if (!text)\r\n setSearchText(undefined);\r\n else\r\n setSearchText(text);\r\n }\r\n }, [props.searchText, setSearchText]);\r\n\r\n\r\n const isDom = typeof document === 'object';\r\n if (!isDom)\r\n return null;\r\n\r\n return (\r\n <>\r\n {\r\n !previewMacro && props.element && \r\n {({ placement, arrowProps, show: _show, popper, ...props }) => (\r\n
\r\n
    \r\n {isLoading && !error && _.times(10, (i) =>
  • \r\n \r\n \r\n \r\n
  • )}\r\n {!isLoading && !error && macros.length > 0 &&\r\n [\r\n macros.filter(m=>m[\"macroTargetTypeId\"]==macroTarget).map((m, i) =>\r\n
  • \r\n {m.name}\r\n - {m.createdBy}\r\n \r\n \r\n \r\n \r\n
  • \r\n )\r\n ]\r\n }\r\n {!isLoading && !error && macros.length === 0 &&\r\n
  • No matching macrors found!
  • \r\n }\r\n {error &&\r\n
  • \r\n There was an error when loading your macros. Try refreshing your browser page.\r\n
  • \r\n }\r\n
\r\n\r\n
\r\n )}\r\n
\r\n }\r\n {\r\n previewMacro !== null &&\r\n \r\n \r\n {previewMacro.name}\r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n insertMacro(previewMacro)}>ADD\r\n \r\n \r\n }\r\n \r\n )\r\n});\r\n","// https://www.color-name.com/hex/FFDC19\r\n\r\n// ['smoke', 'whitesmoke'],\r\n// ['color-gray', 'gray'],\r\n// ['$blue-before-hover', '$blue-neutral'],\r\n\r\nexport const figmaStyleColors = [\r\n ['Primary/White', '#FFFFFF'], // ['White', '#FFFFFF', '15%', '25%'],\r\n ['Primary/DarkGray', '#656565', 'review'], // ['Granite Gray', '#656565', '3%'],\r\n ['Primary/Navy', '#001952', 'review'], // ['Oxford Blue', '#001952', '25%', '5%'], // ['Oxford Blue', '#011954'],\r\n ['Primary/Charcoal', '#333333', 'review'], // ['Dark Charcoal', '#333333', '10%', '25%'],\r\n ['Neutral/Fog', '#F8F7F9'],\r\n ['Extended/Red-Error', '#E02924'], // ['Permanent Geranium Lake', '#E02924'],\r\n ['Tint/Blue', '#E8FAFE'],\r\n ['Neutral/Chalk', '#F2F2F2'], // ['Anti-Flash White', '#F2F2F2'],\r\n ['Neutral/Pastel', '#EBF1FF'],\r\n ['Tint/Green', '#E9FDF2'],\r\n ['Extended/Green-Success', '#007500'],\r\n ['Tint/Red', '#FBEEEC'],\r\n ['Tint/Yellow', '#FDFBE8'],\r\n]\r\nexport const workInProgressColors = [\r\n ['Chinese Blue', '#395B99'],\r\n ['UCLA Blue', '#4C699E'],\r\n ['Ruddy Brown', '#B75527'],\r\n ['Anti-Flash White', '#F2F4F6']\r\n]\r\nexport const listOfColorsShort = [\r\n ['Aero Blue', '#C3F4EB'],\r\n ['American Blue', '#2F4370'],\r\n ['Argent', '#C1C1C1', '50%'],\r\n ['Beer', '#FF8C1D'],\r\n ['Black', '#000000'],\r\n ['Blood Red', '#610505'],\r\n ['Blue Yonder', '#5D76A5'],\r\n ['Blue', '#0303F1'],\r\n ['Bright Gray', '#EBEBEB'],\r\n ['Bright Gray', '#EBEFF6'],\r\n ['Bubbles', '#E8F9FF'],\r\n ['Cerulean Blue', '#2C60C0'],\r\n ['Chinese Pink', '#E0789C', '15%'],\r\n ['Cool Black', '#00205B', '5%'],\r\n ['Cosmic Latte', '#FFFFE8'],\r\n ['Cultured', '#F5F5F5', '50%'],\r\n ['Dark Khaki', '#D0B56F'],\r\n ['Diamond', '#B9EDFF'],\r\n ['Ferrari Red', '#ED1A02'],\r\n ['Field Drab', '#786025'],\r\n ['Folly', '#FF004D'],\r\n\r\n ['Green Sheen', '#71C2B4'],\r\n ['Harlequin', '#25FF00'],\r\n ['Islamic Green', '#03A403'],\r\n ['Light Cyan', '#E3FCF7'],\r\n ['Light Green', '#7BF993'],\r\n ['Light Silver', '#D8D8D8'],\r\n ['Linen', '#F8F4E9'],\r\n ['Magic Mint', '#9BF1E1'],\r\n ['Manatee', '#9898AF'],\r\n ['Misty Rose', '#FFE8E8'],\r\n ['Myrtle Green', '#2F7B6E'],\r\n ['Naples Yellow', '#F8E165'],\r\n\r\n ['Pastel Red', '#FC6666'],\r\n ['Platinum', '#E2E2E2'],\r\n ['Platinum', '#E5E5E5', '25%', '50%'],\r\n ['Platinum', '#E6E6E6'],\r\n ['Purple (X11)', '#B31BF0'],\r\n ['Shocking Pink', '#F805BF'],\r\n ['Silver Sand', '#C4C4C4', '0%'],\r\n ['Snow', '#FFF7F7'],\r\n ['Space Cadet', '#14215B'],\r\n ['Spanish Gray', '#979797'],\r\n ['Spanish Gray', '#999999'],\r\n ['Venetian Red', '#D80F0F'],\r\n ['Water', '#D0F3FF'],\r\n]\r\n\r\nexport const listOfColorsLong = [\r\n ['Anti-Flash White', '#EAF6F4'],\r\n ['Anti-Flash White', '#F2F3F6'],\r\n ['Azureish White', '#DFE7F6'],\r\n ['Bright Yellow (Crayola)', '#FFA826'],\r\n ['Brilliant Azure', '#33B2FD'],\r\n ['Caribbean Green', '#08BC9C'],\r\n ['Chinese Silver', '#CCCCCC'],\r\n ['Dark Pastel Blue', '#7792C6', '10%'],\r\n ['Deep Green-Cyan Turquoise', '#1F6D60'],\r\n ['Deep Green-Cyan Turquoise', '#217465'],\r\n ['Electric Orange', '#FF3400'],\r\n ['Indigo (Rainbow)', '#263B6C'],\r\n ['Lavender Indigo', '#9747FF'],\r\n ['Light Cobalt Blue', '#9393F0'],\r\n ['Light Hot Pink', '#FFABDF'],\r\n ['Metallic Sunburst', '#967A33'],\r\n ['Metallic Yellow', '#FFDC19'],\r\n ['Pale Robin Egg Blue', '#8BE8D7'],\r\n ['Violets Are Blue', '#7B61FF'],\r\n ['Vivid Mulberry', '#C006E3'],\r\n]\r\nexport const newFigmaValues = [\r\n ['Periwinkle (Crayola)', '#C6D5EF', 'diff'],\r\n ['Anti-Flash White', '#EFF0F7', 'diff'],\r\n ['Cultured', '#F4F6F8', 'diff'],\r\n ['Ghost White', '#F5F8FF', 'diff'],\r\n ['Lavender Pink', '#F8B1CA', 'diff'],\r\n ['Lavender Blush', '#FAEBF0', 'diff'],\r\n ['Coral Red', '#FB4341', 'diff'],\r\n ['Lavender Blush', '#FCF0F5', 'diff'],\r\n ['Old Lace', '#FCF5E8', 'diff'],\r\n]\r\n\r\nexport const percentsPreviAlpha = ['0%', '3%', '5%', '15%', '20%', '25%', '50%', '100%', '90%'] // items after 100% are not designer defaults.\r\n\r\nexport const percentsToHexAlpha = ['00', '08', '0d', '26', '33', '40', '80', '', 'e6'] // use hexAlpha becuase opacity css property messes up layout stack\r\n// const morePercentIdeas = ['60%', '75%', '80%', '90%', '90%', '95%']\r\n\r\n\r\nconst _foundationColors = [\r\n [\"Extended/Burnt-WarningAttn\", \"#B85300\"],\r\n [\"Extended/Green-Success\", \"#007500\"],\r\n [\"Extended/LightBurnt\", \"#FFF2DE\"],\r\n [\"Extended/LightGreen\", \"#EFFAEC\"],\r\n [\"Extended/LightRed\", \"#FFF0F0\"],\r\n [\"Extended/Red-Error\", \"#E02924\"],\r\n [\"Neutral/Chalk\", \"#F2F2F2\"],\r\n [\"Neutral/Fog\", \"#F8F7F9\"],\r\n [\"Neutral/Heather\", \"#EFF0F7\"],\r\n [\"Neutral/Ice\", \"#F5F8FF\"],\r\n [\"Neutral/Pastel\", \"#EBF1FF\"],\r\n [\"Neutral/Steel\", \"#CCCCCC\"],\r\n [\"Primary/Charcoal\", \"#333333\"],\r\n [\"Primary/DarkGray\", \"#656565\"],\r\n [\"Primary/Navy\", \"#001952\"],\r\n [\"Primary/White\", \"#FFFFFF\"],\r\n [\"Primary/Yellow\", \"#FFD405\"],\r\n [\"Secondary/Blue\", \"#73EAFF\"],\r\n [\"Secondary/Green\", \"#A9F4CD\"],\r\n [\"Secondary/Orange\", \"#F39A0C\"],\r\n [\"Secondary/Pink\", \"#F8B1CA\"],\r\n [\"Secondary/Red\", \"#FB4341\"],\r\n [\"Tint/Blue\", \"#E8FAFE\"],\r\n [\"Tint/Green\", \"#E9FDF2\"],\r\n [\"Tint/Orange\", \"#FCF5E8\"],\r\n [\"Tint/Pink\", \"#FCF0F5\"],\r\n [\"Tint/Red\", \"#FBEEEC\"],\r\n [\"Tint/Yellow\", \"#FDFBE8\"],\r\n]\r\n","import { listOfColorsShort } from '@common/_assets/listOfColors.js';\r\nimport { ColorUtils } from '@common/utils';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useCallback, useMemo, useState } from 'react';\r\nimport { Dropdown, OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { useSlate } from 'slate-react';\r\nimport { RichTextBoxUtils } from '../RichTextBoxUtils';\r\nimport { RichTextBoxEditor } from '../richTextEditorTypes';\r\n\r\n\r\nconst ColorTile = (props: { editor: RichTextBoxEditor, color: string, name: string, isActive: boolean, setShowDropDown: React.Dispatch> }) => {\r\n return (\r\n \r\n {props.name}\r\n \r\n }>\r\n
\r\n {\r\n RichTextBoxUtils.setActiveColor(props.editor, props.color);\r\n props.setShowDropDown(false);\r\n }} style={{ color: props.color }}>\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport const RichTextBoxColorPickerButton = observer((props?: React.HTMLAttributes) => {\r\n const editor = useSlate();\r\n const color = RichTextBoxUtils.getActiveColor(editor);\r\n const [showDropdown, setShowDropDown] = useState(false);\r\n const colorTiles = useMemo(() => {\r\n return listOfColorsShort.sort((a, b) => {\r\n if (a[1] === b[1])\r\n return 0;\r\n if (a[1] < b[1])\r\n return -1;\r\n if (a[1] > b[1])\r\n return 1;\r\n return 0;\r\n }).map((colorArray, index) => {\r\n return (\r\n \r\n )\r\n })\r\n }, [editor]);\r\n\r\n const onToggle = useCallback((nextShow: boolean) => {\r\n setShowDropDown(nextShow);\r\n }, [setShowDropDown]);\r\n\r\n return (<>\r\n \r\n \r\n {\r\n props?.title\r\n }\r\n \r\n }>\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {colorTiles}\r\n
\r\n
\r\n
\r\n )\r\n});\r\n","import classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useMemo } from 'react';\r\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { Editor } from 'slate';\r\nimport { useSlate } from 'slate-react';\r\nimport { RichTextBoxToolbarButtonBaseProps } from '../richTextEditorTypes';\r\n\r\nfunction getIcon(icon: JSX.Element | JSX.Element[] | string[] | string | null | undefined) {\r\n if (!icon)\r\n return null;\r\n if (React.isValidElement(icon)) {\r\n return icon;\r\n }\r\n const icons = (Array.isArray(icon) ? icon : [icon]).map((mapIcon, index) => {\r\n if (React.isValidElement(mapIcon)) {\r\n return mapIcon;\r\n }\r\n if (typeof mapIcon === 'string')\r\n return \r\n return null;\r\n });\r\n return icons;\r\n}\r\n\r\n\r\n\r\ntype RichTextBoxToolbarButtonProps = RichTextBoxToolbarButtonBaseProps & {\r\n isActive: boolean\r\n};\r\n\r\nexport const InternalButton = React.forwardRef((\r\n props: RichTextBoxToolbarButtonProps,\r\n ref: React.ForwardedRef\r\n) => {\r\n const { isActive, attrs, icon } = props;\r\n const { className, title, onClick, disable, ...trimmedAttrs } = attrs ?? { className: undefined, disable: undefined };\r\n const activeClass = !isActive ? \"btn-seconary btn-outline-primary\" : \"btn-primary btn-outline-primary text-secondary\";\r\n const editor = useSlate();\r\n const treatedTitle = useMemo(() => {\r\n if (title) {\r\n if (typeof title === 'string') {\r\n const lines = title.split('\\n');\r\n return (<>\r\n {lines.map((value, index) => {value}
)}\r\n )\r\n }\r\n }\r\n return ({title});\r\n }, [title]);\r\n\r\n const iconElement = useMemo(() => {\r\n return getIcon(icon);\r\n }, [icon]);\r\n\r\n\r\n const isDisabled = useMemo(() => {\r\n\r\n return Boolean(editor.selection) && Boolean(Editor.marks(editor)?.isMacroSearch && !disable);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [editor, editor.selection, disable])\r\n\r\n\r\n return (\r\n \r\n {\r\n treatedTitle && treatedTitle\r\n }\r\n \r\n }>\r\n \r\n \r\n )\r\n});\r\nInternalButton.displayName = 'ToolbarButton';\r\n\r\n\r\nexport const RichTextBoxToolbarButton = observer(InternalButton);\r\n","import { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { useSlate } from 'slate-react';\r\nimport { RichTextBoxEditor, RichTextBoxToolbarButtonBaseProps } from '../richTextEditorTypes';\r\nimport { RichTextBoxToolbarButton } from './RichTextBoxToolbarButton';\r\n\r\ntype RichTextBoxIndentButtonProps = {\r\n decrease?: boolean\r\n} & RichTextBoxToolbarButtonBaseProps\r\n\r\n//Button didn't exist, was hardcoded in RichTextBox, moved it here to clean up RichTextBox Clutter.\r\nexport const RichTextBoxIndentButton = observer(({ decrease, ...props }: RichTextBoxIndentButtonProps) => {\r\n const editor = useSlate();\r\n const { attrs, ...trimmedProps } = props;\r\n const { onClick, ...trimmedAttrs } = attrs ?? { onClick: undefined };\r\n return (\r\n {\r\n editor.changeBlockIndent(decrease);\r\n RichTextBoxEditor.focus(editor);\r\n if (onClick)\r\n onClick(event);\r\n }, ...trimmedAttrs\r\n }} />\r\n )\r\n});\r\n","import { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { useSlate } from 'slate-react';\r\nimport { RichTextBoxUtils } from '../RichTextBoxUtils';\r\nimport { RichTextBoxElementType, RichTextBoxToolbarButtonBaseProps } from '../richTextEditorTypes';\r\nimport { RichTextBoxToolbarButton } from './RichTextBoxToolbarButton';\r\n\r\ntype RichTextBoxToolbarBlockButtonProps = {\r\n elementType: RichTextBoxElementType\r\n} & RichTextBoxToolbarButtonBaseProps\r\n\r\n\r\n\r\nexport const RichTextBoxToolbarBlockButton = observer(({ elementType, ...props }: RichTextBoxToolbarBlockButtonProps) => {\r\n const editor = useSlate();\r\n const { attrs, ...trimmedProps } = props;\r\n const { onClick, ...trimmedAttrs } = attrs ?? { onClick: undefined };\r\n\r\n const active = RichTextBoxUtils.isBlockActive(editor, elementType);\r\n\r\n return (\r\n {\r\n RichTextBoxUtils.toggleBlock(editor, elementType, active);\r\n if (onClick)\r\n onClick(event);\r\n }, ...trimmedAttrs\r\n }} />\r\n )\r\n});\r\n","import { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { useSlate } from 'slate-react';\r\nimport { RichTextBoxUtils } from '../RichTextBoxUtils';\r\nimport { RichTextBoxFormatValue, RichTextBoxToolbarButtonBaseProps } from '../richTextEditorTypes';\r\nimport { RichTextBoxToolbarButton } from './RichTextBoxToolbarButton';\r\n\r\ntype FormatButtonProps = {\r\n format: RichTextBoxFormatValue,\r\n} & RichTextBoxToolbarButtonBaseProps\r\n\r\n\r\nexport const RichTextBoxToolbarFormatButton = observer(({ format, ...props }: FormatButtonProps) => {\r\n const editor = useSlate();\r\n const { attrs, ...trimmedProps } = props;\r\n const { onClick, ...trimmedAttrs } = attrs ?? { onClick: undefined };\r\n\r\n const active = RichTextBoxUtils.isFormatActive(editor, format);\r\n\r\n\r\n\r\n return (\r\n {\r\n RichTextBoxUtils.toggleFormat(editor, format);\r\n if (onClick)\r\n onClick(event);\r\n }, ...trimmedAttrs\r\n }} />\r\n )\r\n});\r\n","import classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport PropTypes from 'prop-types';\r\nimport React, { PropsWithChildren } from 'react';\r\n\r\nexport type RichTextBoxMenuType = \"dropdown\"\r\n\r\nexport type RichTextBoxMenuProps = {\r\n attrs?: React.HTMLAttributes,\r\n label?: JSX.Element | string | null\r\n}\r\n\r\nconst InternalRichTextBoxMenu = React.forwardRef((\r\n props: PropsWithChildren,\r\n ref: React.ForwardedRef\r\n) => {\r\n const { children, attrs } = props;\r\n const { className, ...trimmedAttributes } = attrs ?? { className: undefined };\r\n const newClassName = classNames('richtextbox-menu', className);\r\n return (
\r\n {children}\r\n
)\r\n});\r\nInternalRichTextBoxMenu.displayName = 'Menu';\r\nInternalRichTextBoxMenu.propTypes = {\r\n children: PropTypes.node\r\n}\r\nexport const RichTextBoxToolbarMenu = observer(InternalRichTextBoxMenu);\r\n","import classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { RichTextBoxColorPickerButton } from './RichTextBoxColorPickerButton';\r\nimport { RichTextBoxIndentButton } from './RichTextBoxIndentButton';\r\nimport { RichTextBoxToolbarBlockButton } from './RichTextBoxToolbarBlockButton';\r\nimport { RichTextBoxToolbarButton } from './RichTextBoxToolbarButton';\r\nimport { RichTextBoxToolbarFormatButton } from './RichTextBoxToolbarFormatButton';\r\nimport { RichTextBoxToolbarMenu } from './RichTextBoxToolbarMenu';\r\n\r\nconst InternalToolbar = React.forwardRef((\r\n props: React.HTMLAttributes,\r\n ref: React.ForwardedRef\r\n) => {\r\n const { children, className, ...trimmedProps } = props;\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n});\r\nInternalToolbar.displayName = 'Toolbar';\r\nInternalToolbar.propTypes = {\r\n className: PropTypes.string\r\n}\r\n\r\nexport const RichTextBoxToolbar = Object.assign(observer(InternalToolbar), {\r\n Button: RichTextBoxToolbarButton,\r\n BlockButton: RichTextBoxToolbarBlockButton,\r\n FormatButton: RichTextBoxToolbarFormatButton,\r\n ColorPickerButton: RichTextBoxColorPickerButton,\r\n IndentButton: RichTextBoxIndentButton\r\n});\r\n","import { Transforms, Node as SlateNode, Text as SlateText, Range as SlateRange, Editor, BaseRange, Path as SlatePath, Element as SlateElement } from \"slate\";\r\nimport { ReactEditor } from \"slate-react\";\r\nimport { RichTextBoxEditor, RichTextBoxFormatValue } from \"./richTextEditorTypes\";\r\nimport { RichTextBoxUtils as _rtb } from './RichTextBoxUtils';\r\nimport { isHotkey } from 'is-hotkey';\r\nimport { TextDirection } from \"slate/dist/interfaces/types\";\r\nimport { RichTextBoxSerialization } from \"./RichTextBoxSerialization\";\r\n\r\ntype HotKeyType = {\r\n [index: string]: string\r\n}\r\n\r\n//hot keys used for toolbar buttons\r\nconst HOTKEYS: HotKeyType = {\r\n 'ctrl+b': 'bold',\r\n 'ctrl+i': 'italic',\r\n 'ctrl+u': 'underline',\r\n 'ctrl+\\\\': 'clear',\r\n 'ctrl+shift+1': 'bullet-list',\r\n 'ctrl+shift+2': 'number-list',\r\n 'ctrl+space': 'tab',\r\n 'ctrl+shift+space': 'tab'\r\n}\r\n\r\n\r\n/**\r\n * You can override how things behave in slate using this hook. For example if you want to support inline images, you can add \r\n * an image element then down in the isVoid and isInLine functions you can return nothing for images (no text) \r\n * and say they can be inline\r\n * @param editor \r\n * @returns \r\n */\r\nexport function withRichTextBox(editor: RichTextBoxEditor, uid: string) {\r\n const { insertText, insertBreak, insertFragment, insertNode, addMark, removeMark, deleteFragment } = editor;\r\n const macroKey = '/';\r\n const isDom = typeof document === 'object';\r\n const hasNoModiferKey = (event: React.KeyboardEvent) => !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey;\r\n let macroMightBeOpen = false;\r\n\r\n /**\r\n * Returns all text nodes that have isMacroSearch turned on\r\n * Important to only use methods that search the Editor after all changes have occurred from previous operations\r\n * I.e. do inserts/transforms on keydown or keyup, and do all the checks in OnSelect\r\n * @returns \r\n */\r\n const getMacroSearchTextNodes = () => {\r\n if (!editor)\r\n return false;\r\n const [match] = Array.from(Editor.nodes(editor, {\r\n at: [],\r\n match: (n) => {\r\n return !Editor.isEditor(n) && SlateText.isText(n) && Boolean(n.isMacroSearch)\r\n },\r\n mode: 'all',\r\n universal: false\r\n\r\n }));\r\n return match && match.length > 0;\r\n }\r\n\r\n /**\r\n * Called when the macro hot key is pressed. If the editor is selected and has focus\r\n * the current cursor locotion will have the mark for \"isMacroSearch\" turned on which will\r\n * enabled the editor leaf element to render a dropdown there.\r\n * @returns \r\n */\r\n const processMacroKeyPress = () => {\r\n if (!editor.selection || !editor.isSelectionSingleCursor(Editor.unhangRange(editor, editor.selection)))\r\n return false;\r\n\r\n const node = editor.getFocusedTextNodeAtCursor();\r\n if (!node)\r\n return false;\r\n\r\n if (node.textNode.isMacroSearch) {\r\n editor.closeMacros();\r\n }\r\n editor.addMark('isMacroSearch', true);\r\n return true;\r\n }\r\n\r\n //DevNote: moved to editor, Utils didn't need it anymore.\r\n /**\r\n * Returns all the top level currently selected block elements and has a match function to narrow them down by type, etc.\r\n * @param editor \r\n * @param match \r\n * @returns \r\n */\r\n const getSelectedBlockNodes = (editor: Editor, match?: (n: SlateNode | SlatePath) => boolean) => {\r\n const { selection } = editor;\r\n if (selection) {\r\n const startIndex = SlateRange.isBackward(selection) ? selection.focus.path[0] : selection.anchor.path[0];\r\n const endIndex = SlateRange.isBackward(selection) ? selection.anchor.path[0] : selection.focus.path[0];\r\n const nodes = [];\r\n for (let index = startIndex; index <= endIndex; ++index) {\r\n nodes.push(editor.children[index]);\r\n }\r\n return nodes.filter(n => !match || match(n));\r\n }\r\n return [];\r\n }\r\n\r\n editor.uid = uid;\r\n\r\n /**\r\n * Closes any existing open macros and sets macroMightBeOpen to false\r\n */\r\n editor.closeMacros = (deleteSlash?: boolean) => {\r\n macroMightBeOpen = false;\r\n //see if any nodes have isMacroSearch turned on\r\n const macroNodes = getMacroSearchTextNodes();\r\n if (macroNodes) {\r\n if (deleteSlash)\r\n //instead of unsetting macroSearch on the current textnode, delete it entirely.\r\n Transforms.removeNodes(editor, {\r\n at: [],\r\n match: (n) => {\r\n return !Editor.isEditor(n) && SlateText.isText(n) && Boolean(n.isMacroSearch)\r\n },\r\n hanging: true\r\n });\r\n else\r\n Transforms.unsetNodes(editor, 'isMacroSearch', {\r\n at: [],\r\n match: (n) => {\r\n return !Editor.isEditor(n) && SlateText.isText(n) && Boolean(n.isMacroSearch)\r\n },\r\n hanging: true,\r\n mode: 'all',\r\n });\r\n }\r\n }\r\n\r\n editor.onKeyDown = (event) => {\r\n if (!editor.selection || !ReactEditor.isFocused(editor))\r\n return;\r\n\r\n if (isDom && hasNoModiferKey(event)) {\r\n if (event.key === macroKey) {\r\n if (processMacroKeyPress()) {\r\n //macro mark was set, set that the macro might be open\r\n macroMightBeOpen = true;\r\n }\r\n return;\r\n }\r\n }\r\n\r\n if (event.key === 'Escape') {\r\n if (Editor.marks(editor)?.isMacroSearch) {\r\n editor.closeMacros();\r\n }\r\n }\r\n\r\n if (event.key === ' ') {\r\n if (Editor.marks(editor)?.isMacroSearch) { //<- this is only if the existing selection has a macro dropdown open, space will close it\r\n editor.closeMacros();\r\n }\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n if (editor.selection) {\r\n //break out of lists if enter on empty item\r\n if (_rtb.tryRemoveEmptyListItemAndBreak(editor)) {\r\n event.preventDefault();\r\n }\r\n }\r\n return;\r\n }\r\n\r\n //all hot keys are ctrl/command modifiers\r\n if (!event.ctrlKey) {\r\n return;\r\n }\r\n\r\n for (const hotkey in HOTKEYS) {\r\n if (isHotkey(hotkey, event as any)) {\r\n event.preventDefault()\r\n const mark = HOTKEYS[hotkey]\r\n switch (mark) {\r\n case \"tab\": {\r\n editor.changeBlockIndent(!event.shiftKey ? undefined : true);\r\n }\r\n break;\r\n case \"bold\":\r\n _rtb.toggleFormat(editor, RichTextBoxFormatValue.bold);\r\n break;\r\n case \"italic\":\r\n _rtb.toggleFormat(editor, RichTextBoxFormatValue.italic);\r\n break;\r\n case \"underline\":\r\n _rtb.toggleFormat(editor, RichTextBoxFormatValue.underline);\r\n break;\r\n case \"clear\":\r\n editor.removeMark(\"format\");\r\n editor.removeMark(\"color\");\r\n _rtb.toggleBlock(editor, \"paragraph\", true);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Deletes the macro search and / placeholder and inserts the specified macro content into the dom at the next block location.\r\n * @param macro \r\n * @returns \r\n */\r\n editor.insertMacro = (html: string) => {\r\n if (!editor || !editor.selection)\r\n return false;\r\n\r\n const doc = RichTextBoxSerialization.parseHtmlToRichText(html);\r\n if (doc) {\r\n editor.closeMacros(true);\r\n Transforms.insertNodes(editor, doc, { at: editor.selection });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n //Select happens when the selection changes in the content editable, \r\n //this fires after all changes have happened\r\n editor.onSelect = () => {\r\n if (!editor.selection || !ReactEditor.isFocused(editor))\r\n return //not selected\r\n\r\n const currentNode = editor.getFocusedTextNodeAtCursor();\r\n if (currentNode) {\r\n if (!currentNode.textNode.isMacroSearch) {\r\n if (macroMightBeOpen) {\r\n //anytime the selection changes to a selection that isn't a macro dropdown, close any existing macros if one might be open\r\n //this will close the macro if the user clicks on something outside of the macro element in the editor.\r\n editor.closeMacros();\r\n }\r\n } else if (currentNode.textNode.text.length === 0 || !currentNode.textNode.text.startsWith(macroKey)) {\r\n //if in a macro block but it's empty (the user deleted the start slash or the text in it, then close the macro dropdown)\r\n if (macroMightBeOpen) {\r\n editor.closeMacros();\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n editor.insertSoftBreak = () => {\r\n if (macroMightBeOpen) {\r\n //don't let users do soft breaks in macro searches\r\n editor.closeMacros();\r\n }\r\n insertText('\\n');\r\n }\r\n\r\n editor.insertText = (text) => {\r\n insertText(text);\r\n };\r\n\r\n editor.insertBreak = () => {\r\n if (editor && editor.marks && editor.marks[\"isMacroSearch\"]) {\r\n editor.closeMacros();\r\n }\r\n insertBreak();\r\n }\r\n\r\n editor.insertFragment = (fragment: SlateNode[]) => {\r\n insertFragment(fragment);\r\n }\r\n\r\n editor.insertNode = (node: SlateNode) => {\r\n insertNode(node);\r\n }\r\n\r\n editor.addMark = (mark: string, value: any) => {\r\n addMark(mark, value);\r\n }\r\n\r\n editor.removeMark = (key: string) => {\r\n removeMark(key);\r\n }\r\n\r\n editor.deleteFragment = (direction?: TextDirection | undefined) => {\r\n deleteFragment(direction);\r\n }\r\n\r\n //#region Extended Helpers\r\n /**\r\n * Determines if the selection is a single point indicating that it is where the cursor is.\r\n * If the selection is empty and contains the same paths in both anchor and in focus and the same offsets\r\n * in focus and in anchor then the selection is just where the cursor is * \r\n * @param range \r\n * @returns True if the selection represents the cursor location, false if it's a bigger selection (like a block highlight)\r\n */\r\n editor.isSelectionSingleCursor = (range: BaseRange) => {\r\n if (_.isEqual(range.anchor.path, range.focus.path) && _.isEqual(range.anchor.offset, range.focus.offset))\r\n return true;\r\n return false;\r\n }\r\n\r\n /**\r\n * Get the currently selected text node at the curor and the cursors index in the text.\r\n * @returns \r\n */\r\n editor.getFocusedTextNodeAtCursor = () => {\r\n if (!ReactEditor.isFocused(editor) || !editor.selection)\r\n return null; //editor is not focused or has no selection (the cursor isn't anywhere either) \r\n\r\n const selection = Editor.unhangRange(editor, editor.selection);\r\n if (!editor.isSelectionSingleCursor(selection))\r\n return null; //selection is not just a cursor\r\n\r\n\r\n if (SlateRange.isRange(selection)) {\r\n const node = SlateNode.get(editor, selection.focus.path);\r\n if (SlateText.isText(node))\r\n return {\r\n cursorOffset: selection.focus.offset,\r\n textNode: node\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //DevNote: Moved changeBlockIndent into our withRichTextBox plugin to move things towards being editor available\r\n //you can get the editor via the useSlate hook, so it's better to move what makes since to our custom editor.\r\n /**\r\n * Change indentation of the current selection\r\n * @param editor \r\n * @param decrease true to reduce 1 level of identation, false or undefined to increase 1 level\r\n * @param indentationLevel if this is set the level goes directly to this number and decrease is ignored\r\n */\r\n editor.changeBlockIndent = (decrease?: boolean, indentationLevel?: number) => {\r\n const { selection } = editor;\r\n if (!selection)\r\n return;\r\n getSelectedBlockNodes(editor, (n => SlateElement.isElement(n))).forEach((node: SlateElement) => {\r\n let newLevel = indentationLevel;\r\n if (newLevel == null) {\r\n if (decrease)\r\n newLevel = Math.max((node.indentationLevel ?? 0) - 1, 0);\r\n else\r\n newLevel = (node.indentationLevel ?? 0) + 1;\r\n }\r\n if (newLevel != null)\r\n Transforms.setNodes(editor, { indentationLevel: newLevel }, { at: ReactEditor.findPath(editor, node) });\r\n });\r\n }\r\n\r\n return editor;\r\n}\r\n","import { observer } from 'mobx-react';\r\nimport React, { CSSProperties, useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { Descendant, createEditor } from 'slate';\r\nimport { Editable, RenderElementProps, RenderLeafProps, Slate, withReact } from 'slate-react';\r\n\r\nimport * as faIcons from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport classNames from 'classnames/dedupe';\r\nimport { withHistory } from 'slate-history';\r\nimport uniqid from 'uniqid';\r\nimport { useFieldSetContext } from '../forms';\r\nimport { MacroDropdown } from './MacroDropdown';\r\nimport { RichTextBoxSerialization } from './RichTextBoxSerialization';\r\nimport {\r\n RichTextBoxFormatValue,\r\n RichTextBoxProps\r\n} from './richTextEditorTypes';\r\nimport { RichTextBoxToolbar } from './toolbar';\r\nimport { withRichTextBox } from './withRichTextBox';\r\nimport { MacroTargetType } from '@common/models/Enums/MacroType';\r\n\r\n/**\r\n * This tells slate how to render elements in our rich text editor. We have complete control\r\n * over how it renders them.\r\n**/\r\nconst InternalElement = observer(({ attributes, children, element, wrapperRef }: RenderElementProps & { wrapperRef: React.RefObject }) => {\r\n const style: React.CSSProperties = {};\r\n\r\n if (element.indentationLevel && element.indentationLevel > 0) {\r\n style.marginLeft = element.indentationLevel.toString() + 'rem';\r\n }\r\n else\r\n style.marginLeft = undefined;\r\n\r\n switch (element.type) {\r\n case 'bulleted-list':\r\n {\r\n return (\r\n
    \r\n {children}\r\n
\r\n )\r\n }\r\n case 'numbered-list': {\r\n return (\r\n
    \r\n {children}\r\n
\r\n )\r\n }\r\n case \"list-item\": {\r\n return (\r\n
  • {children}
  • \r\n )\r\n }\r\n case 'paragraph':\r\n default:\r\n {\r\n return (\r\n

    \r\n {children}\r\n

    \r\n )\r\n }\r\n }\r\n});\r\n\r\nconst InternalLeaf = observer(({ leaf, children, attributes, wrapperRef, macroTargetType,isTrasientKeywords}: RenderLeafProps & { wrapperRef: React.RefObject } & {macroTargetType?:MacroTargetType} & {isTrasientKeywords:boolean}) => {\r\n const leafRef = useRef(null);\r\n const [domElement, setDomElement] = useState(null);\r\n\r\n useEffect(() => {\r\n if (leafRef.current)\r\n setDomElement(leafRef.current);\r\n else\r\n setDomElement(null);\r\n }, [leafRef]);\r\n\r\n const style: CSSProperties = {\r\n }\r\n\r\n if (leaf.color) {\r\n style.color = leaf.color;\r\n }\r\n\r\n const format = leaf.format ?? RichTextBoxFormatValue.none;\r\n let element = children;\r\n\r\n //check if format bits are set for bold/italic/underline, number & another number tells you if the bits in number are in another number\r\n if ((format & RichTextBoxFormatValue.bold) === RichTextBoxFormatValue.bold) {\r\n element = {element};\r\n }\r\n\r\n if ((format & RichTextBoxFormatValue.italic) === RichTextBoxFormatValue.italic) {\r\n element = {element};\r\n }\r\n\r\n if ((format & RichTextBoxFormatValue.underline) === RichTextBoxFormatValue.underline) {\r\n element = {element};\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {element}\r\n \r\n {\r\n domElement && leaf.isMacroSearch && \r\n \r\n }\r\n \r\n );\r\n});\r\n\r\n\r\nexport const RichTextBox = observer(({\r\n placeholder, rows, value, className, disabled, onChange, onBlur,\r\n\tinputRef,\r\n editableProps: {\r\n disabled: editorDisabled = false,\r\n spellCheck = true,\r\n className: editableClassName,\r\n readOnly,\r\n ...remainingEditableProps\r\n } = { readOnly: false },\r\n toolbarProps: {\r\n className: toolbarClassName,\r\n ...toolbarAttrs\r\n } = { className: undefined },\r\n isSMSText,\r\n isToolbarDisabled,\r\n isTrasientKeywords=false,\r\n ...remainingSlateProps}: RichTextBoxProps) => {\r\n\r\n const { isInFieldSet, fieldSetActions } = useFieldSetContext();\r\n const onChangeBounceRef = React.useRef<((descendant: Descendant[]) => void) | undefined>(undefined);\r\n const [initialHtml, setInitialHtml] = React.useState(\"\")\r\n const [initialDocument, setInitialDocument] = React.useState([{ type: 'paragraph', children: [{ text: '' }] }]);\r\n const [internalDocument, setInternalDocument] = React.useState(null);\r\n const [macroTargetType] = React.useState(isSMSText? MacroTargetType.Sms:MacroTargetType.ExamVisit);\r\n\tlet wrapperRef = useRef(null);\r\n\t// Override the default Ref if the RHF ref is passed in the parent component.\r\n if (inputRef !== undefined)\r\n\t\twrapperRef = inputRef as React.RefObject; // casting as the type used throughout the component\r\n //---------------\r\n\r\n useEffect(() => {\r\n if ((value ?? \"\") === initialHtml) //initialHtml is updated by the onChange handler below to prevent round robin updates from RHF\r\n return;\r\n setInitialHtml(value ?? \"\");\r\n const schema = RichTextBoxSerialization.parseHtmlToRichText(value);\r\n if (!_.isEqual(schema, internalDocument)) //only update the internalDocument if it has actually changed coming in from RHF\r\n setInitialDocument(schema);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [value]);\r\n\r\n\r\n //generate the editor and a key so slate will recreate it's editor when the key changes\r\n //but only when the currentSchema has been updated externally via new value values.\r\n const [editor, editorKey] = useMemo(() => {\r\n const key = uniqid();\r\n const newEditor = withRichTextBox(withReact(withHistory(createEditor())), key) //<- this is where you wrap plugins around slate, withRichTextBoxConfig is our plugin\r\n return [\r\n newEditor,\r\n key\r\n ]\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [initialDocument]); //this dep is needed, it makes the memo recreate the editor anytime the initialDocument changes, and only if it changes, resetting the editor looses history\r\n\r\n //determines if the editor should be readonly multiple ways.\r\n const isReadOnly = useMemo(() => {\r\n if (isInFieldSet && fieldSetActions && fieldSetActions.disabled)\r\n return true;\r\n\r\n if (disabled || readOnly || editorDisabled)\r\n return true;\r\n\r\n return false;\r\n }, [isInFieldSet, fieldSetActions, disabled, readOnly, editorDisabled])\r\n\r\n //debounced onChangeHandler, so we don't serialize too fast\r\n const bouncedOnChange = useCallback((descendant: Descendant[]) => {\r\n const serializedRichText = RichTextBoxSerialization.serializeRichTextValueToString(descendant, !isSMSText,isSMSText);\r\n\r\n setInitialHtml(serializedRichText.value ?? \"\"); //<- we set this here so when RHF comes back around it won't trigger an update again\r\n if (onChange)\r\n onChange(serializedRichText.value ?? '');\r\n }, [onChange,isSMSText]);\r\n\r\n /**\r\n * Wrapper around slates onChange handler that will debounce\r\n * it so we don't fire external components like React Hook Forms too fast.\r\n */\r\n const internalOnChange = useCallback((descendant: Descendant[]) => {\r\n if (isReadOnly)\r\n return;\r\n //don't process changes for selection changes, only for operational changes\r\n const isAstChange = editor.operations.some(\r\n op => 'set_selection' !== op.type\r\n )\r\n if (!isAstChange)\r\n return;\r\n\r\n setInternalDocument(descendant);\r\n\r\n if (!onChange)\r\n return;\r\n if (!onChangeBounceRef.current) {\r\n onChangeBounceRef.current = _.debounce((currentDescendant) => {\r\n bouncedOnChange(currentDescendant);\r\n onChangeBounceRef.current = undefined;\r\n }, 250, {\r\n leading: false,\r\n trailing: true\r\n });\r\n }\r\n if (onChangeBounceRef.current)\r\n onChangeBounceRef.current(descendant);\r\n }, [bouncedOnChange, isReadOnly, onChange, editor.operations]);\r\n\r\n useEffect(() => {\r\n //editablecontent divs don't support the rows attribute, so to be consistent with\r\n //everywhere we have rich text editors this **hack** will set minHeight\r\n const editorEl = document.querySelector(`#${editorKey}`);\r\n if (editorEl && rows)\r\n editorEl.style.minHeight = `${Math.max(rows * 1.5, 1.5)}rem`;\r\n }, [rows, editorKey]);\r\n\r\n return \r\n
    \r\n {!isReadOnly && !isSMSText && !isToolbarDisabled &&\r\n \r\n < div className=\"btn-group\" >\r\n } />\r\n } />\r\n
    \r\n
    \r\n } attrs={{ title: 'Bold: ctrl+b\\nclear: ctrl+\\\\' }} />\r\n } attrs={{ title: 'Italicize: ctrl+i\\nclear: ctrl+\\\\' }} />\r\n } attrs={{ title: 'Underline: ctrl+u\\nclear: ctrl+\\\\' }} />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n } />\r\n } />\r\n
    \r\n \r\n }\r\n {\r\n editor.onSelect();\r\n }}\r\n className={classNames(\"richtextbox-content editor\", editableClassName, \"pt-1\")}\r\n readOnly={isReadOnly}\r\n onBlur={onBlur}\r\n renderElement={(props) => }\r\n renderLeaf={(props) => }\r\n {...{ placeholder, spellCheck }}\r\n {...remainingEditableProps}\r\n onKeyDown={editor.onKeyDown}\r\n />\r\n
    \r\n \r\n});\r\n","import { bsClassJustifyContent } from '@common/types/bootstrap';\r\nimport classNames from 'classnames';\r\nimport { isEmpty } from 'lodash';\r\nimport React, { PropsWithChildren } from 'react';\r\nimport { Form, Row, Col } from 'react-bootstrap';\r\nimport { LabelPosition } from \"@common/models/Enums/LabelPosition\";\r\n\r\ninterface IFormGroupProps {\r\n controlId: string,\r\n controlLabel: string,\r\n reverseLabel?: boolean,\r\n controlLabelRowJustifyClass?: bsClassJustifyContent,\r\n controlLabelTailElement?: JSX.Element,\r\n helpId?: string,\r\n helpText?: string\r\n errorId: string\r\n errorMessage?: string\r\n className?: string\r\n labelPosition?: LabelPosition\r\n /**\r\n * Based on the BootStrap grid system, this value define the\r\n * width of the the column where the label will be positioned \r\n * on small breackpoint.\r\n * The value will be used when the LabelPosition is defined\r\n * as LabelPosition.LEFT.\r\n */\r\n labelColumnSmWidth?: number;\r\n /**\r\n * Based on the BootStrap grid system, this value define the\r\n * width of the the column where the input will be positioned\r\n * on small breackpoint.\r\n * The value will be used when the LabelPosition is defined\r\n * as LabelPosition.LEFT.\r\n */\r\n inputColumnSmWidth?: number;\r\n /**\r\n * Based on the BootStrap grid system, this value define the\r\n * width of the the column where the label will be positioned \r\n * on medium breackpoint.\r\n * The value will be used when the LabelPosition is defined\r\n * as LabelPosition.LEFT.\r\n */\r\n labelColumnMdWidth?: number;\r\n /**\r\n * Based on the BootStrap grid system, this value define the\r\n * width of the the column where the input will be positioned\r\n * on medium breackpoint.\r\n * The value will be used when the LabelPosition is defined\r\n * as LabelPosition.LEFT.\r\n */\r\n inputColumnMdWidth?: number;\r\n /**\r\n * Class(es) name(s) for the column where the input will be placed.\r\n */\r\n inputColumClassName?: string;\r\n}\r\n\r\nconst RenderLabel = (controlId: string, label: string, justifyClass: bsClassJustifyContent, labelPosition: LabelPosition,\r\n labelColumnSmWidth?: number, labelColumnMdWidth?: number, controlLabelTailElement?: JSX.Element): JSX.Element => {\r\n if (controlLabelTailElement) {\r\n return (\r\n
    \r\n {!isEmpty(label) && {label}}\r\n {controlLabelTailElement}\r\n
    \r\n )\r\n }\r\n else if (isEmpty(label)) {\r\n return (<>)\r\n }\r\n else {\r\n return RenderLabelPosition(controlId, label, labelPosition, labelColumnSmWidth, labelColumnMdWidth)\r\n }\r\n}\r\n\r\nconst RenderLabelPosition = (controlId: string, label: string, labelPosition: LabelPosition,\r\n labelColumnSmWidth?: number, labelColumnMdWidth?: number): JSX.Element => {\r\n\r\n let labelToRender = <>\r\n\r\n switch (labelPosition) {\r\n\r\n case LabelPosition.TOP:\r\n labelToRender = {label}\r\n break;\r\n\r\n case LabelPosition.LEFT:\r\n labelToRender = \r\n {label}\r\n \r\n break;\r\n }\r\n\r\n return labelToRender\r\n\r\n}\r\n\r\nexport const FormGroup = ({ controlLabelRowJustifyClass = \"justify-content-between\", ...props }: PropsWithChildren) => {\r\n\r\n const {\r\n controlId,\r\n controlLabel,\r\n labelPosition = LabelPosition.TOP,\r\n controlLabelTailElement,\r\n labelColumnSmWidth = 6,\r\n inputColumnSmWidth = 6,\r\n labelColumnMdWidth = 6,\r\n inputColumnMdWidth = 6,\r\n inputColumClassName = \"\"\r\n } = props\r\n let formGroup\r\n\r\n switch (labelPosition) {\r\n\r\n case LabelPosition.LEFT:\r\n formGroup = \r\n \r\n {RenderLabel(controlId, controlLabel, controlLabelRowJustifyClass, labelPosition as LabelPosition,\r\n labelColumnSmWidth, labelColumnMdWidth, controlLabelTailElement)}\r\n \r\n {props.children}\r\n \r\n \r\n \r\n break;\r\n\r\n case LabelPosition.TOP:\r\n formGroup = \r\n {!props.reverseLabel && RenderLabel(\r\n props.controlId,\r\n props.controlLabel,\r\n controlLabelRowJustifyClass,\r\n labelPosition as LabelPosition,\r\n labelColumnSmWidth,\r\n labelColumnMdWidth,\r\n props.controlLabelTailElement\r\n )}\r\n {props.children}\r\n {\r\n props.reverseLabel &&\r\n RenderLabel(props.controlId, props.controlLabel, controlLabelRowJustifyClass, labelPosition as LabelPosition,\r\n labelColumnSmWidth, labelColumnMdWidth, props.controlLabelTailElement)}\r\n {props.helpText && {props.helpText}}\r\n \r\n {props.errorMessage && {props.errorMessage}}\r\n \r\n \r\n break;\r\n }\r\n\r\n return formGroup\r\n}\r\n","export enum VitalsInputErrorMsg {\r\n TEMPERATURE= \"The Temperature range is from 98 - 106. Please enter a valid value.\",\r\n PULSE= \"The Pulse range is from 35 - 210. Please enter a valid value.\",\r\n RESPIRATION= \"The Respiration range is from 1 - 70. Please enter a valid value.\"\r\n}\r\n","import { VitalsInputErrorMsg } from \"@common/models/Enums/CommonAlertMessages\";\r\n\r\nexport const Required = { required: \"Required\" };\r\nexport const MaxLength = (num: number) => ({\r\n value: num,\r\n message: `Max ${num} characters`,\r\n});\r\nexport const MinLength = (num: number) => ({\r\n value: num,\r\n message: `Min ${num} characters`,\r\n});\r\nexport const Patterns = {\r\n /** letters and numbers */\r\n alphaNum: {\r\n value: /^[A-Za-z0-9]*$/,\r\n message: \"Only numbers and letters are allowed.\",\r\n },\r\n /** numbers */\r\n integer: {\r\n value: /^[0-9]*$/,\r\n message: \"Only numbers are allowed.\",\r\n },\r\n /** numbers and periods */\r\n decimal: {\r\n value: /^[+-]?([0-9]*[.])?[0-9]+$/,\r\n message: \"Only numbers and decimals are allowed.\",\r\n },\r\n /** numbers, letters, and symbols */\r\n nonWhiteSpace: {\r\n value: /[^\\s]/,\r\n message: \"Must have at least one number, letter, or symbol\",\r\n },\r\n /** xxx-xxx-xxxx */\r\n phoneWithDashes: {\r\n value: /^[0-9]{3}[-][0-9]{3}[-][0-9]{4}$/i,\r\n message: \"Must have 10 digits\",\r\n },\r\n email: {\r\n value:\r\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/i,\r\n message: \"Must be in the form of @email.com\",\r\n },\r\n url: {\r\n value:\r\n /^((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=+$,\\w]+@)?[A-Za-z0-9.-]+|(?:www\\.|[-;:&=+$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[+~%/.\\w\\-_]*)?\\??(?:[-+=&;%.\\w_]*)#?(?:[.!/\\\\\\w]*))?)$/i,\r\n message: \"Must be in the form https://petco.com/hospital\",\r\n },\r\n /** 1-5 digits */\r\n zipCodeAny: {\r\n value: /^[0-9]{1,5}$/i,\r\n message: \"Zip Code must be 1 to 5 digits.\",\r\n },\r\n /** 5 digits exactly */\r\n zipCodeFull: {\r\n value: /^[0-9]{5}$/i,\r\n message: \"Zip Code must be 5 digits.\",\r\n },\r\n nationwideIdPattern: {\r\n value: /^[-A-Za-z0-9]{8,10}$/,\r\n message: \"Formats allowed: 12345678 or X-12345678\",\r\n },\r\n temperaturePattern: {\r\n value: /^(?:9[89]|10[0-6])|0$/,\r\n message:VitalsInputErrorMsg.TEMPERATURE\r\n },\r\n pulsePattern: {\r\n value: /^(?:3[5-9]|[4-9][0-9]|1[0-9]{2}|20[0-9]|210)|0$/,\r\n message:VitalsInputErrorMsg.PULSE\r\n },\r\n};\r\n","/* eslint-disable no-case-declarations */\r\nimport { RichTextBox } from \"@common/components/richTextBox\";\r\nimport { getOutOfBoundsDate, getRoundedDate } from \"@common/utils/datetimeUtils\";\r\nimport classNames from \"classnames\";\r\nimport { isEmpty } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport React, { useEffect, useMemo, useRef } from \"react\";\r\nimport { Form, FormCheckProps, FormControlProps } from \"react-bootstrap\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport { Controller, ControllerFieldState, ControllerRenderProps, FieldValues, Path } from \"react-hook-form\";\r\nimport { NumericFormat, NumericFormatProps, PatternFormat } from \"react-number-format\";\r\nimport { FormGroup } from \"../FormGroup\";\r\nimport { Patterns } from \"../ValidationRules\";\r\nimport {\r\n\tFormDateInputProps,\r\n\tFormInputProps,\r\n\tFormNumberInputProps,\r\n\tFormRichTextInputProps,\r\n\tFormTelephoneInputProps,\r\n\tFormTextAreaInputProps,\r\n\tFormTimeInputProps,\r\n\tFormatDateInputSerializationFormat,\r\n} from \"./types\";\r\n\r\nexport const spreadAndtransformDefaultValues = (inputValues: T): T => {\r\n\tif (!inputValues) {\r\n\t\treturn inputValues;\r\n\t}\r\n\r\n\tconst transformValue = (value: any): any => {\r\n\t\tif (value === undefined) {\r\n\t\t\treturn null;\r\n\t\t} else if (Array.isArray(value)) {\r\n\t\t\treturn value.map(item => transformValue(item));\r\n\t\t} else if (value instanceof Date) {\r\n\t\t\t// was returning {} instead of Date obj\r\n\t\t\treturn value;\r\n\t\t} else if (typeof value === \"object\") {\r\n\t\t\treturn spreadAndtransformDefaultValues(value);\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t};\r\n\r\n\treturn Object.fromEntries(Object.entries(inputValues).map(([key, value]) => [key, transformValue(value)])) as T;\r\n};\r\n/**\r\n *\r\n * @param value \"MM/dd/yyyy\" | \"yyyy-MM-dd\"\r\n * @param serializationFormat \"short\" | \"iso\"\r\n * @returns JSDate\r\n */\r\nexport const deserializeDate = (value: string, serializationFormat: FormatDateInputSerializationFormat | undefined = \"iso\") => {\r\n\tswitch (serializationFormat) {\r\n\t\tcase \"short\":\r\n\t\t\treturn DateTime.fromFormat(value, \"MM/dd/yyyy\").toJSDate();\r\n\t\tcase \"iso\":\r\n\t\t\treturn DateTime.fromFormat(value.substring(0, 10), \"yyyy-MM-dd\").toJSDate();\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"Unknown Date FormInput serialization format: \" + serializationFormat);\r\n\t}\r\n};\r\n\r\nexport const serializeDate = (value: Date, serializationFormat: FormatDateInputSerializationFormat | undefined = \"iso\") => {\r\n\tswitch (serializationFormat) {\r\n\t\tcase \"short\":\r\n\t\t\treturn DateTime.fromJSDate(value).toFormat(\"MM/dd/yyyy\");\r\n\t\tcase \"iso\":\r\n\t\t\treturn DateTime.fromJSDate(value).toISODate();\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"Unknown Date FormInput serialization format: \" + serializationFormat);\r\n\t}\r\n};\r\n\r\nexport function FormInput(inputProps: FormInputProps) {\r\n\tconst {\r\n\t\tfieldName,\r\n\t\tcontrol,\r\n\t\ttype,\r\n\t\tlabel,\r\n\t\tcontrolId,\r\n\t\tclassName,\r\n\t\tlabelRowJustifyClass = \"justify-content-between\",\r\n\t\tlabelTailElement,\r\n\t\tisRequired,\r\n\t\thelpText,\r\n\t\trules,\r\n\t\thighlightDirty = true,\r\n\t\tallowEmptyString,\r\n\t\tdecimalPlaces,\r\n\t\tlabelPosition,\r\n\t\tlabelColumnSmWidth,\r\n\t\tinputColumnSmWidth,\r\n\t\tlabelColumnMdWidth,\r\n\t\tinputColumnMdWidth,\r\n\t\tinputColumClassName,\r\n\t\t...inputAttrs\r\n\t} = inputProps;\r\n\r\n\tif (isEmpty(label) && isEmpty(controlId)) throw new Error(\"FormInput requires either a 'label' for internally managed labels or a 'controlId' for externally managed labels.\");\r\n\r\n\tconst resolvedControlId = useMemo(() => (controlId ? controlId : `form-${label.replaceAll(/[\\W_]/gi, \"\").toLowerCase()}`), [label, controlId]);\r\n\tconst helpId = useMemo(() => `${resolvedControlId}-help`, [resolvedControlId]);\r\n\tconst errorId = useMemo(() => `${resolvedControlId}-error`, [resolvedControlId]);\r\n\r\n\tconst reverseLabel = type === \"checkbox\" || type === \"radio\";\r\n\r\n\tconst resolvedRules = useMemo(() => {\r\n\t\tconst newRules = rules ?? {};\r\n\t\tif (isRequired) {\r\n\t\t\tif (!newRules[\"required\"]) newRules.required = \"Required\";\r\n\t\t} else {\r\n\t\t\tnewRules.required = rules?.required;\r\n\t\t}\r\n\t\tif (type == \"text\" || type == \"textarea\" || type == undefined) {\r\n\t\t\tif (!newRules[\"pattern\"]) newRules.pattern = Patterns.nonWhiteSpace;\r\n\t\t}\r\n\t\tif (type == \"tel\" && !(inputAttrs as FormTelephoneInputProps).ignorerules) {\r\n\t\t\tif (!newRules[\"pattern\"]) newRules.pattern = Patterns.phoneWithDashes;\r\n\t\t}\r\n\t\treturn newRules;\r\n\t}, [rules, isRequired, type, inputAttrs]);\r\n\r\n\tconst numInputRefs = useRef();\r\n\tconst listenersAttached = useRef(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tfunction cancelWheel(e: Event & { target: HTMLElement }) {\r\n\t\t\tconst { target } = e || {};\r\n\t\t\ttarget.blur();\r\n\t\t}\r\n\t\tif (!listenersAttached.current) {\r\n\t\t\tnumInputRefs && numInputRefs.current?.addEventListener(\"wheel\", cancelWheel, { passive: true });\r\n\t\t\tlistenersAttached.current = true;\r\n\t\t}\r\n\t\t\r\n\t\treturn () => {\r\n\t\t\tif(listenersAttached.current){\r\n\t\t\t\tnumInputRefs.current?.removeEventListener(\"wheel\", cancelWheel, false);\r\n\t\t\t}\r\n\t\t};\r\n\t}, []);\r\n\r\n\tconst removeEmojis = (value: string) => {\r\n\t\treturn value.replace(/(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/g, \"\");\r\n\t};\r\n\r\n\t// choose the\r\n\tconst renderInput = (field: ControllerRenderProps>, fieldState: ControllerFieldState) => {\r\n\t\tconst commonClasses = classNames(className, fieldState.invalid && \"is-invalid\", highlightDirty && fieldState.isDirty && \"is-dirty\");\r\n\r\n\t\tconst commonProps = {\r\n\t\t\tid: resolvedControlId,\r\n\t\t\tref: (el: HTMLInputElement | null | any) => {\r\n field.ref(el);\r\n if (type === 'number' && el) {\r\n numInputRefs.current = el;\r\n }\r\n },\r\n\t\t\t\"aria-describedby\": helpText && helpId,\r\n\t\t\t\"aria-errormessage\": fieldState.error && errorId,\r\n\t\t\t\"aria-invalid\": fieldState.invalid,\r\n\t\t\tisInvalid: fieldState.invalid,\r\n\t\t};\r\n\t\t\r\n\t\tswitch (type) {\r\n\t\t\tcase \"radio\":\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\tcase \"checkbox\":\r\n\t\t\tcase \"switch\":\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\tcase \"number\":\r\n\t\t\t\treturn (\r\n\t\t\t\t\t \"eE\".includes(e.key) && e.preventDefault()} // Prevents type 'e' and 'E' chars\r\n\t\t\t\t\t\tonChange={e => {\r\n\t\t\t\t\t\t\tconst parsed = parseFloat(e.target.value);\r\n\t\t\t\t\t\t\tlet value = isNaN(parsed) ? null : parsed;\r\n\t\t\t\t\t\t\tif (value !== null && decimalPlaces !== undefined) value = parseFloat(value.toFixed(decimalPlaces));\r\n\t\t\t\t\t\t\tfield.onChange(value);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\tcase \"tel\":\r\n\t\t\t\tlet { ref, ...props } = commonProps;\r\n\t\t\t\tlet { mask, ignorerules: _ignorerules, ...telProps } = inputAttrs as FormTelephoneInputProps;\r\n\t\t\t\treturn (\r\n\t\t\t\t\t field.onChange(v.formattedValue == \"\" ? null : v.formattedValue)}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\tcase \"currency\": {\r\n\t\t\t\tlet { ref, ...props } = commonProps;\r\n\t\t\t\treturn (\r\n\t\t\t\t\t field.onChange(v.value == \"\" ? 0 : Number(v.value))}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tcase \"date\": {\r\n\t\t\t\tconst { serializationFormat, ...datePickerAttrs } = inputAttrs as FormDateInputProps;\r\n\t\t\t\treturn (\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tif (ref) {\r\n\t\t\t\t\t\t\t\tcommonProps.ref({\r\n\t\t\t\t\t\t\t\t\tfocus: ref.setFocus,\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t{...datePickerAttrs}\r\n\t\t\t\t\t\tclassName={classNames(\"form-control\", commonClasses)}\r\n\t\t\t\t\t\tonChange={d => field.onChange(d ? serializeDate(d as Date, serializationFormat) : null)}\r\n\t\t\t\t\t\tselected={field.value ? deserializeDate(field.value as string, serializationFormat) : undefined}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tcase \"textarea\":\r\n\t\t\t\tconst { textAreaAllowEmojis, ...textAreaAttr } = inputAttrs as FormTextAreaInputProps;\r\n\t\t\t\treturn (\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tif (textAreaAllowEmojis) {\r\n\t\t\t\t\t\t\t\tfield.onChange(e.target.value);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tconst noEmoji = removeEmojis(e.target.value);\r\n\t\t\t\t\t\t\t\tfield.onChange(noEmoji == \"\" ? null : noEmoji);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tspellCheck={'true'}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\tcase \"richtext\": {\r\n\t\t\t\tconst { toolbarProps, ...richTextAttrs } = inputAttrs as FormRichTextInputProps;\r\n\t\t\t\t//Rich Text Box has multiple levels of components so attributes are split out into sub props. The richTextAttrs will go on the Slate\r\n\t\t\t\t//Component. The editable props will go on the editor inside the slate component. The toolbar props will go on the toolbar\r\n\t\t\t\t//component in the RichTextEditor (the top toolbar)\r\n\t\t\t\treturn (\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tlet emptyHtml = \"

    \";\r\n\t\t\t\t\t\t\tlet validString = e == \"\" || e == emptyHtml ? null : e;\r\n\t\t\t\t\t\t\tfield.onChange(validString);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tcase \"systemtime\":\r\n\t\t\t\treturn (\r\n\t\t\t\t\t field.onChange(e.target.value == \"\" ? (allowEmptyString ? \"\" : null) : e.target.value)}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\tcase \"time\":\r\n\t\t\t\t// eslint-disable-next-line no-case-declarations\r\n\t\t\t\tconst { timeIntervals = 15, openTime, closeTime, ...rest } = inputAttrs as FormTimeInputProps;\r\n\t\t\t\treturn (\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tconst outOfBoundsDate = getOutOfBoundsDate(date as Date, openTime, closeTime);\r\n\t\t\t\t\t\t\tif (outOfBoundsDate) {\r\n\t\t\t\t\t\t\t\tfield.onChange(getRoundedDate(timeIntervals, outOfBoundsDate));\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tfield.onChange(date);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tselected={field?.value ? getRoundedDate(timeIntervals, field.value as Date) : null}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\tcase \"text\":\r\n\t\t\tdefault: {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tconst noEmoji = removeEmojis(e.target.value);\r\n\t\t\t\t\t\t\tfield.onChange(noEmoji == \"\" ? (allowEmptyString ? \"\" : null) : noEmoji);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn (\r\n\t\t {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{renderInput(field, fieldState)}\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t}}\r\n\t\t/>\r\n\t);\r\n}\r\n","import {\r\n\tpetcoBrightGray,\r\n\tpetcoMikadoYellow,\r\n\tpetcoOnyx,\r\n\tpetcoRustyRed,\r\n\tpetcoWarning,\r\n\tpetcoWhite,\r\n} from \"@common/_assets/color-constants.js\";\r\nimport classNames from \"classnames\";\r\nimport React, { useMemo } from \"react\";\r\nimport { Control, Controller, FieldPath, FieldPathValue, FieldValues, NestedValue } from \"react-hook-form\";\r\nimport Select, { GroupBase, OnChangeValue, Props } from \"react-select\";\r\nimport { FormGroup } from \"./FormGroup\";\r\nimport { LabelPosition } from \"@common/models/Enums/LabelPosition\";\r\ninterface IFormSelectProps<\r\n\tTFieldValues extends FieldValues,\r\n\tTName extends FieldPath,\r\n\tOption,\r\n\tIsMulti extends boolean,\r\n\tGroup extends GroupBase
    \r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t (\r\n\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tchangeFormValue(mapOptionToValue(selectedOption) ?? null);\r\n\t\t\t\t\t\t\tonOptionChanged && onOptionChanged(selectedOption);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tid={controlId}\r\n\t\t\t\t\t\taria-label={label}\r\n\t\t\t\t\t\taria-describedby={helpText && helpId}\r\n\t\t\t\t\t\taria-errormessage={error && errorId}\r\n\t\t\t\t\t\taria-invalid={invalid}\r\n\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\"petco-form-select\",\r\n\t\t\t\t\t\t\tclassName,\r\n\t\t\t\t\t\t\tinvalid && \"is-invalid\",\r\n\t\t\t\t\t\t\tisDirty && highlightDirty && \"is-dirty\"\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tstyles={selectStyles(invalid, isDirty, highlightDirty, dropdownShouldGrowModal)}\r\n\t\t\t\t\t\t{...attrsFromProps}\r\n\t\t\t\t\t\tref={fieldRef}\r\n\t\t\t\t\t\tcomponents={{ ClearIndicator }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t/>\r\n\t);\r\n}\r\n\r\nexport type TriStateSelectOption = {\r\n\tname: string;\r\n\tvalue: boolean | null;\r\n};\r\n\r\nexport const TriStateSelectOptions: TriStateSelectOption[] = [\r\n\t{\r\n\t\tname: \"Any\",\r\n\t\tvalue: null,\r\n\t},\r\n\t{\r\n\t\tname: \"Yes\",\r\n\t\tvalue: true,\r\n\t},\r\n\t{\r\n\t\tname: \"No\",\r\n\t\tvalue: false,\r\n\t},\r\n];\r\n","import { useClickOutside } from \"@common/hooks\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useCallback, useRef, useState } from \"react\";\r\nimport { HexColorPicker } from \"react-colorful\";\r\n\r\ninterface IProps {\r\n color: string | undefined;\r\n onChange: (newColor: string) => void;\r\n isOverlay?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\nexport const ColorPickerPopover = observer(({ color, onChange, isOverlay, disabled }: IProps) => {\r\n const popover = useRef(null);\r\n const [isOpen, toggle] = useState(false);\r\n const close = useCallback(() => toggle(false), []);\r\n useClickOutside(popover, close);\r\n\r\n return (\r\n
    \r\n toggle(true)}\r\n />\r\n\r\n {(isOpen && !disabled) && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n});\r\n","import classNames from 'classnames';\r\nimport React from 'react';\r\nimport { Button, Image } from 'react-bootstrap';\r\n\r\nexport interface IActionButtonProps extends React.HTMLAttributes {\r\n iconclass?: string,\r\n text: string,\r\n disabled?: boolean,\r\n src?: string | undefined,\r\n}\r\n\r\nexport const ActionButton = (props: IActionButtonProps) => {\r\n const { className } = props;\r\n return (\r\n )\r\n}\r\n","import { range } from 'lodash';\r\nimport { DateTime } from 'luxon';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\r\nimport DatePicker from 'react-datepicker';\r\nimport { ChangeHandler, InternalFieldName } from 'react-hook-form';\r\n\r\ninterface ICustomDatePickerProps {\r\n name: InternalFieldName;\r\n onChange: ChangeHandler;\r\n onBlur: ChangeHandler;\r\n}\r\nconst years = range(1990, new Date().getFullYear() + 11);\r\nconst months = [\r\n \"January\",\r\n \"February\",\r\n \"March\",\r\n \"April\",\r\n \"May\",\r\n \"June\",\r\n \"July\",\r\n \"August\",\r\n \"September\",\r\n \"October\",\r\n \"November\",\r\n \"December\",\r\n];\r\nconst fToken = 'MM-dd-yyyy';\r\nconst CustomDatePickerWithForwardedRef = React.forwardRef(({ onChange, onBlur, name }, ref) => {\r\n const [selectedDate, setSelectedDate] = useState(null);\r\n const inputRef = useRef(null);\r\n useEffect(() => {\r\n if (!inputRef)\r\n return;\r\n if (typeof ref === 'function')\r\n ref(inputRef.current);\r\n else\r\n if (ref !== null)\r\n ref.current = inputRef.current;\r\n if (inputRef.current) {\r\n if (inputRef.current.value) {\r\n try {\r\n if (!selectedDate) { //only set initial date if it hasn't already been set via onchange handlers\r\n let date = DateTime.fromISO(inputRef.current.value);\r\n setSelectedDate(date);\r\n }\r\n } catch (err) {\r\n console.debug(err);\r\n }\r\n }\r\n }\r\n\r\n\r\n }, [inputRef, ref, selectedDate]);\r\n\r\n //we need to intercept react hook forms on change so we can update our state we'll use to set the date picker's selected\r\n const internalInputChange = useCallback((event: any) => {\r\n if (event.target.value) {\r\n let date = DateTime.fromFormat(event.target.value, fToken);\r\n setSelectedDate(date);\r\n }\r\n onChange(event); //call the original onChange handler from hook forms\r\n }, [onChange])\r\n\r\n //this fires when you select a date in the date picker, we need to get the native setter on the input wrapper\r\n //and trigger it's input event which will natively fire it's on Change event and cause our internalInputChange wrapper to fire thus updating react hook forms value tracking\r\n const dateOnChange = useCallback((date: Date) => {\r\n if (inputRef.current) {\r\n var nativeSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, \"value\")?.set;\r\n var lxDate = DateTime.fromISO(date.toISOString());\r\n nativeSetter?.call(inputRef.current, lxDate.toFormat(fToken));\r\n inputRef.current.dispatchEvent(new Event('input', { bubbles: true }));\r\n }\r\n }, [inputRef]);\r\n\r\n //notice the visually hidden input, I created a dummy input here for react hook forms to hook up to, we set the date picker from that input\r\n return (\r\n <>\r\n \r\n (\r\n \r\n \r\n changeYear(new Date(value).getFullYear() + 1)}\r\n >\r\n {years.map((option) => (\r\n \r\n ))}\r\n \r\n\r\n \r\n changeMonth(months.indexOf(value))\r\n }\r\n >\r\n {months.map((option) => (\r\n \r\n ))}\r\n \r\n\r\n \r\n \r\n\r\n )}\r\n />\r\n \r\n )\r\n});\r\nCustomDatePickerWithForwardedRef.displayName = 'CustomDatePicker';\r\nCustomDatePickerWithForwardedRef.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n onBlur: PropTypes.func.isRequired\r\n}\r\nexport const CustomDatePicker = React.memo(CustomDatePickerWithForwardedRef);\r\n","import React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nexport const DeleteButton = (props:React.HTMLAttributes) =>\r\n \r\n","/* eslint-disable react/prop-types */\r\nimport classNames from 'classnames';\r\nimport { uniqueId } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { Button, Form, FormControlProps } from 'react-bootstrap';\r\nimport { ChangeHandler, InternalFieldName } from 'react-hook-form';\r\n\r\n\r\ninterface FileListProps {\r\n files: FileList\r\n}\r\n\r\nconst FileList = observer(({ files }: FileListProps) => {\r\n const rows: File[] = [];\r\n for (let i = 0; i < files.length; ++i)\r\n rows.push(files[i]);\r\n return (\r\n
      \r\n {\r\n rows.map((file, index) =>\r\n
    • \r\n \r\n
    • \r\n )\r\n }\r\n
    \r\n )\r\n});\r\n\r\nexport interface FileUploadProps extends FormControlProps {\r\n labelText?: string;\r\n emptyText?: string;\r\n uploadButtonText: string;\r\n isInvalid?: boolean;\r\n busy?: boolean;\r\n shouldClearFiles?: boolean;\r\n accept?: string;\r\n multiple?: boolean;\r\n name: InternalFieldName;\r\n className?: string;\r\n helpText?: string;\r\n filesAcquiredCallback?: (files: FileList) => void //need this to pass selected files out so we can render a preview of the file being uploaded\r\n onChange: ChangeHandler;\r\n onBlur: ChangeHandler;\r\n}\r\n// If defined, both are required\r\ntype IDirtyTrack = {\r\n highlightDirty?: undefined\r\n isDirty?: undefined\r\n} | {\r\n highlightDirty: boolean,\r\n isDirty: boolean | undefined\r\n}\r\n\r\nconst FileUploadWithForwardedRef = React.forwardRef(({ uploadButtonText, emptyText, labelText, accept, multiple, isInvalid, shouldClearFiles: shouldClearFiles, busy, isDirty, highlightDirty, filesAcquiredCallback, ...props }: (FileUploadProps & IDirtyTrack), ref) => {\r\n const inputRef = useRef(null);\r\n const [fileList, setFileList] = useState(null);\r\n const fileCount = fileList !== null ? fileList.length : 0;\r\n\r\n const controlId = useMemo(() => `form-${(labelText ? labelText : uniqueId()).replaceAll(/[\\W_]/ig, '').toLowerCase()}`, [labelText]);\r\n\r\n if (!props.name) throw 'register was not called with a valid name for BlobFileUpload';\r\n useEffect(() => {\r\n if (!inputRef) return;\r\n\r\n if (typeof ref === 'function') {\r\n ref(inputRef.current);\r\n if (inputRef && inputRef.current) setFileList(inputRef.current.files);\r\n } else {\r\n if (ref !== null) ref.current = inputRef.current;\r\n }\r\n }, [inputRef, ref, props.name]);\r\n\r\n const uploadButtonClicked = useCallback((e: any) => {\r\n if (inputRef && inputRef.current) {\r\n inputRef.current.click();\r\n e.stopPropagation();\r\n }\r\n }, [inputRef]);\r\n\r\n const onChangeImpl = useCallback(async (event: React.ChangeEvent) => {\r\n if (event.target.files && event.target.files) {\r\n const fileList = event.target.files;\r\n if (filesAcquiredCallback) {\r\n filesAcquiredCallback(fileList);\r\n\r\n }\r\n\r\n setFileList(fileList);\r\n }\r\n return await props.onChange(event).then(() => {\r\n if (shouldClearFiles) {\r\n setFileList(null);\r\n }\r\n }); //pass up the onChange to react hook forms register onChange\r\n }, [setFileList, props, filesAcquiredCallback, shouldClearFiles]);\r\n\r\n return (\r\n
    \r\n \r\n {\r\n labelText &&\r\n {labelText}\r\n }\r\n
    \r\n {\r\n fileList && fileCount > 1 && <>\r\n \r\n
    \r\n \r\n
    \r\n \r\n }\r\n {\r\n fileCount <= 1 &&\r\n
    \r\n \r\n \r\n
    \r\n }\r\n
    \r\n
    \r\n )\r\n});\r\nFileUploadWithForwardedRef.displayName = \"BlobFileUpload\";\r\n\r\n/**\r\n * A reusable File Upload control that works with react hook form's register method. There is a catch, the form data will be a FileList object,\r\n * use the upload store to handle uploads with FileList objects, you'll have to mutate your Form Data object into the proper entity type for your\r\n * model before saving it to the back end.\r\n */\r\nexport const FileUpload = observer(FileUploadWithForwardedRef);\r\n","import { FormInput, FormSelect } from \"@common/components/forms\";\r\nimport { DisplayGroup } from '@common/components/forms/fields';\r\nimport { useApp } from \"@common/hooks\";\r\nimport { VisitSalesItemAttributeListValueModel } from \"@common/models\";\r\nimport { IRabiesInformationModel } from '@common/models/RabiesInformationModel';\r\nimport { ISalesItemAttributeListValueStorageModel } from \"@common/models/requests\";\r\nimport { observer } from 'mobx-react';\r\nimport { Col, Row } from \"react-bootstrap\";\r\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { useFormContext, useWatch } from 'react-hook-form';\r\n\r\ninterface IProps {\r\n attributeListValueModel: ISalesItemAttributeListValueStorageModel;\r\n setAttributeListValueModel: (value: ISalesItemAttributeListValueStorageModel) => void;\r\n existingAttributeListValues: VisitSalesItemAttributeListValueModel[];\r\n setInvalidFormat: (value: boolean) => void;\r\n salesItemId: number;\r\n onNewLotNumberChange: (isReadOnly: boolean) => void;\r\n}\r\n\r\nexport const ExamFormVisitBuilderAddNewLotNumber = observer(({\r\n attributeListValueModel,\r\n setAttributeListValueModel,\r\n existingAttributeListValues,\r\n setInvalidFormat,\r\n salesItemId,\r\n onNewLotNumberChange\r\n}: IProps) => {\r\n const [showEdit, setShowEdit] = useState(false);\r\n const { configuration } = useApp();\r\n const { rabiesInformations } = configuration;\r\n\r\n const filteredRabies = useMemo(() => {\r\n const contents = rabiesInformations.flatMap(r => r.contents);\r\n const filteredContents = contents.filter(r => r.salesItemId === salesItemId).map(r => r.rabiesInformationId);\r\n return rabiesInformations.filter(r => filteredContents.includes(r.rabiesInformationId));\r\n }, [rabiesInformations, salesItemId]);\r\n\r\n const [selectedVaccine, setSelectedVaccine] = useState();\r\n const { control, resetField } = useFormContext();\r\n\r\n const addNewLotNumber = useWatch({ control, name: 'addNewLotNumber' }) ?? false;\r\n const newLotNumber = useCallback(() => {\r\n onNewLotNumberChange(showEdit);\r\n\r\n setShowEdit(!showEdit);\r\n setSelectedVaccine(undefined);\r\n\r\n resetField('lotNumber');\r\n resetField('serialNumber');\r\n resetField('expirationDate');\r\n\r\n const newModel: ISalesItemAttributeListValueStorageModel = {\r\n ...attributeListValueModel,\r\n serialNumber: undefined,\r\n expirationDate: undefined,\r\n vaccineName: undefined,\r\n virusType: undefined,\r\n manufacturer: undefined,\r\n administered: undefined,\r\n editing: !showEdit,\r\n };\r\n setAttributeListValueModel(newModel);\r\n }, [showEdit, resetField, attributeListValueModel, onNewLotNumberChange, setAttributeListValueModel]);\r\n\r\n useEffect(() => {\r\n if (addNewLotNumber === showEdit)\r\n return;\r\n\r\n newLotNumber();\r\n }, [newLotNumber, addNewLotNumber, showEdit]);\r\n\r\n const lotNumber = useWatch({ control, name: 'lotNumber' }) ?? \"\";\r\n const serialNumber = useWatch({ control, name: 'serialNumber' }) ?? \"\";\r\n\r\n useEffect(() => {\r\n const serial = `${lotNumber} / ${serialNumber}`;\r\n if (lotNumber === \"\" || serialNumber === \"\" || serial === attributeListValueModel?.serialNumber) return;\r\n\r\n const newModel: ISalesItemAttributeListValueStorageModel = {\r\n ...attributeListValueModel,\r\n serialNumber: serial\r\n };\r\n\r\n setAttributeListValueModel(newModel);\r\n }, [serialNumber, lotNumber, attributeListValueModel, setAttributeListValueModel]);\r\n\r\n\r\n const expirationDate = useWatch({ control, name: 'expirationDate' }) ?? \"\";\r\n\r\n useEffect(() => {\r\n if ((expirationDate === attributeListValueModel.expirationDate) ||\r\n (expirationDate === \"\" && attributeListValueModel.expirationDate === undefined)) return;\r\n let newModel: ISalesItemAttributeListValueStorageModel;\r\n\r\n if (expirationDate === \"\") {\r\n newModel = {\r\n ...attributeListValueModel,\r\n expirationDate: undefined\r\n };\r\n }\r\n else {\r\n newModel = {\r\n ...attributeListValueModel,\r\n expirationDate: expirationDate\r\n };\r\n }\r\n setAttributeListValueModel(newModel);\r\n }, [expirationDate, attributeListValueModel, setAttributeListValueModel]);\r\n\r\n const lotNumberInvalid = useCallback(() => {\r\n return (lotNumber.length < 6 || (lotNumber?.indexOf(\" \") >= 1));\r\n }, [lotNumber]);\r\n\r\n const serialNumberInvalid = useCallback(() => {\r\n return (serialNumber.length < 6 || (serialNumber?.indexOf(\" \") >= 1));\r\n }, [serialNumber]);\r\n\r\n const lotSerialExists = useCallback(() => {\r\n const value = attributeListValueModel?.serialNumber;\r\n if (value === undefined) return false;\r\n return existingAttributeListValues?.find(a => a.storageParsed.serialNumber.toLowerCase() === value.toLowerCase()) !== undefined;\r\n }, [attributeListValueModel?.serialNumber, existingAttributeListValues]);\r\n\r\n useEffect(() => {\r\n setInvalidFormat(lotNumberInvalid() || serialNumberInvalid() || lotSerialExists());\r\n }, [lotNumberInvalid, serialNumberInvalid, lotSerialExists, setInvalidFormat]);\r\n\r\n return (\r\n <>\r\n \r\n {\r\n showEdit &&\r\n <>\r\n r.fullName}\r\n getOptionValue={r => r.fullName}\r\n onOptionChanged={opt => {\r\n if (opt !== null) {\r\n setSelectedVaccine(opt);\r\n const newModel: ISalesItemAttributeListValueStorageModel = {\r\n ...attributeListValueModel,\r\n administered: opt.vaccineAdministeredName,\r\n vaccineName: opt.vaccineName,\r\n virusType: opt.vaccineVirusTypeName,\r\n manufacturer: opt.vaccineManufacturerName\r\n };\r\n setAttributeListValueModel(newModel);\r\n } else {\r\n setSelectedVaccine(undefined);\r\n const newModel: ISalesItemAttributeListValueStorageModel = {\r\n ...attributeListValueModel,\r\n administered: '',\r\n vaccineName: '',\r\n virusType: '',\r\n manufacturer: ''\r\n };\r\n setAttributeListValueModel(newModel);\r\n }\r\n }}\r\n mapOptionToValue={(r) => r?.rabiesInformationId}\r\n mapValueToOption={() => _.find(filteredRabies, { rabiesInformationId: selectedVaccine?.rabiesInformationId })}\r\n isClearable={true}\r\n fieldName={\"rabiesInformationId\"}\r\n control={control}\r\n label=\"Vaccine Name\" />\r\n \r\n \r\n \r\n {lotNumberInvalid() && (\r\n
    \r\n Invalid Format Detected. Lot number should be at least 6 characters long and have no whitespace.\r\n
    \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {serialNumberInvalid() && (\r\n
    \r\n Invalid Format Detected. Serial number should be at least 6 characters long and have no whitespace.\r\n
    \r\n )}\r\n \r\n
    \r\n {lotSerialExists() && (\r\n
    \r\n Lot number / Serial number already exists.\r\n
    \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 { Patterns } from \"@common/components/forms\";\r\n\r\nexport const onKeyZipCodeValidation = (event: any) => {\r\n const zipRegEx = Patterns.zipCodeAny.value;\r\n const zipLength=event?.target.value.length;\r\n if (zipLength >= 5 || !zipRegEx.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n}\r\n\r\nexport const onKeyWholeNumberValidation = (event: any) => {\r\n const digitsRegEx = Patterns.integer.value;\r\n if (!digitsRegEx.test(event.key) || event.type == 'paste') {\r\n event.preventDefault();\r\n }\r\n}\r\n\r\nexport const onKeyDecimalValidation = (event: any) => {\r\n const decimalRegEx = Patterns.decimal.value;\r\n if (!decimalRegEx.test(event.key) && event.key != '.') {\r\n event.preventDefault();\r\n }\r\n}\r\n","import { Patterns } from \"@common/components/forms/controls/ValidationRules\";\r\nimport { VisitSalesItemAttributeListValueModel } from '@common/models/VisitSalesItemAttributeListValueModel';\r\nimport { VisitSalesItemAttributeModel } from '@common/models/VisitSalesItemAttributeModel';\r\nimport { VisitSalesItemModel } from '@common/models/VisitSalesItemModel';\r\nimport {\r\n ISalesItemAttributeListValueStorageModel,\r\n} from \"@common/models/requests/SalesItemAttributeListValueStorageModel\";\r\nimport { ExamFormVisitBuilderAddNewLotNumber } from \"@hospital/views/exam/ExamFormVisitBuilderAddNewLotNumber\";\r\nimport { find, findIndex, isNull } from 'lodash';\r\nimport { DateTime } from 'luxon';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { Button, Col, Form } from 'react-bootstrap';\r\nimport { Controller, UseFormReturn, useFormContext } from 'react-hook-form';\r\nimport { SingleValue } from 'react-select';\r\nimport { FormInput, FormSelect } from '.';\r\nimport { DisplayGroup } from '../fields';\r\nimport { onKeyWholeNumberValidation,onKeyDecimalValidation } from \"@common/utils/validationUtils\";\r\nimport { maxExpirationDate } from \"@common/utils\";\r\nimport classNames from \"classnames\";\r\nimport { ReminderDays } from \"@common/models/Enums/ReminderDays\";\r\nimport { SalesItemAttributeType, Traits } from \"@common/models/Enums\";\r\n\r\ninterface IAttributeProps {\r\n attribute: VisitSalesItemAttributeModel,\r\n index: number\r\n}\r\n\r\ninterface IRemindersProps {\r\n visitSalesItem: VisitSalesItemModel,\r\n visitDate: DateTime | undefined,\r\n methods: UseFormReturn,\r\n setInvalidDueDate: (value: boolean) => void\r\n}\r\ninterface IReminderButtonProps {\r\n reminderDays: ReminderDays,\r\n salesItemReminderDays: number,\r\n label: string,\r\n setReminderDays: (value: number) => void;\r\n}\r\n\r\nexport const DataLabelAttribute = observer(({ attribute }: IAttributeProps) =>\r\n \r\n)\r\n\r\nexport const DataEntryAttribute = observer(({ attribute, index }: IAttributeProps) => {\r\n const { control } = useFormContext();\r\n return \r\n})\r\n\r\nexport const DataEntryNumberAttribute = observer(({ attribute, index }: IAttributeProps) => {\r\n const { control } = useFormContext();\r\n return onKeyDecimalValidation(e)}\r\n />\r\n})\r\n\r\nexport const DataEntryDigitsAttribute = observer(({ attribute, index }: IAttributeProps) => {\r\n const { control } = useFormContext();\r\n return onKeyWholeNumberValidation(e)}\r\n onPaste={(e) => onKeyWholeNumberValidation(e)}\r\n fieldName={`visitSalesItemAttributes.${index}.stringValue`}\r\n disabled={attribute.isReadOnly}\r\n autoComplete=\"off\" />\r\n})\r\n\r\nexport const DateSelectorAttribute = observer(({ attribute, index }: IAttributeProps) => {\r\n const { control } = useFormContext();\r\n return \r\n});\r\n\r\nexport const ReminderDueDateAttribute = observer(({ visitSalesItem, visitDate, methods,setInvalidDueDate }: IRemindersProps) => {\r\n\r\n const [reminderDays, setReminderDays] = useState(visitSalesItem.salesItemReminderDays || null);\r\n const allowVaccines = visitSalesItem.visitSalesItemTraits.some(t => t.traitId == Traits.AllowCustomRemindersVaccines);\r\n const isRabiesSalesItem = visitSalesItem.visitSalesItemAttributes.some(vsia => vsia.salesItemAttributeTypeId === SalesItemAttributeType.Rabies);\r\n const localVisitDate = visitDate?.startOf(\"day\");\r\n const minDate = visitDate?.plus({ days: 1 });\r\n const { control,watch,setValue } = useFormContext();\r\n const dueDate = watch(\"dueDate\");\r\n\r\n useEffect(() => {\r\n const salesItemReminderDays = !_.isNil(dueDate) ? Math.trunc(DateTime.fromISO(dueDate).diff(localVisitDate!, 'days').days) : null;\r\n if (salesItemReminderDays != reminderDays) {\r\n methods.setValue(`salesItemReminderDays`, salesItemReminderDays);\r\n setReminderDays(salesItemReminderDays);\r\n }\r\n setInvalidDueDate(_.isNil(dueDate));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [dueDate]);\r\n\r\n useEffect(() => {\r\n setReminderDays(reminderDays);\r\n methods.setValue(`salesItemReminderDays`, reminderDays);\r\n if (reminderDays) {\r\n setValue(\"dueDate\", localVisitDate!.plus({ days: reminderDays! }).toISO());\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [reminderDays]);\r\n\r\n useEffect(() => {\r\n if(visitSalesItem.salesItemReminderDays !== reminderDays){\r\n setReminderDays(visitSalesItem.salesItemReminderDays);\r\n }\r\n }, [visitSalesItem.salesItemReminderDays]);\r\n\r\n return <>\r\n \r\n \r\n {!dueDate && allowVaccines &&
    Required
    }\r\n \r\n\r\n
    \r\n {!isRabiesSalesItem && }\r\n {!allowVaccines && !isRabiesSalesItem && }\r\n {!isRabiesSalesItem && }\r\n \r\n {(allowVaccines || isRabiesSalesItem)&& }\r\n
    \r\n \r\n});\r\n\r\nconst ReminderDayButton = observer(({ reminderDays, salesItemReminderDays, label, setReminderDays }: IReminderButtonProps) => {\r\n\r\n const variant = salesItemReminderDays == reminderDays ? \"primary\" : \"secondary\";\r\n const className = salesItemReminderDays === reminderDays ? \"\" : \"btn-outline-primary\";\r\n\r\n const onUpdateReminderDay = () => {\r\n setReminderDays(reminderDays);\r\n }\r\n\r\n return \r\n});\r\n\r\nexport const YesNoAttribute = observer(({ attribute, index }: IAttributeProps) => {\r\n const { control, setValue } = useFormContext();\r\n return
    \r\n {attribute.name}\r\n {yesNo.map((opt: { label: string, value: boolean }, listValueIndex) => (\r\n \r\n {\r\n onChange(args);\r\n setValue(`visitSalesItemAttributes.${index}.bitValue`, opt.value)\r\n }}\r\n />}\r\n />))}\r\n
    \r\n})\r\n\r\nexport const ListAttribute = observer(({ attribute, index }: IAttributeProps) => {\r\n const { control, setValue } = useFormContext();\r\n return
    \r\n {attribute.name}\r\n {attribute.visitSalesItemAttributeListValues.map((opt, listValueIndex) => (\r\n \r\n {\r\n onChange(args);\r\n if (attribute.allowMultiple) return;\r\n [...Array(attribute.visitSalesItemAttributeListValues.length).keys()]\r\n .forEach(i => setValue(`visitSalesItemAttributes.${index}.visitSalesItemAttributeListValues.${i}.isSelected`, i == listValueIndex))\r\n }}\r\n />}\r\n />))}\r\n
    \r\n})\r\n\r\nexport const BarcodeAttribute = observer(({ attribute, index }: IAttributeProps) => {\r\n // const { control } = useFormContext();\r\n return <>\r\n})\r\n\r\ninterface IAttributeListValueStorageModelProps extends IAttributeProps {\r\n attributeListValueStorageModel: ISalesItemAttributeListValueStorageModel;\r\n setAttributeListValueStorageModel: (value: ISalesItemAttributeListValueStorageModel) => void;\r\n setInvalidFormat: (value: boolean) => void;\r\n visitDate: DateTime | undefined;\r\n salesItemId: number;\r\n}\r\n\r\nexport const RabiesAttribute = observer(({ attribute, index, attributeListValueStorageModel, setAttributeListValueStorageModel, setInvalidFormat, visitDate, salesItemId }: IAttributeListValueStorageModelProps) => {\r\n const { control, setValue, getValues } = useFormContext();\r\n\r\n // The details (manufacturer, expiration, etc of the selected vaccine.\r\n // These will be shown back to the vet to help confirm they chose the right one.\r\n const initialVaccineDetails = find(attribute.visitSalesItemAttributeListValues, { isSelected: true })\r\n const [vaccineDetails, setVaccineDetails] = React.useState(initialVaccineDetails?.storageParsed);\r\n\r\n const onOptionChanged = (opt: SingleValue) => {\r\n if (isNull(opt)) {\r\n [...Array(attribute.visitSalesItemAttributeListValues.length).keys()]\r\n .forEach(i => setValue(`visitSalesItemAttributes.${index}.visitSalesItemAttributeListValues.${i}.isSelected`, false))\r\n setVaccineDetails(undefined);\r\n } else {\r\n // Find the index of the selected option\r\n const optIndex = findIndex(attribute.visitSalesItemAttributeListValues, { visitSalesItemAttributeListValueId: opt?.visitSalesItemAttributeListValueId });\r\n // Update the `isSelected` state of all options. The selected option (if any) should have `isSelected = true` and all others false.\r\n [...Array(attribute.visitSalesItemAttributeListValues.length).keys()]\r\n .forEach(i => setValue(`visitSalesItemAttributes.${index}.visitSalesItemAttributeListValues.${i}.isSelected`, i == optIndex))\r\n // Update the stored details of the selected vaccine (if any).\r\n setVaccineDetails(optIndex ? attribute.visitSalesItemAttributeListValues[optIndex].storageParsed : undefined);\r\n }\r\n }\r\n\r\n const nonExpiredRabies = attribute.visitSalesItemAttributeListValues.filter(r => {\r\n const expirationDate = DateTime.fromFormat(r.storageParsed?.expirationDate, \"M/d/yyyy\");\r\n return expirationDate > visitDate!\r\n });\r\n\r\n const onNewLotNumberChange = (isReadOnly: boolean) => {\r\n attribute.isReadOnly = !isReadOnly;\r\n }\r\n\r\n return
    \r\n opt.visitSalesItemAttributeListValueId.toString()}\r\n mapOptionToValue={opt => opt?.visitSalesItemAttributeListValueId.toString()}\r\n mapValueToOption={val => find(attribute.visitSalesItemAttributeListValues, { visitSalesItemAttributeListValueId: Number(val) })}\r\n onOptionChanged={onOptionChanged}\r\n isClearable={true} />\r\n {\r\n _.isNil(getValues(`visitSalesItemAttributes.${index}.selectedRabiesVaccineId`)) ?\r\n : <>\r\n }\r\n {vaccineDetails &&\r\n
    \r\n {vaccineDetails[\"vaccineName\"] &&
    Vaccine Name: {vaccineDetails[\"vaccineName\"]}
    }\r\n {vaccineDetails[\"serialNumber\"] &&
    Lot # / Serial #: {vaccineDetails[\"serialNumber\"]}
    }\r\n {vaccineDetails[\"manufacturer\"] &&
    Manufacturer: {vaccineDetails[\"manufacturer\"]}
    }\r\n {vaccineDetails[\"expirationDate\"] &&
    Exp Date: {DateTime.fromFormat(vaccineDetails[\"expirationDate\"], \"M/d/yyyy\").toLocaleString(DateTime.DATE_SHORT)}
    }\r\n {vaccineDetails[\"virusType\"] &&
    Virus Type: {vaccineDetails[\"virusType\"]}
    }\r\n {vaccineDetails[\"administered\"] &&
    Administered: {vaccineDetails[\"administered\"]}
    }\r\n
    \r\n }\r\n
    \r\n})\r\n\r\nconst yesNo = [\r\n { label: \"Yes\", value: true },\r\n { label: \"No\", value: false },\r\n];\r\n\r\nconst formatRabiesVaccineName = (value: VisitSalesItemAttributeListValueModel) => {\r\n const expirationDate = DateTime.fromFormat(value.storageParsed[\"expirationDate\"], \"M/d/yyyy\");\r\n return `${value.name} - ${expirationDate.toLocaleString(DateTime.DATE_SHORT)} ${expirationDate < DateTime.now() ? \"Expired\" : \"\"}`\r\n}\r\n","import { useCallback, useEffect, useRef } from 'react';\r\n\r\n/**\r\n * Source: https://usehooks-ts.com/react-hook/use-is-mounted\r\n * In React, once a component instance is unmounted, it is deleted from memory and will never be mounted again. \r\n * That's why we don't define a state in a disassembled component. Changing the state in an unmounted component will result this error:\r\n * \r\n * [ Warning: Can't perform a React state update on an unmounted component.\r\n This is a no-op, but it indicates a memory leak in your application.\r\n To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.]\r\n */\r\nexport const useIsMounted = () => {\r\n const isMountedRef = useRef(true);\r\n useEffect(() => {\r\n isMountedRef.current = true;\r\n return () => {\r\n isMountedRef.current = false;\r\n }\r\n }, []);\r\n return useCallback(() => isMountedRef.current, []);\r\n};\r\n","import classNames from \"classnames\";\r\nimport { DateTime } from \"luxon\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useEffect, useMemo, useState } from \"react\";\r\nimport DatePicker, { ReactDatePickerProps } from \"react-datepicker\";\r\nimport { Control, Controller, ControllerRenderProps, FieldValues, UseFormSetValue } from \"react-hook-form\";\r\nimport { FormGroup } from \"./FormGroup\";\r\nimport { serializeDate } from \"./FormInput\";\r\nimport { FormatDateInputSerializationFormat } from \"./FormInput/types\";\r\n\r\ninterface IFormDateRangeProps {\r\n\tstartFieldName: string;\r\n\tendFieldName: string;\r\n\tcontrol: Control;\r\n\tlabel: string;\r\n\t/** Number of max days for range length */\r\n\tmaxRangeLimit?: number | undefined;\r\n\t/** Number of days for default range length */\r\n\tdefaultRangeLength?: number | undefined;\r\n\t/** Disable date selection for dates in the future */\r\n\tdisableFutureDates?: boolean | undefined;\r\n\t/** Disable date selection for dates outside defined max range */\r\n\tdisableDatesOutOfValidRange?: boolean | undefined;\r\n\tserializationFormat?: FormatDateInputSerializationFormat;\r\n\tcontrolId?: string | undefined;\r\n\tdatePickerProps?: ReactDatePickerProps;\r\n\tsetValue: UseFormSetValue;\r\n\tformResetFlag: boolean;\r\n\tdefaultStartValue?: string;\r\n\tdefaultEndValue?: string;\r\n\tdisable?: boolean;\r\n}\r\n\r\nexport const isDifferenceGreaterThanMaxRangeInDays = (start: Date, end: Date, maxRangeInDays: number): boolean => {\r\n\tif (!start || !end) return false;\r\n\tconst differenceInMilliseconds = end.getTime() - start.getTime();\r\n\tconst differenceInDays = differenceInMilliseconds / (24 * 60 * 60 * 1000);\r\n\r\n\treturn differenceInDays > maxRangeInDays;\r\n};\r\n\r\nexport const FormDateRangePicker = observer((props: IFormDateRangeProps) => {\r\n\tconst { defaultRangeLength, disableFutureDates, disableDatesOutOfValidRange, maxRangeLimit, startFieldName, endFieldName, control, serializationFormat, label, controlId, datePickerProps, setValue, formResetFlag, defaultStartValue, defaultEndValue, disable } = props;\r\n\r\n\tconst [startDate, setStartDate] = useState(defaultStartValue ? DateTime.fromISO(defaultStartValue).toJSDate() : undefined);\r\n\tconst [endDate, setEndDate] = useState(defaultEndValue ? DateTime.fromISO(defaultEndValue).toJSDate() : undefined);\r\n\tconst [endMaxDate, setEndMaxDate] = useState();\r\n\r\n\tconst resolvedControlId = useMemo(() => (controlId ? controlId : `form-${label.replaceAll(/[\\W_]/gi, \"\").toLowerCase()}`), [label, controlId]);\r\n\tconst helpId = useMemo(() => `${resolvedControlId}-help`, [resolvedControlId]);\r\n\tconst errorId = useMemo(() => `${resolvedControlId}-error`, [resolvedControlId]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (formResetFlag) {\r\n\t\t\tlet currentDate = new Date();\r\n\t\t\tcurrentDate.setDate(currentDate.getDate() - (defaultRangeLength ?? 0));\r\n\t\t\tsetStartDate(currentDate);\r\n\t\t\tsetEndDate(new Date());\r\n\t\t}\r\n\t}, [defaultRangeLength, formResetFlag]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!startDate) {\r\n\t\t\tlet currentDate = new Date();\r\n\t\t\tcurrentDate.setDate(currentDate.getDate() - (defaultRangeLength ?? 0));\r\n\t\t\tsetStartDate(currentDate);\r\n\t\t}\r\n\r\n\t\tif (!endDate) setEndDate(new Date());\r\n\r\n\t\tif (startDate! > endDate!) {\r\n\t\t\tsetEndDate(new Date(startDate!));\r\n\t\t}\r\n\r\n\t\tlet adaptRange: number | undefined = maxRangeLimit;\r\n\t\tif (maxRangeLimit != undefined && maxRangeLimit !== defaultRangeLength) adaptRange = maxRangeLimit - 1;\r\n\t\tlet addMaxRange = disableDatesOutOfValidRange && adaptRange != undefined ? adaptRange : 0;\r\n\r\n\t\tif (!disableFutureDates && !disableDatesOutOfValidRange) {\r\n\t\t\tsetEndMaxDate(null);\r\n\t\t} else {\r\n\t\t\tlet maxDate: Date | null = null;\r\n\r\n\t\t\tif (disableDatesOutOfValidRange) {\r\n\t\t\t\tmaxDate = new Date(startDate!);\r\n\t\t\t\tmaxDate.setDate(maxDate.getDate() + addMaxRange);\r\n\t\t\t}\r\n\r\n\t\t\tif (disableFutureDates) {\r\n\t\t\t\tlet currentDate = new Date();\r\n\t\t\t\tif (!maxDate || maxDate > currentDate) maxDate = currentDate;\r\n\t\t\t}\r\n\r\n\t\t\tsetEndMaxDate(maxDate);\r\n\t\t}\r\n\r\n\t\tif (disableDatesOutOfValidRange && isDifferenceGreaterThanMaxRangeInDays(startDate!, endDate!, addMaxRange ?? Infinity)) {\r\n\t\t\tlet maxDate: Date = new Date(startDate!);\r\n\t\t\tmaxDate.setDate(startDate!.getDate() + addMaxRange);\r\n\t\t\tsetEndDate(maxDate);\r\n\t\t\tsetValue(endFieldName, serializeDate(maxDate, serializationFormat));\r\n\t\t}\r\n\r\n\t\tsetValue(startFieldName, serializeDate(startDate!, serializationFormat));\r\n\t\tsetValue(endFieldName, serializeDate(endDate!, serializationFormat));\r\n\t}, [startDate, endDate, disableDatesOutOfValidRange, defaultRangeLength, maxRangeLimit, setValue, startFieldName, serializationFormat, endFieldName, disableFutureDates]);\r\n\r\n\tconst handleStartDateOnChange = (jsDate: Date | null, field: ControllerRenderProps) => {\r\n\t\tif (!jsDate) {\r\n\t\t\tlet currentDate = new Date();\r\n\t\t\tcurrentDate.setDate(currentDate.getDate() - (defaultRangeLength ?? 0));\r\n\t\t\tjsDate = currentDate;\r\n\t\t}\r\n\t\tsetStartDate(jsDate);\r\n\t\tfield.onChange(serializeDate(jsDate, serializationFormat));\r\n\t};\r\n\r\n\tconst handleEndDateOnChange = (jsDate: Date | null, field: ControllerRenderProps) => {\r\n\t\tjsDate = jsDate ?? new Date();\r\n\t\tsetEndDate(jsDate);\r\n\t\tif (disableDatesOutOfValidRange && endDate) {\r\n\t\t\tlet minDate = endDate;\r\n\t\t\tminDate.setDate(minDate.getDate() - (maxRangeLimit ?? 0));\r\n\t\t}\r\n\t\tfield.onChange(serializeDate(jsDate, serializationFormat));\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tStart Date\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t handleStartDateOnChange(date, field)}\r\n\t\t\t\t\t\t\tselected={startDate}\r\n\t\t\t\t\t\t\tselectsStart\r\n\t\t\t\t\t\t\tdisabled={disable}\r\n\t\t\t\t\t\t\tstartDate={startDate}\r\n\t\t\t\t\t\t\tendDate={endDate}\r\n\t\t\t\t\t\t\tclassName={classNames(\"form-control\")}\r\n\t\t\t\t\t\t\tmaxDate={disableFutureDates ? new Date() : null}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t/>\r\n\t\t\t {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tEnd Date\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t handleEndDateOnChange(date, field)}\r\n\t\t\t\t\t\t\t\tselected={endDate}\r\n\t\t\t\t\t\t\t\tselectsEnd\r\n\t\t\t\t\t\t\t\tdisabled={disable}\r\n\t\t\t\t\t\t\t\tstartDate={startDate}\r\n\t\t\t\t\t\t\t\tendDate={endDate}\r\n\t\t\t\t\t\t\t\tclassName={classNames(\"form-control\")}\r\n\t\t\t\t\t\t\t\tminDate={startDate}\r\n\t\t\t\t\t\t\t\tmaxDate={endMaxDate}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\r\n\t);\r\n});\r\n","import { FieldSet, FormInput } from '@common/components/forms';\r\nimport { FormSelect } from '@common/components/forms/controls/FormSelect';\r\nimport { YesNoConfirmModal } from '@common/components/modals';\r\nimport { SuspenseButton } from '@common/components/utility/SuspenseButton';\r\nimport { HospitalScheduleRequestModel } from '@common/models';\r\nimport { HospitalScheduleVeterinarianModel } from '@common/models/Schedule/HospitalScheduleVeterinarianModel';\r\nimport { HospitalService } from '@common/services';\r\nimport { HospitalScheduleStore } from '@hospital/stores';\r\nimport classNames from 'classnames';\r\nimport { DateTime } from 'luxon';\r\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { Button, Form, Modal } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useIsMounted } from '../useIsMounted';\r\n\r\nexport interface IAddDoctorModal {\r\n visible: boolean;\r\n onSave: (veterinarianId: number) => void;\r\n onCancel: () => void;\r\n}\r\nenum AddDoctorType {\r\n invalid = -1,\r\n pickupShift = 0,\r\n scheduleDay = 1\r\n}\r\nexport interface IAddDoctorForm {\r\n veterinarianId: number;\r\n scheduleType: AddDoctorType;\r\n}\r\n\r\ntype useScheduleDoctorModalProps = {\r\n scheduleStore?: HospitalScheduleStore,\r\n scheduleDate: DateTime\r\n\r\n}\r\n\r\nexport const useScheduleDoctorModal = ({ scheduleStore, scheduleDate }: useScheduleDoctorModalProps) => {\r\n const { handleSubmit, control, reset, watch } = useForm();\r\n const [showAddDcotor, setShowAddDoctor] = useState(false);\r\n const [showConfirmDoctor, setShowConfirmDoctor] = useState(false);\r\n const [selectedSchedule, setSelectedSchedule] = useState(null);\r\n const [isConfirmBusy, setIsConfirmBusy] = useState(false);\r\n const [isConfirmed, setIsConfirmed] = useState(false);\r\n const modalId = \"addScheduledDoctorModal_Calendar\";\r\n const isMounted = useIsMounted();\r\n\r\n const hasAvailableVets = (scheduleStore?.unscheduledLicensedVetsWithAccess.length ?? 0) > 0;\r\n\r\n const onSubmit = useCallback((data: IAddDoctorForm) => {\r\n const schedule: HospitalScheduleRequestModel = {\r\n hospitalScheduleId: 0,\r\n hospitalId: scheduleStore?.hospitalId ?? 0,\r\n hospitalScheduleTemplateId: undefined,\r\n veterinarianId: data.veterinarianId,\r\n date: scheduleDate.toLocaleString(DateTime.DATE_SHORT),\r\n rowVersion: '',\r\n isAdHoc: data.scheduleType == AddDoctorType.pickupShift\r\n };\r\n setIsConfirmed(false);\r\n setSelectedSchedule(schedule);\r\n setShowAddDoctor(false);\r\n setShowConfirmDoctor(true);\r\n }, [scheduleDate, scheduleStore]);\r\n\r\n const onClose = useCallback(() => {\r\n setShowConfirmDoctor(false);\r\n setShowAddDoctor(false);\r\n setIsConfirmBusy(false);\r\n setSelectedSchedule(null);\r\n setTimeout(() => {\r\n reset();\r\n }, 250); //give animations time to close modal or you'll see the description change before it disappears\r\n }, [reset]);\r\n\r\n useEffect(() => {\r\n if (selectedSchedule && isConfirmed) {\r\n setIsConfirmBusy(true);\r\n scheduleStore?.addAdhocHospitalSchedule(scheduleStore?.hospitalId, selectedSchedule).then(() => {\r\n if (!isMounted())\r\n return;\r\n scheduleStore.refresh();\r\n }).finally(() => {\r\n if (!isMounted())\r\n return;\r\n onClose();\r\n });\r\n }\r\n }, [selectedSchedule, onClose, isMounted, scheduleStore, isConfirmed]);\r\n\r\n const selectedVerterinarianId = watch(\"veterinarianId\", 0);\r\n const selectedScheduleType = watch(\"scheduleType\", AddDoctorType.invalid);\r\n\r\n const confirmDescription = useMemo(() => {\r\n const vet = _.first(scheduleStore?.unscheduledLicensedVetsWithAccess.filter(a => a.veterinarianId === selectedVerterinarianId));\r\n if (!selectedVerterinarianId || selectedScheduleType === AddDoctorType.invalid)\r\n return N/A;\r\n return <>Are you sure you want to add {vet?.titleFullName} to the calendar {(selectedScheduleType == 0 ? 'for a pick up shift?' : \" as a scheduled doctor day?\")};\r\n }, [scheduleStore?.unscheduledLicensedVetsWithAccess, selectedVerterinarianId, selectedScheduleType]);\r\n\r\n const scheduleDoctorModalButton = useMemo(() => , [setShowAddDoctor]);\r\n const scheduleDoctorModal = useMemo(() => {\r\n\r\n return (<>\r\n setIsConfirmed(true)} onCancel={onClose} />\r\n \r\n
    \r\n\r\n \r\n Add new doctor\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n `Dr. ${opt.firstName} ${opt.lastName}`}\r\n getOptionValue={(opt: HospitalScheduleVeterinarianModel) => opt.veterinarianId.toString()}\r\n mapValueToOption={veterinarianId => _.find(scheduleStore?.unscheduledLicensedVetsWithAccess, { veterinarianId })}\r\n mapOptionToValue={opt => opt?.veterinarianId}\r\n isRequired={true}\r\n />\r\n
    \r\n
    \r\n {hasAvailableVets &&\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n }\r\n {!hasAvailableVets &&\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n \r\n \r\n Save\r\n \r\n \r\n
    \r\n
    \r\n );\r\n }, [control, handleSubmit, onSubmit, showAddDcotor, scheduleStore?.unscheduledLicensedVetsWithAccess, confirmDescription, onClose, showConfirmDoctor, isConfirmBusy, hasAvailableVets]);\r\n\r\n\r\n return useMemo(() => {\r\n return { scheduleDoctorModalButton, scheduleDoctorModal, showScheduleDoctorModal: showAddDcotor };\r\n }, [scheduleDoctorModalButton, scheduleDoctorModal, showAddDcotor]);\r\n}\r\n","import type { Blocker, History, Transition } from 'history';\r\nimport { ContextType, useCallback, useContext, useEffect } from 'react';\r\nimport { Navigator as BaseNavigator, UNSAFE_NavigationContext as NavigationContext } from 'react-router-dom';\r\n\r\ninterface Navigator extends BaseNavigator {\r\n block: History['block'];\r\n}\r\n\r\ntype NavigationContextWithBlock = ContextType & { navigator: Navigator };\r\n\r\n/**\r\n * @source https://github.com/remix-run/react-router/commit/256cad70d3fd4500b1abcfea66f3ee622fb90874\r\n */\r\nexport function useBlocker(blocker: Blocker, when = true) {\r\n const { navigator } = useContext(NavigationContext) as NavigationContextWithBlock;\r\n\r\n useEffect(() => {\r\n if (!when) {\r\n return;\r\n }\r\n\r\n const unblock = navigator.block((tx: Transition) => {\r\n const autoUnblockingTx = {\r\n ...tx,\r\n retry() {\r\n // Automatically unblock the transition so it can play all the way\r\n // through before retrying it. TODO: Figure out how to re-enable\r\n // this block if the transition is cancelled for some reason.\r\n unblock();\r\n tx.retry();\r\n },\r\n };\r\n\r\n blocker(autoUnblockingTx);\r\n });\r\n\r\n return unblock;\r\n }, [navigator, blocker, when]);\r\n}\r\n\r\n/**\r\n * @source https://github.com/remix-run/react-router/issues/8139#issuecomment-1021457943\r\n */\r\nexport function usePrompt(message: string | ((\r\n location: Transition['location'],\r\n action: Transition['action'],\r\n) => string), when = true) {\r\n const blocker = useCallback((tx: Transition) => {\r\n let response;\r\n if (typeof message === 'function') {\r\n response = message(tx.location, tx.action);\r\n if (typeof response === 'string') {\r\n response = window.confirm(response);\r\n }\r\n } else {\r\n response = window.confirm(message);\r\n }\r\n if (response) {\r\n tx.retry();\r\n }\r\n }, [message]);\r\n return useBlocker(blocker, when);\r\n}\r\n","import { usePrompt } from \"@common/hooks/usePrompt\";\r\nimport React, { useCallback, useEffect } from \"react\";\r\n// import { usePrompt } from \"./usePrompt\";\r\n\r\nconst defaultMessage = \"Leave the page? Changes you made may not be saved.\"\r\n\r\n// courtesy: https://github.com/codegeous/react-component-depot/blob/master/src/hooks/useUnsavedChangesWarning.js\r\nexport const useUnsavedChangesWarning = (isDirty: boolean, message = defaultMessage) => {\r\n\r\n const beforeUnload = useCallback((event: any) => {\r\n event.preventDefault();\r\n return event.returnValue = message;\r\n }, [message]);\r\n\r\n useEffect(() => {\r\n //Detecting browser closing\r\n if (isDirty) {\r\n window.removeEventListener(\"beforeunload\", beforeUnload);\r\n window.addEventListener(\"beforeunload\", beforeUnload);\r\n }\r\n else {\r\n window.removeEventListener(\"beforeunload\", beforeUnload);\r\n }\r\n\r\n return () => {\r\n window.removeEventListener(\"beforeunload\", beforeUnload);\r\n };\r\n }, [isDirty, message, beforeUnload]);\r\n\r\n usePrompt(message, isDirty);\r\n\r\n return (<>)\r\n};\r\n","import React from 'react';\r\nimport { debounce } from 'lodash';\r\n\r\nexport type UseDoubleClickHandlerParams = {\r\n onClick?: (args: any) => void;\r\n onDoubleClick?: (args: any) => void;\r\n onTriplePlusClick?: (args: any, clickCount: number) => void;\r\n clickThreshhold?: number;\r\n}\r\n\r\nexport const useDoubleClickHandler = ({ onClick, onDoubleClick, onTriplePlusClick, clickThreshhold = 500 }: UseDoubleClickHandlerParams) => {\r\n const bounce = React.useRef<(() => void) | undefined>(undefined);\r\n const clickCount = React.useRef(0);\r\n\r\n const internalClickHandler = (fArgs: any) => {\r\n clickCount.current = clickCount.current + 1;\r\n\r\n if (!bounce.current) {\r\n bounce.current = debounce(() => {\r\n try {\r\n if (clickCount.current === 1 && onClick)\r\n onClick(fArgs);\r\n if (clickCount.current === 2 && onDoubleClick)\r\n onDoubleClick(fArgs);\r\n if (clickCount.current >= 3 && onTriplePlusClick)\r\n onTriplePlusClick(fArgs, clickCount.current);\r\n }\r\n finally {\r\n clickCount.current = 0;\r\n bounce.current = undefined;\r\n }\r\n }, clickThreshhold, {\r\n leading: false,\r\n trailing: true\r\n });\r\n bounce.current();\r\n }\r\n }\r\n\r\n return internalClickHandler;\r\n}\r\n","import React from 'react';\r\nimport { useLocation } from 'react-router';\r\n\r\n\r\n\r\n// A custom hook that builds on useLocation to parse\r\n// the query string for you.\r\n// https://v5.reactrouter.com/web/example/query-parameters\r\nexport const useQuery = () => {\r\n const { search } = useLocation();\r\n\r\n return React.useMemo(() => new URLSearchParams(search), [search]);\r\n };\r\n","import { useEffect } from \"react\";\r\n\r\n// Improved version of https://usehooks.com/useOnClickOutside/\r\nexport const useClickOutside = (ref: any, handler: any) => {\r\n useEffect(() => {\r\n let startedInside = false;\r\n let startedWhenMounted = false;\r\n\r\n const listener = (event: any) => {\r\n // Do nothing if `mousedown` or `touchstart` started inside ref element\r\n if (startedInside || !startedWhenMounted) return;\r\n // Do nothing if clicking ref's element or descendent elements\r\n if (!ref.current || ref.current.contains(event.target)) return;\r\n\r\n handler(event);\r\n };\r\n\r\n const validateEventStart = (event: any) => {\r\n startedWhenMounted = ref.current;\r\n startedInside = ref.current && ref.current.contains(event.target);\r\n };\r\n\r\n document.addEventListener(\"mousedown\", validateEventStart);\r\n document.addEventListener(\"touchstart\", validateEventStart);\r\n document.addEventListener(\"click\", listener);\r\n\r\n return () => {\r\n document.removeEventListener(\"mousedown\", validateEventStart);\r\n document.removeEventListener(\"touchstart\", validateEventStart);\r\n document.removeEventListener(\"click\", listener);\r\n };\r\n }, [ref, handler]);\r\n};\r\n","import { RouteContext } from '@common/contexts';\r\nimport { useContext } from 'react';\r\nimport { matchRoutes, RouteMatch, useLocation } from 'react-router-dom';\r\n\r\nexport const useCurrentRoute = (): RouteMatch | null => {\r\n const location = useLocation();\r\n const appRoutes = useContext(RouteContext.get());\r\n const matches = matchRoutes(appRoutes, location.pathname);\r\n return matches && matches.length > 0 ? matches[matches.length - 1] : null;\r\n\r\n}\r\n","import { RouteContext } from '@common/contexts';\r\nimport { useContext } from 'react';\r\nimport { matchRoutes, RouteMatch, useLocation } from 'react-router-dom';\r\n\r\nexport const useCurrentMatchRoutes = (): RouteMatch[] => {\r\n const location = useLocation();\r\n const appRoutes = useContext(RouteContext.get());\r\n return matchRoutes(appRoutes, location.pathname) ?? [];\r\n}\r\n","import { RouteContext } from \"@common/contexts\";\r\nimport { runInAction } from \"mobx\";\r\nimport React, { useContext, useEffect } from \"react\";\r\nimport { matchRoutes, useResolvedPath } from \"react-router\";\r\nimport { BreadcrumbsRoute } from \"use-react-router-breadcrumbs\";\r\n\r\nexport type useRouteBreadcrumbResult = {\r\n setBreadCrumb: (breadCrumb: string | undefined) => void;\r\n breadCrumb: string | undefined;\r\n}\r\n/**\r\n * This hook makes it possible to set a routes bread crumb based on where it is in the route element tree.\r\n * For example } /> In SomeContainer if it uses useRouteBreadCrumb's setBreadCrumb it will set the bread crumb for the route where SomeContainer is it's element.\r\n * @returns an object container the setBreadCrumb function and the current breadCrumb text\r\n */\r\nexport const useRouteBreadcrumb = (): useRouteBreadcrumbResult => {\r\n const [breadCrumb, setBreadCrumb] = React.useState(undefined);\r\n const [breadCrumbRoute, setBreadCrumbRoute] = React.useState(undefined);\r\n const routes = useContext(RouteContext.get());\r\n const pathInfo = useResolvedPath('.');\r\n\r\n //rematch the path anyting the current resolved component path or routes collection changes\r\n useEffect(() => {\r\n const matches = matchRoutes(routes, pathInfo.pathname);\r\n if (!breadCrumbRoute && matches && matches.length > 0)\r\n setBreadCrumbRoute(matches[matches.length - 1].route as BreadcrumbsRoute); //store the bread crumb route in state\r\n }, [pathInfo, pathInfo.pathname, breadCrumbRoute, setBreadCrumbRoute, routes]);\r\n\r\n //update the breadcrumbs text anything the breadCrumbRoute matched changes\r\n useEffect(() => {\r\n if (breadCrumbRoute) {\r\n //the magic that makes this work is that breadcrumb is observable on the RouteObject, so we have to run in action to update it here.\r\n runInAction(() => {\r\n breadCrumbRoute.breadcrumb = breadCrumb ?? \"Loading...\";\r\n });\r\n }\r\n }, [breadCrumbRoute, breadCrumb])\r\n\r\n return {\r\n setBreadCrumb: setBreadCrumb,\r\n breadCrumb\r\n }\r\n}\r\n","import { ContextWrapper } from \"@common/contexts\";\r\nimport { useApp } from \"@common/hooks/useApp\";\r\nimport { ClientConfigurationModel } from \"@common/models\";\r\nimport { PetDetailsStore } from \"@common/stores\";\r\nimport React, { useContext, useEffect, useMemo, useState } from \"react\";\r\n\r\nexport const PetDetailsStoreContext = new ContextWrapper();\r\n\r\n/**\r\n * Create a pet details store\r\n * @param configuration the configuration client model instance, you can get this from prop drilling in Routes, or by using the useApp hook to return the appStore and current Configuration object\r\n * @returns\r\n */\r\nexport const useCreatePetDetailsStore = (configuration: ClientConfigurationModel, options?: { shouldSetContext?: boolean }) => {\r\n\tconst [shouldSetContext, setShouldSetContext] = useState(Boolean(options?.shouldSetContext));\r\n\r\n\tuseEffect(() => {\r\n\t\tif (options)\r\n\t\t\tsetShouldSetContext(Boolean(options.shouldSetContext));\r\n\t}, [options])\r\n\r\n\tconst [petDetailsStore] = useMemo(() => {\r\n\t\tconst store = new PetDetailsStore({ configuration });\r\n\t\tif (shouldSetContext)\r\n\t\t\tPetDetailsStoreContext.set(store);\r\n\t\treturn [store];\r\n\t}, [configuration, shouldSetContext])\r\n\treturn petDetailsStore;\r\n}\r\n\r\n//will return a new pet details store if context has not been set.\r\nexport const usePetDetailsStore = () => {\r\n\tconst { configuration } = useApp();\r\n\treturn useContext(PetDetailsStoreContext.get() ?? React.createContext(new PetDetailsStore({ configuration })));\r\n}\r\n","import { ExamStore } from \"@hospital/views/exam\";\r\nimport { ExamLockedStatus } from \"@common/models/Enums\";\r\n\r\nexport const useExamNotesAreAllowed = (examStore: ExamStore) => {\r\n const editableExamNotes = examStore.visitLockStatus === ExamLockedStatus.ExamNotesAreAllowed;\r\n return editableExamNotes;\r\n}\r\n","import React from \"react\";\r\nimport { ZipCodeStore } from \"@common/stores\";\r\nimport { ZipCodeStoreContextWrapper } from \"@common/contexts\";\r\n\r\nexport const useZipCodeStore = () => React.useContext(ZipCodeStoreContextWrapper.get());\r\n","import { useEffect } from \"react\";\r\nimport { useZipCodeStore } from \"@common/hooks\";\r\nimport { FieldValues, UseFormSetValue, UseFormWatch, Path, PathValue } from \"react-hook-form\";\r\n\r\ninterface RHFFieldNames {\r\n\tzipCode: Path;\r\n\tcity: Path;\r\n\tcounty: Path;\r\n\tstateId: Path;\r\n}\r\n\r\nconst getNestedValue = (obj: any, path: string): string | number => {\r\n\treturn path.split(\".\").reduce((acc, part) => acc && acc[part], obj);\r\n};\r\n/**\r\n * This hook updates city, county and state based on a valid zipcode.\r\n * IMPORTANT: It is CRUCIAL that ZipCodeStoreContextWrapper.set(new ZipCodeStore()); is set in the parent component.\r\n * @param watch\r\n * @param setValue\r\n * @param fieldNames\r\n * @param shouldDirty\r\n * @param shouldValidate\r\n */\r\nexport const useZipCodeChanged = (\r\n\twatch: UseFormWatch,\r\n\tsetValue: UseFormSetValue,\r\n\tfieldNames: RHFFieldNames,\r\n\tshouldDirty = true,\r\n\tshouldValidate = false\r\n) => {\r\n\tconst zipCodeStore = useZipCodeStore();\r\n\tuseEffect(() => {\r\n\t\t// Call onZipCodeChanged when the zip code changes.\r\n\t\tconst subscription = watch((value, { name, type }) => {\r\n\t\t\tconst zipCodeField = getNestedValue(value, fieldNames.zipCode);\r\n\t\t\tif (name === fieldNames.zipCode && type === \"change\" && !_.isNil(zipCodeField)) zipCodeStore.fetchZipCode(zipCodeField.toString() ?? \"\");\r\n\t\t});\r\n\t\treturn () => subscription.unsubscribe();\r\n\t}, [watch, zipCodeStore, fieldNames]);\r\n\r\n\t// If a zip code has been found by search\r\n\t// then update the form fields with the zip code listing\r\n\tuseEffect(() => {\r\n\t\tif (zipCodeStore.zipCode) {\r\n\t\t\tsetValue(fieldNames.zipCode, zipCodeStore.zipCode.zipcode as PathValue>, { shouldDirty, shouldValidate });\r\n\t\t\tsetValue(fieldNames.city, zipCodeStore.zipCode.city as PathValue>, { shouldDirty, shouldValidate });\r\n\t\t\tsetValue(fieldNames.county, zipCodeStore.zipCode.county as PathValue>, { shouldDirty, shouldValidate });\r\n\t\t\tsetValue(fieldNames.stateId, zipCodeStore.zipCode.stateId as PathValue>, { shouldDirty, shouldValidate });\r\n\t\t}\r\n\t}, [setValue, zipCodeStore.zipCode, fieldNames, shouldDirty, shouldValidate]);\r\n};\r\n","import { INotification, NotificationType } from '@common/stores';\r\nimport classNames from 'classnames';\r\nimport React, { useState } from 'react';\r\nimport { Toast } from 'react-bootstrap';\r\n\r\ninterface IProps {\r\n onClose: () => void,\r\n notification: INotification\r\n}\r\n\r\nconst DefineSymbol = (notificationType: NotificationType) => {\r\n\r\n let symbol = \"\"\r\n\r\n switch (notificationType) {\r\n case NotificationType.SUCCESS:\r\n symbol = \"fa-check\"\r\n break;\r\n case NotificationType.ERROR:\r\n symbol = \"fa-exclamation-triangle\"\r\n break;\r\n case NotificationType.INFO:\r\n symbol = \"fa-info-circle\"\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return symbol\r\n}\r\n\r\nexport const NotificationToast = ({ notification: { message, type, sticky, body }, onClose }: IProps) => {\r\n const [show, setShow] = useState(true);\r\n const close = () => {\r\n setShow(false);\r\n onClose();\r\n }\r\n const symbol = DefineSymbol(type)\r\n const duration = type === NotificationType.SUCCESS ? 2500 : 10000;\r\n const bg = type.toLowerCase();\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n (typeof message === 'object') ? JSON.stringify(message) : message\r\n }\r\n \r\n \r\n {body && {body}}\r\n \r\n )\r\n};\r\n","import { useApp } from '@common/hooks';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { NotificationToast } from './NotificationToast';\r\n\r\n\r\n\r\nexport const NotificationList = observer(() => {\r\n const { notifications } = useApp();\r\n const appRoot = document.getElementById('root');\r\n return (\r\n <>\r\n {appRoot && ReactDOM.createPortal(\r\n
    \r\n {notifications.notifications.map(([uuid, notification]) =>\r\n notifications.clearNotification(uuid)} />)\r\n }\r\n
    ,\r\n appRoot\r\n )}\r\n \r\n );\r\n});\r\n","import { anyPromiseTrackerTagsInProgress } from \"@common/utils\";\r\nimport React from \"react\";\r\n\r\nexport interface ISuspenseProps {\r\n tag: string | string[];\r\n delay?: number;\r\n waiting?: JSX.Element;\r\n}\r\nexport const Suspense = (props: React.PropsWithChildren): JSX.Element => {\r\n const promiseInProgress = anyPromiseTrackerTagsInProgress(Array.isArray(props.tag) ? props.tag : [props.tag], props.delay);\r\n return promiseInProgress ? (props.waiting || Loading...) : <>{props.children};\r\n};\r\n","import { Environment } from '@common/models/Enums';\r\nimport classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\n\r\nexport const EnvironmentWarning = observer((props: { isForHeader?: boolean }) => {\r\n const env = appEnv.ENV as Environment\r\n let envClass = '';\r\n switch (env) {\r\n case Environment.local:\r\n envClass = 'env-local';\r\n case Environment.alpha:\r\n envClass = 'env-alpha';\r\n case Environment.dev:\r\n envClass = 'env-dev';\r\n case Environment.import:\r\n envClass = 'env-import';\r\n case Environment.test:\r\n envClass = 'env-test';\r\n case Environment.feature:\r\n envClass = 'env-feature';\r\n case Environment.training:\r\n envClass = 'env-training';\r\n return props.isForHeader ?\r\n (
    DEV-TRAINING ONLY
    ) :\r\n (
    STOP: THIS IS A DEVELOPMENT-TRAINING SITE ONLY, DO NOT ENTER LIVE CUSTOMER OR HOSPITAL DATA HERE.
    )\r\n default:\r\n envClass = 'env-prod';\r\n return ( )\r\n }\r\n});\r\n","import { makeObservable, observable, flow, action, computed, IObservableArray, runInAction } from \"mobx\";\r\nimport { AzureBlobStore, NotificationStoreInstance } from \"@common/stores\";\r\nimport { IBlobSasModel, IPetColorModel, IGenderModel, IBreedModel, IPhotoModel, EnsurePetAlertsRequest, ISpeciesModel, IPGRBreedModel, IPetVisitRemindersModel, PetModel, ClientConfigurationModel, IIdexxBreedModel, IPetModel, EstimateModel, EstimateSalesItemModel, MedicalHistoryModel, PetAttachmentModel, AttachmentModel } from \"@common/models\";\r\nimport { BlobEntityType, DiscountItemTypes, NoteTypes } from \"@common/models/Enums\";\r\nimport { ClientService, PetNoteService, PetService } from \"@common/services\";\r\nimport { CustomerInteractionModel } from \"@common/models/CustomerInteractionModel\";\r\nimport { orderBy } from \"lodash\";\r\nimport { IPetNoteModel } from \"@common/models/PetNoteModel\";\r\nimport { cleanseFirstParagraph } from \"@common/utils\";\r\nimport { filterForQuery } from \"@common/components/utility\";\r\nimport { QuerySearchButtonSetQuery } from \"@hospital/components/search\";\r\nimport { SourceSystem } from \"@common/models/Enums/SourceSystem\";\r\nimport { HospitalPrescriptionListingModel } from \"@common/models/HospitalPrescriptionListingModel\";\r\nimport { IPetWeightHistoryModel } from \"@common/models/PetWeightHistoryModel\";\r\nimport { PetCustomReminderModel } from \"@common/models/PetCustomReminders\";\r\n\r\n// #region default models\r\nconst defaultSpecies: ISpeciesModel = {\r\n\tspeciesId: 0,\r\n\tname: \"\",\r\n\trowVersion: \"\",\r\n};\r\n\r\nconst defaultBreed: IBreedModel = {\r\n\tbreedId: 0,\r\n\tname: \"\",\r\n\tspeciesId: 0,\r\n\tspecies: defaultSpecies,\r\n\tpgrBreed: {} as IPGRBreedModel,\r\n\tidexxBreed: {} as IIdexxBreedModel,\r\n\tidexxBreedId: 0,\r\n\tpgrBreedId: 0,\r\n\trowVersion: \"\",\r\n};\r\n\r\nconst defaultPetColor: IPetColorModel = {\r\n\tpetColorId: 0,\r\n\tname: \"\",\r\n\tpgrColorId: 0,\r\n\tpgrColor: {\r\n\t\tpgrColorId: 0,\r\n\t\tcode: \"\",\r\n\t\ttype: \"\",\r\n\t\tsort: \"\",\r\n\t\tdefaultPetpassPetColorId: 0,\r\n\t\trowVersion: \"\",\r\n\t},\r\n\trowVersion: \"\",\r\n};\r\n\r\nconst defaultGender: IGenderModel = {\r\n\tgenderId: 0,\r\n\tname: \"\",\r\n\trowVersion: \"\",\r\n};\r\nconst defaultPet: IPetModel = {\r\n\tpetId: 0,\r\n\tspeciesId: 0,\r\n\tname: \"\",\r\n\tisActive: true,\r\n\tmicrochipNumber: undefined,\r\n\tclientId: 0,\r\n\talerts: undefined,\r\n\thasAlerts: false,\r\n\tisDeceased: false,\r\n\trabiesTagNumber: undefined,\r\n\tdateCreated: \"\",\r\n\tdateUpdated: \"\",\r\n\tspecies: defaultSpecies,\r\n\tgender: defaultGender,\r\n\tbreed: defaultBreed,\r\n\tpetColor: defaultPetColor,\r\n\tpetAlerts: [],\r\n\tbreedFullName: \"\",\r\n\tisMixedBreed: false,\r\n\trowVersion: \"\",\r\n\tnotes: [],\r\n\tentityMappings: [],\r\n};\r\n\r\n// #endregion\r\n\r\nexport interface IBirthDateFields {\r\n\tyears: number;\r\n\tmonths: number;\r\n\tweeks: number;\r\n}\r\n\r\nexport interface IPetDetailsStoreInit extends Partial {\r\n\tconfiguration: ClientConfigurationModel;\r\n}\r\nexport class PetDetailsStore {\r\n\tconfiguration!: ClientConfigurationModel;\r\n\tblobStore!: AzureBlobStore;\r\n\r\n\t@observable pet: PetModel = new PetModel(defaultPet);\r\n\t@observable petWeightHistory: IPetWeightHistoryModel[] = [];\r\n\t@observable petLoading: boolean = false;\r\n\t@observable remindersLoading: boolean = false;\r\n\t@observable historyLoading: boolean = false;\r\n\t@observable private _baseMedicalHistory: IObservableArray = observable.array([]);\r\n\t@observable private _medicalHistorySearchQuery: string = \"\";\r\n\t@observable petAttachments: IObservableArray = observable([]);\r\n\t@observable petappointmentreminders: IPetVisitRemindersModel[] = [];\r\n\t@observable petHospitalPrescriptions: HospitalPrescriptionListingModel[] = [];\r\n\t@observable estimates: EstimateModel[] = [];\r\n\t@observable customerInteractions: CustomerInteractionModel[] = [];\r\n\t@observable pendingPet?: PetModel;\r\n\r\n\tconstructor(init: IPetDetailsStoreInit) {\r\n\t\tObject.assign(this, init);\r\n\r\n\t\tif (!this.blobStore) this.blobStore = new AzureBlobStore({ containerName: BlobEntityType.Pet });\r\n\r\n\t\tmakeObservable(this, undefined, { autoBind: true });\r\n\t}\r\n\r\n\t@computed get getSpecies() {\r\n\t\treturn this.configuration.species;\r\n\t}\r\n\r\n\t@computed get getBreeds() {\r\n\t\treturn this.configuration.breeds;\r\n\t}\r\n\r\n\t@computed get getGenders() {\r\n\t\treturn this.configuration.genders;\r\n\t}\r\n\r\n\t@computed get getColors() {\r\n\t\treturn this.configuration.petColors;\r\n\t}\r\n\r\n\t@computed get loading() {\r\n\t\treturn this.petLoading || this.historyLoading || this.remindersLoading;\r\n\t}\r\n\r\n\t@action.bound setPet(pet: PetModel) {\r\n\t\tthis.pet = pet;\r\n\t}\r\n\r\n\t@action.bound clearPet() {\r\n\t\tthis.pet = new PetModel(defaultPet);\r\n\t}\r\n\r\n\t@computed get medicalHistorySearchQuery() {\r\n\t\treturn this._medicalHistorySearchQuery;\r\n\t}\r\n\t/**\r\n\t * When _baseMedicalHistory changes from fetchPetMedicalHistory or pet changes, this computed\r\n\t * will recalculate the pet note medical history items that need to be added to the _baseMedicalHistoryArray\r\n\t * and the concatenated array containing both is returned. This keeps the array in sync with the loaded pet and medical history.\r\n\t */\r\n\t@computed get medicalHistory() {\r\n\t\tconst medicalHistoryNotes = this.pet.notes\r\n\t\t\t.filter((a: IPetNoteModel) => a.noteTypeId === NoteTypes.Vaccination || a.noteTypeId === NoteTypes.Medication)\r\n\t\t\t.map(note => {\r\n\t\t\t\treturn new MedicalHistoryModel({\r\n\t\t\t\t\tname: note.notes,\r\n\t\t\t\t\tfullName: cleanseFirstParagraph(note.notes),\r\n\t\t\t\t\tsalesDate: note.dateCreated,\r\n\t\t\t\t\tisNote: true,\r\n\t\t\t\t\tcreator: note.createdUserFirstName === undefined || note.createdUserFirstName == \"\" ? \"Unknown\" : `${note.createdUserFirstName} ${note.createdUserLastName}`,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\treturn _.concat(this._baseMedicalHistory, medicalHistoryNotes);\r\n\t}\r\n\r\n\t@computed get nonDiscountMedicalHistory() {\r\n\t\treturn this.medicalHistory.filter(ph => !DiscountItemTypes.includes(ph.salesItemSalesItemTypeId ?? 0));\r\n\t}\r\n\r\n\t@computed get filteredNonDiscountMedicalHistory() {\r\n\t\tlet filtered: MedicalHistoryModel[] = [];\r\n\t\tif (this._medicalHistorySearchQuery) {\r\n\t\t\tfiltered = filterForQuery(this._medicalHistorySearchQuery, this.nonDiscountMedicalHistory, [\"veterinarianName\", \"fullName\", \"price\", \"creator\", \"storeCode\", \"hospitalName\", \"salesDate\"]);\r\n\t\t} else filtered = this.nonDiscountMedicalHistory;\r\n\t\treturn orderBy(filtered, [a => new Date(a.salesDate), \"row\"], [\"desc\", \"asc\"]);\r\n\t}\r\n\r\n\t@computed get vetspireMedicalDocuments() {\r\n\t\treturn this.pet.entityMappings.filter(entityMapping => entityMapping.sourceSystemId === SourceSystem.VetSpire);\r\n\t}\r\n\r\n\t@action.bound setDates(pet: PetModel) {\r\n\t\tif (!pet.dateCreated) {\r\n\t\t\tpet.dateCreated = \"01-01-0001\";\r\n\t\t}\r\n\t\tif (!pet.dateUpdated) {\r\n\t\t\tpet.dateUpdated = \"01-01-0001\";\r\n\t\t}\r\n\t}\r\n\r\n\t@action.bound setPendingPet(pendingPet: PetModel) {\r\n\t\tif (pendingPet === undefined) return;\r\n\t\tthis.pendingPet = pendingPet;\r\n\t}\r\n\r\n\t@action.bound setMedicalHistorySearchQuery: QuerySearchButtonSetQuery = (query: string) => {\r\n\t\tthis._medicalHistorySearchQuery = query ?? \"\";\r\n\t};\r\n\r\n\tsavePetDetails = flow(function* (this: PetDetailsStore, pet: PetModel, clientId: string, refetchPet: boolean = true) {\r\n\t\tthis.petLoading = true;\r\n\t\tpet.clientId = parseInt(clientId);\r\n\r\n\t\tif (pet.petId == 0) {\r\n\t\t\tthis.setDates(pet);\r\n\r\n\t\t\tpet.isActive = true;\r\n\r\n\t\t\tconst petPhoto: IPhotoModel | undefined = pet.photo;\r\n\t\t\tconst newPet: PetModel = yield PetService.addPet(pet).catch(() => NotificationStoreInstance.onError(\"Failed to add pet.\", undefined));\r\n\r\n\t\t\tif (petPhoto && newPet && newPet.petId > 0) {\r\n\t\t\t\tyield this.savePetPhoto(newPet.petId, undefined, petPhoto);\r\n\t\t\t}\r\n\r\n\t\t\tif (refetchPet) {\r\n\t\t\t\tyield this.fetchPet(newPet.petId);\r\n\t\t\t} else {\r\n\t\t\t\tthis.pet.petId = newPet.petId;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tyield PetService.updatePet(pet).catch(() => NotificationStoreInstance.onError(\"Failed to update pet info.\", undefined));\r\n\r\n\t\t\tif (refetchPet) {\r\n\t\t\t\tyield this.fetchPet(pet.petId);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.petLoading = false;\r\n\t});\r\n\r\n\tsavePetPhoto = flow(function* (this: PetDetailsStore, petId: number, petPhotoFile?: File, petPhoto?: IPhotoModel) {\r\n\t\t//this happens on changePetPhotoModal, when a photo is being changed or created\r\n\t\tif (petPhotoFile) {\r\n\t\t\t//photo has to be uploaded to azure before it can go anywhere else\r\n\t\t\tconst blobSas: IBlobSasModel = yield this.blobStore.uploadFile(petPhotoFile);\r\n\t\t\tblobSas.modelId = petId;\r\n\t\t\tif (blobSas) {\r\n\t\t\t\tif (petId === 0) {\r\n\t\t\t\t\t//new pet just update petPhoto observable property, will be used from savePetDetails\r\n\t\t\t\t\tif (this.pet) {\r\n\t\t\t\t\t\tthis.pet = {\r\n\t\t\t\t\t\t\t...this.pet,\r\n\t\t\t\t\t\t\tphoto: {\r\n\t\t\t\t\t\t\t\tcontainer: blobSas.container,\r\n\t\t\t\t\t\t\t\tfileName: blobSas.fileName,\r\n\t\t\t\t\t\t\t\tphotoUrl: blobSas.sasUrl,\r\n\t\t\t\t\t\t\t\tphotoId: 0,\r\n\t\t\t\t\t\t\t\tprocessedPhotoBaseUrl: \"\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tyield PetService.updatePetPhoto(petId, blobSas).catch(() => NotificationStoreInstance.onError(\"Failed to update pet photo.\", undefined));\r\n\r\n\t\t\t\t\t//fetch a new pet because photo isn't observable in IPetModel\r\n\t\t\t\t\tyield this.fetchPet(petId);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t//this happens when save is calld from savePetDetails flow, photos have to be saved after the pet\r\n\t\t\t//exists or we need to add code to pet post to handle the photo on the pet model\r\n\t\t\tif (petPhoto) {\r\n\t\t\t\tconst blobSas: IBlobSasModel = {\r\n\t\t\t\t\tmodelTypeName: \"\",\r\n\t\t\t\t\tissueDate: \"\",\r\n\t\t\t\t\tcontainer: petPhoto.container,\r\n\t\t\t\t\tmodelId: petId,\r\n\t\t\t\t\tfileName: petPhoto.fileName,\r\n\t\t\t\t\tsasUrl: petPhoto.photoUrl,\r\n\t\t\t\t\tsasToken: \"\",\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst photoObject = yield PetService.updatePetPhoto(petId, blobSas).catch(() => NotificationStoreInstance.onError(\"Failed to update pet photo.\", undefined));\r\n\r\n\t\t\t\tif (this.pet) {\r\n\t\t\t\t\tthis.pet = { ...this.pet, photo: photoObject };\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn;\r\n\t});\r\n\r\n\tloadPetDetails = flow(function* (this: PetDetailsStore, petId: number) {\r\n\t\tyield Promise.all([this.fetchPet(petId), this.fetchPetReminder(petId), (this.estimates = [])]);\r\n\t});\r\n\r\n\tfetchPetMedicalHistory = flow(function* (this: PetDetailsStore, clientId: number, petId: number) {\r\n\t\tconst medicalHistory: MedicalHistoryModel[] = yield ClientService.getClientMedicalHistoryForPet(clientId, petId, { showError: true });\r\n\t\tthis._baseMedicalHistory.clear();\r\n\t\tmedicalHistory.forEach(h => this._baseMedicalHistory.push(h));\r\n\t});\r\n\r\n\tfetchPetWeightHistory = flow(function* (this: PetDetailsStore, petId: number) {\r\n\t\tthis.petWeightHistory = yield PetService.getPetWeightHistory(petId);\r\n\t});\r\n\r\n\tfetchPetAttachments = flow(function* (this: PetDetailsStore, petId: number) {\r\n\t\tif (petId) {\r\n\t\t\tthis.petAttachments = yield PetService.getAttachments(petId);\r\n\t\t}\r\n\t});\r\n\r\n\t@action.bound setPetMedicalHistory(medicalHistory: MedicalHistoryModel[]) {\r\n\t\tthis._baseMedicalHistory.clear();\r\n\t\tmedicalHistory.forEach(history => this._baseMedicalHistory.push(history));\r\n\t}\r\n\r\n\tfetchPet = flow(function* (this: PetDetailsStore, id: number | undefined) {\r\n\t\tthis.petLoading = true;\r\n\t\tthis._medicalHistorySearchQuery = \"\";\r\n\t\tif (!id) {\r\n\t\t\tthis.pet = new PetModel(defaultPet);\r\n\t\t} else {\r\n\t\t\tthis.pet = yield PetService.fetchPet(id);\r\n\t\t}\r\n\t\tthis.petLoading = false;\r\n\t});\r\n\r\n\tfetchPetReminder = flow(function* (this: PetDetailsStore, petId: number) {\r\n\t\tthis.remindersLoading = true;\r\n\t\tif (petId) {\r\n\t\t\tthis.petappointmentreminders = yield PetService.getVisitReminders(petId).catch(() => NotificationStoreInstance.onError(\"Failed to fetch pet reminders.\", []));\r\n\t\t}\r\n\r\n\t\tthis.remindersLoading = false;\r\n\t});\r\n\r\n\tfetchPetHospitalPrescriptions = flow(function* (this: PetDetailsStore, petId: number) {\r\n\t\tif (petId) {\r\n\t\t\tthis.petHospitalPrescriptions = yield PetService.getHospitalPrescriptions(petId).catch(() => NotificationStoreInstance.onError(\"Failed to fetch pet prescriptions.\", []));\r\n\t\t}\r\n\t});\r\n\r\n\tsavePetAlerts = flow(function* (this: PetDetailsStore, petId: number, petAlerts: number[]) {\r\n\t\tlet request = new EnsurePetAlertsRequest({ petId: petId, PetAlertIds: petAlerts });\r\n\r\n\t\tyield PetService.ensurepetalerts(petId, request).catch(() => NotificationStoreInstance.onError(\"Failed to update pet alerts.\", undefined));\r\n\r\n\t\tyield this.fetchPet(petId);\r\n\r\n\t\treturn;\r\n\t});\r\n\r\n\tpublic fetchEstimates = flow(function* (this: PetDetailsStore, petId: number) {\r\n\t\tthis.estimates = yield PetService.fetchEstimates(petId).catch(NotificationStoreInstance.onError(\"Failed to fetch estimates for pet\", this.estimates));\r\n\t});\r\n\r\n\tpublic createEstimate = flow(function* (this: PetDetailsStore, clinicId: number, timezone: string | undefined) {\r\n\t\tif (this.pet === undefined || timezone === undefined) return;\r\n\t\tconst petId = this.pet.petId;\r\n\t\tthis.estimates = yield PetService.createEstimate(clinicId, petId, this.pet.name, timezone)\r\n\t\t\t.then(() => PetService.fetchEstimates(petId))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to create estimate\", this.estimates));\r\n\t});\r\n\r\n\tpublic resetPet = () => {\r\n\t\tthis._baseMedicalHistory.clear();\r\n\t\tthis._medicalHistorySearchQuery = \"\";\r\n\t\tthis.pet = new PetModel(defaultPet);\r\n\t\tthis.petappointmentreminders = [];\r\n\t\tthis.estimates = [];\r\n\t\tthis.customerInteractions = [];\r\n\t};\r\n\tpublic resetPetMedicalDetails = () => {\r\n\t\trunInAction(() => {\r\n\t\t\tthis.pet = new PetModel(defaultPet);\r\n\t\t\tthis._baseMedicalHistory.clear();\r\n\t\t\tthis.petHospitalPrescriptions = [];\r\n\t\t\tthis.customerInteractions = [];\r\n\t\t\tthis.petAttachments.clear();\r\n\t\t});\r\n\t};\r\n\r\n\tpublic updateEstimate = flow(function* (this: PetDetailsStore, clinicId: number, estimate: EstimateModel) {\r\n\t\tthis.estimates = yield PetService.updateEstimate(clinicId, estimate)\r\n\t\t\t.then(() => PetService.fetchEstimates(estimate.petId))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to update estimate name\", this.estimates));\r\n\t});\r\n\r\n\tpublic addEstimateSalesItem = flow(function* (this: PetDetailsStore, estimate: EstimateModel, visitId: number, salesItemOptionId: number) {\r\n\t\tthis.estimates = yield PetService.addEstimateSalesItem(estimate.petId, estimate.estimateId, visitId, salesItemOptionId)\r\n\t\t\t.then(() => PetService.fetchEstimates(estimate.petId))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to add sales item to estimate\", this.estimates));\r\n\t});\r\n\r\n\tpublic updateEstimateSalesItem = flow(function* (this: PetDetailsStore, estimateSalesItem: EstimateSalesItemModel) {\r\n\t\tif (this.pet === undefined) return;\r\n\t\tconst petId = this.pet.petId;\r\n\t\tthis.estimates = yield PetService.updateEstimateSalesItem(petId, estimateSalesItem)\r\n\t\t\t.then(() => PetService.fetchEstimates(petId))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to update estimate sales item\", this.estimates));\r\n\t});\r\n\r\n\tpublic deleteEstimateSalesItem = flow(function* (this: PetDetailsStore, estimateSalesItem: EstimateSalesItemModel) {\r\n\t\tif (this.pet === undefined) return;\r\n\t\tconst petId = this.pet.petId;\r\n\t\tthis.estimates = yield PetService.deleteEstimateSalesItem(petId, estimateSalesItem.estimateId, estimateSalesItem.salesItemId)\r\n\t\t\t.then(() => PetService.fetchEstimates(petId))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to remove estimate sales item\", this.estimates));\r\n\t});\r\n\r\n\tpublic addEstimateSalesPackage = flow(function* (this: PetDetailsStore, estimate: EstimateModel, visitId: number, salesPackageId: number) {\r\n\t\tthis.estimates = yield PetService.addEstimateSalesPackage(estimate.petId, estimate.estimateId, visitId, salesPackageId)\r\n\t\t\t.then(() => PetService.fetchEstimates(estimate.petId))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to add sales package to estimate\", this.estimates));\r\n\t});\r\n\r\n\tpublic deleteEstimateSalesPackage = flow(function* (this: PetDetailsStore, estimate: EstimateModel) {\r\n\t\tthis.estimates = yield PetService.deleteEstimateSalesPackage(estimate.petId, estimate.estimateId)\r\n\t\t\t.then(() => PetService.fetchEstimates(estimate.petId))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to remove sales package from estimate\", this.estimates));\r\n\t});\r\n\r\n\tpublic addEstimateSalesPlan = flow(function* (this: PetDetailsStore, estimate: EstimateModel, visitId: number, salesPlanId: number) {\r\n\t\tthis.estimates = yield PetService.addEstimateSalesPlan(estimate.petId, estimate.estimateId, visitId, salesPlanId)\r\n\t\t\t.then(() => PetService.fetchEstimates(estimate.petId))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to add sales package to estimate\", this.estimates));\r\n\t});\r\n\r\n\tpublic fetchCustomerInteractions = flow(function* (this: PetDetailsStore, clientId: number, petId: number) {\r\n\t\tthis.customerInteractions = yield ClientService.getClientInteractions(clientId)\r\n\t\t\t.then(customerInteractions =>\r\n\t\t\t\torderBy(\r\n\t\t\t\t\tcustomerInteractions.filter((interaction: CustomerInteractionModel) => Number(interaction.petId) === petId),\r\n\t\t\t\t\t\"clientInteractionId\",\r\n\t\t\t\t\t\"desc\"\r\n\t\t\t\t)\r\n\t\t\t)\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to fetch customer interaction\", this.customerInteractions));\r\n\t});\r\n\r\n\tpublic upsertCustomerInteraction = flow(function* (this: PetDetailsStore, customerInteraction: Partial) {\r\n\t\tcustomerInteraction.clientInteractionId === 0\r\n\t\t\t? yield ClientService.addCustomerInteraction(customerInteraction)\r\n\t\t\t\t.then(() => this.fetchCustomerInteractions(customerInteraction.clientId!, customerInteraction.petId!))\r\n\t\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to create customer interaction\", customerInteraction))\r\n\t\t\t: yield ClientService.updateCustomerInteraction(customerInteraction)\r\n\t\t\t\t.then(() => this.fetchCustomerInteractions(customerInteraction.clientId!, customerInteraction.petId!))\r\n\t\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to update customer interaction\", customerInteraction));\r\n\t});\r\n\r\n\tpublic deleteCustomerInteraction = flow(function* (this: PetDetailsStore, clientInteractionId: number) {\r\n\t\tyield ClientService.deleteCustomerInteraction(clientInteractionId)\r\n\t\t\t.then(() => this.fetchCustomerInteractions(this.pet.clientId, this.pet.petId))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to delete customer interaction\", clientInteractionId));\r\n\t});\r\n\r\n\tpublic deleteEstimate = flow(function* (this: PetDetailsStore, estimate: EstimateModel) {\r\n\t\tthis.estimates = yield PetService.deleteEstimate(estimate.estimateId)\r\n\t\t\t.then(() => PetService.fetchEstimates(estimate.petId))\r\n\t\t\t.then(NotificationStoreInstance.onSuccess(\"Estimate successfully deleted.\"))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to delete estimate.\", this.estimates));\r\n\t});\r\n\r\n\tpublic addPetAttachments = flow(function* (this: PetDetailsStore, files: FileList, documentTypeId: number, notes: string | undefined, hospitalId: number, setProgress: (total: number, completed: number, errored: number) => void) {\r\n\t\t// initialize the progress bar\r\n\t\tlet completed = 0;\r\n\t\tlet errored = 0;\r\n\t\tsetProgress(files.length, completed, errored);\r\n\r\n\t\t// post each file blob to azure storage, then create an attachment.\r\n\t\tconst blobStore = new AzureBlobStore({ containerName: BlobEntityType.Attachment });\r\n\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\ttry {\r\n\t\t\t\t// upload the file to azure blob storage...\r\n\t\t\t\tconst blobSasModel = yield blobStore.uploadFile(files[i]);\r\n\t\t\t\t// ...and immediately create a pet attachment record for the file\r\n\t\t\t\tyield PetService.addAttachment(this.pet.petId, hospitalId, blobSasModel, documentTypeId, notes);\r\n\t\t\t\tcompleted++;\r\n\t\t\t} catch (e) {\r\n\t\t\t\tNotificationStoreInstance.error(`Failed to upload ${files[i]}. Please try again.`);\r\n\t\t\t\terrored++;\r\n\t\t\t}\r\n\t\t\t// update the progress indicator\r\n\t\t\tsetProgress(files.length, completed, errored);\r\n\t\t}\r\n\t\tthis.petAttachments = yield PetService.getAttachments(this.pet.petId);\r\n\t});\r\n\r\n\tpublic updatePetAttachments = flow(function* (this: PetDetailsStore, attachments: AttachmentModel[], notes: string, hospitalId: number) {\r\n\r\n\t\tconst promises = attachments.map(attachment => PetService.updateAttachment(this.pet.petId, hospitalId,notes,attachment.entityId));\r\n\t\tyield Promise.all(promises)\r\n\t\t\t.then(() => NotificationStoreInstance.success(\"Attachment updated\"))\r\n\t\t\t.catch(NotificationStoreInstance.onError(\"Failed to update attachment\", {}));\r\n\t\tthis.petAttachments = yield PetService.getAttachments(this.pet.petId);\r\n\t});\r\n\r\n\tpublic upsertPetNote = flow(function* (this: PetDetailsStore, note: IPetNoteModel) {\r\n\t\tyield PetNoteService.upsertPetNote(note).catch(NotificationStoreInstance.onError(\"Failed to upsert Pet Note\", note));\r\n\r\n\t\tyield this.fetchPet(note.petId);\r\n\t});\r\n\r\n\tpublic deletePetAttachments = flow(function* (this: PetDetailsStore, petAttachmentIds: number[]) {\r\n\t\tconst successMsg = petAttachmentIds.length > 1 ? \"Attachments deleted\" : \"Attachment deleted\";\r\n\t\tconst errorMsg = petAttachmentIds.length > 1 ? \"Failed to delete some attachments\" : \"Failed to delete attachment\";\r\n\r\n\t\tconst deletePromises = petAttachmentIds.map(id => PetService.deleteAttachment(this.pet.petId, id));\r\n\t\tyield Promise.all(deletePromises)\r\n\t\t\t.then(() => NotificationStoreInstance.success(successMsg))\r\n\t\t\t.catch(NotificationStoreInstance.onError(errorMsg, {}));\r\n\t\tthis.petAttachments = yield PetService.getAttachments(this.pet.petId);\r\n\t});\r\n\r\n\tpublic savePetCustomReminders = flow(function* (this: PetDetailsStore, petCustomReminders: PetCustomReminderModel[]) {\r\n\t\tyield PetService.savePetCustomReminders(petCustomReminders);\r\n\t});\r\n}\r\n","/**\r\n * Find all elements in which at least one of the specified properties includes the provided query string \r\n * @param query The query string\r\n * @param arr An array of T to filter\r\n * @param properties The properties of T on which to filter\r\n * @returns A filtered array of T\r\n */\r\nexport function filterForQuery(query: string, arr: T[], properties: Array): T[] {\r\n if (query === \"\") return arr;\r\n const queryLower = query.toLowerCase();\r\n return arr.filter(a =>\r\n properties.some(property => {\r\n const value = a[property];\r\n return (typeof value === \"string\" || typeof value === \"number\") && value.toString().toLowerCase().includes(queryLower);\r\n })\r\n )\r\n}\r\n","import { action, flow, makeObservable, observable } from \"mobx\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\nimport { IZipCode } from \"@common/models\";\r\nimport { ZipCodeService } from \"@common/services\";\r\n\r\nexport class ZipCodeStore {\r\n\t@observable zipCode?: IZipCode = undefined;\r\n\t@observable loading: boolean = false;\r\n\r\n\tconstructor() {\r\n\t\tmakeObservable(this, undefined, { autoBind: true });\r\n\t}\r\n\r\n\tfetchZipCode = flow(function* (this: ZipCodeStore, zipCode: string) {\r\n\t\tthis.loading = true;\r\n\r\n\t\tthis.zipCode = yield ZipCodeService.getZipCodeByZipcode(zipCode).catch(NotificationStoreInstance.onError(\"Failed to fetch zip code.\", undefined));\r\n\r\n\t\tthis.loading = false;\r\n\t});\r\n\r\n\t@action.bound clearZipcode() {\r\n\t\tthis.zipCode = undefined;\r\n\t}\r\n}\r\n","import { Authorized } from '@common/components/trimming/Authorized';\r\nimport { action, makeObservable, observable } from 'mobx';\r\nimport React from 'react';\r\nimport { Params, RouteMatch, RouteObject } from 'react-router';\r\nimport uniqid from 'uniqid';\r\nexport interface IBuildRouteReturn {\r\n route: IExtRouteObject\r\n}\r\n\r\nexport interface IExtRouteMatch extends RouteMatch {\r\n}\r\n\r\n\r\nexport class ExtRouteMatch implements IExtRouteMatch {\r\n pathnameBase: string;\r\n params: Params;\r\n pathname: string;\r\n route: ExtRouteObject;\r\n\r\n constructor(route: ExtRouteObject, pathname: string, params: Params, pathnameBase: string) {\r\n this.params = params;\r\n this.route = route;\r\n this.pathname = pathname;\r\n this.pathnameBase = pathnameBase;\r\n }\r\n}\r\n\r\nexport interface IExtRouteObjectOptions {\r\n hasAccess?: boolean;\r\n skipBreadCrumb?: boolean;\r\n children?: IExtRouteObject[];\r\n redirectTo?: string;\r\n setRouteReference?: (route: IExtRouteObject) => void;\r\n}\r\nexport interface IExtRouteObjectInit {\r\n path?: string,\r\n title?: string,\r\n pageTitle?: string,\r\n redirectTo?: string,\r\n caseSensitive?: boolean,\r\n element: React.ReactNode\r\n}\r\n\r\nexport interface IExtRouteObject extends RouteObject {\r\n uniqueId: string;\r\n title?: string;\r\n pageTitle?: string;\r\n hasAccess?: boolean;\r\n skipBreadCrumb?: boolean\r\n setTitle: (newTitle: string) => void;\r\n}\r\n\r\n/**\r\n * This class extends react routers RouteObject interface and allows us to extend what react router will track in it's state during route management for a route\r\n * It will track an array of these objects where we can have and retrieve data about a route on a per parent/child hierarchy. We can store anything we want to be associated to routes in this class.\r\n */\r\nexport class ExtRouteObject implements IExtRouteObject {\r\n private internalElement!: React.ReactNode;\r\n uniqueId: string;\r\n @observable path?: string;\r\n @observable title?: string;\r\n @observable pageTitle?: string;\r\n @observable caseSensitive?: boolean = false;\r\n @observable children?: RouteObject[] | undefined;\r\n @observable hasAccess?: boolean;\r\n @observable skipBreadCrumb?: boolean;\r\n setRouteReference?: (route: ExtRouteObject) => void;\r\n\r\n @action.bound setTitle(newTitle: string) {\r\n this.title = newTitle;\r\n }\r\n\r\n constructor(init: IExtRouteObjectInit, options?: Partial) {\r\n makeObservable(this, undefined, { autoBind: true });\r\n\r\n this.uniqueId = uniqid(); //useful for key fields on elements\r\n this.path = init.path;\r\n this.title = init.title;\r\n this.pageTitle = init.pageTitle;\r\n this.caseSensitive = init.caseSensitive;\r\n this.internalElement = init.element;\r\n //options\r\n this.skipBreadCrumb = options?.skipBreadCrumb;\r\n this.children = options?.children ? options.children : [];\r\n this.hasAccess = options?.hasAccess;\r\n this.setRouteReference = options?.setRouteReference;\r\n this.init();\r\n }\r\n\r\n //This exists so that we can do some post constructor wiring up to external things that want to update the route. I.e. so we can pass a reference to the route up to a store so the store can manipulat the route title etc.\r\n private init() {\r\n if (this.setRouteReference) {\r\n this.setRouteReference(this);\r\n }\r\n }\r\n\r\n /* Automatically handle authorized routes here, if hasAccess is set we wrap the route element in an Authorized automatically here and let it handle access trimming with a redirect to error page */\r\n get element() {\r\n if (this.hasAccess !== undefined) {\r\n return (\r\n \r\n {\r\n this.internalElement\r\n }\r\n \r\n )\r\n }\r\n return this.internalElement;\r\n }\r\n}\r\n","import React from 'react';\r\nimport { IndexRouteProps, LayoutRouteProps, PathRouteProps, Route } from 'react-router-dom';\r\ntype BreadCrumb = { breadcrumb: any }\r\ntype BreadCrumbRouteType = (_props: PathRouteProps | LayoutRouteProps | IndexRouteProps | BreadCrumb) => React.ReactElement> | null\r\nconst BreadCrumbRoute: BreadCrumbRouteType = Route;\r\n\r\nexport { BreadCrumbRoute as Route };\r\n","import { makeObservable, observable } from 'mobx';\r\nimport React from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport { BreadcrumbsRoute } from 'use-react-router-breadcrumbs';\r\nfunction invariant(cond: any, message: any) {\r\n if (!cond) throw new Error(message);\r\n}\r\n\r\n\r\nexport function createRoutesFromChildren(children: React.ReactNode): BreadcrumbsRoute[] {\r\n let routes: BreadcrumbsRoute[] = [];\r\n React.Children.forEach(children, element => {\r\n if (!React.isValidElement(element)) {\r\n return;\r\n }\r\n\r\n if (element.type === React.Fragment) {\r\n // Transparently support React.Fragment and its children.\r\n routes.push.apply(routes, createRoutesFromChildren(element.props.children));\r\n return;\r\n }\r\n\r\n !(element.type === Route) ? process.env['NODE_ENV'] !== \"production\" ? invariant(false, \"[\" + (typeof element.type === \"string\" ? element.type : element.type.name) + \"] is not a component. All component children of must be a or \") : invariant(false, undefined) : void 0;\r\n let route: BreadcrumbsRoute = {\r\n caseSensitive: element.props.caseSensitive,\r\n element: element.props.element,\r\n index: element.props.index,\r\n path: element.props.path,\r\n breadcrumb: element.props.breadcrumb,\r\n };\r\n //this is the magic that makes useRouteBreadCrumb work, by making breadcrumb observable, we can update it from anywhere in the app and trigger observers to re-render it.\r\n makeObservable(route, {\r\n \"breadcrumb\": observable\r\n });\r\n\r\n if (element.props.children) {\r\n route.children = createRoutesFromChildren(element.props.children);\r\n }\r\n\r\n routes.push(route);\r\n });\r\n return routes;\r\n}\r\n","import { petcoBlue } from '@common/_assets/color-constants.js';\r\nimport React, { CSSProperties } from 'react';\r\nimport PulseLoader from \"react-spinners/PulseLoader\";\r\nexport interface IAppSpinnerProps {\r\n spinnerCSSOverride?: CSSProperties;\r\n}\r\n\r\nexport const AppSpinner = ({ spinnerCSSOverride }: IAppSpinnerProps) => {\r\n const spinnerDefault: CSSProperties =\r\n {\r\n margin: '350px auto 0',\r\n zIndex: 1050,\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0,\r\n width: '60px'\r\n };\r\n\r\n return (\r\n <>\r\n \r\n Loading...\r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Container, Navbar } from 'react-bootstrap';\r\nimport uniqid from 'uniqid';\r\n\r\n\r\nexport interface INavLinkProps {\r\n route: string,\r\n name: string\r\n}\r\n\r\nexport const NavBar = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\n\r\nexport default NavBar;\r\n","import { AppSpinner } from '@common/components/appSpinner';\r\nimport { NotificationList } from '@common/components/utility';\r\nimport { ClientService, ImageService, IntakeService, ReservationService, VisitService, ZipCodeService } from \"@common/services\";\r\nimport { ConfigurationService } from '@common/services/configurationService';\r\nimport { anyPromiseTrackerTagsInProgress, componentUtility } from '@common/utils';\r\nimport classNames from 'classnames';\r\nimport { map } from 'lodash';\r\nimport React, { CSSProperties } from 'react';\r\nimport { Col, Container, Row } from 'react-bootstrap';\r\nimport { NavBar } from './nav/NavBar';\r\nexport interface PageProps extends React.HTMLAttributes {\r\n}\r\n\r\nconst Page = (props: React.PropsWithChildren) => {\r\n const { children } = props;\r\n const contentComponent = componentUtility.findByType(children, Content);\r\n const sideBarComponent = componentUtility.findByType(children, SideBar);\r\n const pageTitleComponent = componentUtility.findByType(children, PageTitle);\r\n\r\n if (!contentComponent) {\r\n throw new Error('Expected Page.Content child on Page component, not supplied');\r\n }\r\n\r\n const tags: string[] = [\r\n ...map(ConfigurationService.tags, (value) => value),\r\n ...map(ReservationService.tags, (value) => value),\r\n ...map(ClientService.tags, (value) => value),\r\n ...map(ImageService.tags, (value) => value),\r\n ...map(IntakeService.tags, (value) => value),\r\n ...map(ZipCodeService.tags, (value) => value),\r\n ...map(VisitService.tags, (value) => value)\r\n ];\r\n\r\n const spinnerOverride: CSSProperties =\r\n {\r\n margin: '350px auto 0',\r\n position: 'fixed',\r\n zIndex: 1050,\r\n overflow: 'show',\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0,\r\n width: '60px'\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n\r\n {\r\n anyPromiseTrackerTagsInProgress(tags, 500) &&\r\n <>\r\n
    \r\n \r\n \r\n }\r\n \r\n \r\n \r\n
    \r\n {\r\n pageTitleComponent ? pageTitleComponent : null\r\n }\r\n {contentComponent}\r\n
    \r\n \r\n {\r\n sideBarComponent &&\r\n \r\n {sideBarComponent}\r\n \r\n }\r\n
    \r\n
    \r\n\r\n \r\n )\r\n};\r\n\r\nexport interface PageTitleProps {\r\n text?: string;\r\n}\r\n\r\nconst PageTitle = (props: React.PropsWithChildren) => {\r\n if (props.text) {\r\n return (\r\n

    {props.text}

    \r\n )\r\n }\r\n return (\r\n <>\r\n {props.children ? props.children : <>}\r\n \r\n )\r\n}\r\n\r\nexport interface SideBarProps {\r\n title?: string;\r\n}\r\n\r\nconst SideBar = (props: React.PropsWithChildren) => {\r\n return (\r\n <>\r\n
    \r\n {props.title &&\r\n

    {props.title}

    \r\n }\r\n {props.children}\r\n
    \r\n \r\n )\r\n}\r\n\r\nexport interface ContentProps {\r\n}\r\n\r\nconst Content = (props: React.PropsWithChildren) => {\r\n return (\r\n <>\r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nconst PageComponent = Object.assign(Page, {\r\n SideBar,\r\n Content,\r\n PageTitle\r\n});\r\n\r\nexport {\r\n PageComponent as Page\r\n};\r\n","import { IIntakeModel, IntakeModel, IntakePetModel } from \"@common/models\";\r\nimport { IntakeService } from '@common/services';\r\nimport { find } from \"lodash\";\r\nimport { DateTime } from \"luxon\";\r\nimport { action, computed, flow, makeObservable, observable } from \"mobx\";\r\n\r\nexport class IntakeStore {\r\n @observable intakePublicId: string = '';\r\n @observable linkSource: string = 'email';\r\n @observable intake: IntakeModel = new IntakeModel();\r\n @observable isReadOnly: boolean = false;\r\n @observable loading: boolean = true;\r\n @observable selectedIntakePetId: number = 0;\r\n @observable selectedIntakePetIndex: number = -1;\r\n\r\n constructor() {\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n });\r\n }\r\n\r\n @computed get selectedPet(): IntakePetModel | undefined {\r\n if (this.selectedIntakePetId == 0) return undefined;\r\n return find(this.intake.pets, (pet) => {\r\n return pet.intakePetId == this.selectedIntakePetId;\r\n });\r\n }\r\n\r\n //#region Actions\r\n\r\n @action.bound setParamValues(intakePublidId: string, linkSource?: string, intakepetid?: number) {\r\n this.intakePublicId = intakePublidId;\r\n if (linkSource)\r\n this.linkSource = linkSource;\r\n\r\n if (intakepetid)\r\n this.selectedIntakePetId = intakepetid;\r\n }\r\n\r\n @action.bound intakeIsReadOnly(): boolean {\r\n const today = DateTime.now();\r\n\r\n if (!this.intake.expectedFullVisitDate)\r\n return true;\r\n\r\n const visitDate = DateTime.fromJSDate(this.intake.expectedFullVisitDate);\r\n const visitDateAlreadyHappened = today.startOf(\"day\") > visitDate;\r\n\r\n if (visitDate && visitDateAlreadyHappened && this.linkSource === 'petpass')\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Flows\r\n\r\n getIntake = flow(function* (this: IntakeStore) {\r\n this.intake = yield IntakeService.getIntake(this.intakePublicId, { showError: true });\r\n\r\n this.isReadOnly = this.intake.isReadOnly || this.intake.isClinicCancelled || this.intakeIsReadOnly()\r\n\r\n // Track the opening of the intake\r\n if (this.intake) {\r\n yield IntakeService.openIntake(this.intake.intakeId, this.linkSource, { showError: true });\r\n }\r\n });\r\n\r\n updateIntake = flow(function* (this: IntakeStore, intake: IIntakeModel) {\r\n return yield IntakeService.updateIntake(intake, this.linkSource, { showError: true });\r\n });\r\n\r\n //#endregion\r\n}\r\n","import { IBlobSasModel, IIntakePetModel, IntakePetModel } from \"@common/models\";\r\nimport { BlobEntityType } from \"@common/models/Enums\";\r\nimport { ImageService, IntakeService } from \"@common/services\";\r\nimport { AzureBlobStore } from \"@common/stores\";\r\nimport { IntakeStore } from \"@customer/stores\";\r\nimport { each } from \"lodash\";\r\nimport { action, flow, IObservableArray, makeObservable, observable, runInAction } from \"mobx\";\r\n\r\nexport interface ISection {\r\n name: string;\r\n}\r\n\r\nexport class IntakePetStore {\r\n intakeStore!: IntakeStore;\r\n blobStore!: AzureBlobStore;\r\n @observable progressSections: IObservableArray = observable([{ name: 'petprofile' }]);\r\n @observable selectedSectionIndex: number = -1;\r\n @observable sectionWidth: number = 0;\r\n @observable selectedPet: IntakePetModel = new IntakePetModel();\r\n\r\n constructor(intakeStore: IntakeStore) {\r\n this.intakeStore = intakeStore;\r\n\r\n if (!this.blobStore)\r\n this.blobStore = new AzureBlobStore({ containerName: BlobEntityType.IntakePet });\r\n\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n });\r\n }\r\n\r\n @action.bound load(intakePublicId: string, linksource: string, intakePetId?: number) {\r\n this.intakeStore.setParamValues(intakePublicId, linksource, intakePetId);\r\n\r\n this.fetchIntakeSelectedPet();\r\n }\r\n\r\n @action.bound nextSection() {\r\n this.selectedSectionIndex = this.selectedSectionIndex + 1;\r\n }\r\n\r\n @action.bound updateSelectedQuestionListValue(listValueId: number, sectionIdx: number, questionIdx: number) {\r\n\r\n this.selectedPet.sections[sectionIdx].questions[questionIdx].intakePetSectionQuestionListValues.forEach(val => {\r\n val.isSelected = (val.intakePetSectionQuestionListValueId == listValueId);\r\n })\r\n\r\n return this.selectedPet.sections[sectionIdx].questions[questionIdx];\r\n }\r\n\r\n fetchIntakeSelectedPet = flow(function* (this: IntakePetStore) {\r\n yield this.intakeStore.getIntake().then(() => {\r\n const selectedPet = this.intakeStore.selectedPet;\r\n\r\n runInAction(() => {\r\n if (selectedPet) {\r\n each(selectedPet.sections, (s) => {\r\n this.progressSections.push({ name: s.name } as ISection);\r\n });\r\n\r\n this.sectionWidth = (100 / (this.progressSections.length)) - 3;\r\n\r\n this.selectedPet = selectedPet;\r\n }\r\n });\r\n });\r\n })\r\n\r\n updateIntakePet = flow(function* (this: IntakePetStore, intakePet: IIntakePetModel) {\r\n return yield IntakeService.updateIntakePet(intakePet, this.intakeStore.linkSource, { showError: true });\r\n })\r\n\r\n savePetPhoto = flow(function* (this: IntakePetStore, petPhotoFile: File) {\r\n if (petPhotoFile) {\r\n\r\n const blobSas: IBlobSasModel = yield this.blobStore.uploadFile(petPhotoFile, this.selectedPet.intakePetId, true);\r\n if (blobSas) {\r\n // Intake must already exist.\r\n return yield ImageService.uploadIntakePetPhotoPublic(blobSas, { showSuccess: true, showError: true }).then((intakePet) => {\r\n runInAction(() => {\r\n this.selectedPet = intakePet;\r\n });\r\n });\r\n }\r\n }\r\n\r\n return;\r\n })\r\n}\r\n","import { makeObservable, observable, runInAction } from \"mobx\";\r\nimport { NotificationStore, NotificationStoreInstance } from \"@common/stores\";\r\nimport { VisitPublicModel } from \"@common/models\";\r\nimport { VisitService } from \"@common/services\";\r\n\r\nexport class VisitPublicStore {\r\n notificationStore!: NotificationStore;\r\n @observable visit: VisitPublicModel | undefined = undefined;\r\n\r\n constructor() {\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n });\r\n }\r\n\r\n async fetchPublicVisit(visitPublicId: string) {\r\n await VisitService.getPublicVisit(visitPublicId)\r\n .then(visit => runInAction(() => {\r\n this.visit = visit\r\n }))\r\n .catch(err => NotificationStoreInstance.error(\"Failed to fetch visit information. \" + err));\r\n }\r\n\r\n async signConsent(visitPublicId: string, consentTypePublicId: string, signaturePhotoDataUrl: string): Promise {\r\n if (visitPublicId === undefined || consentTypePublicId === undefined || signaturePhotoDataUrl === undefined) return false;\r\n const signatureBase64Encoded = signaturePhotoDataUrl.split(',')[1];\r\n return await VisitService.signAndStoreConsent(signatureBase64Encoded, visitPublicId, consentTypePublicId, true)\r\n .then(() => true)\r\n .catch(() => {\r\n NotificationStoreInstance.error(\"Failed to save Treatment Consent signature. Please try again.\");\r\n return false;\r\n });\r\n }\r\n}\r\n","import { makeObservable, observable, runInAction } from \"mobx\";\r\nimport { ClinicService } from \"@common/services\";\r\nimport { RebookReservationResponse } from \"@common/models/responses\";\r\n\r\nexport class RebookStore {\r\n\r\n @observable rebookReservation: RebookReservationResponse | undefined;\r\n\r\n constructor() {\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n });\r\n }\r\n\r\n async getReservationForRebooking(clinicId: number, reservationpublicId: string) {\r\n await ClinicService.getReservationForRebooking(clinicId, reservationpublicId).then((response) => {\r\n runInAction(() => {\r\n this.rebookReservation = response;\r\n });\r\n })\r\n }\r\n}\r\n","import { makeObservable, observable, flow, action, IObservableArray, computed } from \"mobx\";\r\nimport { ClientService, ReservationService, VisitService } from '@common/services';\r\nimport { AppointmentManagementGroupingModel, AppointmentManagementItem, AppointmentManagementListModel, IReservationCancelRequest, CommunicationPreferenceModel } from \"@common/models\";\r\nimport { ListUtility } from \"@common/utils\";\r\nimport { NotificationStoreInstance } from \"@common/stores\";\r\n\r\nexport class AppointmentsStore {\r\n jackpotReservationBookingUrl: string;\r\n /**Public Reservation Id */\r\n publicId: string = '';\r\n isReschedule: boolean = false;\r\n isRebook: boolean = false;\r\n\r\n @observable cancellationVisible: boolean = false;\r\n @observable confirmationVisible: boolean = false;\r\n @observable apptList: IObservableArray = observable([]);\r\n @observable selectedItems: IObservableArray = observable([]);\r\n @observable clinicDate: Date | undefined;\r\n @observable sendToSalk: boolean = false;\r\n\r\n constructor(jackpotReservationBookingUrl: string | undefined) {\r\n\r\n this.jackpotReservationBookingUrl = jackpotReservationBookingUrl + '?source=customerapp';\r\n\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n });\r\n }\r\n\r\n @computed get petNames() {\r\n const lstPets = _.map(this.selectedItems, 'petName');\r\n const petNames = ListUtility.toOxford(lstPets, 'and', '');\r\n return petNames;\r\n }\r\n\r\n // #region Cancellation\r\n @action.bound showCancellation(items: AppointmentManagementItem[], isReschedule: boolean, isRebook: boolean): void {\r\n this.selectedItems.push(...items);\r\n this.isReschedule = isReschedule;\r\n this.isRebook = isRebook;\r\n this.cancellationVisible = true;\r\n }\r\n\r\n @action.bound closeCancellation(): void {\r\n this.selectedItems.clear();\r\n this.isReschedule = false;\r\n this.isRebook = false;\r\n this.cancellationVisible = false;\r\n }\r\n\r\n @action.bound cancelReservationConfirm() {\r\n // Map returns Array\r\n // Compact strips out all falsey values including undefined and \"\"\r\n const ids = _.compact(_.map(this.selectedItems, 'reservationPublicId'));\r\n\r\n this.cancelAppointmentGroup(ids, this.isReschedule, this.isRebook).then(() => {\r\n this.getAppointmentAndVisitData();\r\n\r\n this.selectedItems.clear();\r\n if (this.isReschedule) {\r\n this.sendToSalk = true;\r\n }\r\n this.cancellationVisible = false;\r\n });\r\n }\r\n\r\n /**\r\n * Handles bulk cancellation on appointment group\r\n */\r\n cancelAppointmentGroup = flow(function* (this: AppointmentsStore, ids: string[], isReschedule: boolean, isRebook: boolean) {\r\n let request: IReservationCancelRequest = {\r\n publicReservationIds: ids,\r\n isReschedule: isReschedule,\r\n isRebook: isRebook\r\n };\r\n\r\n // cancel reservations\r\n yield ReservationService.cancelBulk(request);\r\n });\r\n // #endregion\r\n\r\n // #region Confirmation\r\n @action.bound showConfirmation(): void {\r\n this.confirmationVisible = true;\r\n }\r\n\r\n @action.bound closeConfirmation(): void {\r\n this.selectedItems.clear();\r\n this.sendToSalk = false;\r\n this.confirmationVisible = false;\r\n }\r\n\r\n @action.bound confirm(): void {\r\n this.getAppointmentAndVisitData();\r\n this.closeConfirmation();\r\n }\r\n\r\n /**\r\n * Handles Confirmation of appointment groups\r\n */\r\n @action.bound confirmAppointmentGroup = flow(function* (this: AppointmentsStore, group: AppointmentManagementGroupingModel) {\r\n // Map returns Array\r\n // Compact strips out all falsey values including undefined and \"\"\r\n const ids = _.compact(_.map(group.items, 'reservationPublicId'));\r\n\r\n yield ReservationService.confirmBulk(ids, { showSuccess: true, showError: true }).then(() => {\r\n this.showConfirmation();\r\n });\r\n });\r\n // #endregion\r\n\r\n /**\r\n * Gets Appointment and Visit Data for a public customer\r\n */\r\n getAppointmentAndVisitData = flow(function* (this: AppointmentsStore) {\r\n this.apptList = yield ClientService.getAppointmentAndVisitData(this.publicId, undefined);\r\n });\r\n\r\n resendVisitCompletionEmail = flow(function* (this: AppointmentsStore, visitIds: string[]) {\r\n yield VisitService.resendVisitCompletionEmail(visitIds).then(() => {\r\n NotificationStoreInstance.success('We\\'ve queued your Post Visit Summary email(s).');\r\n }).catch(() => {\r\n NotificationStoreInstance.error('An unknown error has occurred.');\r\n });\r\n });\r\n\r\n saveCommunicationPreference = flow(function* (this: AppointmentsStore, data: CommunicationPreferenceModel) {\r\n yield ClientService.saveCommunicationPreference(this.publicId, data)\r\n .then(() => {\r\n this.getAppointmentAndVisitData();\r\n NotificationStoreInstance.success('Communication preference saved.');\r\n }).catch(() => {\r\n NotificationStoreInstance.error('Failed to save communication preference.');\r\n });\r\n });\r\n\r\n @computed get latestCommunicationPreference(): CommunicationPreferenceModel {\r\n return this.apptList?.length > 0 ? this.apptList[0].communicationPreference : new CommunicationPreferenceModel();\r\n }\r\n\r\n}\r\n","import { useApp } from '@common/hooks';\r\nimport { CommunicationPreferenceModel } from '@common/models/CommunicationPreferenceModel';\r\nimport { Page } from '@customer/components/layout';\r\nimport { AppointmentsStore } from '@customer/stores';\r\nimport { AppointmentList, CommunicationPreference, WhatToExpect } from '@customer/views';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect, useMemo, useState } from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { useNavigate, useParams } from 'react-router-dom';\r\nexport const AppointmentsContainer = observer(() => {\r\n const { configuration } = useApp();\r\n const [store] = useState(new AppointmentsStore(configuration.jackpotReservationBookingUrl));\r\n const { verificationpublicid } = useParams();\r\n const navigate = useNavigate();\r\n\r\n useEffect(() => {\r\n if (verificationpublicid) {\r\n store.publicId = verificationpublicid;\r\n store.getAppointmentAndVisitData()\r\n .catch(() => {\r\n navigate(\"/verification\");\r\n });\r\n }\r\n }, [store, verificationpublicid, navigate]);\r\n\r\n const latestCommunicationPreference = useMemo(() => {\r\n return store.latestCommunicationPreference || new CommunicationPreferenceModel();\r\n }, [store.latestCommunicationPreference]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {\r\n\r\n store.apptList\r\n .map((lst, index) => (\r\n \r\n \r\n

    {lst.name}

    \r\n\r\n

    {lst.description}

    \r\n\r\n \r\n\r\n {\r\n lst.canViewWhatToExpect ?\r\n <>\r\n \r\n \r\n : null\r\n }\r\n\r\n\r\n \r\n
    \r\n ))\r\n\r\n }\r\n {\r\n store.apptList && store.apptList.length > 0 && store.apptList[0].showCommunicationPreference &&\r\n <>\r\n \r\n \r\n }\r\n
    \r\n
    \r\n \r\n )\r\n});\r\n","import { IAppointmentManagementListModel } from \"@common/models\";\r\nimport { AppointmentsStore } from '@customer/stores';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { AppointmentGroup } from '.';\r\n\r\ninterface IAppointmentListProps {\r\n store: AppointmentsStore;\r\n apptList: IAppointmentManagementListModel;\r\n listName: string\r\n}\r\n\r\nexport const AppointmentList = observer(({ store, apptList, listName }: IAppointmentListProps) => {\r\n return (\r\n <>\r\n \r\n \r\n {\r\n apptList.groups\r\n .slice()\r\n .sort((a, b) => a.sortOrder - b.sortOrder)\r\n .map((group, index) => (\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n );\r\n});\r\n","import classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\n\r\ninterface ICancelReservationModalProps {\r\n bodyText: string;\r\n visible: boolean;\r\n onConfirm: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport const CancelReservationModal = observer(({ bodyText, visible, onConfirm, onCancel }: ICancelReservationModalProps) => {\r\n\r\n return (\r\n \r\n \r\n

    \r\n

    {bodyText}

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n});\r\n","import classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\n\r\ninterface IConfirmReservationModalProps {\r\n visible: boolean;\r\n bodyText: string;\r\n onConfirm: () => void;\r\n}\r\n\r\nexport const ConfirmReservationModal = observer(({ visible, bodyText, onConfirm }: IConfirmReservationModalProps) => {\r\n\r\n return (\r\n \r\n \r\n

    \r\n

    {bodyText}

    \r\n
    \r\n \r\n \r\n \r\n
    \r\n )\r\n});\r\n","import catIcon from '@common/_assets/images/icon-cat.svg';\r\nimport dogIcon from '@common/_assets/images/icon-dog.svg';\r\nimport { YesNoConfirmModal } from \"@common/components/modals\";\r\nimport { useApp } from '@common/hooks';\r\nimport { AppointmentManagementItem, IAppointmentManagementGroupingModel, IAppointmentManagementItem } from '@common/models';\r\nimport { VisitService } from \"@common/services\";\r\nimport { anyPromiseTrackerTagsInProgress, ordinal } from '@common/utils';\r\nimport { normalizePhone } from '@common/utils/phoneUtils';\r\nimport { CancelReservationModal, ConfirmReservationModal } from '@customer/components/modals';\r\nimport { AppointmentsStore } from '@customer/stores';\r\nimport { faMapMarkerAlt } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport classNames from 'classnames';\r\nimport { DateTime } from 'luxon';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\r\nimport { Button, Card, Col, Image, ListGroup, Row, Table } from 'react-bootstrap';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\ninterface IAppointmentGroupProps {\r\n store: AppointmentsStore;\r\n group: IAppointmentManagementGroupingModel;\r\n groupId: string;\r\n}\r\ninterface IAppCannotRescheduleMessageProps {\r\n hospitalPhone: string;\r\n extraMessage?: string;\r\n}\r\n\r\nconst AppCannotRescheduleMessage = ({ hospitalPhone , extraMessage}: IAppCannotRescheduleMessageProps) => (\r\n

    \r\n This appointment cannot be rescheduled online. Please call the hospital at {hospitalPhone} {extraMessage && {extraMessage}}\r\n

    \r\n);\r\n\r\nexport const AppointmentGroup = observer(({ store, group, groupId }: IAppointmentGroupProps) => {\r\n const { configuration } = useApp();\r\n const [resendEmail, setResendEmail] = useState(false);\r\n const [rescheduleItem, setRescheduleItem] = useState(undefined);\r\n const navigate = useNavigate();\r\n const clinicDate = new Date(group.clinicDate);\r\n const mounted = useRef(true);\r\n const [selectedGroup, setSelectedGroup] = useState('');\r\n const friendlyClinicDate = useMemo(() => {\r\n return `${DateTime.fromJSDate(group.clinicDate).toFormat(\"EEEE, MMMM\")} ${ordinal.getNumberOrdinal(group.clinicDate.getDate())}`;\r\n\r\n }, [group.clinicDate]);\r\n\r\n const cancellationBody = useMemo(() => {\r\n if (!store.isReschedule && !store.isRebook) {\r\n return `Are you sure? This will Cancel your appointment(s) for ${store.petNames} on ${friendlyClinicDate}.`;\r\n } else {\r\n return `Are you sure? This will Cancel your appointment(s) for ${store.petNames} and allow you to rebook.`;\r\n }\r\n }, [friendlyClinicDate, store.isRebook, store.isReschedule, store.petNames]);\r\n\r\n const confirmationBody = useMemo(() => {\r\n return `Your pet's appointment on ${friendlyClinicDate} has been confirmed. We look forward to seeing you. To help us prepare for your visit please complete your Pet's Intake Form prior to your appointment. Forms are available 48 hours prior to your visit.`;\r\n }, [friendlyClinicDate]);\r\n\r\n //#region Events\r\n\r\n const onConfirmGroupClick = () => {\r\n store.confirmAppointmentGroup(group);\r\n }\r\n\r\n\r\n const onCancelItemClick = (item: IAppointmentManagementItem, selectedGroupId: string) => {\r\n setSelectedGroup(selectedGroupId);\r\n store.showCancellation([item], false, false);\r\n }\r\n\r\n const onCancelGroupClick = (selectedGroupId: string) => {\r\n setSelectedGroup(selectedGroupId);\r\n store.showCancellation([...group.items], false, false);\r\n }\r\n\r\n // Because React and Mobx suck together\r\n // Entire process here is a hack. Shouldn't need to have a useState for the group this component knows it has.\r\n const onRescheduleItemClick = (item: IAppointmentManagementItem, selectedGroupId: string) => {\r\n setSelectedGroup(selectedGroupId);\r\n if (!group.rescheduleViaVOB) {\r\n store.showCancellation([item], true, false);\r\n } else {\r\n // singular rescheduled item.\r\n setRescheduleItem(item);\r\n\r\n requestAnimationFrame(() => {\r\n document.getElementById(groupId)?.click();\r\n });\r\n }\r\n }\r\n\r\n const onRescheduleGroupClick = (rebook: boolean, selectedGroupId: string) => {\r\n setSelectedGroup(selectedGroupId);\r\n if (!group.rescheduleViaVOB) {\r\n if (!rebook) {\r\n store.showCancellation([...group.items], true, rebook);\r\n } else {\r\n // Map returns Array\r\n // Compact strips out all falsey values including undefined and \"\"\r\n const ids = _.compact(_.map(group.items, 'reservationPublicId'));\r\n store.cancelAppointmentGroup(ids, true, rebook).then(() => {\r\n if (mounted) {\r\n store.getAppointmentAndVisitData().then(() => {\r\n document.getElementById(groupId)?.click();\r\n }).catch(() => {\r\n if (mounted)\r\n navigate(\"/verification\");\r\n });\r\n }\r\n });\r\n }\r\n } else {\r\n setRescheduleItem(undefined);\r\n document.getElementById(groupId)?.click();\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n useEffect(() => {\r\n if (!mounted)\r\n return; //don't do anything\r\n return () => {\r\n mounted.current = false;\r\n };\r\n }, [mounted]);\r\n\r\n const resendVisitConfirmationEmail = async (items: IAppointmentManagementItem[]) => {\r\n if (items.length && items.some(i => i.visitPublicId !== undefined)) {\r\n const visitIds: string[] = [];\r\n items.forEach(item => {\r\n if (item.visitPublicId !== undefined) visitIds.push(item.visitPublicId);\r\n });\r\n await store.resendVisitCompletionEmail(visitIds);\r\n setResendEmail(false);\r\n }\r\n }\r\n\r\n const shouldSendReservationIdToVOB = (status: string): boolean => {\r\n return status !== 'Cancelled' && status !== 'Missed'\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {group.status}\r\n \r\n

    {`${DateTime.fromJSDate(clinicDate).toFormat(\"EEEE, MMMM\")} ${ordinal.getNumberOrdinal(clinicDate.getDate())} `}

    \r\n \r\n \r\n
    \r\n \r\n
    \r\n {_.isEmpty(group.hospitalName) ? \"Vaccination Clinic\" : \"Hospital\"}\r\n
    \r\n
    \r\n
    \r\n

    At {group.partnerName}

    \r\n

    {group.address}

    \r\n

    {group.city}, {group.state} {group.zip}

    \r\n
    \r\n\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.canCancel ? : null}\r\n \r\n \r\n \r\n {\r\n group.items.map((item) => (\r\n \r\n \r\n \r\n {group.canCancel ?\r\n \r\n : null}\r\n \r\n ))\r\n }\r\n \r\n
    \r\n {item.species === \"Canine\"\r\n ? \r\n : item.species === \"Feline\"\r\n ? \r\n : null} {item.petName}\r\n at {item.itemTime}\r\n { onCancelItemClick(item, groupId) }}>Cancel\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n {group.canConfirm ?\r\n \r\n : null}\r\n {group.canSendVisitCompletion ?\r\n \r\n : null}\r\n {group.canRebook ? (\r\n group.isAppointmentTypeOnlineBooking ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : null}\r\n
    \r\n\r\n
    \r\n {group.canCancel ?\r\n \r\n : null}\r\n {group.canReschedule && (!group.isHospitalReservation || (configuration.vobRescheduleEnabled && group.isHospitalReservation && group.isAppointmentTypeOnlineBooking)) && \r\n }\r\n
    \r\n {group.canReschedule && group.isHospitalReservation && (!configuration.vobRescheduleEnabled || !group.isAppointmentTypeOnlineBooking) &&\r\n }\r\n
    \r\n {\r\n group.canViewIntake ?\r\n \r\n
    \r\n

    \r\n \r\n Help us get ready for you pet's appointment\r\n \r\n

    \r\n

    \r\n Please review or complete your Pet's Intake Form prior to your visit. This information will help our team provide the best visit tailored to your pet's needs.\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n : null\r\n }\r\n
    \r\n {\r\n group.rescheduleViaVOB ?\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {_.isUndefined(rescheduleItem) ?\r\n group.items.map((item) => (\r\n
    \r\n \r\n \r\n \r\n
    \r\n ))\r\n :\r\n <>\r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n :\r\n <>\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.canConfirm ?\r\n \r\n : null}\r\n\r\n {((group.canCancel || group.canReschedule) && groupId === selectedGroup) ?\r\n {\r\n store.cancelReservationConfirm();\r\n\r\n if (!group.rescheduleViaVOB)\r\n document.getElementById(groupId)?.click();\r\n }}\r\n onCancel={store.closeCancellation} />\r\n : null}\r\n\r\n i.petName).join(', ')}.`}\r\n onConfirm={() => resendVisitConfirmationEmail(group.items)}\r\n onCancel={() => setResendEmail(false)} />\r\n \r\n )\r\n});\r\n","import React from 'react';\r\nimport { Accordion, Carousel } from 'react-bootstrap';\r\n\r\nimport wte1 from '../../_assets/images/journey/01-what-to-expect.png';\r\nimport wte2 from '../../_assets/images/journey/02-what-to-expect.png';\r\nimport wte3 from '../../_assets/images/journey/03-what-to-expect.png';\r\nimport wte4 from '../../_assets/images/journey/04-what-to-expect.png';\r\nimport wte5 from '../../_assets/images/journey/05-what-to-expect.png';\r\nimport wte6 from '../../_assets/images/journey/06-what-to-expect.png';\r\n\r\nexport const WhatToExpect = () => {\r\n const element = (\r\n \r\n \r\n \r\n What To Expect\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    1
    \r\n
    \r\n
    \r\n
    \r\n After your appointment is Booked\r\n

    Look for an email confirmation, remember to save the date.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n
    2
    \r\n
    \r\n
    \r\n
    \r\n Confirm Your Appointment via Text\r\n

    Check your phone for text reminders and confirm your appointment.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n
    3
    \r\n
    \r\n
    \r\n
    \r\n Tell Us About Your Pet\r\n

    Help us customize your visit by filling out your pet's intake form. It takes less than 2 minutes. Prior to your appointment, we will email/text you the intake form so we can be prepared for your pet's visit.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n
    4
    \r\n
    \r\n
    \r\n
    \r\n Check-in\r\n

    Listen for our call so we can discuss your pet's needs in advance. Our team will call you when it's your turn.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n
    5
    \r\n
    \r\n
    \r\n
    \r\n See the Vet\r\n

    Come inside with your pet. One person per pet, please.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n
    6
    \r\n
    \r\n
    \r\n
    \r\n Check-out\r\n

    Your visit is complete. When you get home, look for an email with your pet's medical documents and important information from today's visit.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n\r\n return element;\r\n};\r\n","import React from 'react';\r\n\r\nexport const CommunicationPreferenceMessages = {\r\n canSMS: <>\r\n I agree to receive text messages about my pet’s vet services. Texts may be made using automated telephone dialing systems.\r\n

    Terms available \r\n here.\r\n  \r\n \r\n Please note, if you opt out of these communications, it may affect our ability to communicate with you regarding your pet’s test results, pick-up instructions, post-surgical follow-up, emergencies, and wellness recommendations.\r\n \r\n  Not a condition for purchase.

    \r\n ,\r\n canCall: <>\r\n I agree to receive calls about my pet’s vet services. Calls may be made using automated telephone dialing systems.\r\n

    Terms available \r\n here.\r\n  \r\n \r\n Please note, if you opt out of these communications, it may affect our ability to communicate with you regarding your pet’s test results, pick-up instructions, post-surgical follow-up, emergencies, and wellness recommendations.\r\n \r\n  Not a condition for purchase.

    \r\n \r\n}\r\n","import { spreadAndtransformDefaultValues, ToggleButton } from '@common/components/forms/controls';\r\nimport { Suspense, SuspenseButton } from '@common/components/utility';\r\nimport { CommunicationPreferenceModel } from \"@common/models\";\r\nimport { ClientService } from '@common/services';\r\nimport { AppointmentsStore } from '@customer/stores';\r\nimport { DateTime } from 'luxon';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Row } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { PulseLoader } from 'react-spinners';\r\nimport { CommunicationPreferenceMessages } from '.';\r\ninterface ICommunicationPreferenceProps {\r\n store: AppointmentsStore;\r\n preference: CommunicationPreferenceModel;\r\n}\r\n\r\nexport const CommunicationPreference = observer(({ store, preference }: ICommunicationPreferenceProps) => {\r\n\r\n const { register, handleSubmit, watch } = useForm({\r\n defaultValues: spreadAndtransformDefaultValues(preference)\r\n });\r\n watch('canSMS');\r\n watch('canCall');\r\n const save = () =>\r\n (data: CommunicationPreferenceModel) => {\r\n store.saveCommunicationPreference({ canSMS: data.canSMS, canCall: data.canCall, phoneNumber: preference.phoneNumber } as CommunicationPreferenceModel);\r\n }\r\n\r\n return (\r\n <>\r\n\r\n
    \r\n \r\n
    Communication Preferences
    \r\n\r\n {Object.keys(CommunicationPreferenceMessages).map((key: 'canSMS' | 'canCall', index) => {\r\n const toggleStateAccessor: 'canSMS' | 'canCall' = `${key}`;\r\n const dateUpdatedAccessor: 'canSMSDateUpdated' | 'canCallDateUpdated' = `${key}DateUpdated`;\r\n const fullNameAccessor: 'canSMSFullName' | 'canCallFullName' = `${key}FullName`;\r\n const preferenceCondition = preference[toggleStateAccessor];\r\n const preferenceDate = preference[dateUpdatedAccessor]\r\n const whoSetPreference = preference[fullNameAccessor] ? `by ${preference[fullNameAccessor]}` : \"by Client \"\r\n const message = CommunicationPreferenceMessages[key];\r\n return \r\n
    \r\n \r\n
    {message}
    \r\n
    \r\n {\r\n (preferenceCondition === undefined || !preferenceDate) ?\r\n <>





    \r\n :\r\n preferenceCondition\r\n ?
    \r\n Opted in {whoSetPreference} {preferenceDate?.setZone(preference.storeTimeZone).toLocaleString(DateTime.DATETIME_SHORT)}\r\n
    \r\n :\r\n
    \r\n Opted out {whoSetPreference} {preferenceDate?.setZone(preference.storeTimeZone).toLocaleString(DateTime.DATETIME_SHORT)}\r\n
    \r\n }\r\n <>





    \r\n
    \r\n })}\r\n\r\n <>\r\n
    \r\n\r\n } />\r\n Save\r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n );\r\n});\r\n","import { SlimPageCard } from '@common/components/layout';\r\nimport { Page } from '@customer/components/layout';\r\nimport React, { ErrorInfo } from 'react';\r\n\r\nexport interface ErrorModel {\r\n error: Error;\r\n errorInfo: ErrorInfo;\r\n}\r\n\r\nexport const ErrorView = ({ error, errorInfo }: ErrorModel) => {\r\n const element = (\r\n \r\n \r\n \r\n \r\n
    \r\n

    Something went wrong.

    \r\n
    \r\n {error && error.toString()}\r\n
    \r\n {process.env['NODE_ENV'] === 'development' && errorInfo.componentStack}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n return element;\r\n};\r\n","import { ContextWrapper } from \"@common/contexts\";\r\nimport { IntakeStore } from \"@customer/stores\";\r\n\r\nexport const IntakeStoreContextWrapper = new ContextWrapper();\r\n","import { ContextWrapper } from \"@common/contexts\";\r\nimport { IntakePetStore } from \"@customer/stores\";\r\n\r\nexport const IntakePetStoreContextWrapper = new ContextWrapper();\r\n","import { useEffect, useMemo, useState } from \"react\";\r\nimport { IntakeStoreContextWrapper } from \"@customer/contexts\";\r\nimport { IntakeStore } from \"@customer/stores/IntakeStore\";\r\n\r\nexport const useCreateIntakeStore = (options?: { shouldSetContext?: boolean }) => {\r\n const [shouldSetContext, setShouldSetContext] = useState(Boolean(options?.shouldSetContext));\r\n\r\n useEffect(() => {\r\n if (options)\r\n setShouldSetContext(Boolean(options.shouldSetContext));\r\n }, [options])\r\n\r\n const [intakeStore] = useMemo(() => {\r\n const store = new IntakeStore();\r\n if (shouldSetContext)\r\n IntakeStoreContextWrapper.set(store);\r\n return [store];\r\n }, [shouldSetContext]);\r\n\r\n return intakeStore;\r\n}\r\n","import catIcon from '@common/_assets/images/icon-cat.svg';\r\nimport dogIcon from '@common/_assets/images/icon-dog.svg';\r\nimport { useQuery } from '@common/hooks';\r\nimport { IntakeService } from '@common/services';\r\nimport { Page } from '@customer/components/layout/.';\r\nimport { useCreateIntakeStore } from '@customer/stores/hooks';\r\nimport { faMapMarkerAlt, faUser } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect } from 'react';\r\nimport { Button, Col, Image, ListGroup, Row } from 'react-bootstrap';\r\nimport { usePromiseTracker } from 'react-promise-tracker';\r\nimport { useNavigate, useParams } from 'react-router';\r\nimport iconTickBlue from '../../_assets/images/icon-tick-blue.svg';\r\n\r\nexport const IntakeView = observer(() => {\r\n const store = useCreateIntakeStore({ shouldSetContext: false });\r\n const { intakepublicid } = useParams();\r\n let query = useQuery();\r\n const navigate = useNavigate();\r\n\r\n const { promiseInProgress } = usePromiseTracker({\r\n delay: 500,\r\n area: IntakeService.tags.getIntake\r\n });\r\n\r\n useEffect(() => {\r\n if (intakepublicid) {\r\n store.setParamValues(intakepublicid, query.get('linkSource') || 'email');\r\n store.getIntake().catch(() => {\r\n navigate(\"/verification\");\r\n });\r\n }\r\n }, [store, intakepublicid, query, navigate]);\r\n\r\n const onCustomerProfileClick = () =>\r\n navigate(`/customerprofile/${store.intakePublicId}`);\r\n\r\n const onPetProfileClick = (intakePetId: number) =>\r\n navigate(`/petprofile/${store.intakePublicId}/${intakePetId}`);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {(!promiseInProgress) ?\r\n <>\r\n \r\n \r\n

    {store.intake.isClinicCancelled ? 'All Set! We look forward to seeing you.' : 'Help us get ready for your pet\\'s appointment.'}

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

    At {store.intake.storePartnerName}

    \r\n

    {store.intake.storeAddress}

    \r\n

    {store.intake.visitDateAndTimes}

    \r\n
    \r\n \r\n
    \r\n \r\n {\r\n store.intake.isClinicCancelled ?\r\n \r\n

    This clinic has been cancelled

    \r\n
    \r\n \r\n
    \r\n \r\n :\r\n <>\r\n \r\n
    \r\n {\r\n store.intake.isIntakeCompleted ?\r\n

    Please review and complete prior to your pet's appointment

    \r\n : null\r\n }\r\n
    \r\n \r\n\r\n \r\n \r\n {/** Customer Intake */}\r\n onCustomerProfileClick()}>\r\n
    \r\n
    \r\n
    \r\n {\r\n store.intake.responseCompleteDate ?\r\n \r\n : null\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {/** Pet Intake Items */}\r\n {\r\n store.intake.pets.map((pet, index) => (\r\n onPetProfileClick(pet.intakePetId)}>\r\n
    \r\n
    \r\n
    \r\n {\r\n pet.responseCompleteDate ?\r\n \r\n : null\r\n }\r\n
    \r\n
    \r\n
    \r\n {\r\n pet.speciesId == 1 ?\r\n \r\n :\r\n pet.speciesId == 2 ?\r\n \r\n : null\r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n ))\r\n }\r\n
    \r\n \r\n \r\n }\r\n
    \r\n \r\n : null\r\n }\r\n
    \r\n
    \r\n \r\n )\r\n});\r\n","import { ZipCodeStoreContextWrapper } from '@common/contexts';\r\nimport { FormInput, spreadAndtransformDefaultValues } from '@common/components/forms';\r\nimport { useApp, useQuery, useZipCodeChanged } from '@common/hooks';\r\nimport { IIntakeModel } from '@common/models';\r\nimport { Page } from '@customer/components/layout/.';\r\nimport { ZipCodeStore } from '@common/stores';\r\nimport { useCreateIntakeStore } from '@customer/stores/hooks';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useCallback, useEffect } from 'react';\r\nimport { Button, Col, Form, Row } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useNavigate, useParams } from 'react-router-dom';\r\nimport { DateTimeUtils } from '@common/utils/datetimeUtils';\r\n\r\nZipCodeStoreContextWrapper.set(new ZipCodeStore());\r\n\r\nexport const IntakeCustomerDetail = observer(() => {\r\n const store = useCreateIntakeStore({ shouldSetContext: false });\r\n const { configuration } = useApp();\r\n const { intakepublicid } = useParams();\r\n const query: URLSearchParams = useQuery();\r\n const navigate = useNavigate();\r\n\r\n const { register, handleSubmit, setValue, control, reset, watch, formState: { errors } } = useForm({\r\n shouldFocusError: true,\r\n defaultValues: spreadAndtransformDefaultValues(store.intake as IIntakeModel)\r\n });\r\n\r\n useZipCodeChanged(watch, setValue, {\r\n zipCode: \"zipCode\",\r\n\t\tcity: \"city\",\r\n\t\tcounty: \"county\",\r\n\t\tstateId: \"stateId\"\r\n }, false, false);\r\n\r\n useEffect(() => {\r\n if (intakepublicid) {\r\n store.setParamValues(intakepublicid, query.get('linkSource') || 'email');\r\n store.getIntake().then(() => {\r\n reset(spreadAndtransformDefaultValues(store.intake as IIntakeModel));\r\n }).catch(() => {\r\n navigate(\"/verification\");\r\n });\r\n }\r\n }, [store, intakepublicid, query, reset, navigate]);\r\n\r\n const onSaveClick = useCallback((data: IIntakeModel) => {\r\n store.updateIntake(DateTimeUtils.objToDateTime(data)).then(() => {\r\n navigate(`/intake/${intakepublicid}`);\r\n });\r\n }, [store, navigate, intakepublicid]);\r\n\r\n return (\r\n <>\r\n {\r\n \r\n \r\n \r\n \r\n

    Your information

    \r\n\r\n

    Review and complete your information.

    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {errors.zipCode && {errors.zipCode.message}}\r\n \r\n \r\n\r\n \r\n {/* s.name}\r\n getOptionValue={(s) => s.stateId.toString()}\r\n mapOptionToValue={(opt) => opt?.stateId}\r\n mapValueToOption={(stateId) => _.find(configuration.states, { stateId: stateId })}\r\n onOptionChanged={(stateId) => {\r\n _.find(configuration.states, {\r\n stateId: stateId\r\n })\r\n }}\r\n /> */}\r\n\r\n \r\n \r\n {configuration.states.map(state => )}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
    \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 { FormInput, spreadAndtransformDefaultValues } from '@common/components/forms';\r\nimport { useApp, useIsMounted } from '@common/hooks';\r\nimport { IntakePetModel } from '@common/models';\r\nimport { IntakePetStoreContextWrapper } from '@customer/contexts';\r\nimport { isEmpty } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useCallback, useContext, useEffect } from 'react';\r\nimport { Button, Col, Form, Row } from 'react-bootstrap';\r\nimport DatePicker from 'react-datepicker';\r\nimport { Controller, FormProvider, useForm } from 'react-hook-form';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { IntakeQuestion, PetPhotoUpload } from '.';\r\nimport { DateTimeUtils } from '@common/utils/datetimeUtils';\r\n\r\nexport const IntakePetDetail = observer(() => {\r\n const store = useContext(IntakePetStoreContextWrapper.get());\r\n const { configuration } = useApp();\r\n const isMounted = useIsMounted();\r\n\r\n const formMethods = useForm({\r\n shouldFocusError: true,\r\n defaultValues: spreadAndtransformDefaultValues(store.selectedPet)\r\n });\r\n\r\n const { handleSubmit, reset, control, register,getValues,setValue } = formMethods;\r\n const navigate = useNavigate();\r\n\r\n useEffect(() => {\r\n if (!isEmpty(store.selectedPet)) {\r\n if(store.selectedPet.intakePetId!=getValues(\"intakePetId\")){\r\n reset(spreadAndtransformDefaultValues(store.selectedPet));\r\n }else if(getValues(\"photoId\") != store.selectedPet.photoId){\r\n setValue(\"photoId\",store.selectedPet.photoId);\r\n } \r\n }\r\n }, [store.selectedPet, reset,setValue,getValues]);\r\n\r\n\r\n const savePetPhoto = useCallback((photoToSave: File): Promise => {\r\n return trackPromise(new Promise((resolve, reject) => {\r\n store.savePetPhoto(photoToSave).then(() => {\r\n if (!isMounted()) {\r\n reject('unmounted');\r\n return;\r\n }\r\n resolve();\r\n })\r\n }));\r\n }, [store, isMounted]);\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n {\r\n // Pet Details\r\n store.selectedSectionIndex === -1 ?\r\n <>\r\n \r\n \r\n

    Review and complete your pet's information.

    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {configuration.species.map(species => )}\r\n \r\n {/* s.name}\r\n getOptionValue={(s) => s.speciesId.toString()}\r\n mapOptionToValue={(opt) => opt?.speciesId}\r\n mapValueToOption={(speciesId) => _.find(configuration.species, { speciesId: speciesId })}\r\n onOptionChanged={(speciesId) => {\r\n _.find(configuration.species, {\r\n speciesId: speciesId\r\n })\r\n }}\r\n /> */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {configuration.breeds.filter(b => b.speciesId === store.selectedPet.speciesId).map(breed => )}\r\n \r\n {/* s.name}\r\n getOptionValue={(s) => s.breedId.toString()}\r\n mapOptionToValue={(opt) => opt?.breedId}\r\n mapValueToOption={(breedId) => _.find(configuration.breeds, { breedId: breedId })}\r\n onOptionChanged={(breedId) => {\r\n _.find(configuration.breeds, {\r\n breedId: breedId\r\n })\r\n }}\r\n /> */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n if (e.target.checked)\r\n onChange(true);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n {\r\n if (e.target.checked)\r\n onChange(false);\r\n }}\r\n />}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {configuration.petColors.map(color => )}\r\n \r\n {/* s.name}\r\n getOptionValue={(s) => s.petColorId.toString()}\r\n mapOptionToValue={(opt) => opt?.petColorId}\r\n mapValueToOption={(petColorId) => _.find(configuration.petColors, { petColorId: petColorId })}\r\n onOptionChanged={(petColorId) => {\r\n _.find(configuration.petColors, {\r\n petColorId: petColorId\r\n })\r\n }}\r\n /> */}\r\n \r\n \r\n \r\n \r\n {configuration.genders.map(gender => )}\r\n \r\n {/* s.name}\r\n getOptionValue={(s) => s.genderId.toString()}\r\n mapOptionToValue={(opt) => opt?.genderId}\r\n mapValueToOption={(genderId) => _.find(configuration.genders, { genderId: genderId })}\r\n onOptionChanged={(genderId) => {\r\n _.find(configuration.genders, {\r\n genderId: genderId\r\n })\r\n }}\r\n /> */}\r\n \r\n \r\n \r\n \r\n \r\n DOB\r\n (\r\n onChange(d)}\r\n selected={value}\r\n />\r\n )}\r\n />\r\n \r\n \r\n \r\n\r\n \r\n : null\r\n }\r\n\r\n {/* Sections */}\r\n {\r\n store.selectedSectionIndex >= 0 ?\r\n \r\n \r\n

    {store.selectedPet.sections[store.selectedSectionIndex].name}

    \r\n \r\n {\r\n store.selectedPet.sections[store.selectedSectionIndex].questions.map((q, questionIdx) => (\r\n \r\n ))\r\n }\r\n
    \r\n : null\r\n }\r\n\r\n\r\n {/* Form Controls */}\r\n {\r\n store.selectedSectionIndex !== (store.progressSections.length - 2) ?\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n : null\r\n }\r\n\r\n {\r\n store.selectedSectionIndex === (store.progressSections.length - 2) ?\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n : null\r\n }\r\n
    \r\n
    \r\n \r\n )\r\n});\r\n","import { IntakePetSectionQuestionModel, QuestionModel } from '@common/models';\r\nimport React, { useState } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nexport type ComboQuestionTypeProps = {\r\n questionName: string,\r\n followupQuestionName: string,\r\n isPreview: boolean,\r\n question: IntakePetSectionQuestionModel | QuestionModel,\r\n onQuestionChange: (val: boolean) => void;\r\n onFollowupChange: (val: string) => void;\r\n}\r\n\r\nexport function ComboQuestionType({ questionName, followupQuestionName, question, onQuestionChange, onFollowupChange, isPreview = false }: ComboQuestionTypeProps) {\r\n\r\n const [showFollowUp, setShowFollowUp] = useState((question instanceof IntakePetSectionQuestionModel) ? question.bitValue : undefined);\r\n const [followUpValue, setFollowUpValue] = useState((question instanceof IntakePetSectionQuestionModel) ? question.stringValue : '');\r\n\r\n return (\r\n <>\r\n {\r\n if (e.target.checked) {\r\n setShowFollowUp(true);\r\n onQuestionChange(true);\r\n }\r\n }}\r\n />\r\n\r\n {\r\n if (e.target.checked) {\r\n setShowFollowUp(false);\r\n onQuestionChange(false);\r\n }\r\n }}\r\n />\r\n\r\n {\r\n showFollowUp === question.showFollowupWhenAnswerIs ?\r\n
    \r\n \r\n {\r\n !question.isFollowupReadOnly ?\r\n {\r\n setFollowUpValue(e.target.value);\r\n onFollowupChange(e.target.value);\r\n }}\r\n />\r\n : null\r\n }\r\n
    \r\n : null\r\n }\r\n \r\n );\r\n}\r\n","import { ComboQuestionType } from '@common/components/questionTypes';\r\nimport { IntakePetSectionQuestionModel } from '@common/models';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Col, Form, Image } from 'react-bootstrap';\r\nimport { Controller, useFormContext } from 'react-hook-form';\r\n\r\ninterface IProps {\r\n question: IntakePetSectionQuestionModel,\r\n selectedSectionIndex: number,\r\n questionIndex: number,\r\n updateSelectedQuestionListValue: (valueToUpdate: number, sectionIndex: number, questionIndex: number) => IntakePetSectionQuestionModel\r\n}\r\n\r\nexport const IntakeQuestion = observer(({ question, selectedSectionIndex, questionIndex, updateSelectedQuestionListValue }: IProps) => {\r\n\r\n const { register, setValue, control } = useFormContext();\r\n\r\n return (\r\n <>\r\n \r\n \r\n {question.name}\r\n \r\n \r\n {\r\n // Data entry field (1)\r\n question.questionTypeId === 1 ?\r\n \r\n : null\r\n }\r\n\r\n {\r\n // Yes/No (2)\r\n question.questionTypeId === 2 ?\r\n <>\r\n \r\n {\r\n if (e.target.checked)\r\n onChange(true);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n {\r\n if (e.target.checked)\r\n onChange(false);\r\n }}\r\n />\r\n }\r\n />\r\n \r\n : null\r\n }\r\n\r\n {\r\n // Radio buttons for question type (3) Allow multiples is false and not using a ddl\r\n question.questionTypeId === 3 && !question.allowMultiple && !question.useMultiChoiceDropDown ?\r\n <>\r\n {\r\n question.intakePetSectionQuestionListValues.map((radiobutton, index, array) => (\r\n {\r\n return {\r\n if (e.target.checked) {\r\n array.forEach((val, idx) => {\r\n if (idx !== index) {\r\n setValue(`sections.${selectedSectionIndex}.questions.${questionIndex}.intakePetSectionQuestionListValues.${idx}.isSelected`, false);\r\n }\r\n });\r\n onChange(e.target.checked);\r\n }\r\n }} />\r\n }}\r\n />\r\n ))\r\n }\r\n \r\n : null\r\n }\r\n\r\n {\r\n // Show dropdown for question Type (3) if Allow Multiple is false and useMultiChoiceDropdown is true\r\n question.questionTypeId === 3 && !question.allowMultiple && question.useMultiChoiceDropDown ?\r\n <>\r\n (\r\n {\r\n const questionToUpdate = updateSelectedQuestionListValue(parseInt(e.target.value), selectedSectionIndex, questionIndex);\r\n // Not looking for the actual intakePetSectionQuestionListValue that got updated... I'm just updating the entire question we get back from the store.\r\n // The store is updating the stores version of this question. This should help with follow up question binding and updates as well to setValues for react hook forms to then post\r\n // This will only affect the question which is ok even though the thing we are updating is a child to the question.\r\n setValue(`sections.${selectedSectionIndex}.questions.${questionIndex}`, questionToUpdate, { shouldDirty: true });\r\n onChange(e.target.value);\r\n }}\r\n >\r\n \r\n {question.intakePetSectionQuestionListValues.map(listVal => )}\r\n \r\n )} />\r\n \r\n : null\r\n }\r\n\r\n {\r\n // Show checkboxes for question type List (3) if Allow Multiple is true\r\n question.questionTypeId === 3 && question.allowMultiple ?\r\n <>\r\n {\r\n question.intakePetSectionQuestionListValues.map((checkbox, index) => (\r\n {\r\n return {\r\n onChange(e.target.checked);\r\n }} />\r\n }}\r\n />\r\n ))\r\n }\r\n \r\n : null\r\n }\r\n\r\n {\r\n question.questionTypeId === 4 ?\r\n \r\n : null\r\n }\r\n\r\n {\r\n question.questionTypeId === 5 ?\r\n <>\r\n \r\n setValue(`sections.${selectedSectionIndex}.questions.${questionIndex}.bitValue`, val)\r\n }\r\n onFollowupChange={(val: string) =>\r\n setValue(`sections.${selectedSectionIndex}.questions.${questionIndex}.stringValue`, val)\r\n }\r\n />\r\n \r\n : null\r\n }\r\n \r\n \r\n \r\n )\r\n});\r\n","import React from 'react';\r\nimport { IPhotoModel } from \"@common/models\"\r\n\r\nexport class PhotoUtils {\r\n static getImageSize = (width?: number | string, height?: number | string, placeHolderImage?: string, photo?: IPhotoModel): React.CSSProperties => {\r\n if (placeHolderImage && !photo)\r\n return {\r\n width: 125,\r\n height: 125\r\n }\r\n else {\r\n return {\r\n minWidth: width,\r\n minHeight: height\r\n }\r\n }\r\n }\r\n}\r\n","import catIcon from '@common/_assets/images/icon-cat.svg';\r\nimport dogIcon from '@common/_assets/images/icon-dog.svg';\r\nimport { IPhotoModel } from '@common/models';\r\nimport { ImageResizerUtil } from '@common/utils';\r\nimport classNames from 'classnames';\r\nimport { toNumber } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useMemo } from 'react';\r\nimport { Image } from 'react-bootstrap';\r\nimport { PhotoUtils } from './photoUtils';\r\n\r\nexport interface IPetPhotoProps {\r\n photo?: IPhotoModel,\r\n petName: string,\r\n speciesName?: string,\r\n speciesPlaceHolderOverride: string,\r\n\tmakeCircularWhenPhoto?: boolean\r\n}\r\n\r\nexport const PetPhoto = observer(({ photo, speciesName, speciesPlaceHolderOverride, petName, height, width, className, makeCircularWhenPhoto = false, ...attrs }: IPetPhotoProps & React.ImgHTMLAttributes) => {\r\n\tconst speciesPlaceHolderImage: string | undefined = useMemo(() => speciesName === 'Canine' ? dogIcon : (speciesName === 'Feline' ? catIcon : speciesPlaceHolderOverride ? speciesPlaceHolderOverride : undefined), [speciesName, speciesPlaceHolderOverride]);\r\n const overrideHeight = height != undefined;\r\n const overrideWidth = width != undefined;\r\n\tconst lHeight = toNumber(height ? height : 150);\r\n const lWidth = toNumber(width ? width : 150);\r\n const photoUrl = useMemo(() => ImageResizerUtil.getAzureImageUrlByPhoto(photo, { mode: 'pad', height: lHeight, width: lWidth }), [photo, lHeight, lWidth]);\r\n const imageSize = PhotoUtils.getImageSize(width, height, speciesPlaceHolderImage, photo);\r\n\tconst addCircularClass = makeCircularWhenPhoto && photo && (photo.photoUrl !== \"\" && !_.isNil(photo.photoUrl));\r\n\tif (addCircularClass) className = classNames(className, 'circle-img');\r\n\r\n return (\r\n <>\r\n {(photoUrl || speciesPlaceHolderImage) &&\r\n \r\n }\r\n \r\n )\r\n});\r\n","/* eslint-disable react/prop-types */\r\nimport petIcon from '@common/_assets/images/Brand_Logo_Ruff_Mews_FullBody_1.svg';\r\nimport { PetPhoto } from '@common/components/photo';\r\nimport { IntakePetModel } from '@common/models';\r\nimport { ImageResizerUtil } from '@common/utils';\r\nimport classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useCallback } from 'react';\r\n\r\nexport interface IPetPhotoUploadProps {\r\n isReadOnly: boolean;\r\n intakePet: IntakePetModel;\r\n onPhotoChanged: (photoToSave: File) => Promise;\r\n}\r\n\r\nconst PetPhotoUploadWithForwardedRef = React.forwardRef(({ isReadOnly, intakePet, onPhotoChanged }: IPetPhotoUploadProps, ref) => {\r\n const hiddenFileInput = React.useRef(null);\r\n\r\n const handleImageUploadClick = useCallback((e: any) => {\r\n if (hiddenFileInput?.current) {\r\n hiddenFileInput.current.click();\r\n e.stopPropagation();\r\n }\r\n\r\n }, [hiddenFileInput]);\r\n\r\n const handleChange = useCallback(async (e: React.ChangeEvent) => {\r\n if (e.target.files && e.target.files.length) {\r\n const fileUploaded: File = e.target.files[0];\r\n if (fileUploaded) {\r\n const resizedPhoto = await ImageResizerUtil.ResizeImage(fileUploaded, { saveMaxWidth: 640, saveMaxHeight: 640 });\r\n onPhotoChanged(resizedPhoto);\r\n }\r\n }\r\n }, [onPhotoChanged]);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n\r\n \r\n\r\n

    Tap to add pet photo

    \r\n \r\n )\r\n});\r\n\r\nPetPhotoUploadWithForwardedRef.displayName = \"PetPhotoUpload\";\r\n\r\nexport const PetPhotoUpload = observer(PetPhotoUploadWithForwardedRef);\r\n","import { IPhotoModel } from '@common/models';\r\nimport { ImageResizerUtil } from '@common/utils';\r\nimport classNames from 'classnames';\r\nimport { toNumber } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useMemo } from 'react';\r\nimport { Image } from 'react-bootstrap';\r\nimport { PhotoUtils } from '.';\r\n\r\nexport interface IAttachmentPhotoProps {\r\n photo?: IPhotoModel,\r\n fileName: string\r\n}\r\n\r\nexport const AttachmentPhoto = observer(({ photo, fileName, height, width, className, ...attrs }: IAttachmentPhotoProps & React.ImgHTMLAttributes) => {\r\n const lHeight = toNumber(height ? height : 150);\r\n const lWidth = toNumber(width ? width : 150);\r\n const photoUrl = useMemo(() => ImageResizerUtil.getAzureImageUrlByPhoto(photo, { mode: 'pad', height: lHeight, width: lWidth }), [photo, lHeight, lWidth]);\r\n const imageSize = PhotoUtils.getImageSize(width, height, undefined, photo);\r\n\r\n return (\r\n <>\r\n {photo &&\r\n \r\n {`photo\r\n \r\n }\r\n \r\n )\r\n});\r\n","import { SlimPageCard } from \"@common/components/layout\";\r\nimport { ClinicService } from \"@common/services\";\r\nimport { Page } from \"@customer/components/layout\";\r\nimport { RebookStore } from \"@customer/stores\";\r\nimport { observer } from \"mobx-react\";\r\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { Col, Row } from \"react-bootstrap\";\r\nimport { usePromiseTracker } from \"react-promise-tracker\";\r\nimport { useParams } from \"react-router-dom\";\r\n\r\nexport const RebookContainer = observer(() => {\r\n\r\n const [rebookStore] = useState(new RebookStore());\r\n const rebookForm = useRef(null);\r\n const { clinicId, reservationPublicId } = useParams();\r\n const parsedClinicId = useMemo(() => parseInt(clinicId!), [clinicId]);\r\n\r\n const { promiseInProgress } = usePromiseTracker({\r\n delay: 500,\r\n area: ClinicService.tags.getReservationForRebooking,\r\n });\r\n\r\n useEffect(() => {\r\n if (!_.isUndefined(clinicId) && !_.isUndefined(reservationPublicId)) {\r\n rebookStore.getReservationForRebooking(parsedClinicId, reservationPublicId).then(() => {\r\n setTimeout(() => {\r\n rebookForm?.current?.click();\r\n });\r\n });\r\n }\r\n }, [rebookStore, parsedClinicId, reservationPublicId, clinicId]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {(rebookStore.rebookReservation?.reservation && !promiseInProgress) &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {(!rebookStore.rebookReservation?.reservation && !promiseInProgress) &&\r\n \r\n

    We are unable to locate the information you requested.

    \r\n \r\n }\r\n\r\n {promiseInProgress &&\r\n \r\n

    Locating the information you requested...

    \r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n})\r\n","import { spreadAndtransformDefaultValues } from '@common/components/forms';\r\nimport { IClientVerificationRequest } from \"@common/models\";\r\nimport { Page } from '@customer/components/layout/.';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Button, Col, Form, Row } from 'react-bootstrap';\r\nimport { Controller, useForm } from 'react-hook-form';\r\nimport { PatternFormat } from 'react-number-format';\r\nimport { ValidationViewStore } from './ValidationViewStore';\r\n\r\ninterface IValidationViewProps {\r\n\tstore: ValidationViewStore;\r\n}\r\n\r\nexport const ValidationView = observer(({ store }: IValidationViewProps) => {\r\n\r\n\tconst defaultValues = store.clientVerificationRequest;\r\n\r\n\tconst { register, handleSubmit, control, formState: { errors } } = useForm({\r\n\t\tmode: \"onBlur\",\r\n\t\tshouldFocusError: true,\r\n\t\tdefaultValues: spreadAndtransformDefaultValues(defaultValues)\r\n\t});\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{!store.verifySent ?\r\n\t\t\t\t\t\t
    store.validateCustomer(m))}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t

    Managing your Vetco experience is easy!

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

    Give us your email or phone number used when booking your appointment or during your visit and we will send you a link. To manage your communication preferences, please validate with the phone number used to book your appointment.

    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{errors.email && {errors.email.message}}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t

    -or-

    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t\t onChange(v.formattedValue)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-invalid={invalid}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tisInvalid={invalid}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{errors.phone && {errors.phone.message}}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t\tBy clicking “Send Validation,” I agree to receive text messages about my pet’s veterinary services. Texts may be made using automated telephone dialing systems. Not a condition for purchase. I agree to Petco’s \r\n\t\t\t\t\t\t\t\t\t\t\tTerms of Use\r\n\t\t\t\t\t\t\t\t\t\t, \r\n\t\t\t\t\t\t\t\t\t\t\tPrivacy Policy\r\n\t\t\t\t\t\t\t\t\t\t & \r\n\t\t\t\t\t\t\t\t\t\t\tSMS Terms & Conditions\r\n\t\t\t\t\t\t\t\t\t\t.\r\n\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t!store.isValid ?\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tPlease provide your email or phone number used when booking your appointment or during your visit. Only one may be applied for verification.\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

    If your account is found using the information provided, a link will be sent to {!store.clientVerificationRequest.email ? store.clientVerificationRequest.phone : store.clientVerificationRequest.email}

    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\r\n\t)\r\n});\r\n","import { ClientVerificationRequest } from \"@common/models\";\r\nimport { ClientService } from '@common/services';\r\nimport { flow, makeObservable, observable, runInAction } from \"mobx\";\r\n\r\n\r\nexport class ValidationViewStore {\r\n @observable isValid: boolean = true;\r\n @observable verifySent: boolean = false;\r\n @observable clientVerificationRequest: ClientVerificationRequest = {\r\n phone: '',\r\n email: ''\r\n };\r\n\r\n constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n makeObservable(this, undefined, {\r\n autoBind: true\r\n });\r\n }\r\n\r\n //#region Flows\r\n\r\n validateCustomer = flow(function* (this: ValidationViewStore, request: ClientVerificationRequest) {\r\n if (request.phone && request.email)\r\n this.isValid = false;\r\n else if (!request.phone && !request.email)\r\n this.isValid = false;\r\n else {\r\n yield ClientService.validateCustomer(request, { showError: true }).then(() => {\r\n runInAction(() => {\r\n this.clientVerificationRequest = request;\r\n this.verifySent = true;\r\n });\r\n });\r\n }\r\n });\r\n\r\n //#endregion\r\n}\r\n","import { Page } from \"@customer/components/layout\";\r\nimport { observer } from \"mobx-react\";\r\nimport React from \"react\";\r\n\r\nexport const AppLandingOutlet = observer(() => {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n )\r\n});\r\n","import { IVisitSalesItemPublicModel, VisitSalesItemModel, VisitSalesItemPublicModel } from \"@common/models\";\r\nimport { defaultTo, max, min, sum } from \"lodash\";\r\nimport { formatCurrency } from \"./numberUtils\";\r\n\r\nconst estimateGivenPrice = (quantity: number, item: IVisitSalesItemPublicModel) => {\r\n\r\n if (item.salesItemOptionAllowUserEnteredPrice)\r\n return (quantity * defaultTo(item.salesItemUnitPrice, 0));\r\n //rules apply just for visit sale item \r\n if (item instanceof VisitSalesItemPublicModel) {\r\n if (item.wasPreviouslyPended || item.salesPackageId)\r\n return 0;\r\n if (item.isPackageAddOn)\r\n return (quantity * defaultTo(item.packageAddOnPrice, getPackageAddOnPrice(item))) + (quantity > 0 ? defaultTo(item.dispensingFee, 0) : 0);\r\n if (item.isPackageUpgrade)\r\n return (!_.isNil(item.salesItemUnitPrice) && !_.isNil(item.upgradingPrice) && (item.salesItemUnitPrice - item.upgradingPrice) > 0 ?\r\n (item.salesItemUnitPrice - item.upgradingPrice) : 0 * quantity) + defaultTo(item.dispensingFee, 0);\r\n\r\n return calculateDefaultUnitPrice(quantity, item);\r\n }\r\n // otherwise, prefer the unit price but default to the item price.\r\n return calculateDefaultUnitPrice(quantity, item);\r\n}\r\n\r\nconst calculateDefaultUnitPrice = (quantity: number, item: IVisitSalesItemPublicModel) => {\r\n return (quantity * defaultTo(item.salesItemUnitPrice, item.salesItemPrice)) + (quantity > 0 ? defaultTo(item.dispensingFee, 0) : 0);\r\n}\r\n\r\nconst getPackageAddOnPrice = (item: IVisitSalesItemPublicModel) => {\r\n return (item.salesItemPrice - defaultTo(item.dispensingFee, 0)) / defaultTo(item.quantity, 1);\r\n}\r\n\r\nconst estimatePrice = (vsi: IVisitSalesItemPublicModel, estimatedQuantity: number | undefined) => {\r\n // if this item was declined by either the client or the vet, it will have a zero dollar amount.\r\n if (vsi.wasDeclinedByClient || vsi.wasDeclinedByVeterinarian) return 0;\r\n // if there is an estimated quantity, base the pricing on the estimate and unit price. \r\n // Include the dispensing fee if present.\r\n return estimateGivenPrice(defaultTo(estimatedQuantity, defaultTo(vsi.quantity, 1)), vsi)\r\n}\r\n\r\nexport const calculateEstimateSubtotals = (packagePrice: number | undefined, items: IVisitSalesItemPublicModel[]) => {\r\n const subMin = sum(items.map(i => estimatePrice(i, i.estimateQuantityLow)));\r\n const subMax = sum(items.map(i => estimatePrice(i, i.estimateQuantityHigh)));\r\n return {\r\n subtotalMin: min([subMin, subMax])! + defaultTo(packagePrice, 0),\r\n subtotalMax: max([subMin, subMax])! + defaultTo(packagePrice, 0)\r\n }\r\n}\r\n\r\nexport const formatEstimateItemQuantity = (item: IVisitSalesItemPublicModel) => {\r\n // if the item was declined, then there will be no quantity.\r\n if (item.wasDeclinedByClient) return `0`;\r\n\r\n if (item.estimateQuantityLow !== undefined && item.estimateQuantityHigh !== undefined) {\r\n return (item.estimateQuantityLow === item.estimateQuantityHigh)\r\n ? `${item.estimateQuantityLow}`\r\n : `${item.estimateQuantityLow}-${item.estimateQuantityHigh}`\r\n }\r\n else if (item.estimateQuantityLow !== undefined)\r\n return `${item.estimateQuantityLow}`\r\n else if (item.estimateQuantityHigh !== undefined)\r\n return `${item.estimateQuantityHigh}`\r\n else\r\n return `${defaultTo(item.quantity, 1)}`\r\n}\r\n\r\nexport const formatEstimateItemAmount = (item: IVisitSalesItemPublicModel) => {\r\n // if the item was declined, then there will be no quantity.\r\n if (item.wasDeclinedByClient) return `$0.00`;\r\n\r\n const priceQuantity = (estimateQty: number) => formatCurrency(estimateGivenPrice(estimateQty, item));\r\n\r\n if (item.estimateQuantityLow !== undefined && item.estimateQuantityHigh !== undefined) {\r\n return (item.estimateQuantityLow === item.estimateQuantityHigh)\r\n ? `${priceQuantity(item.estimateQuantityLow)}`\r\n : `${priceQuantity(item.estimateQuantityLow)} - ${priceQuantity(item.estimateQuantityHigh)}`\r\n }\r\n else if (item.estimateQuantityLow !== undefined)\r\n return `${priceQuantity(item.estimateQuantityLow)}`\r\n else if (item.estimateQuantityHigh !== undefined)\r\n return `${priceQuantity(item.estimateQuantityHigh)}`\r\n else\r\n return `${priceQuantity(defaultTo(item.quantity, 1))}`\r\n}\r\n","import { SuspenseButton } from \"@common/components/utility\";\r\nimport SignaturePad from \"@common/components/wrappers/SignaturePad\";\r\nimport { SalesPackageModel, VisitPublicModel } from \"@common/models\";\r\nimport { formatCurrency, prettyPrintAge } from \"@common/utils\";\r\nimport { normalizePhone } from \"@common/utils/phoneUtils\";\r\nimport { calculateEstimateSubtotals, formatEstimateItemAmount, formatEstimateItemQuantity } from \"@common/utils/pricingUtils\";\r\nimport classnames from \"classnames\";\r\nimport { DateTime } from \"luxon\";\r\nimport { observer } from \"mobx-react\";\r\nimport React from \"react\";\r\nimport { Table } from \"react-bootstrap\";\r\n\r\ninterface ITreatmentPlanConsentProps {\r\n visit: VisitPublicModel\r\n onSave: (signatureDataUrl: string) => void,\r\n}\r\n\r\nexport const TreatmentPlanConsent = observer(({ visit, onSave }: ITreatmentPlanConsentProps) => {\r\n const { subtotalMin, subtotalMax } = calculateEstimateSubtotals(visit.salesPackagePrice, visit.visitSalesItems.filter(i => !i.isDiscountItem));\r\n const sigRef = React.useRef(null);\r\n const [isSigned, setIsSigned] = React.useState(false);\r\n\r\n const priceForTreatmentPlan = true;\r\n\r\n const onSaveSignature = () => {\r\n if (sigRef.current !== null)\r\n onSave(sigRef.current.toDataURL());\r\n };\r\n\r\n const onSignatureChanged = () =>\r\n setIsSigned(sigRef.current !== null && !sigRef.current.isEmpty());\r\n\r\n const { packageName, packagePrice, items } = SalesPackageModel.OrderPublicSalesItems(visit.visitSalesItems);\r\n\r\n return
    \r\n

    Treatment Plan and Consent to Services

    \r\n
    \r\n
    Vetco Total Care {visit.hospitalName}
    \r\n
    {visit.storeAddress}
    \r\n
    {visit.storeCity}, {visit.storeStateAbbreviation} {visit.storeZipCode}
    \r\n
    {visit.hospitalPhone ? normalizePhone(visit.hospitalPhone) : visit.storePhone}
    \r\n
    \r\n
    \r\n
    Date: {visit.visitDate?.toLocaleString(DateTime.DATE_FULL)}
    \r\n
    Client name: {visit.clientFirstName} {visit.clientLastName}
    \r\n
    Client address: {visit.clientAddress}{visit.clientAddress2 && `, ${visit.clientAddress2}`}, {visit.clientCity}, {visit.clientStateAbbreviation} {visit.clientZipCode}
    \r\n
    Patient name: {visit.petName}
    \r\n
    Species: {visit.petSpeciesName}
    \r\n
    Breed: {visit.petBreedName}
    \r\n
    Age: {prettyPrintAge(visit.petBirthDate)}
    \r\n
    \r\n
    \r\n
    Plan
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {packageName && packagePrice &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {items.filter(i => !i.isDiscountItem).map((item, idx) =>\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
    DescriptionQtyAmount
    {packageName} Package{formatCurrency(packagePrice)}
    \r\n {item.wasDeclinedByClient && Declined:} {item.salesItemName} {item.salesItemOptionDisplayName}\r\n {formatEstimateItemQuantity(item)}{formatEstimateItemAmount(item)}
    \r\n
    \r\n
    \r\n
    \r\n {subtotalMin === subtotalMax &&\r\n <>\r\n
    Subtotal (excl. taxes & discounts)
    \r\n
    {formatCurrency(subtotalMin)}
    \r\n \r\n }\r\n {subtotalMin !== subtotalMax &&\r\n <>\r\n
    Subtotal Range (excl. taxes & discounts)
    \r\n
    {formatCurrency(subtotalMin)} - {formatCurrency(subtotalMax)}
    \r\n \r\n }\r\n
    \r\n {items.some(i => i.isDiscountItem) &&\r\n
    \r\n
    Coupons and/or Discounts included in your visit today
    \r\n {items.filter(i => i.isDiscountItem).map((i, idx) =>\r\n
    {i.salesItemName}{!_.isEmpty(i.salesItemOptionDisplayName) && `: ${i.salesItemOptionDisplayName.replace(\"_\", \"\")}`}
    \r\n )}\r\n
    \r\n }\r\n
    \r\n
    By signing this document I certify I have read this document, understand it, and have had all my questions answered to my satisfaction and I agree to the conditions of treatment.
    \r\n
    I understand that this estimate of the fees for veterinary services is provided to me and that I am encouraged to discuss all fees related to such care before services are rendered during my pet’s ongoing medical treatment. I acknowledge that payment is due at time services are rendered.
    \r\n
    I, the below signed owner, agent of the owner, or Good Samaritan responsible for seeking veterinary care the pet identified, certify that I am eighteen years of age or over.
    \r\n
    \r\n
    \r\n
    Signature of Owner/Agent
    \r\n
    \r\n \r\n
    \r\n
    \r\n Date of signing: {DateTime.now().toLocaleString(DateTime.DATE_FULL)}\r\n
    \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n})\r\n","import { Page } from '@customer/components/layout/.';\r\nimport { VisitPublicStore } from \"@customer/stores\";\r\nimport { observer } from \"mobx-react\";\r\nimport React from \"react\";\r\nimport { useParams } from \"react-router\";\r\nimport { TreatmentPlanConsent } from \"./TreatmentPlanConsent\";\r\n\r\nconst ThankYou = () =>

    \r\n We have received your consent. Thank you! You can now close this tab.\r\n

    \r\n\r\nexport const ConsentContainer = observer(() => {\r\n const [visitStore] = React.useState(new VisitPublicStore());\r\n const [consentReceived, setConsentReceived] = React.useState(false);\r\n const { visitPublicId, consentTypePublicId } = useParams();\r\n\r\n React.useEffect(() => {\r\n if (visitPublicId)\r\n visitStore.fetchPublicVisit(visitPublicId);\r\n }, [visitStore, visitPublicId]);\r\n\r\n const onSave = async (signaturePhotoDataUrl: string) => {\r\n await visitStore.signConsent(visitPublicId!, consentTypePublicId!, signaturePhotoDataUrl)\r\n .then(setConsentReceived);\r\n }\r\n\r\n /* find the appropriate view for the specified consent type */\r\n const renderConsent = () => {\r\n switch (consentTypePublicId?.toUpperCase()) {\r\n case \"12147E94-520F-4147-BA5A-5E69C22DF666\": // hospital treatment plan consent\r\n return ;\r\n default: return <>The requested consent type was not found.;\r\n }\r\n }\r\n\r\n return \r\n \r\n {/* {!visitStore.visit && } */}\r\n {consentReceived && }\r\n {!consentReceived && visitStore.visit && renderConsent()}\r\n \r\n \r\n});\r\n","import { useQuery } from '@common/hooks';\r\nimport { IntakeService } from '@common/services';\r\nimport { StringUtility } from '@common/utils';\r\nimport { Page } from '@customer/components/layout/.';\r\nimport { useCreateIntakePetStore, useCreateIntakeStore } from '@customer/stores/hooks';\r\nimport classNames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect } from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { usePromiseTracker } from 'react-promise-tracker';\r\nimport { useParams } from 'react-router-dom';\r\nimport { IntakePetDetail } from \".\";\r\n\r\nexport const IntakePetContainer = observer(() => {\r\n const intakeStore = useCreateIntakeStore({ shouldSetContext: false });\r\n const store = useCreateIntakePetStore(intakeStore, { shouldSetContext: true });\r\n const { intakepublicid, intakepetid } = useParams();\r\n const query: URLSearchParams = useQuery();\r\n const fetchIntake = usePromiseTracker({ delay: 500, area: IntakeService.tags.getIntake });\r\n\r\n useEffect(() => {\r\n if (intakepublicid) {\r\n store.load(intakepublicid, query.get('linkSource') || 'email', intakepetid ? +intakepetid : 0);\r\n // store.intakeStore.setParamValues(intakepublicid, query.get('linkSource') || 'email', intakepetid ? +intakepetid : 0);\r\n }\r\n }, [store, intakepetid, intakepublicid, query]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {(!fetchIntake.promiseInProgress) &&\r\n <>\r\n \r\n \r\n

    {store.selectedPet ? StringUtility.toPossessiveName(store.selectedPet.name) : \"Pet\"} information

    \r\n
    \r\n {\r\n store.progressSections.map((section, index) => (\r\n store.selectedSectionIndex + 1\r\n }\r\n )} style={{ width: store.sectionWidth + '%' }}>\r\n \r\n ))\r\n }\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 { useEffect, useMemo, useState } from \"react\";\r\nimport { IntakePetStoreContextWrapper } from \"@customer/contexts\";\r\nimport { IntakePetStore, IntakeStore } from \"@customer/stores\";\r\n\r\nexport const useCreateIntakePetStore = (intakeStore: IntakeStore, options?: { shouldSetContext?: boolean }) => {\r\n const [shouldSetContext, setShouldSetContext] = useState(Boolean(options?.shouldSetContext));\r\n\r\n useEffect(() => {\r\n if (options)\r\n setShouldSetContext(Boolean(options.shouldSetContext));\r\n }, [options])\r\n\r\n const [intakePetStore] = useMemo(() => {\r\n const store = new IntakePetStore(intakeStore);\r\n if (shouldSetContext)\r\n IntakePetStoreContextWrapper.set(store);\r\n return [store];\r\n }, [intakeStore, shouldSetContext]);\r\n\r\n return intakePetStore;\r\n}\r\n","import { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { Navigate, useOutlet } from 'react-router-dom';\r\n\r\nexport interface IOutletWithDefaultRedirect {\r\n to: string\r\n}\r\n/**\r\n * This component exists for the purpose of when you need a ExtRouteObject to server an outlet and have it render a child in it's root and you want accessing the root parent route to redirect to a default child route\r\n * Previously, I solved this problem by having redundant child routes but this causes MatchRoutes to return both routes as matches which was kind of difficult to deal with.\r\n *\r\n * So imagine this scenario\r\n * /admin -> Outlet\r\n * users -> UsersView\r\n * locations -> LocationsView\r\n *\r\n * If you go to /admin without specifying /users or /locations it will render a blank page because nothing is in the Outlet on /admin\r\n * So previously I'd create a new child route that has no path defined and just render a Navigate element that redirects to locations as the default child route\r\n *\r\n * This component solves for that without having to have the child route. Simply use an OutletWithDefaultRedirect with a to property to where you want it to redirect when there is no child route specified.\r\n *\r\n */\r\nexport const OutletWithDefaultRedirect = observer(({to}: IOutletWithDefaultRedirect) => {\r\n const outletElement = useOutlet();\r\n if (outletElement)\r\n return outletElement;\r\n return ()\r\n});\r\n","import { RouteContext } from '@common/contexts';\r\nimport { ExtRouteMatch } from '@customer/components/routes';\r\nimport { last } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport { useContext } from 'react';\r\nimport { matchRoutes } from 'react-router-dom';\r\n\r\nexport interface IRenderWithRouteAccess {\r\n /**\r\n * The path of the route to match a user's route access to\r\n */\r\n path: string;\r\n /**\r\n * The element to render if the user has access to the route, if access is denied then null (nothing) is rendered by RenderWithRouteAccess\r\n */\r\n element: JSX.Element\r\n}\r\n/**\r\n * Use this component to Render a component if the logged in user has access to the route specified in the path attribute.\r\n * I.e. if you want to render a button but only if the logged in user has access to the /admin route then you would use\r\n * The Button} />\r\n * You can specify access for a route in the Route Tree in AppRoute and it's children via the hasAccess option on ExtRouteObject.\r\n */\r\nexport const RenderWithRouteAccess = observer((props: IRenderWithRouteAccess) => {\r\n const appRoutes = useContext(RouteContext.get());\r\n const matches = matchRoutes(appRoutes, props.path);\r\n const match = last(matches);\r\n const hasAccess: boolean | undefined = match && (match as ExtRouteMatch)?.route?.hasAccess;\r\n if (hasAccess === undefined || hasAccess === true)\r\n return props.element;\r\n return null;\r\n});\r\n","import PropTypes from 'prop-types';\r\nimport React, { ErrorInfo } from 'react';\r\nimport { ErrorView } from './ErrorView';\r\nexport interface ErrorProperties {\r\n error: Error;\r\n errorInfo: ErrorInfo;\r\n}\r\n\r\ninterface IProps {\r\n route: {\r\n to: string,\r\n from: string\r\n }\r\n}\r\n\r\nexport class ErrorBoundary extends React.Component> {\r\n\r\n /**\r\n * If an error exists and the routes from previous and current differ, clear errors\r\n */\r\n override componentDidUpdate() {\r\n if (this.state.error && (this.props.route.from !== this.props.route.to)) {\r\n this.clearState();\r\n }\r\n }\r\n\r\n\r\n override state = { error: null, errorInfo: null };\r\n\r\n override componentDidCatch(error: Error, errorInfo: ErrorInfo) {\r\n // Catch errors in any components below and re-render with error message\r\n this.setState({\r\n error: error,\r\n errorInfo: errorInfo\r\n })\r\n }\r\n\r\n /**\r\n * On component update, clear error state to allow navigation without refresh\r\n * @param previousProps previous state\r\n */\r\n\r\n clearState() {\r\n this.setState({\r\n error: null,\r\n errorInfo: null\r\n })\r\n }\r\n\r\n override render() {\r\n if (this.state.error && this.state.errorInfo) {\r\n // Error path\r\n return (\r\n \r\n );\r\n }\r\n // Normally, just render children\r\n return this.props.children;\r\n }\r\n\r\n static get propTypes() {\r\n return {\r\n children: PropTypes.any\r\n }\r\n }\r\n}\r\n\r\nexport default ErrorBoundary;\r\n","import { AppStoreContextWrapper, RouteContext } from '@common/contexts';\r\nimport { AuthApplicationKeys } from '@common/models/Enums';\r\nimport { AppStore } from '@common/stores';\r\nimport { buildAppRoute } from '@customer/components/routes';\r\nimport { AppLandingOutlet } from '@customer/views/.';\r\nimport { observer } from 'mobx-react';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useLocation, useRoutes } from 'react-router-dom';\r\nimport { ErrorBoundary } from './views/error/ErrorBoundary';\r\n\r\nconst appStore = new AppStore(AuthApplicationKeys.PetPass, true); //todo change to key for customer app\r\nAppStoreContextWrapper.set(appStore);\r\nappStore.load();\r\n\r\n//This is a separate component to prevent calling buildAppRoute before the configurationStore is in a loaded state\r\n//this prevents needing complex reactions in stores that depend on the configuration being in a loaded state.\r\nconst RoutesComponent = observer(() => {\r\n const appRoutes = buildAppRoute(appStore);\r\n RouteContext.set(appRoutes);\r\n return useRoutes(appRoutes);\r\n});\r\n\r\nexport const CustomerApp = observer(() => {\r\n const location = useLocation();\r\n\r\n const [route, setRoute] = useState({\r\n to: location.pathname,\r\n from: location.pathname\r\n });\r\n\r\n useEffect(() => {\r\n setRoute((prev) => ({ to: location.pathname, from: prev.to }))\r\n }, [location]);\r\n\r\n return (\r\n \r\n {\r\n !appStore.isConfigurationLoading ? : \r\n }\r\n \r\n );\r\n});\r\n\r\nexport default CustomerApp;\r\n","import { Route } from '@common/components/utility/BreadCrumbRoute';\r\nimport { AppStore } from '@common/stores';\r\nimport { createRoutesFromChildren } from '@common/utils/routerUtil';\r\nimport { AppointmentsContainer, IntakeCustomerDetail, IntakeView, ValidationView, ValidationViewStore } from '@customer/views';\r\nimport { ConsentContainer } from '@customer/views/consent/ConsentContainer';\r\nimport { IntakePetContainer } from '@customer/views/intake/IntakePetContainer';\r\nimport { RebookContainer } from '@customer/views/rebook';\r\nimport React from 'react';\r\nimport { Navigate, Outlet } from 'react-router-dom';\r\nimport { BreadcrumbsRoute } from 'use-react-router-breadcrumbs';\r\n\r\n\r\nexport const Throw404 = () => {\r\n throw new DOMException('The resource you are requesting does not exist.', DOMException.NOT_FOUND_ERR.toString());\r\n}\r\n\r\nexport const buildAppRoute = (appStore: AppStore): BreadcrumbsRoute[] => {\r\n const validationViewStore = new ValidationViewStore();\r\n\r\n return createRoutesFromChildren(\r\n } >\r\n } />\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 TelemetryProvider from '@common/components/appInsights/TelemetryProvider';\r\nimport { initializeUtilities } from '@common/utils/globalUtilities';\r\nimport { CustomerApp } from '@customer/CustomerApp';\r\nimport React from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\nimport { BrowserRouter as Router } from 'react-router-dom';\r\n\r\nif (module['hot']) {\r\n module['hot'].accept();\r\n}\r\ninitializeUtilities();\r\nfunction index() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst root = createRoot(document.getElementById(\"root\")!);\r\nroot.render(index());\r\n"],"names":["reactPlugin","ReactPlugin","appInsights","ai","initialize","instrumentationKey","browserHistory","Error","ApplicationInsights","config","enableAutoRouteTracking","enableRequestHeaderTracking","maxBatchInterval","disableFetchTracking","extensions","extensionConfig","identifier","history","loadAppInsights","TelemetryProvider","Component","constructor","arguments","_defineProperty","initialized","componentDidMount","this","state","props","router","setState","render","React","Fragment","children","withAITracking","location","useLocation","navigate","useNavigate","params","useParams","_extends","blurActiveElement","document","activeElement","htmlElement","blur","Environment","AppointmentFlowActionOperations","AppointmentFlowSteps","VisitCompletionType","AppointmentStatus","_AppointmentStatus","AuthApplicationIds","AuthApplicationKeys","AuthOperationRoleNames","AuthOperationUINames","BlobEntityType","CommunicationDirection","CommunicationEventType","CommunicationMethod","CommunicationType","ClinicTaskStatus","CommunicationStatus","DocumentType","visitIsAborted","visitCompletionTypeId","Priceforserviceswastoohigh","Clientconfusiononhospitalvsvaccinationclinic","Petwasreferredout","Petwasaggressive","Clientchosetodiscontinueservices","Petwasnoteligibleforservices","Other","includes","statusFormattedName","status","cssFormattedStatus","statusIcon","showAsDormant","NoShow","Paid","Check_Out","displayName","communicationType","VisitSummary","MedicalHistory","RabiesCertificate","LabResult","Prescription","VisitCompletionSummary","VisitConsent","IntakeNotification","CancelledClinic","CancelledClinicOpsLeader","AppointmentManagementVerification","TreatmentPlanConsent","Invoice","Estimate","HospitalPatientChart","DischargeSummary","AnesthesiaMonitoring","WellnessAndPreventativeCareSummary","LabReqForm","HospitalVisitPrescriptions","DischargeAgainstMedicalAdviceConsent","ClientConsent","DentalExtractionsConsent","EuthanasiaConsent","TreatmentConsent","SurgeryConsent","EntityScheduleType","EventTypes","VisitStatus","VisitStatusString","ExamLockedStatus","_ExamLockedStatus","ExamResultType","MimeType","OrganizationTypes","PetAlertType","QuestionType","ReservationAssignmentStatuses","ReservationEventTypes","ScheduleBlockType","VisitNoteType","VisitSalesItemAttributeType","WeekDay","WeightConversion","WellnessExamPrognosisScore","ConsentType","documentType","MigratedVisitRecord","MedicalDocument","Photo","DentalChart","Anesthesia","Diagnostics","OutsidePrescription","UltrasoundRadiology","ERRecord","examNotesAreAllowed","currentLockStatus","ExamNotesAreAllowed","noExamLock","NoLock","ExamLevelAreAllowed","ExamLevelOnly","VisitSalesItemsAreAllowed","lockStatus","visitStatus","Finalized","_WeekDay","microNames","shortNames","longNames","Day","getMicroName","day","getShortName","getLongName","Resources","map","title","index","id","toString","FullResources","fromDateTime","date","weekday","SalesItemAttributeProcessingType","SalesItemAttributeType","SalesItemType","DiscountItemTypes","CouponDiscountMonetary","CouponDiscountPercentage","RebateProducts","RebateServices","BusinessLineEnum","BusinessLineName","DiscountType","VisitSalesItemAttributesName","OrganizationVersions","VisitSectionTypes","PaymentMethods","HospitalPrescriptionRefillStatus","HospitalPrescriptionStatus","HospitalScheduleDateRangeType","IdexxLabOrderStatus","IdexxResultStatus","AnesthesiaSectionTypes","MedicationTypes","Traits","FeatureFlags","NoteTypes","Templates","IntakeCompletionStatuses","SpeciesType","PetAlerts","PetGenders","PetGendersIds","ClientSearchModalType","LabelPosition","ReminderDays","ExamCategory","toFixedTruncate","number","numberOfDecimals","length","undefined","regex","pattern","RegExp","match","parseFloat","convertToKG","weight","Number","PoundToKg","toFixed","utils","dom","domUtility","math","mathUtility","ContextWrapper","contextType","set","value","context","get","RouteContext","AppStoreContextWrapper","RecentClientSearchStoreContextWrapper","ZipCodeStoreContextWrapper","Model","rowVersion","defaultTo","componentUtility","static","component","result","type","name","forEach","child","childType","push","newComponent","call","prototype","Object","setPrototypeOf","globalHeaders","SignalRRequestHeaderName","FetchParams","url","queryObject","bodyObject","cacheParams","onErrorCallBack","method","options","mode","cache","credentials","headers","redirect","referrerPolicy","onError","addQuery","query","DOMException","NOT_SUPPORTED_ERR","mergeOptions","fetchOptions","run","getVersioned","cacheKey","CacheUtils","then","key","put","body","post","delete","deleteWithResponse","isObservableObject","toJS","queryString","keys","join","getUrlWithQuery","JSON","stringify","promise","fetch","Promise","resolve","reject","response","json","exceptionStatus","Array","isArray","errorMessages","message","ObjectUtility","getPropertyCaseInsensitive","contentType","indexOf","data","obj","process","target","isObject","syncArray","__modelSyncSetName","items","hasOwnProperty","processApiResponseData","catch","exception","http","_http","bind","setGlobalHeader","deleteGlobalHeader","updateSignalRConnection","hubName","connectionId","connections","parse","connection","_","first","filter","a","isEqual","remove","generateSearchQuery","queryParams","trim","guard","arr","fromNull","StringUtility","s","lastChar","slice","toLowerCase","val","isNaN","DateTime","fromISO","zone","_ref","firstName","lastName","last","pxStyle","list","normalSeparator","finalSeparator","listLength","lastItem","fileUtil","dataURI","byteString","atob","split","mimeString","ab","ArrayBuffer","ia","Uint8Array","i","charCodeAt","Blob","file","reader","FileReader","addEventListener","readAsDataURL","fileName","lFileName","replace","ImageResizerUtil","blobContainerName","encodedFileName","encodeURIComponent","decodeURIComponent","imageResizerQuery","photo","getAzureImageUrl","container","originalFile","Resizer","saveMaxWidth","saveMaxHeight","fileToSave","adjustedNameToSave","File","getFileNameWithoutExtension","saveMinWidth","saveMinHeight","err","previewMaxWidth","previewMaxHeight","previewDataUrl","previewMinWidth","previewMinHeight","petcoBlue","petcoBodyBG","petcoText","petcoWhite","petcoSmoke","petcoWarning","petcoCharcoal","petcoPewterBlue","petcoBrightGray","petcoOnyx","petcoPhilippineBronze","petcoRustyRed","petcoMikadoYellow","petcoGainsboro2","transformObject","object1","entries","blueNeutral","petcoRed","petcoGray","petcoGreen","petcoDanger","petcoLightBlue","petcoTintGreen","petcoTintBlue","petcoCyan","petcoSpanishGray","petcoGraniteGray","petcoGreenSuccess","petcoMyrtleGreen","petcoUCLABlue","petcoPlatinum","petcoBrightGray3","petcoAntiFlashWhite","petcoAntiFlashWhite2","petcoLavenderPink","petcoBrightYellowCrayola","petcoChineseSilver","petcoChalk","petcoPaleRobinEggBlue","petcoCeruleanBlue","petcoFieldDrab","petcoOldLace","petcoWindsorTan","petcoCornsilk","neutralFog","petcoTintYellow","petcoPewterBlue2","petcoOxfordBlue","petcoTuftsBlue","petcoJapaneseIndigo","petcoYankeesBlue","petcoDarkGunmetal","petcoDarkJungleGreen","petcoGrayX11","petcoAmericanSilver","petcoChineseWhite","petcoCultured2","petcoCultured","petcoAliceBlue","petcoLightCarminePink","petcoInternationalOrange","petcoSnow","petcoDodgerBlue","petcoLavender","petcoPalatinateBlue","petcoCetaceanBlue","petcoJet","petcoDarkGunmetal2","petcoLotion","petcoBrightGray2","petcoRed2","petcoTawny","petcoPastelRed","petcoTintRed","petcoDeepGreenCyanTurquoise2","petcoAeroBlue","petcoMagicMint","petcoDiamond2","petcoWater","petcoGreenSheen","petcoLightCyan2","padZero","str","len","ColorUtils","_ColorUtils","invertColor","hex","bw","lightColor","darkColor","r","parseInt","g","b","red","green","blue","componentFromStr","numStr","percent","num","Math","max","floor","min","rgbToHex","cssRgbString","exec","toUpperCase","isHexLightColor","colorHex","substr","ordinal","n","v","allDaysBetweenImpl","start","end","inclusive","cursor","startOf","plus","days","sortAscDateTimesImpl","sortDescDateTimesImpl","fallsOnDayOfWeekImpl","dayOfWeek","DateTimeUtils","_DateTimeUtils","allDaysBetween","fallsOnDayOfWeek","sortAscDateTimes","sortDescDateTimes","getZoneDateAsLocal","dateVal","timeZone","setZone","keepLocalTime","objectDate","toObject","fromObject","keepTimeInZoneAsUtc","getAsDateTimeUTC","dateTimeOrString","getDayOfWeek","getDuration","startDate","endDate","durationUnits","diff","as","getOldestDateTime","firstDate","secondDate","second","utc","getTimehour12","hour","minute","objToDateTime","inputValues","transformValue","item","Date","isDateTime","c","fromEntries","_ref2","getRoundedDate","minutes","d","ms","roundedDate","round","getTime","todayDateTime","prettyPrintTimespan","e","weeks","months","span","years","makeAllBold","originalString","keywords","bolded","uniq","k","replaceAll","htmlFrom","htmlString","cleanHtmlString","sanitize","USE_PROFILES","html","cleanseFirstParagraph","corresp","isNil","toISODate","String","object","asLowercase","property","find","arr1","arr2","differenceWith","isEmpty","formatCurrency","Intl","NumberFormat","currency","style","format","convertToNumber","getCalendarEventItemId","rawId","PromiseByTag","tag","delay","promiseInProgress","usePromiseTracker","area","createPromisesFromTags","tags","t","anyPromiseTrackerTagsInProgress","some","p","AttributeUtils","PredefinedAttributes","attributeGroup","salesItem","attributes","order","salesItemAttributes","HospitalMedicationAttributes","SalesItemAttributeModel","businessLineId","Hospital","businessLine","BusinessLineModel","salesItemAttributeTypeId","salesItemAttributeProcessingTypeId","NoProcessing","defaultValue","fullName","sortOrder","hospitalMedicationAttributeNames","attName","visitSalesItemAttributes","nameKey","stringValue","maxAgeMs","timestamp","localforage","getLastAccessedKey","timestampDT","isValid","milliseconds","toISO","updateLastAccessed","all","isLastAccessedKey","getObjectKey","hasExpired","LastAccessedSuffix","lastAccessedKey","endsWith","AppointmentRequest","reservationId","hospitalId","clientId","petId","duration","appointmentTypeId","appointmentTypeName","veterinarianId","hospitalScheduletemplateId","startTime","endTime","reasonForVisit","notes","appointmentStatus","Booked","statusId","veterinarianFullName","assignmentStatus","Unassigned","isWalkIn","getAvailableAppointmentStatuses","isAppointmentForCurrentDay","appointmentStatuses","AppointmentStatusOptions","label","model","hospitalScheduleTemplateId","appointmentStatusId","Walk_In","Showed","AppointmentCheckInRequest","veterinarianFirstName","veterinarianLastName","veterinarianEmailName","veterinarianLicenseNumber","veterinarianLicenseStateId","veterinarianLicenseExpirationDate","createAsInProgress","dispensingAuthUserId","dispensingUserFirstName","dispensingUserLastName","appointmentNotes","intakeNotes","room","checkInModel","HospitalScheduleTemplateRequest","init","SanitizeString","color","isActive","isDefault","hospitalSchedulePreferences","schedule","template","EntityScheduleOverridePreferenceRequest","storeId","schedulePreferenceOverrideId","entityId","entityType","schedulePreferenceId","scheduleBlockTypeId","Monday","overrideDate","createdBy","updatedBy","dateCreated","dateUpdated","HospitalScheduleRequestModel","hospitalScheduleId","substring","isAdHoc","VisitConsentClientRequest","treatmentStarted","previousTreatment","isCurrentlyOnMedications","medicationList","VisitConsentDentalExtractionRequest","authorizationResponseId","authorizationLimit","VisitConsentEuthanasiaRequest","euthanasiaResponseId","VisitConsentSurgeryRequest","proceduresRequested","lastEatDate","areVaccincationsCurrent","outOfDateVaccincations","isPetIll","hasConcernsToday","illnessOrConcernsNotes","isPetMicrochipped","microchipRequested","medicationsList","fleaTickMedications","hasSeriousHealthConcerns","hadPreviousReactions","needsAdditionalServices","additionalConcerns","infectiousDiseaseInitials","isCPRAllowed","VisitConsentTreatmentRequest","SignAndStoreConsentRequest","visitPublicId","consentTypePublicId","signatureBase64Encoded","visitConsentEuthanasiaRequest","visitConsentClientRequest","visitConsentDentalExtractionRequest","visitConsentTreatmentRequest","visitConsentSurgeryRequest","formData","euthanasiaConsentForm","clientConsentForm","dentalExtractionConsentForm","treatmentConsentForm","surgeryConsentForm","AddSalesItemRequest","visitId","salesItemOptionId","isPending","salesItemOptionIdBeingReplaced","isPackageUpgrade","isFromDI","refillVisitId","blockTagAlongs","prescriptionVisitSalesItemId","reminderDays","PrognosisScoreModel","super","prognosisScoreId","description","VisitWellnessExamModel","visitWellnessExamId","vaccinationsRequested","SanitizeBool","diagnosticRequested","parasiticalRequested","isHealthy","hasNormalAppetite","isBehavorActive","hasNoIllnessSigns","temperature","SanitizeNumber","pulse","respiration","approvedForVaccinations","temperatureUTE","temperatureDNE","pulseUTE","pulseDNE","respirationUTE","respirationDNE","visitDate","SanitizeDateTimeISOAsUtc","attitude","painScale","mucousMembrane","capillaryRefill","bodyConditionScore","attitudeUTE","attitudeDNE","painScaleUTE","painScaleDNE","mucousMembraneUTE","mucousMembraneDNE","capillaryRefillUTE","capillaryRefillDNE","bodyConditionScoreUTE","bodyConditionScoreDNE","subjectiveNotes","objectiveNotes","vitalsNotes","planNotes","diagnosisNotes","prognosisNotes","dischargeNotes","privateNotes","prognosisScore","diagnosisIds","hasEarIssue","hasChronicIssue","hasVomittingDiarrhea","hasSkinAllergies","VisitStatusUpdateEndpoint","AuthApplicationModel","authApplicationId","isFilterable","isViewable","AuthOperationModel","authOperationId","AuthRoleModel","authRoleId","systemId","operations","roleAuthOperationName","UserModel","userId","authUserId","emailAddress","objectIdentifier","allowSecurityAdmin","AuthUserModel","authUserName","roles","user","SecurityUserModel","ScheduleEntityTypeModel","scheduleEntityTypeId","scheduleEntityTypeName","legacyEntityTypeId","isGloballyScheduled","BaseEntitySchedulePreference","scheduleBlockTypeColor","scheduleBlockTypeName","scheduleBlockIsOverrideType","EntitySchedulePreference","entityPreferenceId","uniqueId","combinedInit","Veterinarian","DefaultEntitySchedulePreference","templateId","inheritedFromTemplate","EntityOverrideSchedulePreference","toCalendarEventInput","extendedProps","eventType","eventColor","originalEntityId","originalEntityPreferenceId","override","resourceId","allDay","textColor","editable","startEditable","resourceEditable","backgroundColor","className","borderColor","toFormat","ComputedSchedulePreference","isOverride","overrideNotes","inheritedTemplateId","HospitalScheduleTemplateListingModel","hasSchedulePreferences","schedulePreferenceCount","ScheduleHospitalScheduleTemplateListingModel","isScheduled","HospitalScheduleDayEntityModel","isAdhoc","entityName","schedulingColor","computedSchedulePreferences","cp","hasInheritedSchedulePreferences","defaultScheduleTemplateId","entityTitle","getStringWhenEntityType","strings","vet","Template","Technician","toRequestModel","processedSchedule","entity","overrides","checkDate","base","defaultTemplate","getTemplates","titleFullName","ret","updateEntityPreferenceFields","preferenceCount","entitySchedulePreferences","inheritedCount","HospitalScheduleDayModel","openTime","closeTime","isOpen","scheduledEntities","HospitalScheduleWrapperModel","ProcessedHospitalScheduleModel","veterinarians","sv","HospitalScheduleVeterinarianModel","vetTechs","HospitalScheduleVetTechModel","templates","hospitalSchedules","entityOverrideSchedulePreferences","getScheduledEntity","getScheduleEntitiesForAllDays","flatMap","h","getVeterinarians","lday","hospitalScheduleDays","totalScheduledEntities","scheduleDay","tse","hasLicense","isLicensed","hasAccess","employmentStatus","createDefaultEntitySchedulePreferences","getEntitySchedulePreferences","getFirstScheduleDay","daySchedule","wrapper","email","username","activeDVMLicenseHospitalIds","accessibleHospitalIds","l","UserListingModel","roleCount","featureFlagCount","organizationCount","organizationRelationKey","organizations","isProfileActive","ScheduleEntityBlockTypeModel","scheduleEntityBlockTypeId","AdditionalInfoLabelModel","additionalInfoLabelId","information","AppointmentAuditLogModel","timezone","event","initiator","note","AppointmentStatusRequest","defaultApptListingModel","clinicId","clinicStoreId","clinicLocationName","clientFirstName","clientLastName","clientEmail","clientPhone","petName","speciesName","breedName","genderName","petDOB","appointmentTypeColor","visitCompletionTypeName","createdDate","lastModifiedDate","visitStarted","checkinStart","inProgressStart","admittedStart","finalizedStart","paidStart","checkoutStart","isOnlineBooking","isDropOff","veterinarianTitle","hospitalScheduleTemplateName","rescheduledReservationId","rescheduledToDate","petAlerts","wasPriorCustomer","canCall","canSMS","isRebook","previousEndDate","previousStartDate","isLinkedToClientAndPet","AppointmentListingModel","SanitizeDateTimeISO","PetAlertModel","getAssignmentOrDrName","Assigned","Unassigned_Technician","Assigned_Template","Assigned_Technician","getVetTechOrAssistantName","unassignedCheckInCanBeReassigned","operation","CheckIn","isFullyAssigned","toRequest","FromListingModel","toCheckInRequest","toStatusRequest","isBlockedFromReschedule","Cancelled","Rescheduled","Check_In","In_Progress","Admitted","shouldHide","resource","selectedDate","apptModel","getDefault","scheduleEntity","AppointmentManagementGroupingModel","clinicDate","partnerName","address","city","zip","phone","storeCode","intakePublicId","canViewIntake","canConfirm","canSendVisitCompletion","canCancel","canReschedule","canRebook","rescheduleViaVOB","vobRescheduleUrl","isHospitalReservation","isAppointmentTypeOnlineBooking","hospitalName","hospitalPhone","publicAppointmentTypeId","AppointmentManagementItem","itemTime","species","reservationPublicId","fullDate","displayFullAppt","fromJSDate","getNumberOrdinal","getDate","AppointmentManagementListModel","canViewWhatToExpect","groups","group","communicationPreference","CommunicationPreferenceModel","showCommunicationPreference","IdexxSpeciesModel","idexxSpeciesId","code","SpeciesModel","speciesId","allowUnknownGender","idexxSpecies","AppointmentTypeModel","defaultDurationSeconds","onlineBooking","isSurgery","isDropoff","isLocked","VisitAnesthesiaFormModel","visitAnesthesiaFormId","preOp","VisitAnesthesiaFormPreOpModel","surgery","VisitAnesthesiaFormSurgeryModel","postSurgery","VisitAnesthesiaFormPostSurgeryModel","visitAnesthesiaFormPreOpId","procedure","respiratoryRate","time","asaPhysicalStatus","ivSizeLocation","ivFluidType","startRate","qualityOfSedation","intubated","tubeSize","anesthesiaSystem","additionalNotes","medications","m","VisitAnesthesiaFormPreOpMedicationModel","getDefaultMedications","userUpdatedTitle","userUpdatedFirstName","userUpdatedLastName","defaultMedications","PREANESTHETIC_SEDATIVE_MEDICATIONS","medicationTypeId","rowIndex","ANESTHETIC_INDUCTION_MEDICATIONS","CONSTANT_RATE_INFUSION","ADDITIONAL_MEDICATIONS","surgeryDummyColumn","postSurgeryDummyColumn","addDummyColumns","currentNumberOfVitals","dummyColumn","numberOfColumnsToAdd","twoHours","dummyColumns","count","visitAnesthesiaFormSurgeryId","anesthesiaStartTime","anesthesiaStopTime","surgeryStartTime","surgeryStopTime","complicationNotes","vitalsLength","vitals","VisitAnesthesiaFormSurgeryVitalModel","sort","interval","now","visitAnesthesiaFormPostSurgeryId","stopTime","timeOfExtubation","qualityOfRecovery","surgeryNote","VisitAnesthesiaFormPostSurgeryVitalModel","visitAnesthesiaFormPreOpMedicationId","salesItemId","dose","totalAmount","route","site","timeAdmin","initials","medicationType","MedicationTypeModel","visitAnesthesiaFormSurgeryVitalId","fluidRate","anesthesiaDepth","iso","o2Flow","hr","sP02","rr","etcO2","mm","systolic","diastolic","visitAnesthesiaFormPostSurgeryVitalId","painScore","StorageContentModel","storageContentId","storageContentUrl","sasToken","AssessmentRecommendationModel","assessmentRecommendationId","assessmentReferralId","attachmentStorageContentId","attachmentStorageContent","recommendationTypeId","recommendationType","RecommendationTypeModel","autoRecommendationTypeId","autoRecommendationType","AutoRecommendationTypeModel","autoRecommendationValue","AssessmentReferralModel","assessmentRecommendations","ar","needsValue","AutoAddToVisitTypeModel","autoAddToVisitTypeId","BlobSasModel","modelId","modelTypeName","sasUrl","issueDate","BrandModel","brandId","sourceSystemKey","sourceSystemId","legalBackerHTML","BreedModel","breedId","pgrBreedId","pgrBreed","PGRBreedModel","idexxBreedId","idexxBreed","IdexxBreedModel","CallCodeModel","callCodeId","isSystemGenerated","CallOriginModel","callOriginId","ClientCommunicationListingModel","communicationId","communicationMethodId","communicationDirectionId","content","storeName","readDate","sentByName","outboundSentByName","readByName","photos","PhotoModel","ClientListingModel","ClientId","FirstName","LastName","FullName","AlternatePetParentName","EmailAddress","HomePhone","CellPhone","AlternatePhone","Address","Address2","City","State","LastVisitDate","CanCall","CanSMS","IsActive","ClientVerificationRequest","ClinicIncentiveModel","clinicIncentiveId","clinicIncentivePeriodId","targetAOV","partnerPayout","dispatchDistrict","periodName","ClinicIncentivePeriodModel","ClinicRoleTypeModel","clinicRoleTypeId","SanitizeStringWithEmpty","ClinicRoleModel","clinicRoleId","abbreviation","desiredMaxUsers","isVetAssistant","isDVM","clinicRoleType","ClinicSalesItems","salesDate","salesItems","si","SalesItemModel","ClientCommunicationStatModel","clientCommunicationStatId","unreadMessageCount","lastReadCommunicationId","ClinicTaskAssigneeListingModel","clinicTaskAssigneeId","clinicTaskId","roleName","userFirstName","userLastName","userTitle","ClinicTaskFollowupListingModel","clinicTaskFollowupId","comment","ClinicTaskListingModel","clinicTaskTypeId","clinicTaskType","clinicTaskStatusId","clinicTaskStatus","dueDate","closedDate","isUrgent","creatorFirstName","creatorLastName","creatorTitle","assignees","followups","f","resolvedBy","ClinicTaskTypeModel","defaultDurationMins","ClinicUserListingModel","scheduledStartDate","marketName","joinedDate","photoId","photoUrl","processedPhotoBaseUrl","VeterinarianModel","_class","_initializerDefineProperty","_descriptor","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_descriptor6","_descriptor7","_descriptor8","_descriptor9","_descriptor10","_descriptor11","_descriptor12","_descriptor13","_descriptor14","licenses","LicenseModel","activeSignature","VeterinarianSignatureModel","sp","HospitalScheduleModel","schedulePreferences","petcoUserId","makeObservable","autoBind","doctorTitle","_applyDecoratedDescriptor","observable","configurable","enumerable","writable","initializer","computed","getOwnPropertyDescriptor","canSMSDateUpdated","canSMSUpdatedUserTitle","canSMSUpdatedUserFirstName","canSMSUpdatedUserLastName","canCallDateUpdated","canCallUpdatedUserTitle","canCallUpdatedUserFirstName","canCallUpdatedUserLastName","storeTimeZone","phoneNumber","canCallFullName","formattedUserName","canSMSFullName","CommunicationTypeModel","communicationTypeId","ConsentModel","consentId","consentTypeId","stateId","consentTypeAuthApplicationKey","consentTypeAuthApplicationDescription","consentTypeName","stateName","stateAbbreviation","DiagnosisModel","diagnosisId","DiscountTypeModel","discountTypeId","DocumentTypeModel","documentTypeId","EnsurePetAlertsRequest","PetAlertIds","ExamCategoryModel","examCategoryId","observations","o","ExamObservationModel","assessmentReferral","ExamResultTypeModel","examResultTypeId","examObservationId","examCategoryName","examCategorySortOrder","examResultType","FeatureFlagModel","featureFlagId","globalStartDate","globalEndDate","enabled","FollowUpAppointmentModel","followUpBookingURL","clinetFirstname","clinetLastName","clinetCellPhone","clinetEmailAddress","petname","petspecies","isreturningcustomer","store_number","clinicZipCode","FollowUpTypeModel","followUpTypeId","isForTextMessages","isForCallInteractions","isForVisits","GenderModel","genderId","HospitalHoursModel","hospitalHoursModel","hospitalHoursId","MarketModel","marketId","diagnosticLabUserProvided","diagnosticLabUserName","diagnosticLabPassword","PartnerModel","partnerId","PaymentTypeModel","paymentTypeId","RegionModel","regionId","StateModel","taxValue","hasPrescriptionProductTax","hasClinicServiceTax","hasVetcoPrescriptionTax","hasLicenseFeeTax","zoneOffset","visitNote","StoreTypeModel","storeTypeId","StoreModelBase","address2","zipCode","secondaryPhone","salesTaxRate","isOutdoorClinic","latitude","longitude","bookingMessage","timezoneName","StoreModel","market","region","brand","paymentType","storeType","partner","StoreListingModel","regionName","brandName","paymentTypeName","storeTypeName","partnerLabel","hasHospital","HospitalScheduleTemplateModel","IvlsDeviceModel","ivlsDeviceId","deviceSerialNumber","lastPolledCloudTime","MacroType","MacroTargetType","HospitalModel","_descriptor15","_descriptor16","_descriptor17","_descriptor18","_descriptor19","_descriptor20","_descriptor21","_descriptor22","_descriptor23","_descriptor24","_descriptor25","_descriptor26","store","isDisabled","fax","outboundSMSPhone","hospitalHours","hh","isDoubleBookingEnabled","defaultScheduleTemplate","parentOrganizationId","currentClinicId","ivlsDevices","outOfOfficeMessage","isOutOfOfficeEnabled","awayMessage","awayMessageEnabled","openDaysOfWeek","openStartTime","closeStartTime","hospitalFlags","OrganizationListingModel","organizationId","organizationSource","organizationSourceId","organizationType","organizationTypeId","organizationVersion","organizationVersionId","shortName","HospitalOrganizationListingModel","hospitalCount","OrganizationRelationListingModel","organizationRelationId","organizationName","organizationDescription","organizationSourceName","organization","enums","Clinic","HospitalOrganizationRelationListingModel","HospitalPrescriptionEventModel","hospitalPrescriptionEventId","hospitalPrescriptionId","hospitalPrescriptionEventTypeId","visitSalesItemId","integrationResponsePayloadStorageContentId","wasSuccessful","hospitalPrescriptionEventTypeName","visitSalesItemSalesItemName","integrationResponsePayloadStorageContentUrl","eventDate","HospitalPrescriptionRequestListingModel","hospitalPrescriptionStatusId","hospitalPrescriptionRefillId","hospitalPrescriptionRefillStatusId","prescriptionName","expiresDate","refills","instructions","veterinarianName","veterinarianLicenseStateAbbreviation","veterinarianEmail","veterinarianSignaturePhotoId","veterinarianSignaturePhotoURL","unitOfMeasure","frequency","optionDisplayName","clientAddress","clientCity","clientState","clientZipcode","petSpecies","petBreed","petBirthDate","petWeight","quantity","dateRequested","hospitalPrescriptionRowVersion","fillByDate","completedDate","orderNotes","invoiceId","toHospitalPrescriptionModel","HospitalPrescriptionModel","prescribedProduct","remainingRefills","expirationDate","veterinarianSignaturePhoto","TraitModel","traitId","isForSalesCategories","isForSalesSubCategories","isForSalesItems","isForVisitSalesItems","isForVeterinarians","isForUsers","isForStates","isForStores","isForHospitals","ModelWithTrait","numberValue","decimalValue","boolValue","extendedValue","trait","SalesItemTraitModel","salesItemTraitId","HospitalPrescriptionRefillStatusModel","VisitSalesItemPublicModel","salesItemCode","salesItemDescription","salesItemName","salesItemFullName","salesItemOptionName","salesItemOptionDisplayName","salesPackageId","salesItemPrice","salesPackageName","salesPackagePrice","salesItemUnitPrice","estimateQuantityLow","estimateQuantityHigh","showQuantityRanges","salesItemOptionAllowPartialQuantities","salesItemOptionAllowQuantityChanges","salesItemOptionAllowQuantityRanges","salesItemOptionAllowUserEnteredPrice","salesItemOptionMinimumQuantity","salesItemOptionMaximumQuantity","wasDeclinedByClient","dispensingFee","wasDeclinedByVeterinarian","given","isDiscountItem","invoicePrice","invoiceUnitPrice","isPackageAddOn","wasPreviouslyPended","VisitSalesItemModel","salesItemSalesItemTypeId","parentVisitSalesItemId","salesItemOptionBusinessLineSKU","salesItemOptionPetcoSKU","salesItemOptionUnitOfMeasureQuantity","salesItemOptionUnitOfMeasureId","salesItemOptionUnitOfMeasureName","salesItemCommunicationTypeId","salesItemSalesItemTypeName","orderBy","vsa","VisitSalesItemAttributeModel","isInPackage","salesPlanId","salesPlanName","attributeElements","parseAttributeElements","salesItemSupplierProductCode","visitSalesItemTraits","vsit","VisitSalesItemTraitListingModel","salesItemReminderDays","HospitalPrescriptionRefillModel","dateFilled","visitSalesItem","hospitalPrescriptionRefillStatus","HospitalPrescriptionStatusModel","isOwnedByPetPass","canBeRefilledByPetPass","canBeRecalledByPetPass","canBeCancelledByPetPass","SalesItemOptionModel","prescriptionLabelId","packageQuantity","prescriptionFulfillmentId","petcoSKU","allowPartialQuantities","allowQuantityRanges","allowQuantityChanges","defaultQuantity","minimumQuantity","maximumQuantity","unitOfMeasureId","unitOfMeasureQuantity","allowUserEnteredPrice","tagAlongs","SalesItemOptionTagAlongListingModel","defaultStartDate","toISOString","clinicSKU","hospitalSKU","dosesSold","year","lastFillDate","hospitalPrescriptionRefills","salesItemOption","salesItemTraits","hospitalPrescriptionStatus","isHidden","hospitalPrescriptionPublicId","petcoPrescriptionTypeName","vetLicenseLicenseTypeName","clientEmailAddress","clientAddress2","clientStateAbbreviation","clientZipCode","clientCounty","petSpeciesName","petGenderName","petBreedName","petMedications","hospitalPublicId","hospitalCode","hospitalAddress","hospitalAddress2","hospitalCity","hospitalStateAbbreviation","hospitalZipCode","hospitalFax","storeBookingName","hospitalTimezoneName","hospitalLatitude","hospitalLongitude","hospitalPrescriptionEvents","isExpired","Approved","ApprovedPendingPickup","Recalled","Transferred","TransferredPermanent","toRefillRequestModel","toLocaleString","DATE_SHORT","HospitalPrescriptionRefillListingModel","HospitalPrescriptionListingModel","dateHidden","hiddenByFirstName","hiddenByLastName","hiddenByTitle","cancelledByFirstName","cancelledByLastName","cancelledByTitle","dateCancelled","cancelNotes","veterinarian","scheduleTemplate","ScheduleBlockTypeModel","isOverrideType","showOverrideNotesOnCalendar","ScheduleBlockTypeUIModel","IntakeModel","intakeId","county","stateAbbrev","cellPhone","alternatePhone","notificationSentDate","responseCompleteDate","responseLinkSource","firstOpenDate","firstOpenLinkSource","storeAddress","storeCity","storeStateAbbreviation","storeZipcode","storePhone","storePartnerName","storeBrandName","hasVisits","hasCompletedVisits","isClinicCancelled","pets","pet","IntakePetModel","expectedFullVisitDate","expectedVisitDate","visitTimes","visitDateAndTimes","isIntakeCompleted","isReadOnly","targetRebookingReservation","firstPetPassSourcedIntakePet","intakePet","reservation","source","firstIntakePetWithReservation","isUndefined","width","height","intakePetId","petColorId","birthDate","isMixedBreed","expectedVisitTime","sections","ReservationModel","IntakePetSection","intakePetSectionId","sectionId","questions","question","IntakePetSectionQuestionModel","IntakePetSectionQuestionListValue","intakePetSectionQuestionListValueId","intakePetSectionQuestionId","isSelected","storage","questionId","questionTypeId","followupQuestion","showFollowupWhenAnswerIs","allowMultiple","bitValue","yesOverrideText","noOverrideText","useMultiChoiceDropDown","isFollowupReadOnly","intakePetSectionQuestionListValues","questionSummary","lv","selectedListValueId","listVal","InvoiceListingModel","storeTimezoneName","dateDueUTC","dateDueAtStore","dateFullyPaidUTC","userCreated","userUpdated","petNames","amount","amountDue","clientCanSMS","vetFirstName","vetLastName","paymentMethod","clientName","vetName","invoiceDiscrepancyReasonId","invoiceType","invoice","toClientEmailRequest","visit","client","communicationTypeName","includeRabiesCertificate","InvoicePaymentModel","invoicePaymentId","paymentMethodId","PaymentMethodModel","InvoiceSalesItemModel","invoiceSalesItemId","parentInvoiceSalesItemId","rebateAmount","postRebatePrice","discountAmount","invoiceSalesItemTraits","getBarcodePrice","scalar","handledScalar","price","NoteTypeModel","noteTypeId","InvoiceNoteModel","invoiceNoteId","noteType","isPrivate","InvoiceDiscrepancyReasonModel","InvoiceModel","serviceAmount","productAmount","licenseFeeAmount","vetcoPrescriptionAmount","taxPercentage","subtotalPreDiscountsAmount","subtotalPostDiscountsAmount","taxAmount","refundAmount","servicesOnlyDiscountAmount","productsOnlyDiscountAmount","servicesRebateAmount","productsRebateAmount","totalRebateAmount","nonTaxableFeeAmount","taxableFeeAmount","totalFeeAmount","totalAOVAmount","salesPackageDiscountAmount","salesPackageInvoicePrice","taxableTotalAmount","nonTaxableTotalAmount","invoiceDiscrepancyReason","invoicePayments","invoiceSalesItems","doctorsName","toListingModel","fromInvoiceModel","licenseId","licenseType","LicenseTypeModel","licensePhoto","licenseTypeId","MacroTypeModel","macroTypeId","macroTypes","Hospitals","Location","Provider","MacroModel","macroId","macroType","createdByUserId","macroTargetTypeId","visitSalesItemTraitId","traitName","AttachmentModel","parentId","storageContent","VisitAttachmentModel","visitAttachmentId","VisitSalesItemAttributeListValueModel","visitSalesItemAttributeListValueId","visitSalesItemAttributeId","storageParsed","unitOfMeasureName","salesItemAttributeId","handleStringValue","salesItemValidationFormat","attributeHTML","listValues","visitSalesItemAttributeListValues","x","fromFormat","selectedRabiesVaccineId","DataEntry","ExpiresBy","Quantity","UnitOfMeasure","MedicalHistoryModel","row","visitSalesItemOptionId","veterinarianLicense","isRabiesVaccination","diagnosticResultsDocumentId","diagnosticResultsBatchGroup","diagnosticResultsInterpreted","diagnosticResultsRawData","supplierProductCode","supplierProductName","creator","optionName","hasRabiesDoc","hasVisitSummaryDoc","hasPrescriptionDoc","hasInstantTestResults","hasDiagnosticTestResults","isComplete","isFinalized","isPaid","isDiagnosis","salesItemDiscountTypeId","visitDiscountAmount","prescriptionId","prescriptionPublicId","prescriptionStatusId","prescriptionStatusName","prescriptionStatusCanBeRefilledByPetPass","prescriptionUnAbleToRefillMessage","prescriptionRefillSalesItemOptionId","diagnosticResultsDocument","isDeclined","labOrderId","labOrderPublicId","labOrderDiagnosticResultsDocumentId","labOrderDiagnosticResultsDocument","labReqForm","visitAttachments","_visitAttachments","attr","isNote","appointmentType","appointmentColor","MacroListingModel","macroTypeName","macroTypeRowVersion","assignedTo","OrganizationVersionModel","_name","_organizationVersionId","petAlertId","petAlertTypeId","authApplications","au","PetAlertPetModel","petAlertPetId","petAlert","PetVisitReminderModel","dateGiven","pastDueDate","isComingDue","salesItemTypeId","petCustomReminderId","reminderSourceId","isCustomReminder","PetColorModel","pgrColorId","pgrColor","PGRColorModel","defaultPetpassBreedId","defaultPetpassPetColorId","PrescriptionEventTypeModel","prescriptionEventTypeId","PrescriptionFulfillmentModel","packageItemCount","packageRefillDays","packagesSold","packagesForYear","packagesSoldRefillDays","adminNotes","PrescriptionStatusModel","PrescriptionLabelModel","PrescriptionPharmacyModel","prescriptionPharmacyId","eventTypeNote","PronounModel","pronounId","QuestionListValueModel","questionListValueId","QuestionModel","questionType","QuestionTypeModel","questionListValues","qlv","QuestionSpeciesModel","states","QuestionStateModel","questionSpeciesId","questionStateId","RecentClientListingModel","homePhone","isOkToSms","pgrMasterId","palsNumber","isPinned","rowNumber","toClientListingModel","lastVisitDate","ReferralTypeModel","referralTypeId","RelationshipTypeModel","relationshipTypeId","ReportingGroupModel","reportingGroupId","ClientModel","emailAddressNotAvailable","alternatePetParentName","businessName","isOKToSMS","PetModel","referralType","isDeleted","primaryHospital","pronoun","relationshipType","nationwideId","nationwideIdNotAvailable","ClientNoteModel","EntityMappingModel","entityMappingId","entityMappingTypeId","sourceSystemName","PetNoteModel","petNoteId","createdUserTitle","createdUserFirstName","createdUserLastName","alerts","breed","breedFullName","firstVisitDate","gender","hasAlerts","isDeceased","medicalHistoryDocument","medicalHistoryDocumentId","microchipNumber","petColor","rabiesTagNumber","lastAppointmentType","entityMappings","sanitizedBirthDate","pa","SourceSystem","reservedDate","confirmationDate","phone1","cancellationDate","confirmation1SMSDate","confirmation2SMSDate","confirmation3SMSDate","preVisitSMSDate","preVisitSMSResponseDate","preVisitSMSResponse","addedToCalendar","rebooked","bookingSMSDate","intakeResponseCompleteDate","intakePetResponseCompleteDate","clinicCancellationProcessedDate","hasVisit","reservationAssignmentStatusId","isFollowUpReservation","PetPass","SalesCategoryModel","salesCategoryId","salesSubCategories","SalesSubCategoryModel","UnitOfMeasureModel","SalesItemUpgradeListingModel","salesItemOptionTagAlongId","tagAlongSalesItemOptionId","tagAlongSalesItemOptionName","tagAlongSalesItemOptionDisplayName","tagAlongSalesItemId","tagAlongSalesItemName","tagAlongSalesItemDescription","tagAlongSalesItemSalesSubCategoryId","SalesItemAttributeListValueModel","salesItemAttributeListValueId","storageUI","lotNumber","serialNumber","SalesItemAttributeProcessingTypeModel","SalesItemAttributeTypeModel","relatedEntityId","validationFormat","salesItemAttributeType","salesItemAttributeProcessingType","salesItemAttributeListValues","alv","SalesItemPriceRuleBrandModel","salesItemPriceRuleBrandId","salesItemPriceRuleId","SalesItemPriceRuleOrganizationModel","salesItemPriceRuleOrganizationId","SalesItemPriceRuleStateModel","salesItemPriceRuleStateId","SalesItemPriceRuleModel","priority","isBlocking","packageAddOnPrice","org","st","brands","br","SalesItemTypeModel","allowAttributes","SalesItemListingModel","salesSubCategoryId","helpPhotoId","isAutomaticallyGiven","salesSubCategoryName","salesItemTypeName","discountTypeName","helpPhoto","currentPrice","hasAttributes","hasRequirements","hasSatisfiers","hasMarkets","hasTraits","salesSubCategory","isArchived","isPricedByOption","salesItemUpgradeId","deepLinkedSalesCategoryId","deepLinkedSalesSubCategory","deepLinkedSalesSubCategoryId","includeInDrugLog","salesItemType","discountType","autoAddToVisitType","markets","reportingGroups","prices","SalesItemPriceModel","priceRules","attribute","sio","resetCategories","SalesItemResetCategoryModel","requirements","SalesRequirementModel","satisfiers","traits","salesItemDiscountSalesItems","sids","SalesItemDiscountSalesItemModel","salesItemDiscountSubcategories","SalesItemDiscountSubcategoryModel","salesItemRebateSalesItems","SalesItemRebateSalesItemModel","salesItemPriceId","salesItemResetCategoryId","SalesItemSimpleListingModel","itemName","SalesPackageContentModel","salesPackageContentId","SalesPackageModel","expirationDays","vaccineReminderDefaultDays","contents","SalesPackagePriceModel","SalesPackagePriceRuleModel","visitItemsInPackage","vsi","orderedVisitItemsInPackage","visitItemsNotInPackage","differenceBy","packageName","packagePrice","orderedVisitItemsNotInPackage","groupBy","el","element","parent","concat","salesPackagePriceId","SalesPackagePriceRuleBrandModel","salesPackagePriceRuleBrandId","salesPackagePriceRuleId","SalesPackagePriceRuleOrganizationModel","SalesPackagePriceRuleStateModel","salesPackagePriceRuleOrganizationId","salesPackagePriceRuleStateId","SalesPlanModel","SalesPlanContentModel","salesPlanContentId","salesRequirementId","inactive","salesCategoryName","salesCategoryDisplayName","salesCategorySortOrder","fullDisplayName","shouldSendToRX","SearchResponse","results","totalRecordCount","SectionListingModel","SectionModel","StoreCommunicationStatModel","storeCommunicationStatId","unreadMessageClientCount","TemplateTypeModel","templateTypeId","TemplateModel","templateValue","showEnabledInAdmin","templateType","TemplateMaxSize","TrustedApplicationModel","trustedApplicationId","appId","appKey","appKey2","appKeyCreatedDate","appKey2CreatedDate","UserFeatureFlagModel","userFeatureFlagId","featureFlag","implicitAuthRoles","explicitAuthRoles","authOperations","recentClinics","userFeatureFlags","hospitalOrganizations","employeeId","employeeType","employmentStatusName","VaccineAdministeredModel","vaccineAdministeredId","VaccineManufacturerModel","vaccineManufacturerId","VaccineNameModel","vaccineNameId","VaccineVirusTypeModel","vaccineVirusTypeId","veterinarianSinatureId","active","signature","VisitCompletionTypeModel","isManuallyAssignable","VisitConsentModel","visitConsentId","clientSignaturePhotoId","consent","clientSignaturePhoto","VisitDiagnosisModel","visitDiagnosisId","diagnosis","VisitNoteModel","visitNoteId","visitNoteTypeId","followUpType","defaultFollowUpType","isPrivateNote","noteDate","VisitPublicModel","storeAddress2","storeZipCode","storeSecondaryPhone","storePartnerLabel","storeLatitude","storeLongitude","vetEmail","vetLicenseNumber","vetLicenseStateAbbreviation","vetLicenseExpirationDate","visitSalesItems","EstimateSalesItemModel","estimateSalesItemId","estimateId","parentEstimateSalesItemId","EstimateModel","redeemedDate","estimateSalesItems","esi","VisitStatusModel","visitStatusId","ZipCode","zipCodeId","zipcode","VisitEventModel","checkinTime","confirmationSMSSent","consultationStart","consultation2Start","vetServicesStart","checkoutTime","finalizedComplete","VisitExamResultObservationModel","visitExamResultObservationId","visitExamResultId","examObservation","VisitExamResultModel","examCategory","VisitSectionTypeModel","visitSectionTypeId","VisitSectionVersionModel","visitSectionVersionId","visitSectionType","VisitReferralModel","visitReferralId","isReferred","assessmentReferralName","assessmentReferralDescription","assessmentReferralSortOrder","assessmentReferralAttachmentStorageContentId","recommendations","VisitModel","visitNoteType","visitNotes","visitWellnessExam","vn","Discharge","hospitalPrescriptions","isRxOnly","cashPayment","checkPayment","consultationHasBeenValidated","consultationValidationStatusId","fleaTickProductId","hasMicrochip","hasOptedOutOfPackage","hasOutsideContact","heartwormProductId","isExpress","isPetNotPresent","isPetPregnant","lastVaccineDate","lastRabiesDate","vetServicesHasBeenValidated","vetServicesValidationStatusId","sMSStatus","hasVetAttestation","hasPetAttestation","visitDiagnoses","vd","visitHistory","visitSubjective","normalResponses","abnormalResponses","unableToExamResponses","additionalInfoLabels","showRabiesDisclaimer","vetAssistantFirstLast","clinicStateId","clinicAllowChangingSingleVisitVet","rabiesCertificateDocumentId","prescriptionDocumentId","visitEvent","historicalVisitWellnessExams","clinicVetSignaturePhoto","visitSummaryDocument","rabiesCertificateDocument","prescriptionDocument","salesPackageSalesSubCategoryId","salesPackageSalesSubCategoryName","salesPackageSpeciesId","salesPackageSpeciesName","salesPackageDisplayName","salesPackageDescription","salesPackageCode","salesPackageHelpPhotoId","salesPackageSortOrder","salesPackageExpirationDays","salesPackageVaccineReminderDefaultDays","isSalesPackageRefunded","visitCompletionType","thankYouNote","storeStateNote","clientStateNote","visitTagId","examResults","hasEvaluatedAutoRecommendations","intake","arrived","firstCheckIn","arrivedWaitingTime","checkInWaitingTime","intakeCompletionStatusId","needsProactiveFleaTickPrescription","consents","visitSectionVersions","vsv","labOrders","lo","LabOrderModel","anesthesiaForms","af","hp","isInAdminMode","freeNonPackageSalesItems","addOnSalesItems","paidNonPackageSalesItems","discountAndRebateSalesItems","referrals","rf","ConsentTypeModel","RabiesInformationContentModel","rabiesInformationContentId","rabiesInformationId","RabiesInformationModel","vaccineAdministeredName","vaccineManufacturerName","vaccineName","vaccineVirusTypeName","addNewLotNumber","ClinicCancellationReasonModel","clinicCancellationReasonId","VisitTagModel","ReminderSourceModel","ReminderDeactivationReasonModel","reminderDeactivationReasonId","ClientConfigurationModel","authRoles","clinicTaskTypes","ctt","hospitalPrescriptionRefillStatuses","hospitalPrescriptionStatuses","prescriptionPharmacies","userHasRole","opName","authorizedOperations","op","usersFeatureFlagIds","ff","entityTypeArray","filteredItems","scheduleEntityBlockTypes","groupedByBlockTypeId","allowedBlockTypeIds","allScheduleBlockTypes","sbt","authApplicationKey","authApplicationDescription","userIdentityName","arrivalToastTimeoutSeconds","clearPendingAfterDays","userInitials","systemEnvironment","shouldShowRemindersInVisitBuilder","pGRLookupEnabled","twilioLookupEnabled","vobRescheduleEnabled","jackpotReservationBookingEnabled","jackpotReservationBookingUrl","hospitalDateRestrictionsOnAppointmentActionsDisabled","writtenHospitalPrescriptionsEnabled","currentUTCDateTime","timerIntervalMilliseconds","timerQuantizeSeconds","timerWarningThresholdSeconds","vetspireDocumentViewerUrl","partners","breeds","diagnoses","communicationTypes","clinicRoles","clinicRoleTypes","featureFlags","genders","petColors","referralTypes","visitStatuses","callCodes","callOrigins","paymentMethods","salesItemAttributeTypes","salesItemAttributeProcessingTypes","salesItemTypes","discountTypes","salesCategories","visitCompletionTypes","examResultTypes","autoAddToVisitTypes","prescriptionLabels","organizationVersions","currentCorpOrganization","templateTypes","examCategories","examObservations","recommendationTypes","autoRecommendationTypes","assessmentReferrals","questionTypes","clinicCancellationReasons","consentTypes","licenseTypes","prescriptionEventTypes","prescriptionFulfillments","prescriptionStatuses","pronouns","scheduleEntityTypes","scheduleBlockTypes","relationshipTypes","businessLines","unitOfMeasures","clinicBusinessLineOrganization","hospitalBusinessLineOrganization","hospitalPricingTierOrganizations","vaccineNames","vaccineManufacturers","vaccineVirusTypes","vaccineAdministereds","rabiesInformations","medicationTypes","invoiceDiscrepancyReasons","shortClientSideCacheTimeToLive","mediumClientSideCacheTimeToLive","longClientSideCacheTimeToLive","baseUrlCSR","baseUrlGlobalAdmin","templateMaxSize","visitTags","reminderSources","reminderDeactivationReasons","Admin","currentAppBusinessLine","Global","SWIFT","cr","crt","pc","rft","vs","cc","co","sa","dt","vct","ert","at","pr","ad","ao","ov","tt","ec","eo","rt","art","qt","ccr","lt","appScheduleEntityTypes","sebt","getScheduleBlockTypesForEntity","bl","um","ri","md","idr","vt","rs","rdr","intersectionWith","roleModel","authOp","getPricingTierOrganization","orgId","salesItemDiscountSalesItemId","discountSalesItemOptionId","discountSalesItemOption","discountSalesItemOptionFullName","salesItemDiscountSubcategoryId","salesItemRebateSalesItemId","rebateSalesItemOptionId","rebateSalesItemOption","rebateSalesItemOptionFullName","PetAttachmentModel","petAttachmentId","clientNoteId","ClinicListingModel","scheduledEndDate","isClosed","isPendingClose","isCancelled","isPublished","storeParent","storeStateAbbrev","ClinicVeterinarianModel","clinicVeterinarianId","isClinicVeterinarian","ClinicUserModel","clinicUserId","joinDate","clinicRoleName","clinicRoleDisplayName","clinicRoleAbbreviation","isPrimaryInClinicRole","isClinicRole","anonymizedFirstLastOnly","VisitListingModel","visitStatusName","visitCompletionTypeIsComplete","visitCompletionTypeIsManuallyAssignable","visitCheckinStart","visitConsultationStart","visitVetServicesStart","visitCheckoutStart","visitInProgressStart","visitAdmittedStart","visitFinalizedStart","visitPaidStart","smsStatus","VisitPetModel","VisitClientModel","visitTag","intakeCompletionStatus","VisitIntakeCompletionStatusModel","isFollowUpVisit","ClinicModel","canJoin","canOpen","storeNumber","stateAbbr","clinicAddress","users","serverRootUrl","visits","reservations","saveVetSignatureToClinic","slotDuration","appointmentCapacity","cancelledDate","clinicCancelledBy","clinicCancelledApprovedBy","clinicCancellationNotes","allowChangingSingleVisitVet","veterinarianOverrideName","veterinarianOverrideFirstName","veterinarianOverrideLastName","veterinarianOverrideLicense","veterinarianOverrideEmail","veterinarianOverrideExpirationDate","defaultRabiesSerialNumber","Unknown","hasHadReaction","azureImage","clientPublicId","petPublicId","petMicrochipNumber","petRabiesTagNumber","veterinarianPublicId","vetSignaturePhotoId","technicianFirstName","technicianLastName","isInHouseDiagnostic","specimenCollectionDate","inHouseLabStationDevices","paperlessBarcode","orderSourceSystemKey","orderStatus","orderUIUrl","orderPDFUrl","resultSourceSystemKey","resultDataPayload","resultUIUrl","resultPDFUrl","resultStatus","resultModality","vetSignaturePhoto","orderPDFDocument","events","tests","reviewedBy","communicatedBy","dateResulted","RebookReservationResponse","reschedulingSystemUrl","WellnessExamForm","assignment","vetId","sectionRowVersion","Assignment","followupVisit","filterVisitNotesByVisitNoteType","Intake","followupNote","fromVisit","ToExamVitals","Vitals","historicalVitals","subjective","Subjective","objective","categories","er","resultType","observationIds","Objective","objectiveWithoutNotes","assessment","visitDiagnosis","Assessment","plan","Plan","prognosis","score","Prognosis","discharge","Private","PrivateNotes","signatureAppliedToVisit","vetClinicSignature","Signature","visitBuilder","VisitBuilder","postVisit","PostVisit","diagnostics","DiagnosticMarkup","required","inputType","unableToEvaluate","valueSuffix","didNotEvaluate","form","markup","sortBy","testName","AppointmentFlowLaneCard","appointment","card","laneIndex","cardIndex","actionIndex","futureStatus","MacroKeywords","text","reg","matched","ServiceHelper","defaultMessage","showError","NotificationStoreInstance","error","errorMessage","showSuccess","success","successMessage","defaultTag","promiseArea","ConfigurationService","getConfiguration","isPublic","vpca","trackPromise","baseUrl","NotificationType","_dec","action","bound","_dec2","_dec3","_dec4","_dec5","_dec6","_dec7","notifications","from","notificationsMap","sticky","uuid","SUCCESS","onSuccess","runInAction","ERROR","def","info","INFO","onInfo","clearNotification","AppStore","flow","isConfigurationLoading","configuration","StorageService","getSas","uploadRecommendationAttachment","uploadHelpPhoto","uploadPetPoto","uploadIntakePetPhotoPublic","uploadQuestionFile","containerName","ensureEntityExists","publicUserHeader","request","sasModel","AzureBlobStore","dataUrl","_this","uploadingFiles","res","blob","valueOf","sas","uploadFileImpl","_this2","files","_this3","fromEmpty","assign","ContainerClient","newPipeline","getBlockBlobClient","uploadData","SearchService","endPoint","searchParams","mapResults","searchResults","getSearchTag","_SearchService","SearchEndPoints","additionalInfoLabel","appointmentTypes","clientcommunications","clients","clientsrecentvisits","clinicIncentives","clinicincentiveperiods","clinicroles","clinictasktypes","duplicateClients","examcategories","featureflags","hospitalCommunications","hospitalScheduleTemplates","hospitalPrescriptionRequests","hospitals","invoices","invoiceSummaries","macros","openappointments","organizationUsers","salespackages","salesplans","salesitem","salesitemoptions","petcolors","petNotPresentVisits","prescriptionlabels","salesitemresetcategories","salesrequirements","stores","reportinggroups","tasks","tasksCount","trustedApplications","zipcodes","restrictedwords","QueryCacheStore","queryClient","queryStaleTime","clearCache","queryKey","removeQueries","SearchStore","hasMultiplePagesImpl","top","mapSearchResults","queryClientInit","isLoading","search","endpointUrl","combinedSearchParams","fetchQuery","queryFn","staleTime","defaultSearchFilter","defaultSearchParams","skip","orderby","field","dir","searchFilter","combinedSearchParamsImpl","setPartialDefaultSearchFilter","currentSearchFilter","hasMultiplePages","currentPage","ceil","changePage","newPage","updateRemoteDTSort","selectedColumn","sortDirection","sortField","updateSearchParams","updateSearchFilter","resetSearchFilter","resetSearchResults","StandardSearchStore","mapSearchResult","ODataSearchStore","AdditionalInfoLabelService","updateAdditionalInfoLabel","deleteAddtionalInfoLabel","AssessmentReferralService","getAssessmentReferral","updateAssessmentReferral","deleteAssessmentReferral","BreedService","upsertBreed","deleteBreed","CallCodeService","upsertCallCode","deleteCallCode","CallOriginService","upsertCallOrigin","deleteCallOrigin","ClinicIncentiveService","updateClinicIncentive","deleteClinicIncentive","importClinicIncentives","ok","ClinicIncentivePeriodService","addClinicIncentivePeriod","getClinicIncentivePeriods","ClinicRoleService","upsertClinicRole","deleteClinicRole","ClinicTaskTypeService","upsertClinicTaskType","deleteClinicTaskType","DiagnosisService","upsertDiagnosis","deleteDiagnosis","ExamCategoryService","getExamCategory","upsertExamCategory","deleteExamCategory","SectionService","getSections","getSection","updateSection","deleteSection","sc","FeatureFlagService","upsertFeatureFlag","deleteFeatureFlag","IdexxService","getIdexxBreeds","MarketService","getMarkets","PetAlertService","updatePetAlert","deletePetAlert","PetColorService","upsertPetColor","deletePetColor","PGRService","getColors","getBreeds","PrescriptionLabelService","upsertPrescriptionLabel","deletePrescriptionLabel","prescriptionlabelId","ReferralTypeService","ReportingGroupService","upsertReportingGroup","deleteReportingGroup","getReportingGroups","SalesCategoryService","getSalesCategories","getSalesCategory","updateSalesCategory","deleteSalesCategory","SalesCategoryId","SalesItemResetCategoryService","upsertSalesItemResetCategory","getSalesItemResetCategories","deleteSalesItemResetCategory","SalesRequirementService","upsertSalesRequirement","getSalesRequirements","deleteSalesRequirement","SalesSubCategoryService","getSalesSubCategories","getSalesSubCategory","updateSalesSubCategory","deleteSalesSubCategory","SalesSubCategoryId","StateService","upsertState","getStates","TemplateService","upsertTemplate","ZipCodeService","upsertZipCode","deleteZipCode","TrustedApplicationService","getNewTrustedApplication","getNewApplicationKey","updateTrustedApplication","deleteTrustedApplication","VaccineAdministeredService","upsertVaccineAdministered","deleteVaccineAdministered","VaccineVirusTypeService","vaccineVirusType","VaccineNameService","VaccineManufacturerService","upsertVaccineManufacturer","deleteVaccineManufacturer","ClinicSalesPackages","salesPackages","SalesPackageService","deleteSalesPackages","getSalesPackage","upsertSalesPackage","getClinicSalesPackages","csp","SalesPlanService","getAllSalesPlans","getSalesPlan","upsertSalesPlan","deleteSalesPlan","resp","salesPlans","PingService","ping","RXServiceDispensingHistoryItemModel","order_number","sku","sku_name","tracking_number","shipping_url","shipped_date","ordered_date","fulfillment_quantity","prescription_number","prescription_type","prescribing_vet_name","pet_details","customer_details","RxSKUItemQuantityModel","rxSKUItemQuantityId","rxSKUItemId","RxSKUItemModel","quantities","q","PrescriptionService","getByHospitalPrescriptionId","getRXDispensingHistory","getRXSKUQuantities","recallHospitalPrescription","transferHospitalPrescription","AuthApplicationService","apps","app","defaultCustomerInteraction","callDate","clientInteractionId","callOrigin","callCode","followUp","CustomerInteractionModel","actualUser","callOriginName","callCodeName","getFullName","ClientService","getClient","addClient","updateClient","validateCustomer","getClientMedicalHistoryForPet","getAppointmentAndVisitData","getAppointments","addEmailCommunication","getInteractions","addInteraction","updateInteraction","deleteInteraction","saveCommunicationPreference","addNewClientFromClinic","getCommunicationStat","getTagForOptions","medicalHistories","medicalHistoryClasses","medicalHistory","publicId","apptMgtLstArray","apptMgtLst","startOfDayAtHospitalInUTCShift","millisecond","appts","appointments","apt","filterAppointments","emailRequest","customerInteraction","customerInteractionId","MacroRequest","macro","HospitalService","loadScheduledVets","getAppointment","getLastModifiedAppointmentDate","createAppointment","updateAppointment","checkInAppointment","setNoShowAppointment","setInProgressAppointment","getHospital","convertStoreToHospital","getAllHospitals","updateHospital","getHospitalVeterinarians","getHospitalSchedules","updateHospitalSchedules","setAdmittedAppointment","setBookedAppointment","setConfirmedAppointment","setCancelledAppointment","setFinalizedAppointment","setPaidAppointment","addAdhocHospitalSchedule","getHospitalScheduleTemplate","getHospitalScheduleTemplateList","createHospitalSchedulePreferenceOverrides","updateHospitalSchedulePreferenceOverrides","reopenVisit","createHospitalPrescriptionRefill","updateHospitalPrescriptionRefill","checkOutHospitalPrescriptionRefill","getMacro","updateMacro","createMacro","deleteMacro","upsertHospitalPrescription","upsertHospitalPrescriptions","deleteHospitalPrescription","refreshHospitalIvlsDevices","setAbortedAppointment","createPetNotPresentVisit","checkOutPetNotPresentVisit","cancelPetNotPresentVisit","cancelPetNotPresentInvoice","cancelHospitalPrescription","appointmentClass","startDateTime","endDateTime","includeOffset","appointmentClasses","hospital","vets","range","scheduleItem","month","updatedHospital","ParseMacroRequest","iv","HospitalServiceHooks","dayDate","useLocalObservable","appointmentsForDay","box","clear","finally","apptResult","useScheduleDayAppointments","scheduleDayEntityAppointments","extendObservable","ImageService","VisitService","getVisit","getPublicVisit","updateVisit","updateVisitExamResult","saveSignature","saveVisitFollowupNote","saveVisitFollowupNotes","deleteVisitAttachment","resendVisitCompletionEmail","signAndStoreConsent","getVisitSectionVersions","addNewRabiesLotNumber","cancelPrescriptionPickup","updateVisitSalesItemOption","saveClientSignature","declineConsentVisit","updateVisitStatus","abortVisit","followupVisitNote","category","req","visitExamResultNotes","examObservationIds","photoImage","encodedImage","filename","photoRequest","Signatures","vetNotInList","vetLicense","bypassVisitTotalsRecalc","isRabiesSalesItem","vsia","Rabies","evaluateGivenStatus","ParseSignAndStoreConsentRequest","authHeader","mobileNumber","visitPublicIds","idexxTests","testCode","flat","oldSalesItemOptionId","newSalesItemOptionId","endpointName","abortVisitRequest","PetWeightHistoryModel","sanitizedVisitDate","PetCustomReminderModel","reminded","reminderSourceName","PetService","fetchPet","addPet","updatePet","getVisitReminders","getHospitalPrescriptions","ensurepetalerts","estimateIO","addPetAttachment","updateAttachment","getPetAttachments","deletePetAttachments","deleteEstimate","addNewPetFromClinic","getMedicalHistory","getPetWeightHistory","createPetcustomReminders","petModel","reminders","reminder","em","DATETIME_SHORT_WITH_SECONDS","estimate","estimateSalesItem","blobSasModel","petWeightHistoryJson","sortedHistory","petWeightHistoryModel","pcr","ReservationService","getAppointmentAuditLogs","reservationPublicIds","VeterinarianService","getVeterinarianByVetId","getVeterinarianByUserId","getVeterinarianByStateId","saveSchedulePreferences","addVeterinarianClinicSignature","deleteVeterinarianClinicSignature","saveVeterinarianSignature","deleteVeterinarianSignature","scheduleRequest","photoModel","SalesItemService","fetchSalesItems","getSalesItemOptions","getSalesItem","upsertSalesItem","deleteSalesItem","getSalesItemsAvailableForUpgradeSelection","optionUrl","InvoiceService","getInvoiceById","updateInvoice","exportSummaries","upsertInvoiceNote","upsertInvoiceDiscrepancyReason","applyInvoiceDiscounts","AppointmentTypeService","getAppointmentType","addAppointmentType","updateAppointmentType","LicenseService","addLicense","updateLicense","deleteLicense","updateRequest","IntakeService","getIntake","openIntake","updateIntake","updateIntakePet","linkSource","intakeModel","intakePetModel","ClinicService","getReservationForRebooking","getClinicIdByHospitalId","getClinicById","openClinic","joinClinic","viewClinic","cancelClinic","addPetsToClinic","logOut","updateClinicUserRole","reservationpublicId","clinicRequest","isDIClinic","cancelClinicRequest","LabOrderService","createLabOrder","getLabOrder","getPublicLabOrder","cancelLabOrder","reviewLabOrder","updateNotesLabOrders","labOrderModel","ihd","selectedIvlsDevice","VisitAnesthesiaFormService","getVisitAnesthesiaForm","upsertVisitAnesthesiaForm","upsertVisitAnesthesiaFormPreOp","upsertVisitAnesthesiaFormSurgery","upsertVisitAnesthesiaFormPostSurgery","upsertVisitAnesthesiaFormSurgeryVital","upsertVisitAnesthesiaFormPostSurgeryVital","deleteMedication","anesthesiaMonitoringFormId","anesthesiaForm","surgeryVital","postSurgeryVital","medicationId","PetNoteService","upsertPetNote","ClientNoteService","upsertClientNote","ClinicListingService","getClinicListing","EntityPersistenceService","update","fieldName","fieldValue","payload","defaultClient","loadAppointments","loading","setPrimaryHospital","clearClient","resetClient","activeVisitId","inProgressVisits","chain","activeVisits","array","HospitalAppStoreContextWrapper","UserStoreContextWrapper","LocationStoreContextWrapper","load","patchClientPets","currentPet","syncAppointmentUpdates","defaultStoreSearchFilter","isHospital","onlyHCL","StoreSearchStore","defaultClientSearchFilter","microchip","rabiesTag","ClientSearchStore","searchType","classes","triggerDisclaimer","noRecordDisclaimer","defaultOrgSearchOrder","defaultOrgSearchFilter","searchTerm","relatedKey","notRelatedKey","typeId","defaultCommunicationTemplateSortOrder","macroScope","CommunicationTemplateSearchStore","PaginationStore","getDefaultRecentResults","sourceData","itemOffset","pageSize","endOffset","pageCount","topResults","UserService","getUser","getUserIdByUsername","updateUser","addRecentClient","getRecentClients","importUser","getUserRecordByObjectIdentifier","currentUser","recentClients","notificationStore","stateSelectOptions","u","observer","nextText","useMemo","cancelText","defaultType","isSubmit","Stack","direction","gap","Button","onClick","cancelAction","variant","SuspenseButton","hideSpinner","nextAction","FieldSetContext","isInFieldSet","fieldSetActions","FieldSet","disabled","fieldSetDisabled","supportDisabledBackdrop","attrs","setIsDisabled","useState","useEffect","classNames","RichTextBoxFormatValue","RichTextBoxEditor","ReactEditor","RichTextBoxUtils","RichTextBoxSerialization","_RichTextBoxUtils","serializeRichTextToPlainText","descendant","SlateNode","string","canConvertDescendantToPlainText","serializeRichTextToPlainTextNoHtml","nodes","plainText","node","SlateElement","isElement","indentationLevel","SlateText","isText","childNode","isListElementType","isListElement","isListItemElement","getSelectedFocusedElement","editor","selection","selectedNode","anchor","path","tryRemoveEmptyListItemAndBreak","focus","selectedElement","lastListItem","onlyItem","textChildren","lastListItemPath","findPath","listPath","Transforms","insertNodes","select","splitNodes","unwrapNodes","setNodes","getActiveColor","Editor","marks","setActiveColor","addMark","isFormatActive","none","toggleFormat","currentFormat","removeMark","isBlockActive","elementType","unhangRange","isEditor","toggleBlock","isListButton","selectedBlockElement","newProperties","block","wrapNodes","_RichTextBoxSerialization","spaceAttributes","rawAttributes","joinedAttributes","getStyleAttribute","css","styleString","styleToCss","deserializeRichTextFromHtml","previousDescendant","blockMarks","textMarks","nodeType","Node","TEXT_NODE","textContent","jsx","ELEMENT_NODE","marginLeft","nodeName","lastDescendant","Text","bold","italic","underline","childNodes","blockElement","serializeRichTextToHtml","escapeHtml","styles","attributeString","sharedAttributes","parseHtmlToRichText","htmlElements","doc","DOMParser","parseFromString","elements","createElement","appendChild","parseHtml","serializeRichTextValueToString","forceHtml","isSMStext","_rtb","isPlainText","RichTextDisplay","asPlainText","remainingAttrs","richTextNodes","serializeResult","useHospitalApp","YesNoConfirmModal","visible","backdrop","busy","confirmButtonText","cancelButtonText","onConfirm","onCancel","getElementsByClassName","requestAnimationFrame","zIndex","Modal","centered","show","onHide","Header","closeButton","Title","Body","Footer","TabTitleWithPills","onClose","setQuery","placeholderText","clearButtonText","liveSearchDelay","omitWrapperMarkup","inputGroupProps","bounce","keyword","setKeyword","doLiveSearch","setDoLiveSearch","liveSearchSetQuery","current","debounce","leading","trailing","onChangeHandler","handleKeypress","preventDefault","InputGroup","role","Form","Control","onKeyUp","onChange","placeholder","Row","Col","SignatureStore","imageUrl","signatureIsBeingUpdated","blobStore","blobSas","uploadDataUrl","PNG","userStore","refreshUser","hasSignature","signatureUrl","signatureName","triggerRequest","selectedOperation","currentAppointment","Confirmed","checkInRequest","selectedOperationFields","StartVisit","statusRequest","Book","Confirm","Cancel","ClinicCancelled","Admit","CheckOut","currentHospital","setCompletedAppointment","setCurrentAction","shouldNavigate","setSelectedOperationFields","defaultAppointmentType","close","setPendingClient","pendingClient","setNewClient","newClient","clientStore","upsertClient","targetClient","defaultHospitalSortOrder","defaultHospitalSearchFilter","searchterm","dropCorpId","unrelated","HospitalOrganizationsSearchStore","defaultSearchFilterOverrides","defaultUserAllSearchFilter","authRoleID","employmentstatusactive","defaultUserOrgSearchFilter","ovid","osid","ocode","otid","uid","UserSearchStore","userSelectOptions","userSelectOptionsStrings","scope","VeterinarianStore","defaultScheduleTemplateSearchOrder","defaultHospitalScheduleTemplateSearchFilter","HospitalScheduleTemplateSearchStore","HospitalScheduleTemplateStore","isHospitalScheduleTemplateLoading","_hospitalScheduleTemplate","isSaving","templateRequest","updateHospitalScheduleTemplate","makeAutoObservable","hospitalScheduleTemplate","clearHospitalScheduleTemplate","defaultClinicTaskSearchFilter","defaultClinicTaskSortOrder","openTasks","ClinicTaskSearchStore","currentUserId","explicitLoad","AppointmentTypes","_currentHospital","endOf","_loadedDate","_dateRange","_schedule","_appointments","appt","hideSameDayReservationFromSameDay","appointmentSelf","lastModifiedAppointmentTime","sortedDates","lastModified","toISOTime","suppressMilliseconds","selectedDays","repeatDays","selected","dataVets","dataTemplates","dataStaticEntities","staticEntities","recurrenceDates","getRecurrenceDates","repeatUntil","rd","initialRequests","recurringRequests","daysOfTheWeek","allVets","licensedVetsWithAccess","unscheduledLicensedVetsWithAccess","allTemplates","activeTemplates","activeScheduleTemplates","scheduledVeterinarians","allScheduledTemplates","completedAppointments","isCompletedAppointment","todayAppointments","addAppointment","ParseAddHospitalPrescriptionRefillRequest","PendingPickup","hospitalPrescriptionRefillRowVersion","ParseCheckOutHospitalPrescriptionRefillRequest","ParseUpdateHospitalPrescriptionRefillRequest","MacroStore","cancelData","image","uploadSignature","hospitalPrescription","getHospitalPrescription","dispensingHistory","dispensingServiceUnavailable","rxSKUItem","SalesBuilderSearchStore","queryPatterns","_searchQuery","qp","opts","salesStore","searchQueryApplied","totalRegularSalesItemsCount","totalRegularSalesItems","totalDiscountedSalesItemCount","totalDiscountSalesItems","totalSalesPackageCount","totalSalesPlanCount","regularSalesItems","discountedSalesItems","every","searchPattern","option","setSearchQuery","searchQuery","SalesStore","BlockUsersFromManuallyAddingToVisit","IsAnesthesiaMedication","PrescriptionProduct","VetcoPrescription","AllowedInPnpNewOrder","PriceCheckSalesBuilderSearchStore","PriceCheckStore","getSalesItemsForPriceCheck","getSalesPackagesForPriceCheck","unfilteredSalesItems","userAddedSalesItems","filterToSalesItemsThatCanBeAddedByUsers","mapSalesItemsForVisitBuilder","visitBuilderSearch","HubConnectionState","HubGroupType","BaseHub","_dec8","_dec9","_dec10","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","async","groupType","safeInvoke","methodName","_len","args","_key","retPromise","_isMock","_invokeQueue","cleanQue","processQueue","me","Boolean","isMock","_isLocalDev","env","local","_isAlpha","alpha","window","param","getQueryParams","jQuery","hubConnection","_connection","useDefaultPath","logging","_hub","createHubProxy","starting","onStarting","stateChanged","onStateChanged","reconnecting","onConnectionReconnecting","reconnected","onConnectionReconnected","disconnected","onConnectionDisconnected","on","globalThis","connectionState","Disconnected","initiatePing","_pingHandle","clearInterval","setInterval","_connectionState","Connected","invoke","stopPing","onConnected","startConnection","_manualStop","withConnection","conn","jsonp","withCredentials","transport","pingInterval","setLoggedOut","isLoggedOut","_loggedOut","stopConnection","ignoreManual","stop","registerMethod","withHub","hub","eventName","callback","unregisterMethod","off","queue","lastIndex","newQueue","droppedItems","dropped","processDrop","getExtraQueueMethodsToClean","newState","Connecting","Reconnecting","_prevConnectionState","oldState","intervalWait","minMilliseconds","maxMilliseconds","random","setTimeout","internalProcessQueue","ldone","lReject","fail","always","shift","done","doneReject","cb","HospitalHubStore","_class2","currentInstance","_currentInstance","AppointmentSubscriberStore","hospitalApp","messageHub","subscribeToHubEvents","IsCalendarDirty","_isCalendarDirty","LoadedDate","calendarLoadedDate","onAppointmentUpdated","onAppointmentStatusChanged","onAppointmentRescheduled","onAppointmentReopened","onUpdatedHospitalSchedule","onUpdatedHospitalScheduleAdHoc","onUpdatedHospitalScheduleOverrides","onUpdatedHospitalScheduleTemplate","onAppointmentBookedOnline","dispose","setCalendarDirty","isDirty","strChangeDates","isCurrentHospital","isDateLoadedDate","strScheduleDate","templateName","strDateScheduled","strStartDate","processAppointmentChange","strEndDate","strDate","StoreService","getStoreCommunicationStats","storeCommStat","storeCommStatModel","ClientSMSHub","ClientSMSHubSubscriberStore","clientSMSHub","IsNewIncomingMessage","_isNewIncomingMessage","IncomingMessage","_incomingMessage","IncomingMessageClientId","_incomingMessageClientId","setNewIncomingMessage","isNewIncomingMessage","onNewClientSMSMessage","clientCommunication","linkText","linkUrl","ActionButton","src","iconView","open","navigateToLink","clearHospitalCommsStats","hasCurrentHospital","isHospitalLoading","getHospitalForUser","appStore","hospitalHub","_calendarLoadedDate","_appointmentSubscriber","_clientSMSSubscriber","initMessageHub","setCurrentHospital","appointmentSubscriber","clientSMSSubscriber","setCalendarLoadedDate","OnTaskUpdatedMessage","OnUnReadHospitalMessagesUpdated","OnDocumentGenerationStatusUpdated","autorun","InitUnReadMessagesCount","connectedHospitalId","leaveHospitalGroup","joinHospitalGroup","openTaskSearch","hospitalTimezone","tryUpdateCurrentHospital","communicationEventType","currentCommunicationType","task","userIds","hasRole","shouldUpdate","clientDocumentRequestModel","documentRequestStatusId","myComponentInstance","NotificationToastLinkBody","adminNavActiveKey","BaseModel","corpOrgModel","defaultUser","defaultVet","UserStore","License","startsWith","userLoading","getUserImpl","successMsg","failureMessage","hasVetRole","hospitalOrgs","currentOrgRelations","cloneDeep","newOrgRelations","newOrg","CreateForUserOrgRelation","uniqNewOrgRelations","uniqBy","combinedRelations","hospitalOrg","orgToDelete","updateOrganizations","without","licenseToDelete","updateLicenseToDelete","licenseToAdd","licensePhotos","licensesAreBeingUpdated","blobStorageStore","uploadFiles","licenseModel","showAddLicenseModal","license","newPhotos","sasResults","strUserId","implicitRoles","onlySwiftRoles","explicitRoles","assignedRoles","availableRoles","userHospitalOrganizations","licensedRoles","hasLicenses","sortedLicenses","licenseDeleteDescription","addRoles","roleIds","deleteRole","roleToDelete","shouldShow","licenseAddModalVisible","useApp","useContext","PageCard","additionalinfo","actionElement","bodyClassName","_bodyClassName","titleClassName","actionSectionClassName","trimmedProps","Card","defaultProps","border","bg","FlexContainerImp","Column","shrink","fill","_ref3","BreadCrumbTrail","positionSticky","routes","breadcrumbs","useBreadcrumbs","bc","pathname","lastKey","Nav","classnames","breadcrumb","NavLink","to","EnvironmentBanner","dev","training","SlimPageCard","Pager","ReactPaginate","forcePage","totalItems","pageRangeDisplayed","marginPagesDisplayed","onPageChange","handlePageChange","selectedPage","breakClassName","breakLinkClassName","containerClassName","pageClassName","pageLinkClassName","previousClassName","previousLinkClassName","nextClassName","nextLinkClassName","activeClassName","BasicDataTablePagination","rowsPerPage","rowCount","onChangePage","isMounted","useIsMounted","pageNumbers","firstIndex","useCallback","pageNumber","initialPage","DataTablePagination","onChangeRowsPerPage","handleRowsPerPage","defaultRowsPerPageOptions","disableInitialCallback","TableSkeleton","rows","cols","Table","bordered","hover","j","Skeleton","Throw401","INVALID_ACCESS_ERR","Authorized","if","redirectToErrorPage","throwError","deniedMessage","isLargeCount","notificationCount","NavBarLink","remainingProps","isLargeNotificationCount","Item","Link","eventKey","NavBarLinkWithHref","href","routeMatches","useCurrentMatchRoutes","useQueryClient","currentDirectory","profileLink","setShow","useRef","circle","ref","Overlay","placement","rootClose","Popover","margin","evictExpiredKeys","alert","AdminNavBar","Navbar","expand","uniqid","Container","fluid","Brand","NavLinkRR","Toggle","Collapse","EnvironmentWarning","isForHeader","HasUIFlag","UI_HospitalFlags_CanAccessHospitalAdmin","UI_HospitalFlags_CanAccessGlobalAdmin","NavBarProfile","AdminNavList","hospitalAppStore","canEditAllCommunicationTemplates","UI_HospitalFlags_CanEditAllCommunicationTemplates","canViewAdminReports","canEditSmsCommunicationTemplates","hasFeatureFlag","InAppSms","Accordion","defaultActiveKey","navAccordionToggled","defaultValues","ClientSearchButton","isCsr","handleSubmit","reset","control","useForm","recentClientStore","onSubmit","spreadAndtransformDefaultValues","previousClickedRecentHistory","lastFiveRecentClients","FormInput","controlId","alignSelf","minWidth","getRecentlyViewedClients","Image","alt","caretWhite","LoadingOverlay","recentClient","iconSearchBlue","PriceCheckDiscountTable","Suspense","waiting","PulseLoader","size","tableLayout","paddingRight","verticalAlign","PriceCheckItemTable","PriceCheckPackageTable","isClickedArray","setIsClickedArray","rowClickedHandler","useDoubleClickHandler","onDoubleClick","HospitalMainNavBar","priceCheckModal","priceCheckButton","usePriceCheck","isShowing","setIsShowing","priceCheckStore","onShowPriceChecker","loadPriceChecker","activeTab","setActiveTab","onShow","QuerySearchButton","paddingBottom","borderBottom","Tabs","activeKey","onSelect","Tab","priceCheck","clientSearchStore","marginTop","PageTitle","inlineBlock","subText","SideBar","Content","PageNav","PageComponent","pageNav","findByType","contentComponent","sideBarComponent","pageTitleComponent","NotificationList","hideBreadcrumbs","pageContentClass","AdminPageComponent","HospitalPage","navBarMinWidth","useCreateLocationStore","shouldSetContext","outlet","useOutlet","searchStore","browseToEdit","isConfirmCreateHospitalModalVisible","confirmCreateHospitalModalDescription","storeIsBeingConverted","clearStoreToConvert","AdminPage","Page","LocationsTableHeader","LocationsTable","locations","onHospitalEdit","loc","onStoreConvert","setStoreToConvert","LocationsFilter","defaultFilter","onApplyFilter","onClearFilter","LocationStore","requireHospitalHoursConfirmation","hospitalHoursGroup","hospitalHoursVisible","hospitalLoading","clearHospitalHoursConfirmation","storeToConvert","hospitalHoursConfirmed","updateHospitalHoursConfirmationModel","hospitalClosureChanged","hospitalHoursExceedWorkday","allHospitals","hospitalVeterinarians","hospitalPricingTierOrganization","isLocationActionDisabled","hospitalHoursConfirmationLoading","setHospitalHoursChangesConfirmed","allHospitalHours","hospitalHour","previousHospitalHours","hoursAreOutsideStandard","register","shouldFocusError","FormSelect","isRequired","getOptionLabel","getOptionValue","mapOptionToValue","opt","mapValueToOption","rules","Patterns","zipCodeAny","Group","Check","removeAllFilters","currentRoute","useCurrentRoute","isRootRoute","isAdminRoute","useCreateUserStore","optionBasedUserId","setOptionBasedUserId","optionsSetContext","setOptionsSetContext","recreateOnUserIdRoute","vetStore","useCreateVeterinarianStore","setBreadCrumb","useRouteBreadcrumb","renderUser","UserProfile","UserLocationsAddStore","currentCorpOrg","hospitalOrgSearchStore","addSelectedOrganization","selectedOrganizations","removeSelectedOrganization","isSelectedOrganization","UserLocationsAddTableHeader","UserLocationsAddTableRows","userLocationsAddStore","ToggleButton","defaultChecked","UserLocationsAddTable","colSpan","UserLocationsAdd","registerSearch","handleSubmitSearch","resetSearch","submitCaller","resetSearchForm","scrollable","keyboard","Label","saveSelectedOrganizations","addOrganizations","UserLocationsConfirmDeleteStore","deleteOrganization","primaryLocationToolTip","Tooltip","UserLocations","readOnly","confirmDeleteStore","addLocation","setAddLocation","confirm","display","alignItems","justifyContent","OverlayTrigger","trigger","overlay","DeleteButton","UserInactiveProfileBanner","onUpdateFilter","fetchHospitals","resetField","watch","onOptionChanged","TriStateSelectOptions","dataTableCustomStyles","headRow","fontFamily","fontWeight","fontSize","lineHeight","letterSpacing","textTransform","minHeight","paddingTop","fontStyle","headCells","paddingLeft","cells","textAlign","UnknownPageCountPagination","hasMore","RemoteDataTable","columns","persistTableHead","searchResult","displayRowsPerPage","isBasicPagination","sortServer","onSort","defaultSortFieldId","pagination","paginationServer","paginationComponent","paginationTotalRows","paginationPerPage","paginationRowsPerPageOptions","onRowDoubleClicked","customStyles","noDataComponent","paginationResetDefaultPage","onRowClicked","DataTable","unknownComponent","dtComponent","handleChangePage","page","totalRows","CommunicationTemplatesTable","CreatedBy","sortable","selector","Name","Action","cell","onCommunicationTemplateSelected","center","FullDataTableColumns","ProviderDataTableColumns","progressPending","progressComponent","CommunicationTemplateForm","onDelete","selectedUserId","showDeleteConfirm","setShowDeleteConfirm","currentMacroTargetType","ExamVisit","Sms","isEditing","UI_HospitalFlags_CanEditLocationCommunicationTemplates","UI_HospitalFlags_CanEditProviderCommunicationTemplates","preview","processTextForMacros","methods","unregister","setValue","formState","unsavedChangesPrompt","useUnsavedChangesWarning","correctedText","FormProvider","highlightDirty","maxWidth","isClearable","noSlider","IsDVM","DATE_FULL","TIME_SIMPLE","UserProfileCommunicationTemplates","macroStore","useMacros","parsedMacroId","macroTypeOptions","upsertMacro","isAdmin","isMyProfile","userProfileBaseUrl","xs","signatureStore","fetchVeterinarianByVetId","currentUserIsThisVet","canEditUserRoles","UI_HospitalFlags_CanEditUserRoles","canEditUserLocations","UI_HospitalFlags_CanEditUserLocations","canEditDvmLicenses","UI_HospitalFlags_CanEditDvmLicenses","canEditDvmSchedule","UI_HospitalFlags_CanEditDvmSchedule","canEditDvmSignature","UI_HospitalFlags_CanEditDvmSignature","canEditProviderCommunicationTemplates","UserProfileDetail","UserProfileRoles","UserProfileLicenses","UserSchedulePreferences","onSavePreferences","UserProfileSignature","UserProfileLicenseAddUpdate","existingLicense","errors","cancel","editing","alphaNum","CustomDatePicker","ErrorMessage","FileUpload","accept","labelText","isInvalid","newLicensePhotoFile","uploadButtonText","Feedback","emptyText","readonlyLicenseMessage","showUpdateLicenseModal","setShowUpdateLicenseModal","setUpdateLicense","submitUpdateLicense","viewLicense","licenseDeletePending","iconclass","pointerEvents","UserProfileRolesModalAdd","enableSubmit","htmlFor","multiple","muted","selectedRoles","UserProfileRolesModalDelete","setAvailableRoles","setRoleToDelete","clearModals","hasRoles","SignaturePad","canvasWidth","canvasHeight","callResizeHandler","handleResize","debounceInterval","canvas","canvasRef","signaturePad","SigPad","onEndStroke","once","scaleCanvas","componentWillUnmount","removeEventListener","instance","dotSize","throttle","penColor","velocityFilterWeight","fromDataURL","base64String","toDataURL","encoderOptions","fromData","toData","ratio","devicePixelRatio","offsetWidth","offsetHeight","redrawOnResize","ctx","getContext","scale","canvasProps","UserProfileSignatureAdd","updateInProgress","showApplySignatureToClinic","applySignatureToClinic","setApplySignatureToClinic","signaturePadRef","handleSave","showDisclaimer","handleClear","SignatureDisclaimer","checked","UserProfileSignatureDelete","showAddSignatureModal","setShowAddSignatureModal","showDeleteSignatureModal","setShowDeleteSignatureModal","hideModals","saveVetSignature","deleteVetSignature","UsersTable","userSearchStore","noUsersMessage","hideEmail","combineFirstLastName","drRoles","convertNameForPrefix","tableHeader","RenderTableHeader","hasEmailColumn","userStoreRef","clickHandler","sortedAuthRoles","PetcoCalendarTheme","Theme","root","table","tableCellShaded","buttonGroup","button","buttonActive","popover","popoverHeader","popoverContent","baseIconClass","iconClasses","prev","next","prevYear","nextYear","rtlIconClasses","iconOverrideOption","iconOverrideCustomButtonOption","iconOverridePrefix","fcCreatePlugin","themeClasses","petco","defaultProfileColor","newEvent","pref","preference","updateEventStartEnd","hours","updateEventResource","preferenceToEvent","setEditing","setSchedulingColor","setEvents","promptSaveChanges","setPromptSaveChanges","draggable","hasExistingPreferences","deleteEvent","eventId","enableEditing","destroy","Draggable","getElementById","itemSelector","eventData","eventEl","getAttribute","disableEditing","cancelChanges","saveChanges","eventToPreference","confirmSaveChanges","ColorPickerPopover","newColor","sb","draggableScheduleBlockType","FullCalendar","themeSystem","initialDate","initialView","plugins","createPlugin","resourceTimeGridPlugin","interactionPlugin","timeGridPlugin","resources","eventContent","arg","timeText","eventOverlap","eventResizableFromStart","droppable","allDaySlot","headerToolbar","right","slotMinTime","slotMaxTime","slotLabelInterval","slotLabelFormat","slotLabelClassNames","slotLaneClassNames","eventClassNames","eventDrop","startStr","endStr","newResource","eventResize","eventReceive","revert","drop","schedBlock","draggedEl","newPref","createNewEntitySchedulePreference","dateStr","LocationDetailUsersList","cardProps","userClick","FormGroup","SchedulePreferencesUIStore","baseEntityPreferenceId","schedulePreferencesType","_schedulePreferencesType","_configuration","_templateOrVetId","templateOrVetId","_originalScheduleColor","_schedulingColor","_hospitalHours","_editing","eventSchedulePreferences","dayName","businessHours","daysOfWeek","overlap","interactive","minOpenTime","sorted","maxCloseTime","hasChanges","origEvents","_originalEvents","currentEvents","xorWith","setPreferences","preferences","resizeEvent","moveEvent","createEvent","newPreference","clearEvents","SchedulingPreferences","setPreferencesStore","schedulingName","calendarKey","fcRef","uiStore","getResources","defaultTimedEventDuration","selectConstraint","eventConstraint","LocationScheduleTemplateModal","existingTemplateNames","onSaveTemplate","dependencies","uniqueKey","setUniqueKey","useUniqueKey","isNewTemplate","schedulePreferenceUI","setSchedulePreferenceUI","scheduleTemplateId","showCancelConfirm","setShowCancelConfirm","raiseOnSaveTemplate","checkConfirmDirty","watchColor","watchName","validate","hideActions","LocationScheduleTemplateTable","templateSearchStore","onUpdateCreateSchedulePreference","scheduleTemplateColumns","grow","defaultSortAsc","LocationScheduleTemplateDetail","showModal","setShowModal","templateStore","loadHospitalScheduleTemplate","saveHospitalScheduleTemplate","DisplayLabel","rest","DisplayField","textClass","PatternFormat","customInput","mask","DisplayGroup","controlid","labelTailElement","fieldClass","parentClass","labelRowJustifyClass","normalizePhone","wrapAreaCode","newN","LocationDetailStaticInfo","CancelAndEditActions","saveText","editText","cancelClicked","formId","tabIndex","saveClicked","editClicked","titleClsNotRequired","buttonProps","promiseTags","hasValue","IvlsDeviceTable","ivls","LocationDiagnosticDisplay","LocationDiagnosticDetail","onUpdateHospital","refreshIvlsDevices","useFormContext","setIsEditing","diagnosticDetailDirty","setDiagnosticDetailDirty","cancelEditing","defaultIvlsDevice","setDefaultIvlsDevice","setLastPolledCloudTime","DATETIME_SHORT","cancelingEditing","ToggleButtonWithForwardRef","isOn","setIsOn","inputRef","buttonClicked","click","stopPropagation","propTypes","PropTypes","LocationFlagDetail","flagsDirty","setFlagsDirty","canToggleDoubleBooking","UI_HospitalFlags_CanToggleDoubleBooking","SendSMSResponseModel","wasSent","communication","SmsService","validatePhoneNumber","sendSms","uploadPhoto","LocationDetailsDisplay","showConfirmSms","setShowConfirmSms","onCloseModal","pricingTierOrganization","fromNumber","validateSms","LocationHospitalDetail","locationDetailsDirty","setLocationDetailsDirty","disable","Controller","minLength","fieldState","invalid","onValueChange","_ref4","HospitalHourOptions","byDayOfWeek","ChangeHoursNoticeModal","hoursConfirmationMessage","LocationHoursDetail","fields","useFieldArray","formHours","readonly","Select","LocationDetailForm","refreshHospital","setShouldSetContext","locationStore","ExamMessageHub","examStore","reactionDisposers","initReactions","currentVisitId","visitRefreshTick","_visitRefreshTick","onVisitUpdated","when","_previousVisitId","leaveVisitGroup","VisitExamOpen","joinVisitGroup","ExamStore","petDetailsStore","scheduledVets","updateScheduledVet","assignedVet","vetAssignedToVisit","syncVisitSectionVersions","visitLabOrders","anesthesiaMedicationSalesItems","filterToSalesItemsThatIsAnesethieaMedication","sectionType","sectionVersion","ParseVisitUpdateRequest","setPet","updateVisitVet","sectionUpdateSucceeded","sectionUpdateFailed","sectionUpdateResult","visitLockStatus","parseFollowupVisitNotes","saveFollowupVisitNote","signatureSectionVersion","saveVisitSignature","updateVisitSection","ObjectiveWithoutNotes","setAllResultsToNormal","findSalesItemOptionToReplace","addSalesItem","setSalesPackage","addSalesPlan","updateVisitSalesItemAttributes","visitIsFinalized","setVisitSalesItemAsDeclined","setVisitSalesItemAsNotGiven","setVisitSalesItemAsPending","setVisitSalesItemQuantity","addVisitDiagnosis","deleteVisitDiagnosis","sendConsentSms","signaturePhotoDataUrl","AttachmentsandConsents","addEstimateToVisitErrors","addEstimateToVisit","latestSectionVersion","sequenceEquals","selectedIvlsDeviceId","labOrder","currentLabOrderId","findIndex","extend","updateLabOrder","visitAnesthesiaForms","getVisitAnesthesiaFormByVisitId","anesthesiaFormPreOp","anesthesiaSectionUpdateSucceeded","PreOp","anesthesiaSectionUpdateFailed","anesthesiaSectionUpdateResult","deleteAnesthesiaMedication","Surgery","vital","Vital","PostOp","isVetTechExam","hoursSinceFinalized","visitIsFinalizedComplete","visitIsSigned","canFinalizeVisit","canAbortVisit","visitSuspenseTag","currentLabOrder","CANCELLED","clearAddEstimateToVisitErrors","setSelectedIvlsDeviceId","device","addAttachments","fileList","setCurrentProgress","setShowAddAttachmentModal","uploads","Attachment","uploadFile","values","formSectionVersion","updatedSection","ParseUpdateModel","currentVisitAnesthesiaForm","section","None","priceRule","upgradingPrice","getValues","dueDateValue","dateGivenValue","reminderSourceIdValue","setSelectedDate","selectedReminderSource","setSelectedReminderSource","today","previousDueDateRef","previousDateGivenRef","previousReminderSourceIdRef","previousReminderNameRef","getDatePlusReminderDays","forGivenDate","dateTime","minus","addedGivenDate","shouldDirty","addedDueDate","getDateLabel","valueToSet","getDateValue","onSelectDateFromButton","reminderOptions","displayString","One_Month","Three_Months","Six_Months","Year","closeModal","makeBold","withoutHTMLFrom","portalId","maxDate","toJSDate","minDate","getMinDate","reminderOption","onContinue","suspenseTag","addedSalesItems","SalesItemRow","isAddedToRemindersTable","List","itemCount","itemSize","remindersAdded","setActiveReminder","onSelectedToRemind","removeReminder","striped","idx","onRemind","LoadingProgressBar","progress","ProgressBar","completed","total","errored","isNotesDisable","setIsNotesDisable","showAlertmessage","setShowAlertmessage","subscription","unsubscribe","_app","_hospitalApp","_petDetailsStore","petDetails","_examStore","_clientStore","_hospitalId","_macroTargetTypeId","All","_templateSearchStore","_error","searchText","_searchText","visitClient","macroKeywords","_isTransientKeywords","_keywordsData","clientFullName","petGender","macroKeyworkds","hospitalKeyWords","hospitalEmail","hospitalUrl","hospitalSms","keyWordsData","isTransientKeywords","MacroContext","MacroDropdown","useSlate","macroContext","useMacroContext","setSearchText","setTransientKeywords","macroTrasientKeywords","macroTarget","macroTargetType","previewMacro","setPreviewMacro","overlayRef","useClickOutside","contains","closeMacros","processMacroPlaceholders","isTrasientKeywords","macroKeywordsType","insertMacro","trimStart","wrapperRef","offset","arrowProps","_show","popper","times","listOfColorsShort","ColorTile","setShowDropDown","RichTextBoxColorPickerButton","showDropdown","colorTiles","colorArray","onToggle","nextShow","Dropdown","autoClose","Menu","InternalButton","icon","trimmedAttrs","activeClass","treatedTitle","lines","iconElement","icons","mapIcon","getIcon","isMacroSearch","RichTextBoxToolbarButton","RichTextBoxIndentButton","decrease","changeBlockIndent","RichTextBoxToolbarBlockButton","RichTextBoxToolbarFormatButton","InternalRichTextBoxMenu","trimmedAttributes","newClassName","RichTextBoxToolbarMenu","InternalToolbar","RichTextBoxToolbar","BlockButton","FormatButton","ColorPickerButton","IndentButton","HOTKEYS","withRichTextBox","insertText","insertBreak","insertFragment","insertNode","deleteFragment","isDom","macroMightBeOpen","deleteSlash","getMacroSearchTextNodes","universal","removeNodes","hanging","unsetNodes","onKeyDown","isFocused","altKey","ctrlKey","metaKey","shiftKey","hasNoModiferKey","processMacroKeyPress","isSelectionSingleCursor","getFocusedTextNodeAtCursor","textNode","hotkey","isHotkey","currentNode","insertSoftBreak","fragment","mark","SlateRange","isRange","cursorOffset","getSelectedBlockNodes","startIndex","isBackward","endIndex","newLevel","InternalElement","InternalLeaf","leaf","leafRef","domElement","setDomElement","RichTextBox","onBlur","editableProps","editorDisabled","spellCheck","editableClassName","remainingEditableProps","toolbarProps","toolbarClassName","toolbarAttrs","isSMSText","isToolbarDisabled","remainingSlateProps","onChangeBounceRef","initialHtml","setInitialHtml","initialDocument","setInitialDocument","internalDocument","setInternalDocument","schema","editorKey","withReact","withHistory","createEditor","bouncedOnChange","serializedRichText","internalOnChange","currentDescendant","editorEl","querySelector","Slate","FontAwesomeIcon","faIcons","flip","Editable","renderElement","renderLeaf","RenderLabel","justifyClass","labelPosition","labelColumnSmWidth","labelColumnMdWidth","controlLabelTailElement","RenderLabelPosition","labelToRender","TOP","LEFT","sm","controlLabelRowJustifyClass","controlLabel","inputColumnSmWidth","inputColumnMdWidth","inputColumClassName","formGroup","reverseLabel","helpText","helpId","errorId","VitalsInputErrorMsg","integer","decimal","nonWhiteSpace","phoneWithDashes","zipCodeFull","nationwideIdPattern","temperaturePattern","TEMPERATURE","pulsePattern","PULSE","deserializeDate","serializationFormat","serializeDate","inputProps","allowEmptyString","decimalPlaces","inputAttrs","resolvedControlId","resolvedRules","newRules","ignorerules","numInputRefs","listenersAttached","cancelWheel","passive","removeEmojis","renderInput","commonClasses","commonProps","parsed","_ignorerules","telProps","getInputRef","formattedValue","NumericFormat","fixedDecimalScale","thousandSeparator","decimalScale","prefix","datePickerAttrs","DatePicker","setFocus","textAreaAllowEmojis","textAreaAttr","noEmoji","richTextAttrs","validString","timeIntervals","showTimeSelect","showTimeSelectOnly","dateFormat","minTime","maxTime","outOfBoundsDate","getOutOfBoundsDate","openingHours","closingHours","greaterThanMin","lessThanMax","selectStyles","dropdownShouldGrowModal","dropdownIndicator","padding","clearIndicator","valueContainer","multiValueLabel","menu","position","menuList","input","validateRules","attrsFromProps","ClearIndicator","getStyles","innerProps","formValue","changeFormValue","fieldRef","selectedOption","components","isOverlay","toggle","HexColorPicker","whiteSpace","getFullYear","fToken","CustomDatePickerWithForwardedRef","console","debug","internalInputChange","dateOnChange","nativeSetter","HTMLInputElement","lxDate","dispatchEvent","Event","bubbles","renderCustomHeader","changeYear","changeMonth","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","getMonth","FileList","FileUploadWithForwardedRef","shouldClearFiles","filesAcquiredCallback","setFileList","fileCount","uploadButtonClicked","onChangeImpl","ExamFormVisitBuilderAddNewLotNumber","attributeListValueModel","setAttributeListValueModel","existingAttributeListValues","setInvalidFormat","onNewLotNumberChange","showEdit","setShowEdit","filteredRabies","filteredContents","selectedVaccine","setSelectedVaccine","useWatch","newLotNumber","newModel","virusType","manufacturer","administered","serial","lotNumberInvalid","serialNumberInvalid","lotSerialExists","onKeyWholeNumberValidation","test","ReminderDayButton","onKeyPress","onKeyDecimalValidation","onPaste","autoComplete","_ref5","_ref6","setInvalidDueDate","setReminderDays","allowVaccines","AllowCustomRemindersVaccines","localVisitDate","trunc","Four_Weeks","Three_Years","_ref7","onUpdateReminderDay","yesNo","_ref8","listValueIndex","_ref9","_ref10","_ref11","_ref12","_ref13","attributeListValueStorageModel","setAttributeListValueStorageModel","initialVaccineDetails","vaccineDetails","setVaccineDetails","nonExpiredRabies","formatRabiesVaccineName","isNull","optIndex","defaultRangeLength","disableFutureDates","disableDatesOutOfValidRange","maxRangeLimit","startFieldName","endFieldName","datePickerProps","formResetFlag","defaultStartValue","defaultEndValue","setStartDate","setEndDate","endMaxDate","setEndMaxDate","currentDate","setDate","adaptRange","addMaxRange","maxRangeInDays","Infinity","isDifferenceGreaterThanMaxRangeInDays","handleStartDateOnChange","jsDate","selectsStart","handleEndDateOnChange","selectsEnd","isMountedRef","AddDoctorType","useBlocker","blocker","navigator","NavigationContext","unblock","tx","autoUnblockingTx","retry","usePrompt","beforeUnload","returnValue","onTriplePlusClick","clickThreshhold","clickCount","fArgs","useQuery","URLSearchParams","handler","startedInside","startedWhenMounted","listener","validateEventStart","appRoutes","matches","matchRoutes","breadCrumb","breadCrumbRoute","setBreadCrumbRoute","pathInfo","useResolvedPath","useZipCodeStore","getNestedValue","reduce","acc","part","NotificationToast","notification","symbol","notificationType","DefineSymbol","Toast","autohide","animation","appRoot","ReactDOM","envClass","import","feature","defaultSpecies","defaultPet","refetchPet","petLoading","setDates","petPhoto","newPet","savePetPhoto","petPhotoFile","updatePetPhoto","photoObject","fetchPetReminder","estimates","_baseMedicalHistory","petWeightHistory","petAttachments","getAttachments","_medicalHistorySearchQuery","remindersLoading","petappointmentreminders","petHospitalPrescriptions","fetchEstimates","createEstimate","customerInteractions","updateEstimate","addEstimateSalesItem","updateEstimateSalesItem","deleteEstimateSalesItem","addEstimateSalesPackage","deleteEstimateSalesPackage","addEstimateSalesPlan","getClientInteractions","interaction","addCustomerInteraction","fetchCustomerInteractions","updateCustomerInteraction","deleteCustomerInteraction","setProgress","addAttachment","attachments","promises","attachment","petAttachmentIds","errorMsg","deletePromises","deleteAttachment","petCustomReminders","savePetCustomReminders","Pet","getSpecies","getGenders","historyLoading","clearPet","medicalHistorySearchQuery","medicalHistoryNotes","Vaccination","Medication","nonDiscountMedicalHistory","ph","filteredNonDiscountMedicalHistory","filtered","properties","queryLower","filterForQuery","vetspireMedicalDocuments","entityMapping","VetSpire","setPendingPet","pendingPet","setPetMedicalHistory","ZipCodeStore","getZipCodeByZipcode","clearZipcode","setTitle","newTitle","pageTitle","caseSensitive","internalElement","skipBreadCrumb","setRouteReference","BreadCrumbRoute","Route","createRoutesFromChildren","apply","cond","invariant","AppSpinner","spinnerCSSOverride","cssOverride","left","bottom","NavBar","overflow","IntakeStore","intakeIsReadOnly","selectedPet","selectedIntakePetId","setParamValues","intakePublidId","intakepetid","visitDateAlreadyHappened","IntakePetStore","intakeStore","each","progressSections","sectionWidth","IntakePet","linksource","fetchIntakeSelectedPet","nextSection","selectedSectionIndex","updateSelectedQuestionListValue","listValueId","sectionIdx","questionIdx","VisitPublicStore","RebookStore","rebookReservation","AppointmentsStore","ids","isReschedule","publicReservationIds","cancelBulk","apptList","visitIds","lstPets","selectedItems","lst","conjunction","ifEmpty","enumme","toOxford","showCancellation","cancellationVisible","closeCancellation","cancelReservationConfirm","compact","cancelAppointmentGroup","sendToSalk","showConfirmation","confirmationVisible","closeConfirmation","latestCommunicationPreference","confirmBulk","AppointmentsContainer","verificationpublicid","AppointmentList","listName","WhatToExpect","CommunicationPreference","AppointmentGroup","groupId","CancelReservationModal","bodyText","ConfirmReservationModal","AppCannotRescheduleMessage","extraMessage","resendEmail","setResendEmail","rescheduleItem","setRescheduleItem","mounted","selectedGroup","setSelectedGroup","friendlyClinicDate","cancellationBody","confirmationBody","onRescheduleGroupClick","rebook","selectedGroupId","shouldSendReservationIdToVOB","faMapMarkerAlt","ListGroup","dogIcon","catIcon","onCancelItemClick","confirmAppointmentGroup","hidden","resendVisitConfirmationEmail","Carousel","indicators","wte1","Caption","wte2","wte3","wte4","wte5","wte6","CommunicationPreferenceMessages","rel","dateUpdatedAccessor","fullNameAccessor","preferenceCondition","preferenceDate","whoSetPreference","ErrorView","errorInfo","IntakeStoreContextWrapper","IntakePetStoreContextWrapper","useCreateIntakeStore","IntakeView","intakepublicid","iconTickBlue","faUser","onPetProfileClick","IntakeCustomerDetail","fieldNames","shouldValidate","zipCodeStore","zipCodeField","fetchZipCode","useZipCodeChanged","onSaveClick","maxLength","IntakePetDetail","formMethods","photoToSave","PetPhotoUpload","onPhotoChanged","inline","IntakeQuestion","questionIndex","ComboQuestionType","questionName","followupQuestionName","onQuestionChange","onFollowupChange","isPreview","showFollowUp","setShowFollowUp","followUpValue","setFollowUpValue","dangerouslySetInnerHTML","__html","radiobutton","questionToUpdate","checkbox","PhotoUtils","placeHolderImage","PetPhoto","speciesPlaceHolderOverride","makeCircularWhenPhoto","speciesPlaceHolderImage","overrideHeight","overrideWidth","lHeight","toNumber","lWidth","getAzureImageUrlByPhoto","imageSize","getImageSize","PetPhotoUploadWithForwardedRef","hiddenFileInput","handleImageUploadClick","handleChange","fileUploaded","resizedPhoto","ResizeImage","clickable","petIcon","RebookContainer","rebookStore","rebookForm","parsedClinicId","ValidationView","clientVerificationRequest","verifySent","noValidate","ValidationViewStore","AppLandingOutlet","estimateGivenPrice","getPackageAddOnPrice","calculateDefaultUnitPrice","estimatePrice","estimatedQuantity","onSave","subtotalMin","subtotalMax","calculateEstimateSubtotals","subMin","sum","subMax","sigRef","isSigned","setIsSigned","OrderPublicSalesItems","marginBottom","formatEstimateItemQuantity","priceQuantity","estimateQty","formatEstimateItemAmount","float","onSignatureChanged","onSaveSignature","ThankYou","ConsentContainer","visitStore","consentReceived","setConsentReceived","fetchPublicVisit","signConsent","IntakePetContainer","useCreateIntakePetStore","intakePetStore","fetchIntake","toPossessiveName","outletElement","Navigate","ErrorBoundary","componentDidUpdate","clearState","componentDidCatch","RoutesComponent","validationViewStore","Outlet","buildAppRoute","useRoutes","CustomerApp","setRoute","createRoot","Router","basename","RUNTIME_CONFIG","APP_INSIGHTS_INSTRUMENTATION_KEY"],"sourceRoot":""}