{"version":3,"file":"app_ee941d747f47a7f1e36a.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/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/SalesItemTraits.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/ClinicClientSearchModalType.ts","webpack://customer/../common/models/Enums/LabelPosition.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/ClientStoreContextWrapper.ts","webpack://customer/../common/contexts/RecentClientSearchStoreContextWrapper.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/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/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/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/Schedule/ScheduleHospitalScheduleTemplateListingModel.ts","webpack://customer/../common/models/HospitalScheduleTemplateListingModel.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/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/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/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/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/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/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/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/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/VisitSalesItemTraitListingModel.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/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/SearchStore.ts","webpack://customer/../common/stores/QueryCacheStore.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/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/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/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/utils/phoneUtils.ts","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/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/CustomDatePicker.tsx","webpack://customer/../common/components/forms/controls/FileUpload.tsx","webpack://customer/../common/components/forms/controls/ToggleButton.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/../hospital/views/exam/ExamFormVisitBuilderAddNewLotNumber.tsx","webpack://customer/../common/components/forms/controls/SalesItemAttributeEditors.tsx","webpack://customer/../common/components/modals/YesNoConfirmModal.tsx","webpack://customer/../common/components/forms/controls/FormDateRangePicker.tsx","webpack://customer/../common/components/utility/SuspenseButton.tsx","webpack://customer/../common/components/modals/NotificationModal.tsx","webpack://customer/../common/components/modals/SuspenseConfirmationModal.tsx","webpack://customer/../common/hooks/modals/useScheduleDoctorModal.tsx","webpack://customer/../common/hooks/useUnsavedChangesWarning.tsx","webpack://customer/../common/hooks/useQuery.tsx","webpack://customer/../common/hooks/useClickOutside.tsx","webpack://customer/../common/hooks/useApp.ts","webpack://customer/../common/hooks/usePetDetailsStore.tsx","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/../common/components/trimming/Authorized.tsx","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/../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/./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/hooks/useIsMounted.ts","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/components/wrappers/SignaturePad.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 PetPass = 1,\r\n SWIFT = 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 BlobEntityType {\r\n AssessmentReferral = \"AssessmentReferral\",\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 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 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\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}\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}\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 \"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 SalesItemTraitsEnum {\r\n Send_PrescriptionsToRX = 1,\r\n BlockUsersFromManuallyAddingToVisit,\r\n DisallowRemovalFromVisit,\r\n HeartwormProtection,\r\n FleaTickProtection,\r\n AllowDecline,\r\n MinimumWeight,\r\n MaximumWeight,\r\n IDEXXHeadlessOrder,\r\n IDEXXOrder,\r\n ReservationPreConfirmed,\r\n ReservationOverbooked,\r\n ReservationWalkIn,\r\n SendLabResultsToPetParent,\r\n IDEXXInHouseTest,\r\n IsEuthanasia,\r\n IsSpayNeuter,\r\n IsControlled,\r\n BarcodeNotRequired,\r\n IsAnesthesiaMedication,\r\n IncludeInWellnessSummary,\r\n AllowedInPnpNewOrder,\r\n AllowVisitSalesItemOptionUpdates\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}\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}\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 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","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/ContextWrapper';\r\nimport { ClientStore } from '@common/stores';\r\n\r\n\r\nexport const ClientStoreContextWrapper = 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 { 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}\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\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}\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) => {\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 (htmlFrom(originalString.replace(reg, '$1')));\r\n }\r\n catch (e) {\r\n return originalString;\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","\r\nexport class ObjectUtility {\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","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 { 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}\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\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 }\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}\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;\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\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 }\r\n}\r\n","import { 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 = description;\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 { 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 { 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 { 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 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 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 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.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}\r\nexport class SpeciesModel extends Model implements ISpeciesModel {\r\n speciesId: number;\r\n name: string;\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 } = params;\r\n\r\n this.speciesId = speciesId;\r\n this.name = name;\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}\r\nexport class StorageContentModel implements IStorageContentModel {\r\n storageContentId: number;\r\n storageContentUrl: string;\r\n container: string;\r\n fileName: string;\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 } = 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 }\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;\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;\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, 0);\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","\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 { 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 } 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 { 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.PetPass,\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}\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\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 }\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 })\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 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 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.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 salesPackageId: number | undefined;\r\n salesItemSalesItemTypeName: string;\r\n salesItemCommunicationTypeId: number | null;\r\n salesItemReminderDays: number | null;\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 salesPackageId: number | undefined;\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\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.salesPackageId = params.salesPackageId\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 }\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\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\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.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\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 })\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}\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\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 }\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 { 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 { 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 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 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 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 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 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 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.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.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}\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\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}\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, 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 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 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.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 { defaultTo } from \"lodash\";\r\nimport { IVisitSalesItemPublicModel, VisitSalesItemPublicModel } from \".\";\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 salesPackageId: number | undefined;\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 salesPackageId: number | undefined;\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","import { StringUtility } from \"@common/utils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { ILabOrderModel, IVisitConsentModel, IVisitNoteModel, LabOrderModel, VisitConsentModel, VisitNoteModel, IVisitAttachmentModel, VisitAttachmentModel } 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\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[]; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n // addOnSalesItems: VisitSalesItemModel[]; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n // paidNonPackageSalesItems: VisitSalesItemModel[]; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\r\n // discountAndRebateSalesItems: VisitSalesItemModel[]; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\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[]; // TODO JFH: Not immediately needed. Leaving out for now to reduce scope of work.\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}\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 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 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.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 }\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","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 { 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\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}\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\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} = 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}\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 } 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 { 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\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\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 } = 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 }\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 { 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}\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) {\r\n this.notificationsMap.set(uuid(), { message, type: NotificationType.SUCCESS });\r\n }\r\n\r\n @action.bound onSuccess(message: string) {\r\n return (result: T) => {\r\n runInAction(() => {\r\n this.notificationsMap.set(uuid(), { message, type: NotificationType.SUCCESS });\r\n })\r\n\r\n return result;\r\n }\r\n }\r\n\r\n @action.bound error(message: string) {\r\n this.notificationsMap.set(uuid(), { message, type: NotificationType.ERROR });\r\n }\r\n\r\n @action.bound onError(message: string, def: T) {\r\n return (result: T) => {\r\n runInAction(() => {\r\n this.notificationsMap.set(uuid(), { message: `${message} \\n ${result}`, type: NotificationType.ERROR });\r\n })\r\n\r\n return def;\r\n }\r\n }\r\n\r\n @action.bound info(message: string) {\r\n this.notificationsMap.set(uuid(), { message, type: NotificationType.INFO });\r\n }\r\n\r\n @action.bound onInfo(message: string, def: T) {\r\n return (result: T) => {\r\n runInAction(() => {\r\n this.notificationsMap.set(uuid(), { message: `${message} \\n ${result}`, type: NotificationType.INFO });\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 { 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 { 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 { 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(\"Reporting Group fetched.\", options);\r\n resolve(response);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to get Reporting Group.\", 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(\"Reporting Group updated.\", options);\r\n resolve(new ReportingGroupModel(response));\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to update Reporting Group.\", 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(\"Reporting Group has been deleted.\", options);\r\n resolve(true);\r\n })\r\n .catch((err) => {\r\n ServiceHelper.showError(\"Failed to delete Reporting Group.\", 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 if (!zipCode || zipCode.length < 5) {\r\n return Promise.resolve(undefined);\r\n } else {\r\n return trackPromise(\r\n http(`${this.baseUrl}${zipCode}`).get()\r\n );\r\n }\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 } 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};\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): 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};\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): Promise => {\r\n\t\tconst req = new AddSalesItemRequest({ visitId, salesItemOptionId: newSalesItemOptionId, salesItemOptionIdBeingReplaced: oldSalesItemOptionId });\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","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\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 getPetAttachments: \"getPetAttachments\",\r\n deletePetAttachments: \"deletePetAttachments\",\r\n deleteEstimate: \"deleteEstimate\",\r\n\t\taddNewPetFromClinic: \"addNewPetFromClinic\",\r\n getMedicalHistory: \"getMedicalHistory\"\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 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}\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 } 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 }\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\tstatic addPetsToClinic = (request: AddPetsToClinicRequest): Promise => {\r\n\t\treturn trackPromise(new Promise((resolve, reject) => {\r\n http(`${this.baseUrl}/addpets/${request.clinicId}`)\r\n\t\t\t\t.post(request)\r\n\t\t\t\t.then(json => new ClinicModel(json))\r\n\t\t\t\t.then(resolve)\r\n\t\t\t\t.catch(err => {\r\n\t\t\t\t\treject(err);\r\n\t\t\t\t});\r\n }), this.tags.addPetsToClinic)\r\n }\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 { 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 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}\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 { 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 { 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, 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\nimport { ISmsModalPetClient } from \"@hospital/models\";\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\t hospitalApp: HospitalAppStore; \r\n\t petDetails: PetDetailsStore | undefined;\r\n\t examStore: ExamStore | undefined;\r\n\t macroTargetTypeId?: MacroTargetType;\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 _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 _clientPetSmsKeywords: ISmsModalPetClient | undefined = undefined;\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._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\tqueryClient: init.queryClient,\r\n\t\tqueryStaleTime: init.app.configuration.longClientSideCacheTimeToLive\r\n\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 macroKeywords() {\r\n\t\tconst clientFirstName = (this.visitClient && this.visitClient.firstName) ?? undefined;\r\n\t\tconst clientLastName = (this.visitClient && this.visitClient.lastName) ?? undefined;\r\n\t\tconst clientFullName = (this.visitClient && this.visitClient.fullName) ?? undefined;\r\n\t\tconst petName = (this._petDetailsStore && this._petDetailsStore.pet && this._petDetailsStore.pet.name) ?? undefined;\r\n\t\tconst vetName = (this.visit && this.visit.veterinarianFullName) ?? undefined;\r\n\t\tconst petgender = (this._petDetailsStore && this._petDetailsStore.pet && this._petDetailsStore.pet.gender.name) ?? undefined;\r\n\t\t\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\t@computed get macroSmsKeywords() {\r\n\t\tconst clientFirstName = (this._clientPetSmsKeywords && this._clientPetSmsKeywords.clientFirstName) ?? undefined;\r\n\t\tconst clientLastName = (this._clientPetSmsKeywords && this._clientPetSmsKeywords.clientLastName) ?? undefined;\r\n\t\tconst clientFullName = (this._clientPetSmsKeywords && this._clientPetSmsKeywords.clientName) ?? undefined;\r\n\t\tconst petName = (this._clientPetSmsKeywords && this._clientPetSmsKeywords.petName) ?? undefined;\r\n\t\tconst petGender = (this._clientPetSmsKeywords && this._clientPetSmsKeywords.petGender) ?? undefined;\r\n\t\t\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\"{{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 hospitalName : (this.currentHospital && this.currentHospital.name) ?? undefined,\r\n\t\t hospitalEmail : (this.currentHospital && this.currentHospital.email) ?? undefined,\r\n\t\t hospitalPhone : (this.currentHospital && this.currentHospital.phone) ?normalizePhone(this.currentHospital.phone): undefined,\r\n\t\t hospitalCity : (this.currentHospital && this.currentHospital.store?.city) ?? undefined,\r\n\t\t hospitalAddress : (this.currentHospital && this.currentHospital.store?.address) ?? undefined,\r\n\t\t hospitalUrl : (this.currentHospital && this.currentHospital.url) ?? undefined,\r\n\t\t hospitalSms : (this.currentHospital && this.currentHospital.outboundSMSPhone) ?? undefined,\r\n\t\t timezoneName : (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 => {\t\t\t\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 setClientPetSmsKeywords = (clientPetInfo:ISmsModalPetClient) => {\r\n\t\tthis._clientPetSmsKeywords=clientPetInfo;\r\n\t};\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(null);\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,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 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});\r\n\t\tMacroContext.set(store);\r\n\t\treturn store;\r\n\t}, [app, hospitalApp, petDetails, examStore,queryClient]);\r\n\r\n\treturn macroStore;\r\n};\r\n\r\nexport const useMacroContext = () => {\r\n\tconst useMacroResult = useContext(MacroContext.get()?? new MacroStore({app:useApp(),hospitalApp:useHospitalApp(),examStore:undefined,petDetails: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 }) => {\r\n const editor = useSlate() as RichTextBoxEditor;\r\n const { macros, isLoading, error, setSearchText, macroKeywords,macroSmsKeywords } = useMacroContext() ?? { macros: [], isLoading: false, error: null, setSearchText: () => { } };\r\n\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 const macroKeywordsType = macroTarget==MacroTargetType.Sms?macroSmsKeywords: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}: RenderLeafProps & { wrapperRef: React.RefObject } & {macroTargetType?:MacroTargetType}) => {\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\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 ...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]);\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 &&\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)}\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 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: /\\w+/,\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 user@petco.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};\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 } 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\tuseEffect(() => {\r\n\t\tconst numInputs = document.querySelectorAll('input[type=\"number\"]');\r\n\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\r\n\t\tnumInputs && numInputs.forEach(numInput => numInput.addEventListener(\"wheel\", cancelWheel, false));\r\n\r\n\t\treturn () => {\r\n\t\t\tnumInputs && numInputs.forEach(numInput => numInput.removeEventListener(\"wheel\", cancelWheel, false));\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: field.ref,\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 { 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","/* 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 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 React from 'react';\r\nexport interface IDisplayLabelProps extends React.HTMLAttributes {\r\n text: string,\r\n}\r\n\r\nexport const DisplayLabel = (props: IDisplayLabelProps) => {\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 { 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/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 from 'react';\r\nimport { Form } from 'react-bootstrap';\r\nimport { Controller, useFormContext } from 'react-hook-form';\r\nimport { SingleValue } from 'react-select';\r\nimport { FormInput, FormSelect } from '.';\r\nimport { DisplayGroup } from '../fields';\r\n\r\ninterface IAttributeProps {\r\n attribute: VisitSalesItemAttributeModel,\r\n index: number\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 \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 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 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 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 { 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}\r\n\r\n\r\nexport const SuspenseButton = ({ tag, tags, children, className, hideSpinner = false, disabled, title, ...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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 }, 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 {/* Toast.Body intentionally left off because there's just not that much to say... */}\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 } 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\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 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\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 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","/**\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 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 { 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, ZipCodeService } from '@common/services';\r\nimport { NotificationStoreInstance } from \"@common/stores\";\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 getZipCode = flow(function* (this: IntakeStore, zipCode: string) {\r\n if (zipCode) {\r\n yield ZipCodeService.getZipCodeByZipcode(zipCode + '?vpca=351BD313-2C19-442B-BC87-C69356EB59EF')\r\n .then((zipCode) => {\r\n if (zipCode && zipCode.zipCodeId !== 0) {\r\n this.intake.city = zipCode.city;\r\n this.intake.county = zipCode.county;\r\n this.intake.stateId = zipCode.stateId;\r\n this.intake.stateAbbrev = zipCode.state?.abbreviation;\r\n this.intake.zipCode = zipCode.zipcode;\r\n }\r\n else {\r\n NotificationStoreInstance.error(\"Please enter a valid Zip Code.\");\r\n }\r\n })\r\n .catch(() => {\r\n NotificationStoreInstance.error(\"Unfortunately we can not look up zip codes at this time.\");\r\n });\r\n }\r\n\r\n });\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}\r\n\r\nexport const AppointmentList = observer(({ store, apptList }: 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 { 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, 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\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\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\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 return (\r\n <>\r\n \r\n \r\n \r\n {group.status}\r\n \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 \r\n
    \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 {group.canCancel ? : null}\r\n {group.canReschedule ? : 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 {group.canReschedule ?\r\n \r\n : null}\r\n \r\n ))\r\n }\r\n \r\n
    {item.petName}at {item.itemTime}\r\n { onCancelItemClick(item, groupId) }}>Cancel\r\n \r\n {(group.isHospitalReservation && !configuration.vobRescheduleEnabled) ?\r\n <>\r\n :\r\n { onRescheduleItemClick(item, groupId) }}>Reschedule\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 {group.canSendVisitCompletion ?\r\n \r\n : null}\r\n {group.canRebook ?\r\n \r\n : null}\r\n
    \r\n\r\n
    \r\n {group.canCancel ?\r\n \r\n : null}\r\n {group.canReschedule ?\r\n <>\r\n {(group.isHospitalReservation && !configuration.vobRescheduleEnabled) ?\r\n

    To reschedule, call {normalizePhone(group.hospitalPhone)}

    \r\n :\r\n \r\n }\r\n \r\n : null}\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 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 { 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 { FormInput, spreadAndtransformDefaultValues } from '@common/components/forms';\r\nimport { useApp, useQuery } from '@common/hooks';\r\nimport { IIntakeModel, IntakeModel } from '@common/models';\r\nimport { Page } from '@customer/components/layout/.';\r\nimport { useCreateIntakeStore } from '@customer/stores/hooks';\r\nimport { debounce } from 'lodash';\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\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, setError, formState: { errors } } = useForm({\r\n shouldFocusError: true,\r\n defaultValues: spreadAndtransformDefaultValues(store.intake as IIntakeModel)\r\n });\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 onZipCodeChange = useCallback((event: React.ChangeEvent) => {\r\n if (event?.target?.value) {\r\n store.getZipCode(event.target.value)\r\n .then(() => {\r\n setValue('city', store.intake.city);\r\n setValue('county', store.intake.county);\r\n setValue('stateId', store.intake.stateId);\r\n setValue('stateAbbrev', store.intake.stateAbbrev);\r\n setValue('zipCode', store.intake.zipCode);\r\n })\r\n .catch(() => {\r\n setError('zipCode',\r\n {\r\n type: \"invalid\",\r\n message: \"Please enter a valid Zip Code.\"\r\n });\r\n });\r\n }\r\n }, [store, setValue, setError]);\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 ) => onZipCodeChange(e), 500)}\r\n type=\"text\"\r\n placeholder=\"Zip Code\"\r\n disabled={store.isReadOnly}\r\n aria-invalid={errors.zipCode ? true : false}\r\n isInvalid={errors.zipCode ? true : false}\r\n maxLength={5}\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, YesNoRadioButton, 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 } = formMethods;\r\n const navigate = useNavigate();\r\n\r\n useEffect(() => {\r\n if (!isEmpty(store.selectedPet)) {\r\n reset(spreadAndtransformDefaultValues(store.selectedPet));\r\n }\r\n }, [store.selectedPet, reset]);\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 { 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 { 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 * 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 { IVisitSalesItemPublicModel, VisitSalesItemModel } 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 VisitSalesItemModel) {\r\n if (item.wasPreviouslyPended || (item as VisitSalesItemModel).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 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","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","DischargeAgainstMedicalAdviceConsent","ClientConsent","DentalExtractionsConsent","EuthanasiaConsent","TreatmentConsent","SurgeryConsent","EntityScheduleType","EventTypes","VisitStatus","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","SalesItemTraitsEnum","AnesthesiaSectionTypes","MedicationTypes","Traits","FeatureFlags","NoteTypes","Templates","IntakeCompletionStatuses","SpeciesType","PetAlerts","ClientSearchModalType","LabelPosition","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","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","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","petcoText","petcoWhite","petcoSmoke","petcoWarning","petcoPewterBlue","petcoBrightGray","petcoOnyx","petcoRustyRed","petcoMikadoYellow","transformObject","object1","entries","blueNeutral","petcoBodyBG","petcoRed","petcoGray","petcoGreen","petcoDanger","petcoLightBlue","petcoTintGreen","petcoTintBlue","petcoCyan","petcoSpanishGray","petcoGraniteGray","petcoCharcoal","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","petcoGainsboro2","petcoLightCarminePink","petcoPhilippineBronze","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","prettyPrintTimespan","e","weeks","months","span","years","htmlFrom","htmlString","cleanHtmlString","sanitize","USE_PROFILES","html","cleanseFirstParagraph","corresp","object","asLowercase","property","find","k","arr1","arr2","differenceWith","isEmpty","formatCurrency","Intl","NumberFormat","currency","style","format","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","EntityScheduleOverridePreferenceRequest","init","storeId","schedulePreferenceOverrideId","entityId","entityType","schedulePreferenceId","scheduleBlockTypeId","Monday","overrideDate","SanitizeString","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","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","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","ScheduleHospitalScheduleTemplateListingModel","color","isActive","isDefault","hasSchedulePreferences","schedulePreferenceCount","isScheduled","HospitalScheduleDayEntityModel","isAdhoc","entityName","schedulingColor","computedSchedulePreferences","cp","hasInheritedSchedulePreferences","defaultScheduleTemplateId","entityTitle","getStringWhenEntityType","strings","vet","Template","template","Technician","toRequestModel","processedSchedule","entity","overrides","checkDate","base","defaultTemplate","getTemplates","titleFullName","ret","updateEntityPreferenceFields","preferenceCount","entitySchedulePreferences","inheritedCount","HospitalScheduleDayModel","openTime","closeTime","isOpen","scheduledEntities","HospitalScheduleWrapperModel","schedule","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","hospitalName","hospitalPhone","publicAppointmentTypeId","AppointmentManagementItem","itemTime","species","reservationPublicId","fullDate","displayFullAppt","fromJSDate","getNumberOrdinal","getDate","AppointmentManagementListModel","canViewWhatToExpect","groups","group","communicationPreference","CommunicationPreferenceModel","showCommunicationPreference","IdexxSpeciesModel","idexxSpeciesId","code","SpeciesModel","speciesId","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","AssessmentRecommendationModel","assessmentRecommendationId","assessmentReferralId","attachmentStorageContentId","attachmentStorageContent","recommendationTypeId","recommendationType","RecommendationTypeModel","autoRecommendationTypeId","autoRecommendationType","AutoRecommendationTypeModel","autoRecommendationValue","AssessmentReferralModel","assessmentRecommendations","ar","needsValue","AutoAddToVisitTypeModel","autoAddToVisitTypeId","BlobSasModel","modelId","modelTypeName","sasUrl","sasToken","issueDate","BrandModel","brandId","sourceSystemKey","sourceSystemId","legalBackerHTML","BreedModel","breedId","pgrBreedId","pgrBreed","PGRBreedModel","idexxBreedId","idexxBreed","IdexxBreedModel","CallCodeModel","callCodeId","isSystemGenerated","CallOriginModel","callOriginId","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","ClinicTaskTypeModel","clinicTaskTypeId","defaultDurationMins","ClinicUserListingModel","scheduledStartDate","marketName","joinedDate","PhotoModel","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","storeName","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","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","HospitalScheduleTemplateModel","hospitalSchedulePreferences","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","OrganizationRelationListingModel","organizationRelationId","toISODate","organizationName","organizationDescription","organizationSourceName","organization","enums","PetPass","HospitalOrganizationRelationListingModel","hospitalCount","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","creatorFirstName","creatorLastName","creatorTitle","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","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","salesPackageId","salesPlanId","salesPlanName","attributeElements","parseAttributeElements","salesItemSupplierProductCode","visitSalesItemTraits","vsit","VisitSalesItemTraitListingModel","salesItemReminderDays","HospitalPrescriptionRefillModel","dateFilled","visitSalesItem","hospitalPrescriptionRefillStatus","HospitalPrescriptionStatusModel","isOwnedByPetPass","canBeRefilledByPetPass","canBeRecalledByPetPass","canBeCancelledByPetPass","SalesItemOptionModel","reminderDays","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","invoiceId","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","Hospitals","Location","Provider","MacroModel","macroId","macroType","content","createdByUserId","macroTargetTypeId","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","dueDate","pastDueDate","isComingDue","salesItemTypeId","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","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","Clinic","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","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","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","arrived","firstCheckIn","arrivedWaitingTime","checkInWaitingTime","intakeCompletionStatusId","needsProactiveFleaTickPrescription","consents","visitSectionVersions","vsv","labOrders","lo","LabOrderModel","anesthesiaForms","af","hp","isInAdminMode","ConsentTypeModel","RabiesInformationContentModel","rabiesInformationContentId","rabiesInformationId","RabiesInformationModel","vaccineAdministeredName","vaccineManufacturerName","vaccineName","vaccineVirusTypeName","addNewLotNumber","ClinicCancellationReasonModel","clinicCancellationReasonId","VisitTagModel","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","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","roleName","intersectionWith","roleModel","authOp","getPricingTierOrganization","orgId","salesItemDiscountSalesItemId","discountSalesItemOptionId","discountSalesItemOption","discountSalesItemOptionFullName","salesItemDiscountSubcategoryId","salesItemRebateSalesItemId","rebateSalesItemOptionId","rebateSalesItemOption","rebateSalesItemOptionFullName","PetAttachmentModel","petAttachmentId","clientNoteId","visitSalesItemTraitId","traitName","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","isNil","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","RebookReservationResponse","reschedulingSystemUrl","AppointmentFlowLaneCard","appointment","card","laneIndex","cardIndex","actionIndex","futureStatus","MacroKeywords","text","keywords","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","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","SearchStore","queryClient","queryStaleTime","clearCache","queryKey","removeQueries","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","followupVisitNote","category","req","resultType","visitExamResultNotes","examObservationIds","observationIds","photoImage","encodedImage","filename","photoRequest","Signatures","vetId","vetNotInList","vetLicense","bypassVisitTotalsRecalc","isRabiesSalesItem","vsia","Rabies","evaluateGivenStatus","ParseSignAndStoreConsentRequest","authHeader","mobileNumber","visitPublicIds","idexxTests","testCode","flat","oldSalesItemOptionId","newSalesItemOptionId","PetService","fetchPet","addPet","updatePet","getVisitReminders","getHospitalPrescriptions","ensurepetalerts","estimateIO","addPetAttachment","getPetAttachments","deletePetAttachments","deleteEstimate","addNewPetFromClinic","getMedicalHistory","petModel","reminders","reminder","em","DATETIME_SHORT_WITH_SECONDS","estimate","estimateSalesItem","blobSasModel","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","intake","linkSource","intakeModel","intakePetModel","ClinicService","getReservationForRebooking","getClinicIdByHospitalId","getClinicById","openClinic","joinClinic","viewClinic","cancelClinic","addPetsToClinic","logOut","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","load","patchClientPets","currentPet","syncAppointmentUpdates","defaultClientSearchFilter","microchip","rabiesTag","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","FieldSetContext","isInFieldSet","fieldSetActions","observer","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","normalizePhone","wrapAreaCode","newN","MacroStore","_app","_hospitalApp","hospitalApp","_petDetailsStore","petDetails","_examStore","examStore","_hospitalId","currentHospital","_macroTargetTypeId","All","ExamVisit","_templateSearchStore","_error","searchText","_searchText","visitClient","macroKeywords","clientFullName","petgender","macroKeyworkds","hospitalKeyWords","hospitalEmail","hospitalUrl","hospitalSms","macroSmsKeywords","_clientPetSmsKeywords","petGender","clientPetInfo","MacroContext","MacroDropdown","useSlate","setSearchText","useContext","useApp","macroTarget","macroTargetType","previewMacro","setPreviewMacro","overlayRef","useRef","useClickOutside","contains","closeMacros","processMacroPlaceholders","macroKeywordsType","Sms","processTextForMacros","insertMacro","closeModal","useCallback","startsWith","trimStart","Overlay","ref","show","wrapperRef","placement","offset","rootClose","arrowProps","_show","popper","times","Boolean","Skeleton","onClick","Modal","size","backdrop","centered","onHide","Header","closeButton","Title","Body","Footer","Button","variant","listOfColorsShort","ColorTile","OverlayTrigger","overlay","Tooltip","setShowDropDown","RichTextBoxColorPickerButton","showDropdown","colorTiles","useMemo","colorArray","onToggle","nextShow","Dropdown","drop","autoClose","Toggle","borderBottom","Menu","minWidth","InternalButton","icon","disable","trimmedAttrs","activeClass","treatedTitle","lines","iconElement","icons","mapIcon","getIcon","isMacroSearch","preventDefault","RichTextBoxToolbarButton","RichTextBoxIndentButton","decrease","trimmedProps","changeBlockIndent","RichTextBoxToolbarBlockButton","RichTextBoxToolbarFormatButton","InternalRichTextBoxMenu","trimmedAttributes","newClassName","propTypes","PropTypes","RichTextBoxToolbarMenu","InternalToolbar","RichTextBoxToolbar","BlockButton","FormatButton","ColorPickerButton","IndentButton","HOTKEYS","withRichTextBox","uid","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","onSelect","currentNode","insertSoftBreak","fragment","mark","direction","SlateRange","isRange","cursorOffset","getSelectedBlockNodes","startIndex","isBackward","endIndex","newLevel","InternalElement","InternalLeaf","leaf","leafRef","domElement","setDomElement","current","RichTextBox","_ref3","placeholder","rows","onChange","onBlur","inputRef","editableProps","editorDisabled","spellCheck","editableClassName","readOnly","remainingEditableProps","toolbarProps","toolbarClassName","toolbarAttrs","isSMSText","remainingSlateProps","onChangeBounceRef","initialHtml","setInitialHtml","initialDocument","setInitialDocument","internalDocument","setInternalDocument","schema","editorKey","uniqid","withReact","withHistory","createEditor","bouncedOnChange","serializedRichText","internalOnChange","debounce","currentDescendant","leading","trailing","editorEl","querySelector","minHeight","Slate","FontAwesomeIcon","faIcons","role","flip","Editable","renderElement","renderLeaf","RenderLabel","controlId","justifyClass","labelPosition","labelColumnSmWidth","labelColumnMdWidth","controlLabelTailElement","Form","Label","htmlFor","RenderLabelPosition","labelToRender","TOP","LEFT","Col","sm","FormGroup","controlLabelRowJustifyClass","controlLabel","inputColumnSmWidth","inputColumnMdWidth","inputColumClassName","formGroup","Group","Row","reverseLabel","helpText","helpId","Control","Feedback","errorId","Patterns","alphaNum","integer","decimal","nonWhiteSpace","phoneWithDashes","zipCodeAny","zipCodeFull","nationwideIdPattern","spreadAndtransformDefaultValues","deserializeDate","serializationFormat","toJSDate","serializeDate","FormInput","inputProps","control","labelRowJustifyClass","labelTailElement","isRequired","rules","highlightDirty","allowEmptyString","decimalPlaces","inputAttrs","resolvedControlId","replaceAll","resolvedRules","newRules","required","ignorerules","numInputs","querySelectorAll","cancelWheel","numInput","removeEventListener","removeEmojis","renderInput","fieldState","commonClasses","invalid","isDirty","commonProps","isInvalid","Check","checked","parsed","mask","_ignorerules","telProps","PatternFormat","getInputRef","customInput","onValueChange","formattedValue","NumericFormat","fixedDecimalScale","thousandSeparator","decimalScale","prefix","datePickerAttrs","DatePicker","isClearable","placeholderText","setFocus","selected","textAreaAllowEmojis","textAreaAttr","noEmoji","richTextAttrs","validString","timeIntervals","rest","showTimeSelect","showTimeSelectOnly","dateFormat","minTime","maxTime","outOfBoundsDate","getOutOfBoundsDate","openingHours","closingHours","greaterThanMin","lessThanMax","Controller","selectStyles","dropdownShouldGrowModal","border","fontFamily","fontSize","dropdownIndicator","padding","clearIndicator","valueContainer","multiValueLabel","lineHeight","menu","position","menuList","input","margin","FormSelect","mapValueToOption","mapOptionToValue","onOptionChanged","validateRules","attrsFromProps","validate","ClearIndicator","getStyles","innerProps","formValue","changeFormValue","fieldRef","Select","selectedOption","components","isOverlay","popover","toggle","close","HexColorPicker","getFullYear","fToken","CustomDatePickerWithForwardedRef","setSelectedDate","console","debug","internalInputChange","dateOnChange","nativeSetter","window","HTMLInputElement","lxDate","dispatchEvent","Event","bubbles","renderCustomHeader","changeYear","changeMonth","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","display","justifyContent","option","getMonth","_ref4","FileList","FileUploadWithForwardedRef","uploadButtonText","emptyText","labelText","accept","multiple","shouldClearFiles","busy","filesAcquiredCallback","fileList","setFileList","fileCount","uploadButtonClicked","click","stopPropagation","onChangeImpl","async","zIndex","ToggleButtonWithForwardRef","isOn","setIsOn","buttonClicked","noSlider","defaultChecked","ToggleButton","DisplayLabel","DisplayField","textClass","String","DisplayGroup","controlid","fieldClass","parentClass","ExamFormVisitBuilderAddNewLotNumber","attributeListValueModel","setAttributeListValueModel","existingAttributeListValues","setInvalidFormat","onNewLotNumberChange","showEdit","setShowEdit","filteredRabies","filteredContents","selectedVaccine","setSelectedVaccine","resetField","useFormContext","useWatch","newLotNumber","newModel","virusType","manufacturer","administered","editing","serial","lotNumberInvalid","serialNumberInvalid","lotSerialExists","getOptionLabel","getOptionValue","opt","minDate","yesNo","_ref5","setValue","listValueIndex","_ref6","args","_ref7","_ref8","_ref9","_ref10","attributeListValueStorageModel","setAttributeListValueStorageModel","getValues","initialVaccineDetails","vaccineDetails","setVaccineDetails","nonExpiredRabies","formatRabiesVaccineName","isNull","optIndex","findIndex","paddingLeft","YesNoConfirmModal","defaultRangeLength","disableFutureDates","disableDatesOutOfValidRange","maxRangeLimit","startFieldName","endFieldName","datePickerProps","formResetFlag","defaultStartValue","defaultEndValue","setStartDate","setEndDate","endMaxDate","setEndMaxDate","currentDate","setDate","adaptRange","addMaxRange","maxDate","maxRangeInDays","Infinity","isDifferenceGreaterThanMaxRangeInDays","handleStartDateOnChange","jsDate","selectsStart","handleEndDateOnChange","selectsEnd","visible","confirmButtonText","cancelButtonText","onConfirm","onCancel","getElementsByClassName","requestAnimationFrame","SuspenseButton","onClose","hideSpinner","buttonProps","promiseTags","button","hasValue","AddDoctorType","useQuery","URLSearchParams","handler","startedInside","startedWhenMounted","listener","validateEventStart","NotificationToast","notification","setShow","symbol","notificationType","DefineSymbol","bg","Toast","autohide","animation","whiteSpace","NotificationList","appRoot","getElementById","ReactDOM","Suspense","waiting","envClass","local","alpha","dev","import","test","feature","training","isForHeader","defaultSpecies","defaultPet","refetchPet","petLoading","setDates","petPhoto","newPet","savePetPhoto","petPhotoFile","blobSas","blobStore","uploadFile","updatePetPhoto","photoObject","fetchPetReminder","estimates","_baseMedicalHistory","petAttachments","getAttachments","_medicalHistorySearchQuery","remindersLoading","petappointmentreminders","petHospitalPrescriptions","fetchEstimates","createEstimate","customerInteractions","updateEstimate","addEstimateSalesItem","updateEstimateSalesItem","deleteEstimateSalesItem","addEstimateSalesPackage","deleteEstimateSalesPackage","addEstimateSalesPlan","getClientInteractions","interaction","addCustomerInteraction","fetchCustomerInteractions","updateCustomerInteraction","deleteCustomerInteraction","setProgress","completed","errored","Attachment","addAttachment","petAttachmentIds","successMsg","errorMsg","deletePromises","deleteAttachment","Pet","getSpecies","getGenders","historyLoading","setPet","clearPet","medicalHistorySearchQuery","medicalHistoryNotes","Vaccination","Medication","nonDiscountMedicalHistory","ph","filteredNonDiscountMedicalHistory","filtered","properties","queryLower","filterForQuery","vetspireMedicalDocuments","entityMapping","VetSpire","setPendingPet","pendingPet","setPetMedicalHistory","getZipCodeByZipcode","clearZipcode","Throw401","INVALID_ACCESS_ERR","Authorized","if","redirectToErrorPage","throwError","deniedMessage","defaultProps","setTitle","newTitle","pageTitle","caseSensitive","internalElement","skipBreadCrumb","setRouteReference","BreadCrumbRoute","Route","createRoutesFromChildren","routes","apply","cond","invariant","breadcrumb","AppSpinner","spinnerCSSOverride","PulseLoader","cssOverride","left","bottom","right","NavBar","Navbar","expand","Container","fluid","Brand","PageTitle","SideBar","Content","PageComponent","contentComponent","findByType","sideBarComponent","pageTitleComponent","overflow","IntakeStore","intakeIsReadOnly","selectedPet","selectedIntakePetId","setParamValues","intakePublidId","intakepetid","today","visitDateAlreadyHappened","IntakePetStore","intakeStore","each","progressSections","sectionWidth","IntakePet","linksource","fetchIntakeSelectedPet","nextSection","selectedSectionIndex","updateSelectedQuestionListValue","listValueId","sectionIdx","questionIdx","VisitPublicStore","signaturePhotoDataUrl","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","confirm","latestCommunicationPreference","confirmBulk","AppointmentsContainer","verificationpublicid","Page","xs","AppointmentList","WhatToExpect","CommunicationPreference","preference","AppointmentGroup","groupId","CancelReservationModal","bodyText","ConfirmReservationModal","resendEmail","setResendEmail","rescheduleItem","setRescheduleItem","mounted","selectedGroup","setSelectedGroup","friendlyClinicDate","cancellationBody","confirmationBody","onRescheduleGroupClick","rebook","selectedGroupId","Card","ListGroup","Item","faMapMarkerAlt","Table","onCancelItemClick","onRescheduleItemClick","confirmAppointmentGroup","open","hidden","resendVisitConfirmationEmail","Accordion","eventKey","Carousel","indicators","src","wte1","Caption","wte2","wte3","wte4","wte5","wte6","CommunicationPreferenceMessages","rel","href","register","handleSubmit","watch","useForm","defaultValues","dateUpdatedAccessor","fullNameAccessor","preferenceCondition","preferenceDate","whoSetPreference","DATETIME_SHORT","PageCard","additionalinfo","actionElement","bodyClassName","_bodyClassName","titleClassName","actionSectionClassName","FlexContainerImp","Column","shrink","fill","positionSticky","breadcrumbs","useBreadcrumbs","bc","pathname","lastKey","Nav","classnames","NavLink","to","SlimPageCard","ErrorView","errorInfo","IntakeStoreContextWrapper","IntakePetStoreContextWrapper","useCreateIntakeStore","shouldSetContext","setShouldSetContext","IntakeView","intakepublicid","Image","iconTickBlue","faUser","onPetProfileClick","dogIcon","catIcon","IntakeCustomerDetail","reset","setError","formState","errors","shouldFocusError","onZipCodeChange","getZipCode","onSaveClick","onSubmit","tabIndex","maxLength","IntakePetDetail","isMounted","useIsMounted","isMountedRef","formMethods","photoToSave","FormProvider","PetPhotoUpload","onPhotoChanged","inline","IntakeQuestion","questionIndex","ComboQuestionType","questionName","followupQuestionName","onQuestionChange","onFollowupChange","isPreview","showFollowUp","setShowFollowUp","followUpValue","setFollowUpValue","dangerouslySetInnerHTML","__html","radiobutton","idx","questionToUpdate","shouldDirty","checkbox","PhotoUtils","placeHolderImage","PetPhoto","speciesPlaceHolderOverride","makeCircularWhenPhoto","speciesPlaceHolderImage","overrideHeight","overrideWidth","lHeight","toNumber","lWidth","getAzureImageUrlByPhoto","imageSize","getImageSize","alt","PetPhotoUploadWithForwardedRef","hiddenFileInput","handleImageUploadClick","handleChange","fileUploaded","resizedPhoto","ResizeImage","clickable","petIcon","RebookContainer","rebookStore","rebookForm","parsedClinicId","setTimeout","ValidationView","clientVerificationRequest","verifySent","noValidate","minLength","ValidationViewStore","AppLandingOutlet","SignaturePad","canvasWidth","canvasHeight","callResizeHandler","handleResize","debounceInterval","canvas","canvasRef","signaturePad","SigPad","onEndStroke","once","scaleCanvas","componentWillUnmount","off","instance","dotSize","maxWidth","throttle","penColor","velocityFilterWeight","fromDataURL","base64String","toDataURL","encoderOptions","fromData","toData","on","ratio","devicePixelRatio","offsetWidth","offsetHeight","redrawOnResize","ctx","getContext","scale","canvasProps","estimateGivenPrice","getPackageAddOnPrice","upgradingPrice","calculateDefaultUnitPrice","estimatePrice","estimatedQuantity","onSave","subtotalMin","subtotalMax","calculateEstimateSubtotals","subMin","sum","subMax","sigRef","isSigned","setIsSigned","OrderPublicSalesItems","DATE_FULL","hover","striped","marginBottom","formatEstimateItemQuantity","priceQuantity","estimateQty","formatEstimateItemAmount","float","onSignatureChanged","onSaveSignature","ThankYou","ConsentContainer","visitStore","consentReceived","setConsentReceived","fetchPublicVisit","signConsent","IntakePetContainer","useCreateIntakePetStore","intakePetStore","fetchIntake","toPossessiveName","section","outletElement","useOutlet","Navigate","appRoutes","matches","matchRoutes","ErrorBoundary","componentDidUpdate","clearState","componentDidCatch","appStore","RoutesComponent","validationViewStore","Outlet","buildAppRoute","useRoutes","CustomerApp","setRoute","prev","globalThis","createRoot","Router","basename","RUNTIME_CONFIG","APP_INSIGHTS_INSTRUMENTATION_KEY"],"sourceRoot":""}